From 45286b5881ed47125bcefbbfbe5783362923db65 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 28 Aug 2021 15:02:06 -0300 Subject: [PATCH 01/46] 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 02/46] 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 03/46] 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 04/46] 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 05/46] 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 06/46] 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 07/46] 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 08/46] 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 09/46] 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 10/46] 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 2815211321dee5ae8dcfc01529ec906eed9c9ad6 Mon Sep 17 00:00:00 2001 From: Ajith Vasudevan Date: Mon, 6 Sep 2021 19:26:01 +0530 Subject: [PATCH 11/46] 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 e1111ca98e4c0443cc29c876e245cec59fc6fa54 Mon Sep 17 00:00:00 2001 From: Simon Hailes Date: Fri, 10 Sep 2021 13:56:24 +0100 Subject: [PATCH 12/46] 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 c7d7e2f4da9e1428edb434f7b58516cdc16c3235 Mon Sep 17 00:00:00 2001 From: Christopher BRAVO CERCAS Date: Tue, 14 Sep 2021 20:45:20 +0200 Subject: [PATCH 13/46] 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 418ebf1e4ef07f5e23d26c69dde599a6990345b5 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 15 Sep 2021 19:36:48 +0200 Subject: [PATCH 14/46] 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 15/46] 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 16/46] 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 17/46] 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 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 18/46] 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 19/46] 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 20/46] 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 21/46] 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 22/46] 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 23/46] 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 24/46] 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 25/46] 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 26/46] 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 27/46] 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 28/46] 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 29/46] 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 30/46] 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 31/46] 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 32/46] 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 33/46] 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 34/46] 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 35/46] 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 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 36/46] 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 37/46] 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 38/46] 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 39/46] 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 40/46] 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 41/46] 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 42/46] 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 43/46] 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 44/46] 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 45/46] 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 46/46] 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); }