Merge branch 'development' of https://github.com/kruzer/Tasmota into stair-pixels

This commit is contained in:
kruzer 2021-11-06 23:44:47 +01:00
commit ff1fa76971
121 changed files with 2962 additions and 3139 deletions

3
.gitattributes vendored
View File

@ -15,3 +15,6 @@
*.PDF diff=astextplain *.PDF diff=astextplain
*.rtf diff=astextplain *.rtf diff=astextplain
*.RTF diff=astextplain *.RTF diff=astextplain
# Apply Python syntax highlighting to berry (.be) files
*.be linguist-language=Python

View File

@ -30,6 +30,7 @@ jobs:
- tasmota-zbbridge - tasmota-zbbridge
- tasmota-zigbee - tasmota-zigbee
- tasmota32 - tasmota32
- tasmota32-webcam
- tasmota32-bluetooth - tasmota32-bluetooth
- tasmota32-core2 - tasmota32-core2
- tasmota32-display - tasmota32-display

View File

@ -7,7 +7,6 @@ image:
vscode: vscode:
extensions: extensions:
- eamodio.gitlens
- Atishay-Jain.All-Autocomplete - Atishay-Jain.All-Autocomplete
- CoenraadS.bracket-pair-colorizer - CoenraadS.bracket-pair-colorizer
- esbenp.prettier-vscode - esbenp.prettier-vscode

View File

@ -6,17 +6,21 @@ All notable changes to this project will be documented in this file.
## [10.0.0.1] ## [10.0.0.1]
### Added ### Added
- Berry add module ``python_compat`` to be closer to Python syntax (#13428) - Berry add module ``python_compat`` to be closer to Python syntax (#13428)
- 1 second heartbeat GPIO
- Command ``TcpConfig`` for TCPBridge protocol configuration (#13565)
### Changed ### Changed
- File editor no-wrap (#13427) - File editor no-wrap (#13427)
- ESP32 core library from v1.0.7.4 to v1.0.7.5 - ESP32 core library from v1.0.7.4 to v1.0.7.5
- ESP32C3 core library from v2.0.0-post to v2.0.1-rc1 - ESP32-C3 core library from v2.0.0-post to v2.0.1-rc1
### Fixed ### Fixed
- Initial reset RTC memory based variables like EnergyToday and EnergyTotal - Initial reset RTC memory based variables like EnergyToday and EnergyTotal
- ESP32 Telegram compile error (#13435) - ESP32 Telegram compile error (#13435)
- SML compile error (#13441) - SML compile error (#13441)
- GUI checkbox MQTT TLS not saved regression from v9.2.0.3 (#13442) - GUI checkbox MQTT TLS not saved regression from v9.2.0.3 (#13442)
- Discovery of shutters (#13572)
- ESP32-C3 OneWire as used by DS18x20 (#13583)
## [Released] ## [Released]

View File

@ -102,17 +102,22 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo
## Changelog v10.0.0.1 ## Changelog v10.0.0.1
### Added ### Added
- 1 second heartbeat GPIO
- ESP32 Berry add module ``python_compat`` to be closer to Python syntax [#13428](https://github.com/arendst/Tasmota/issues/13428) - ESP32 Berry add module ``python_compat`` to be closer to Python syntax [#13428](https://github.com/arendst/Tasmota/issues/13428)
- Command ``TcpConfig`` for TCPBridge protocol configuration [#13565](https://github.com/arendst/Tasmota/issues/13565)
### Breaking Changed ### Breaking Changed
### Changed ### Changed
- File editor no-wrap [#13427](https://github.com/arendst/Tasmota/issues/13427) - File editor no-wrap [#13427](https://github.com/arendst/Tasmota/issues/13427)
- ESP32 core library from v1.0.7.4 to v1.0.7.5 - ESP32 core library from v1.0.7.4 to v1.0.7.5
- ESP32C3 core library from v2.0.0-post to v2.0.1-rc1 - ESP32-C3 core library from v2.0.0-post to v2.0.1-rc1
### Fixed ### Fixed
- Initial reset RTC memory based variables like EnergyToday and EnergyTotal - Initial reset RTC memory based variables like EnergyToday and EnergyTotal
- ESP32 Telegram compile error [#13435](https://github.com/arendst/Tasmota/issues/13435) - ESP32 Telegram compile error [#13435](https://github.com/arendst/Tasmota/issues/13435)
- SML compile error [#13441](https://github.com/arendst/Tasmota/issues/13441) - SML compile error [#13441](https://github.com/arendst/Tasmota/issues/13441)
- GUI checkbox MQTT TLS not saved regression from v9.2.0.3 [#13442](https://github.com/arendst/Tasmota/issues/13442) - GUI checkbox MQTT TLS not saved regression from v9.2.0.3 [#13442](https://github.com/arendst/Tasmota/issues/13442)
- Discovery of shutters [#13572](https://github.com/arendst/Tasmota/issues/13572)
- ESP32-C3 OneWire as used by DS18x20 [#13583](https://github.com/arendst/Tasmota/issues/13583)

View File

@ -0,0 +1,14 @@
{
"name": "TasmotaLList",
"version": "1.0",
"description": "Simple yet powerful linked-list",
"license": "MIT",
"homepage": "https://github.com/arendst/Tasmota",
"frameworks": "*",
"platforms": "*",
"authors":
{
"name": "Stephan Hadinger",
"maintainer": true
}
}

View File

@ -1,5 +1,5 @@
/* /*
support_light_list.ino - Lightweight Linked List for simple objects - optimized for low code size and low memory LList.h - Lightweight Linked List for simple objects - optimized for low code size and low memory
Copyright (C) 2021 Theo Arends and Stephan Hadinger Copyright (C) 2021 Theo Arends and Stephan Hadinger
@ -17,6 +17,11 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef __LLIST__
#define __LLIST__
#include <cstddef>
/*********************************************************************************************\ /*********************************************************************************************\
* *
* private class for Linked List element * private class for Linked List element
@ -206,3 +211,5 @@ T & LList<T>::addToLast(LList_elt<T> * elt) {
elt->_next = nullptr; elt->_next = nullptr;
return elt->_val; return elt->_val;
} }
#endif // __LLIST__

View File

@ -76,13 +76,6 @@ static char sets[][11] PROGMEM =
{'.', ',', '-', '/', '?', '+', ' ', '(', ')', '$', '@'}, {'.', ',', '-', '/', '?', '+', ' ', '(', ')', '$', '@'},
{';', '#', ':', '<', '^', '*', '"', '{', '}', '[', ']'}, {';', '#', ':', '<', '^', '*', '"', '{', '}', '[', ']'},
{'=', '%', '\'', '>', '&', '_', '!', '\\', '|', '~', '`'}}; {'=', '%', '\'', '>', '&', '_', '!', '\\', '|', '~', '`'}};
// {{ 0, ' ', 'e', 0, 't', 'a', 'o', 'i', 'n', 's', 'r'},
// { 0, 'l', 'c', 'd', 'h', 'u', 'p', 'm', 'b', 'g', 'w'},
// {'f', 'y', 'v', 'k', 'q', 'j', 'x', 'z', 0, 0, 0},
// { 0, '9', '0', '1', '2', '3', '4', '5', '6', '7', '8'},
// {'.', ',', '-', '/', '=', '+', ' ', '(', ')', '$', '%'},
// {'&', ';', ':', '<', '>', '*', '"', '{', '}', '[', ']'},
// {'@', '?', '\'', '^', '#', '_', '!', '\\', '|', '~', '`'}};
// Decoder is designed for using less memory, not speed // Decoder is designed for using less memory, not speed
// Decode lookup table for code index and length // Decode lookup table for code index and length
@ -117,28 +110,16 @@ static const uint16_t DICT_CODE = 0x0000;
static const uint16_t DICT_CODE_LEN = 5; static const uint16_t DICT_CODE_LEN = 5;
static const uint16_t DICT_OTHER_CODE = 0x0000; // not used static const uint16_t DICT_OTHER_CODE = 0x0000; // not used
static const uint16_t DICT_OTHER_CODE_LEN = 6; static const uint16_t DICT_OTHER_CODE_LEN = 6;
// const uint16_t RPT_CODE = 0x2370;
// const uint16_t RPT_CODE_LEN = 13;
static const uint16_t RPT_CODE_TASMOTA = 0x3780; static const uint16_t RPT_CODE_TASMOTA = 0x3780;
static const uint16_t RPT_CODE_TASMOTA_LEN = 10; static const uint16_t RPT_CODE_TASMOTA_LEN = 10;
static const uint16_t BACK2_STATE1_CODE = 0x2000; // 0010 = back to lower case static const uint16_t BACK2_STATE1_CODE = 0x2000; // 0010 = back to lower case
static const uint16_t BACK2_STATE1_CODE_LEN = 4; static const uint16_t BACK2_STATE1_CODE_LEN = 4;
static const uint16_t BACK_FROM_UNI_CODE = 0xFE00; static const uint16_t BACK_FROM_UNI_CODE = 0xFE00;
static const uint16_t BACK_FROM_UNI_CODE_LEN = 8; static const uint16_t BACK_FROM_UNI_CODE_LEN = 8;
// const uint16_t CRLF_CODE = 0x3780;
// const uint16_t CRLF_CODE_LEN = 10;
static const uint16_t LF_CODE = 0x3700; static const uint16_t LF_CODE = 0x3700;
static const uint16_t LF_CODE_LEN = 9; static const uint16_t LF_CODE_LEN = 9;
static const uint16_t TAB_CODE = 0x2400; static const uint16_t TAB_CODE = 0x2400;
static const uint16_t TAB_CODE_LEN = 7; static const uint16_t TAB_CODE_LEN = 7;
// const uint16_t UNI_CODE = 0x8000; // Unicode disabled
// const uint16_t UNI_CODE_LEN = 3;
// const uint16_t UNI_STATE_SPL_CODE = 0xF800;
// const uint16_t UNI_STATE_SPL_CODE_LEN = 5;
// const uint16_t UNI_STATE_DICT_CODE = 0xFC00;
// const uint16_t UNI_STATE_DICT_CODE_LEN = 7;
// const uint16_t CONT_UNI_CODE = 0x2800;
// const uint16_t CONT_UNI_CODE_LEN = 7;
static const uint16_t ALL_UPPER_CODE = 0x2200; static const uint16_t ALL_UPPER_CODE = 0x2200;
static const uint16_t ALL_UPPER_CODE_LEN = 8; static const uint16_t ALL_UPPER_CODE_LEN = 8;
static const uint16_t SW2_STATE2_CODE = 0x3800; static const uint16_t SW2_STATE2_CODE = 0x3800;
@ -147,8 +128,6 @@ static const uint16_t ST2_SPC_CODE = 0x3B80;
static const uint16_t ST2_SPC_CODE_LEN = 11; static const uint16_t ST2_SPC_CODE_LEN = 11;
static const uint16_t BIN_CODE_TASMOTA = 0x8000; static const uint16_t BIN_CODE_TASMOTA = 0x8000;
static const uint16_t BIN_CODE_TASMOTA_LEN = 3; static const uint16_t BIN_CODE_TASMOTA_LEN = 3;
// const uint16_t BIN_CODE = 0x2000;
// const uint16_t BIN_CODE_LEN = 9;
#define NICE_LEN 5 #define NICE_LEN 5
@ -467,9 +446,9 @@ void Unishox::decodeRepeat(void) {
uint32_t dict_len = readCount() + NICE_LEN; uint32_t dict_len = readCount() + NICE_LEN;
uint32_t dist = readCount() + NICE_LEN - 1; uint32_t dist = readCount() + NICE_LEN - 1;
if (ol + dict_len <= len_out) { if (ol + dict_len <= len_out) {
memcpy(out + ol, out + ol - dist, dict_len); memcpy(out + ol, out + ol - dist, dict_len);
ol += dict_len; ol += dict_len;
} }
} }
int32_t Unishox::unishox_decompress(const char *p_in, size_t p_len, char *p_out, size_t p_len_out) { int32_t Unishox::unishox_decompress(const char *p_in, size_t p_len, char *p_out, size_t p_len_out) {
@ -485,10 +464,10 @@ int32_t Unishox::unishox_decompress(const char *p_in, size_t p_len, char *p_out,
dstate = SHX_SET1; dstate = SHX_SET1;
is_all_upper = 0; is_all_upper = 0;
out[ol] = 0; if (out) out[ol] = 0;
// while ((byte_no << 3) + bit_no - 8 < len) { // while ((byte_no << 3) + bit_no - 8 < len) {
while (!in_eof) { while (!in_eof) {
if (ol >= len_out) { if (out && ol >= len_out) {
break; break;
} }
int32_t h, v; int32_t h, v;
@ -535,7 +514,8 @@ int32_t Unishox::unishox_decompress(const char *p_in, size_t p_len, char *p_out,
if (v == 0 && h == SHX_SET1A) { if (v == 0 && h == SHX_SET1A) {
if (is_upper) { if (is_upper) {
out[ol++] = 255 - readCount(); // binary if (out) out[ol] = 255 - readCount(); // binary
ol++;
} else { } else {
decodeRepeat(); // dist decodeRepeat(); // dist
} }
@ -544,7 +524,8 @@ int32_t Unishox::unishox_decompress(const char *p_in, size_t p_len, char *p_out,
if (h == SHX_SET1 && v == 3) { if (h == SHX_SET1 && v == 3) {
// was Unicode, will do Binary instead // was Unicode, will do Binary instead
out[ol++] = 255 - readCount(); // binary if (out) out[ol] = 255 - readCount(); // binary
ol++;
continue; continue;
} }
if (h < 7 && v < 11) // TODO: are these the actual limits? Not 11x7 ? if (h < 7 && v < 11) // TODO: are these the actual limits? Not 11x7 ?
@ -557,17 +538,22 @@ int32_t Unishox::unishox_decompress(const char *p_in, size_t p_len, char *p_out,
c = '\t'; // If UpperCase Space, change to TAB c = '\t'; // If UpperCase Space, change to TAB
if (h == SHX_SET1B) { if (h == SHX_SET1B) {
if (8 == v) { // was LF or RPT, now only LF if (8 == v) { // was LF or RPT, now only LF
out[ol++] = '\n'; if (out) out[ol] = '\n';
ol++;
continue; continue;
} }
if (9 == v) { // was CRLF, now RPT if (9 == v) { // was CRLF, now RPT
uint32_t count = readCount() + 4; uint32_t count = readCount() + 4;
if (ol + count >= len_out) { if (out && ol + count >= len_out) {
return -1; // overflow return -1; // overflow
} }
char rpt_c = out[ol - 1]; if (out) {
while (count--) char rpt_c = out[ol - 1];
out[ol++] = rpt_c; while (count--)
out[ol++] = rpt_c;
} else {
ol += count;
}
continue; continue;
} }
if (10 == v) { if (10 == v) {
@ -576,10 +562,11 @@ int32_t Unishox::unishox_decompress(const char *p_in, size_t p_len, char *p_out,
} }
} }
// Serial.printf(">>>>>>>>>>>>>>>>>>>>>> Out = %c\n", c); // Serial.printf(">>>>>>>>>>>>>>>>>>>>>> Out = %c\n", c);
out[ol++] = c; if (out) out[ol] = c;
ol++;
} }
if (ol > len_out) { if (out && ol > len_out) {
return -1; // overflow return -1; // overflow
} else { } else {
return ol; return ol;

View File

@ -197,6 +197,9 @@ void directWriteHigh(IO_REG_TYPE pin)
static inline __attribute__((always_inline)) static inline __attribute__((always_inline))
void directModeInput(IO_REG_TYPE pin) void directModeInput(IO_REG_TYPE pin)
{ {
#if CONFIG_IDF_TARGET_ESP32C3
GPIO.enable_w1tc.val = ((uint32_t)1 << (pin));
#else
if ( digitalPinIsValid(pin) ) if ( digitalPinIsValid(pin) )
{ {
#if ESP_IDF_VERSION_MAJOR < 4 // IDF 3.x ESP32/PICO-D4 #if ESP_IDF_VERSION_MAJOR < 4 // IDF 3.x ESP32/PICO-D4
@ -208,9 +211,6 @@ void directModeInput(IO_REG_TYPE pin)
ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown);
} }
#elif ESP_IDF_VERSION_MAJOR > 3 // ESP32-S2 needs IDF 4.2 or later #elif ESP_IDF_VERSION_MAJOR > 3 // ESP32-S2 needs IDF 4.2 or later
#if CONFIG_IDF_TARGET_ESP32C3
// Esp32c3 has no full RTC IO subsystem, so GPIO is 100% "independent" of RTC
#else // plain ESP32
uint32_t rtc_reg(rtc_io_desc[pin].reg); uint32_t rtc_reg(rtc_io_desc[pin].reg);
if ( rtc_reg ) // RTC pins PULL settings if ( rtc_reg ) // RTC pins PULL settings
@ -219,16 +219,11 @@ void directModeInput(IO_REG_TYPE pin)
ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[pin].pullup | rtc_io_desc[pin].pulldown); ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[pin].pullup | rtc_io_desc[pin].pulldown);
} }
#endif #endif
#endif
#if CONFIG_IDF_TARGET_ESP32C3
GPIO.enable_w1tc.val = ((uint32_t)1 << (pin - 32));
#else // plain ESP32
if ( pin < 32 ) if ( pin < 32 )
GPIO.enable_w1tc = ((uint32_t)1 << pin); GPIO.enable_w1tc = ((uint32_t)1 << pin);
else else
GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32));
#endif
uint32_t pinFunction((uint32_t)2 << FUN_DRV_S); // what are the drivers? uint32_t pinFunction((uint32_t)2 << FUN_DRV_S); // what are the drivers?
pinFunction |= FUN_IE; // input enable but required for output as well? pinFunction |= FUN_IE; // input enable but required for output as well?
@ -238,11 +233,15 @@ void directModeInput(IO_REG_TYPE pin)
GPIO.pin[pin].val = 0; GPIO.pin[pin].val = 0;
} }
#endif
} }
static inline __attribute__((always_inline)) static inline __attribute__((always_inline))
void directModeOutput(IO_REG_TYPE pin) void directModeOutput(IO_REG_TYPE pin)
{ {
#if CONFIG_IDF_TARGET_ESP32C3
GPIO.enable_w1ts.val = ((uint32_t)1 << (pin));
#else
if ( digitalPinIsValid(pin) && pin <= 33 ) // pins above 33 can be only inputs if ( digitalPinIsValid(pin) && pin <= 33 ) // pins above 33 can be only inputs
{ {
#if ESP_IDF_VERSION_MAJOR < 4 // IDF 3.x ESP32/PICO-D4 #if ESP_IDF_VERSION_MAJOR < 4 // IDF 3.x ESP32/PICO-D4
@ -254,9 +253,6 @@ void directModeOutput(IO_REG_TYPE pin)
ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown);
} }
#elif ESP_IDF_VERSION_MAJOR > 3 // ESP32-S2 needs IDF 4.2 or later #elif ESP_IDF_VERSION_MAJOR > 3 // ESP32-S2 needs IDF 4.2 or later
#if CONFIG_IDF_TARGET_ESP32C3
// Esp32c3 has no full RTC IO subsystem, so GPIO is 100% "independent" of RTC
#else // plain ESP32
uint32_t rtc_reg(rtc_io_desc[pin].reg); uint32_t rtc_reg(rtc_io_desc[pin].reg);
if ( rtc_reg ) // RTC pins PULL settings if ( rtc_reg ) // RTC pins PULL settings
@ -265,16 +261,11 @@ void directModeOutput(IO_REG_TYPE pin)
ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[pin].pullup | rtc_io_desc[pin].pulldown); ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[pin].pullup | rtc_io_desc[pin].pulldown);
} }
#endif #endif
#endif
#if CONFIG_IDF_TARGET_ESP32C3
GPIO.enable_w1ts.val = ((uint32_t)1 << (pin - 32));
#else // plain ESP32
if ( pin < 32 ) if ( pin < 32 )
GPIO.enable_w1ts = ((uint32_t)1 << pin); GPIO.enable_w1ts = ((uint32_t)1 << pin);
else // already validated to pins <= 33 else // already validated to pins <= 33
GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32));
#endif
uint32_t pinFunction((uint32_t)2 << FUN_DRV_S); // what are the drivers? uint32_t pinFunction((uint32_t)2 << FUN_DRV_S); // what are the drivers?
pinFunction |= FUN_IE; // input enable but required for output as well? pinFunction |= FUN_IE; // input enable but required for output as well?
@ -284,6 +275,7 @@ void directModeOutput(IO_REG_TYPE pin)
GPIO.pin[pin].val = 0; GPIO.pin[pin].val = 0;
} }
#endif
} }
#define DIRECT_READ(base, pin) directRead(pin) #define DIRECT_READ(base, pin) directRead(pin)

View File

@ -20,8 +20,8 @@ be_local_closure(init, /* name */
NULL, /* no sub protos */ NULL, /* no sub protos */
0, /* has constants */ 0, /* has constants */
NULL, /* no const */ NULL, /* no const */
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 1]) { /* code */ ( &(const binstruction[ 1]) { /* code */
0x80000000, // 0000 RET 0 0x80000000, // 0000 RET 0
}) })
@ -47,7 +47,7 @@ be_local_closure(get_tasmota, /* name */
/* K0 */ be_nested_string("tasmota", 424643812, 7), /* K0 */ be_nested_string("tasmota", 424643812, 7),
}), }),
(be_nested_const_str("get_tasmota", 334356779, 11)), (be_nested_const_str("get_tasmota", 334356779, 11)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 2]) { /* code */ ( &(const binstruction[ 2]) { /* code */
0xB8060000, // 0000 GETNGBL R1 K0 0xB8060000, // 0000 GETNGBL R1 K0
0x80040200, // 0001 RET 1 R1 0x80040200, // 0001 RET 1 R1
@ -83,7 +83,7 @@ be_local_closure(add_cmd, /* name */
0, /* has constants */ 0, /* has constants */
NULL, /* no const */ NULL, /* no const */
(be_nested_const_str("<lambda>", 607256038, 8)), (be_nested_const_str("<lambda>", 607256038, 8)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 8]) { /* code */ ( &(const binstruction[ 8]) { /* code */
0x68100000, // 0000 GETUPV R4 U0 0x68100000, // 0000 GETUPV R4 U0
0x68140001, // 0001 GETUPV R5 U1 0x68140001, // 0001 GETUPV R5 U1
@ -102,7 +102,7 @@ be_local_closure(add_cmd, /* name */
/* K1 */ be_nested_string("add_cmd", -933336417, 7), /* K1 */ be_nested_string("add_cmd", -933336417, 7),
}), }),
(be_nested_const_str("add_cmd", -933336417, 7)), (be_nested_const_str("add_cmd", -933336417, 7)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 7]) { /* code */ ( &(const binstruction[ 7]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0 0xB80E0000, // 0000 GETNGBL R3 K0
0x8C0C0701, // 0001 GETMET R3 R3 K1 0x8C0C0701, // 0001 GETMET R3 R3 K1

View File

@ -53,8 +53,8 @@ be_local_closure(init, /* name */
/* K2 */ be_nested_string("energy_struct", 1655792843, 13), /* K2 */ be_nested_string("energy_struct", 1655792843, 13),
/* K3 */ be_nested_string("_ptr", 306235816, 4), /* K3 */ be_nested_string("_ptr", 306235816, 4),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */ ( &(const binstruction[ 6]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0 0xA4060000, // 0000 IMPORT R1 K0
0xB80A0400, // 0001 GETNGBL R2 K2 0xB80A0400, // 0001 GETNGBL R2 K2
@ -86,7 +86,7 @@ be_local_closure(read, /* name */
/* K1 */ be_nested_string("tomap", 612167626, 5), /* K1 */ be_nested_string("tomap", 612167626, 5),
}), }),
(be_nested_const_str("<anonymous>", 1160973142, 11)), (be_nested_const_str("<anonymous>", 1160973142, 11)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 4]) { /* code */ ( &(const binstruction[ 4]) { /* code */
0xB8020000, // 0000 GETNGBL R0 K0 0xB8020000, // 0000 GETNGBL R0 K0
0x8C000101, // 0001 GETMET R0 R0 K1 0x8C000101, // 0001 GETMET R0 R0 K1
@ -114,7 +114,7 @@ be_local_closure(member, /* name */
/* K0 */ be_nested_string("_energy", 535372070, 7), /* K0 */ be_nested_string("_energy", 535372070, 7),
}), }),
(be_nested_const_str("member", 719708611, 6)), (be_nested_const_str("member", 719708611, 6)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 3]) { /* code */ ( &(const binstruction[ 3]) { /* code */
0xB8060000, // 0000 GETNGBL R1 K0 0xB8060000, // 0000 GETNGBL R1 K0
0x88040200, // 0001 GETMBR R1 R1 R0 0x88040200, // 0001 GETMBR R1 R1 R0
@ -142,7 +142,7 @@ be_local_closure(setmember, /* name */
/* K0 */ be_nested_string("_energy", 535372070, 7), /* K0 */ be_nested_string("_energy", 535372070, 7),
}), }),
(be_nested_const_str("setmember", 1432909441, 9)), (be_nested_const_str("setmember", 1432909441, 9)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 3]) { /* code */ ( &(const binstruction[ 3]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0 0xB80A0000, // 0000 GETNGBL R2 K0
0x90080001, // 0001 SETMBR R2 R0 R1 0x90080001, // 0001 SETMBR R2 R0 R1

View File

@ -9,6 +9,7 @@
// Tasmota specific // Tasmota specific
extern int gp_member(bvm *vm);
extern int gp_pin_mode(bvm *vm); extern int gp_pin_mode(bvm *vm);
extern int gp_digital_write(bvm *vm); extern int gp_digital_write(bvm *vm);
extern int gp_digital_read(bvm *vm); extern int gp_digital_read(bvm *vm);
@ -19,275 +20,7 @@ extern int gp_pin(bvm *vm);
/* @const_object_info_begin /* @const_object_info_begin
module gpio (scope: global) { module gpio (scope: global) {
LOW, int(0) member, func(gp_member)
HIGH, int(1)
INPUT, int(1)
OUTPUT, int(2)
PULLUP, int(4)
INPUT_PULLUP, int(5)
PULLDOWN, int(8)
INPUT_PULLDOWN, int(9)
OPEN_DRAIN, int(16)
OUTPUT_OPEN_DRAIN, int(18)
DAC, int(-1)
RISING, int(1)
FALLING, int(2)
CHANGE, int(4)
NONE, int(0)
KEY1, int(1)
KEY1_NP, int(2)
KEY1_INV, int(3)
KEY1_INV_NP, int(4)
SWT1, int(5)
SWT1_NP, int(6)
REL1, int(7)
REL1_INV, int(8)
LED1, int(9)
LED1_INV, int(10)
CNTR1, int(11)
CNTR1_NP, int(12)
PWM1, int(13)
PWM1_INV, int(14)
BUZZER, int(15)
BUZZER_INV, int(16)
LEDLNK, int(17)
LEDLNK_INV, int(18)
I2C_SCL, int(19)
I2C_SDA, int(20)
SPI_MISO, int(21)
SPI_MOSI, int(22)
SPI_CLK, int(23)
SPI_CS, int(24)
SPI_DC, int(25)
SSPI_MISO, int(26)
SSPI_MOSI, int(27)
SSPI_SCLK, int(28)
SSPI_CS, int(29)
SSPI_DC, int(30)
BACKLIGHT, int(31)
OLED_RESET, int(32)
IRSEND, int(33)
IRRECV, int(34)
RFSEND, int(35)
RFRECV, int(36)
DHT11, int(37)
DHT22, int(38)
SI7021, int(39)
DHT11_OUT, int(40)
DSB, int(41)
DSB_OUT, int(42)
WS2812, int(43)
MHZ_TXD, int(44)
MHZ_RXD, int(45)
PZEM0XX_TX, int(46)
PZEM004_RX, int(47)
PZEM016_RX, int(48)
PZEM017_RX, int(49)
SAIR_TX, int(50)
SAIR_RX, int(51)
PMS5003_TX, int(52)
PMS5003_RX, int(53)
SDS0X1_TX, int(54)
SDS0X1_RX, int(55)
SBR_TX, int(56)
SBR_RX, int(57)
SR04_TRIG, int(58)
SR04_ECHO, int(59)
SDM120_TX, int(60)
SDM120_RX, int(61)
SDM630_TX, int(62)
SDM630_RX, int(63)
TM1638CLK, int(64)
TM1638DIO, int(65)
TM1638STB, int(66)
MP3_DFR562, int(67)
HX711_SCK, int(68)
HX711_DAT, int(69)
TX2X_TXD_BLACK, int(70)
TUYA_TX, int(71)
TUYA_RX, int(72)
MGC3130_XFER, int(73)
MGC3130_RESET, int(74)
RF_SENSOR, int(75)
AZ_TXD, int(76)
AZ_RXD, int(77)
MAX31855CS, int(78)
MAX31855CLK, int(79)
MAX31855DO, int(80)
NRG_SEL, int(81)
NRG_SEL_INV, int(82)
NRG_CF1, int(83)
HLW_CF, int(84)
HJL_CF, int(85)
MCP39F5_TX, int(86)
MCP39F5_RX, int(87)
MCP39F5_RST, int(88)
PN532_TXD, int(89)
PN532_RXD, int(90)
SM16716_CLK, int(91)
SM16716_DAT, int(92)
SM16716_SEL, int(93)
DI, int(94)
DCKI, int(95)
CSE7766_TX, int(96)
CSE7766_RX, int(97)
ARIRFRCV, int(98)
ARIRFSEL, int(99)
TXD, int(100)
RXD, int(101)
ROT1A, int(102)
ROT1B, int(103)
ADC_JOY, int(104)
SSPI_MAX31865_CS1, int(105)
HRE_CLOCK, int(106)
HRE_DATA, int(107)
ADE7953_IRQ, int(108)
SOLAXX1_TX, int(109)
SOLAXX1_RX, int(110)
ZIGBEE_TX, int(111)
ZIGBEE_RX, int(112)
RDM6300_RX, int(113)
IBEACON_TX, int(114)
IBEACON_RX, int(115)
A4988_DIR, int(116)
A4988_STP, int(117)
A4988_ENA, int(118)
A4988_MS1, int(119)
OUTPUT_HI, int(120)
OUTPUT_LO, int(121)
DDS2382_TX, int(122)
DDS2382_RX, int(123)
DDSU666_TX, int(124)
DDSU666_RX, int(125)
SM2135_CLK, int(126)
SM2135_DAT, int(127)
DEEPSLEEP, int(128)
EXS_ENABLE, int(129)
TASMOTACLIENT_TXD, int(130)
TASMOTACLIENT_RXD, int(131)
TASMOTACLIENT_RST, int(132)
TASMOTACLIENT_RST_INV, int(133)
HPMA_RX, int(134)
HPMA_TX, int(135)
GPS_RX, int(136)
GPS_TX, int(137)
HM10_RX, int(138)
HM10_TX, int(139)
LE01MR_RX, int(140)
LE01MR_TX, int(141)
CC1101_GDO0, int(142)
CC1101_GDO2, int(143)
HRXL_RX, int(144)
ELECTRIQ_MOODL_TX, int(145)
AS3935, int(146)
ADC_INPUT, int(147)
ADC_TEMP, int(148)
ADC_LIGHT, int(149)
ADC_BUTTON, int(150)
ADC_BUTTON_INV, int(151)
ADC_RANGE, int(152)
ADC_CT_POWER, int(153)
WEBCAM_PWDN, int(154)
WEBCAM_RESET, int(155)
WEBCAM_XCLK, int(156)
WEBCAM_SIOD, int(157)
WEBCAM_SIOC, int(158)
WEBCAM_DATA, int(159)
WEBCAM_VSYNC, int(160)
WEBCAM_HREF, int(161)
WEBCAM_PCLK, int(162)
WEBCAM_PSCLK, int(163)
WEBCAM_HSD, int(164)
WEBCAM_PSRCS, int(165)
BOILER_OT_RX, int(166)
BOILER_OT_TX, int(167)
WINDMETER_SPEED, int(168)
KEY1_TC, int(169)
BL0940_RX, int(170)
TCP_TX, int(171)
TCP_RX, int(172)
ETH_PHY_POWER, int(173)
ETH_PHY_MDC, int(174)
ETH_PHY_MDIO, int(175)
TELEINFO_RX, int(176)
TELEINFO_ENABLE, int(177)
LMT01, int(178)
IEM3000_TX, int(179)
IEM3000_RX, int(180)
ZIGBEE_RST, int(181)
DYP_RX, int(182)
MIEL_HVAC_TX, int(183)
MIEL_HVAC_RX, int(184)
WE517_TX, int(185)
WE517_RX, int(186)
AS608_TX, int(187)
AS608_RX, int(188)
SHELLY_DIMMER_BOOT0, int(189)
SHELLY_DIMMER_RST_INV, int(190)
RC522_RST, int(191)
P9813_CLK, int(192)
P9813_DAT, int(193)
OPTION_A, int(194)
FTC532, int(195)
RC522_CS, int(196)
NRF24_CS, int(197)
NRF24_DC, int(198)
ILI9341_CS, int(199)
ILI9341_DC, int(200)
ILI9488_CS, int(201)
EPAPER29_CS, int(202)
EPAPER42_CS, int(203)
SSD1351_CS, int(204)
RA8876_CS, int(205)
ST7789_CS, int(206)
ST7789_DC, int(207)
SSD1331_CS, int(208)
SSD1331_DC, int(209)
SDCARD_CS, int(210)
ROT1A_NP, int(211)
ROT1B_NP, int(212)
ADC_PH, int(213)
BS814_CLK, int(214)
BS814_DAT, int(215)
WIEGAND_D0, int(216)
WIEGAND_D1, int(217)
NEOPOOL_TX, int(218)
NEOPOOL_RX, int(219)
SDM72_TX, int(220)
SDM72_RX, int(221)
TM1637CLK, int(222)
TM1637DIO, int(223)
PROJECTOR_CTRL_TX, int(224)
PROJECTOR_CTRL_RX, int(225)
SSD1351_DC, int(226)
XPT2046_CS, int(227)
CSE7761_TX, int(228)
CSE7761_RX, int(229)
VL53L0X_XSHUT1, int(230)
MAX7219CLK, int(231)
MAX7219DIN, int(232)
MAX7219CS, int(233)
TFMINIPLUS_TX, int(234)
TFMINIPLUS_RX, int(235)
ZEROCROSS, int(236)
HALLEFFECT, int(237)
EPD_DATA, int(238)
INPUT, int(239)
KEY1_PD, int(240)
KEY1_INV_PD, int(241)
SWT1_PD, int(242)
I2S_OUT_DATA, int(243)
I2S_OUT_CLK, int(244)
I2S_OUT_SLCT, int(245)
I2S_IN_DATA, int(246)
I2S_IN_CLK, int(247)
I2S_IN_SLCT, int(248)
INTERRUPT, int(249)
SENSOR_END, int(250)
pin_mode, func(gp_pin_mode) pin_mode, func(gp_pin_mode)
digital_write, func(gp_digital_write) digital_write, func(gp_digital_write)

View File

@ -21,7 +21,7 @@ be_local_closure(get_warning_level, /* name */
/* K1 */ be_const_int(1), /* K1 */ be_const_int(1),
}), }),
(be_nested_const_str("get_warning_level", 1737834441, 17)), (be_nested_const_str("get_warning_level", 1737834441, 17)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0 0x8C040100, // 0000 GETMET R1 R0 K0
0x540E0046, // 0001 LDINT R3 71 0x540E0046, // 0001 LDINT R3 71
@ -52,7 +52,7 @@ be_local_closure(get_vbus_current, /* name */
/* K1 */ be_const_real_hex(0x3EC00000), /* K1 */ be_const_real_hex(0x3EC00000),
}), }),
(be_nested_const_str("get_vbus_current", 1205347942, 16)), (be_nested_const_str("get_vbus_current", 1205347942, 16)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0 0x8C040100, // 0000 GETMET R1 R0 K0
0x540E005B, // 0001 LDINT R3 92 0x540E005B, // 0001 LDINT R3 92
@ -83,7 +83,7 @@ be_local_closure(set_chg_current, /* name */
/* K1 */ be_nested_string("read8", -1492179129, 5), /* K1 */ be_nested_string("read8", -1492179129, 5),
}), }),
(be_nested_const_str("set_chg_current", 336304386, 15)), (be_nested_const_str("set_chg_current", 336304386, 15)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[12]) { /* code */ ( &(const binstruction[12]) { /* code */
0x8C080100, // 0000 GETMET R2 R0 K0 0x8C080100, // 0000 GETMET R2 R0 K0
0x54120032, // 0001 LDINT R4 51 0x54120032, // 0001 LDINT R4 51
@ -121,7 +121,7 @@ be_local_closure(get_bat_current, /* name */
/* K1 */ be_const_real_hex(0x3F000000), /* K1 */ be_const_real_hex(0x3F000000),
}), }),
(be_nested_const_str("get_bat_current", 1912106073, 15)), (be_nested_const_str("get_bat_current", 1912106073, 15)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 9]) { /* code */ ( &(const binstruction[ 9]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0 0x8C040100, // 0000 GETMET R1 R0 K0
0x540E0079, // 0001 LDINT R3 122 0x540E0079, // 0001 LDINT R3 122
@ -156,7 +156,7 @@ be_local_closure(get_bat_power, /* name */
/* K1 */ be_const_real_hex(0x3A102DE1), /* K1 */ be_const_real_hex(0x3A102DE1),
}), }),
(be_nested_const_str("get_bat_power", -1227592443, 13)), (be_nested_const_str("get_bat_power", -1227592443, 13)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0 0x8C040100, // 0000 GETMET R1 R0 K0
0x540E006F, // 0001 LDINT R3 112 0x540E006F, // 0001 LDINT R3 112
@ -186,7 +186,7 @@ be_local_closure(json_append, /* name */
/* K0 */ be_nested_string("wire", -212213352, 4), /* K0 */ be_nested_string("wire", -212213352, 4),
}), }),
(be_nested_const_str("json_append", -1292948012, 11)), (be_nested_const_str("json_append", -1292948012, 11)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0 0x88040100, // 0000 GETMBR R1 R0 K0
0x74060001, // 0001 JMPT R1 #0004 0x74060001, // 0001 JMPT R1 #0004
@ -217,7 +217,7 @@ be_local_closure(get_vbus_voltage, /* name */
/* K1 */ be_const_real_hex(0x3ADED28A), /* K1 */ be_const_real_hex(0x3ADED28A),
}), }),
(be_nested_const_str("get_vbus_voltage", -1896756895, 16)), (be_nested_const_str("get_vbus_voltage", -1896756895, 16)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0 0x8C040100, // 0000 GETMET R1 R0 K0
0x540E0059, // 0001 LDINT R3 90 0x540E0059, // 0001 LDINT R3 90
@ -249,7 +249,7 @@ be_local_closure(get_temp, /* name */
/* K2 */ be_const_real_hex(0x4310B333), /* K2 */ be_const_real_hex(0x4310B333),
}), }),
(be_nested_const_str("get_temp", -924047810, 8)), (be_nested_const_str("get_temp", -924047810, 8)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */ ( &(const binstruction[ 6]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0 0x8C040100, // 0000 GETMET R1 R0 K0
0x540E005D, // 0001 LDINT R3 94 0x540E005D, // 0001 LDINT R3 94
@ -283,7 +283,7 @@ be_local_closure(battery_present, /* name */
/* K3 */ be_const_int(1), /* K3 */ be_const_int(1),
}), }),
(be_nested_const_str("battery_present", -706570238, 15)), (be_nested_const_str("battery_present", -706570238, 15)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[15]) { /* code */ ( &(const binstruction[15]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0 0x88040100, // 0000 GETMBR R1 R0 K0
0x8C040301, // 0001 GETMET R1 R1 K1 0x8C040301, // 0001 GETMET R1 R1 K1
@ -324,7 +324,7 @@ be_local_closure(get_aps_voltage, /* name */
/* K1 */ be_const_real_hex(0x3AB78035), /* K1 */ be_const_real_hex(0x3AB78035),
}), }),
(be_nested_const_str("get_aps_voltage", -2001930861, 15)), (be_nested_const_str("get_aps_voltage", -2001930861, 15)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0 0x8C040100, // 0000 GETMET R1 R0 K0
0x540E007D, // 0001 LDINT R3 126 0x540E007D, // 0001 LDINT R3 126
@ -358,7 +358,7 @@ be_local_closure(set_dcdc_enable, /* name */
/* K4 */ be_const_int(3), /* K4 */ be_const_int(3),
}), }),
(be_nested_const_str("set_dcdc_enable", 1594690786, 15)), (be_nested_const_str("set_dcdc_enable", 1594690786, 15)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[22]) { /* code */ ( &(const binstruction[22]) { /* code */
0x1C0C0300, // 0000 EQ R3 R1 K0 0x1C0C0300, // 0000 EQ R3 R1 K0
0x780E0004, // 0001 JMPF R3 #0007 0x780E0004, // 0001 JMPF R3 #0007
@ -408,7 +408,7 @@ be_local_closure(set_ldo_voltage, /* name */
/* K3 */ be_const_int(3), /* K3 */ be_const_int(3),
}), }),
(be_nested_const_str("set_ldo_voltage", -204466136, 15)), (be_nested_const_str("set_ldo_voltage", -204466136, 15)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[39]) { /* code */ ( &(const binstruction[39]) { /* code */
0x540E0CE3, // 0000 LDINT R3 3300 0x540E0CE3, // 0000 LDINT R3 3300
0x240C0403, // 0001 GT R3 R2 R3 0x240C0403, // 0001 GT R3 R2 R3
@ -473,8 +473,8 @@ be_local_closure(init, /* name */
/* K1 */ be_nested_string("init", 380752755, 4), /* K1 */ be_nested_string("init", 380752755, 4),
/* K2 */ be_nested_string("AXP192", 757230128, 6), /* K2 */ be_nested_string("AXP192", 757230128, 6),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 9]) { /* code */ ( &(const binstruction[ 9]) { /* code */
0x60040003, // 0000 GETGBL R1 G3 0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0 0x5C080000, // 0001 MOVE R2 R0
@ -509,7 +509,7 @@ be_local_closure(get_bat_voltage, /* name */
/* K1 */ be_const_real_hex(0x3A902DE0), /* K1 */ be_const_real_hex(0x3A902DE0),
}), }),
(be_nested_const_str("get_bat_voltage", 706676538, 15)), (be_nested_const_str("get_bat_voltage", 706676538, 15)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0 0x8C040100, // 0000 GETMET R1 R0 K0
0x540E0077, // 0001 LDINT R3 120 0x540E0077, // 0001 LDINT R3 120
@ -541,7 +541,7 @@ be_local_closure(set_ldo_enable, /* name */
/* K2 */ be_const_int(3), /* K2 */ be_const_int(3),
}), }),
(be_nested_const_str("set_ldo_enable", -1378465255, 14)), (be_nested_const_str("set_ldo_enable", -1378465255, 14)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[15]) { /* code */ ( &(const binstruction[15]) { /* code */
0x1C0C0300, // 0000 EQ R3 R1 K0 0x1C0C0300, // 0000 EQ R3 R1 K0
0x780E0004, // 0001 JMPF R3 #0007 0x780E0004, // 0001 JMPF R3 #0007
@ -586,7 +586,7 @@ be_local_closure(set_dc_voltage, /* name */
/* K5 */ be_nested_string("read8", -1492179129, 5), /* K5 */ be_nested_string("read8", -1492179129, 5),
}), }),
(be_nested_const_str("set_dc_voltage", -2112985360, 14)), (be_nested_const_str("set_dc_voltage", -2112985360, 14)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[48]) { /* code */ ( &(const binstruction[48]) { /* code */
0x140C0300, // 0000 LT R3 R1 K0 0x140C0300, // 0000 LT R3 R1 K0
0x740E0001, // 0001 JMPT R3 #0004 0x740E0001, // 0001 JMPT R3 #0004
@ -662,7 +662,7 @@ be_local_closure(write_gpio, /* name */
/* K3 */ be_const_int(3), /* K3 */ be_const_int(3),
}), }),
(be_nested_const_str("write_gpio", -2027026962, 10)), (be_nested_const_str("write_gpio", -2027026962, 10)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[21]) { /* code */ ( &(const binstruction[21]) { /* code */
0x280C0300, // 0000 GE R3 R1 K0 0x280C0300, // 0000 GE R3 R1 K0
0x780E0007, // 0001 JMPF R3 #000A 0x780E0007, // 0001 JMPF R3 #000A
@ -721,7 +721,7 @@ be_local_closure(web_sensor, /* name */
/* K13 */ be_nested_string("web_send_decimal", 1407210204, 16), /* K13 */ be_nested_string("web_send_decimal", 1407210204, 16),
}), }),
(be_nested_const_str("web_sensor", -1394870324, 10)), (be_nested_const_str("web_sensor", -1394870324, 10)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[26]) { /* code */ ( &(const binstruction[26]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0 0x88040100, // 0000 GETMBR R1 R0 K0
0x74060001, // 0001 JMPT R1 #0004 0x74060001, // 0001 JMPT R1 #0004
@ -773,7 +773,7 @@ be_local_closure(get_bat_charge_current, /* name */
/* K1 */ be_const_real_hex(0x3F000000), /* K1 */ be_const_real_hex(0x3F000000),
}), }),
(be_nested_const_str("get_bat_charge_current", 1385293050, 22)), (be_nested_const_str("get_bat_charge_current", 1385293050, 22)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0 0x8C040100, // 0000 GETMET R1 R0 K0
0x540E0079, // 0001 LDINT R3 122 0x540E0079, // 0001 LDINT R3 122
@ -806,7 +806,7 @@ be_local_closure(get_battery_chargin_status, /* name */
/* K3 */ be_const_int(1), /* K3 */ be_const_int(1),
}), }),
(be_nested_const_str("get_battery_chargin_status", -2061725725, 26)), (be_nested_const_str("get_battery_chargin_status", -2061725725, 26)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 7]) { /* code */ ( &(const binstruction[ 7]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0 0x88040100, // 0000 GETMBR R1 R0 K0
0x8C040301, // 0001 GETMET R1 R1 K1 0x8C040301, // 0001 GETMET R1 R1 K1
@ -842,7 +842,7 @@ be_local_closure(get_input_power_status, /* name */
/* K4 */ be_const_int(1), /* K4 */ be_const_int(1),
}), }),
(be_nested_const_str("get_input_power_status", -192138119, 22)), (be_nested_const_str("get_input_power_status", -192138119, 22)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 7]) { /* code */ ( &(const binstruction[ 7]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0 0x88040100, // 0000 GETMBR R1 R0 K0
0x8C040301, // 0001 GETMET R1 R1 K1 0x8C040301, // 0001 GETMET R1 R1 K1

View File

@ -34,7 +34,7 @@ be_local_closure(read32, /* name */
/* K6 */ be_const_int(3), /* K6 */ be_const_int(3),
}), }),
(be_nested_const_str("read32", 1741276240, 6)), (be_nested_const_str("read32", 1741276240, 6)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[20]) { /* code */ ( &(const binstruction[20]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1 0x8C080501, // 0001 GETMET R2 R2 K1
@ -82,7 +82,7 @@ be_local_closure(write8, /* name */
/* K3 */ be_const_int(1), /* K3 */ be_const_int(1),
}), }),
(be_nested_const_str("write8", -1160975764, 6)), (be_nested_const_str("write8", -1160975764, 6)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 8]) { /* code */ ( &(const binstruction[ 8]) { /* code */
0x880C0100, // 0000 GETMBR R3 R0 K0 0x880C0100, // 0000 GETMBR R3 R0 K0
0x8C0C0701, // 0001 GETMET R3 R3 K1 0x8C0C0701, // 0001 GETMET R3 R3 K1
@ -120,7 +120,7 @@ be_local_closure(read12, /* name */
/* K5 */ be_const_int(1), /* K5 */ be_const_int(1),
}), }),
(be_nested_const_str("read12", -3890326, 6)), (be_nested_const_str("read12", -3890326, 6)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[12]) { /* code */ ( &(const binstruction[12]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1 0x8C080501, // 0001 GETMET R2 R2 K1
@ -160,7 +160,7 @@ be_local_closure(write_bit, /* name */
/* K3 */ be_nested_string("read8", -1492179129, 5), /* K3 */ be_nested_string("read8", -1492179129, 5),
}), }),
(be_nested_const_str("write_bit", -1633976860, 9)), (be_nested_const_str("write_bit", -1633976860, 9)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[26]) { /* code */ ( &(const binstruction[26]) { /* code */
0x14100500, // 0000 LT R4 R2 K0 0x14100500, // 0000 LT R4 R2 K0
0x74120002, // 0001 JMPT R4 #0005 0x74120002, // 0001 JMPT R4 #0005
@ -217,7 +217,7 @@ be_local_closure(read24, /* name */
/* K6 */ be_const_int(2), /* K6 */ be_const_int(2),
}), }),
(be_nested_const_str("read24", 1808533811, 6)), (be_nested_const_str("read24", 1808533811, 6)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[16]) { /* code */ ( &(const binstruction[16]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1 0x8C080501, // 0001 GETMET R2 R2 K1
@ -261,7 +261,7 @@ be_local_closure(read8, /* name */
/* K3 */ be_const_int(1), /* K3 */ be_const_int(1),
}), }),
(be_nested_const_str("read8", -1492179129, 5)), (be_nested_const_str("read8", -1492179129, 5)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 7]) { /* code */ ( &(const binstruction[ 7]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1 0x8C080501, // 0001 GETMET R2 R2 K1
@ -301,8 +301,8 @@ be_local_closure(init, /* name */
/* K8 */ be_nested_string("detected on bus", 1432002650, 15), /* K8 */ be_nested_string("detected on bus", 1432002650, 15),
/* K9 */ be_nested_string("bus", 1607822841, 3), /* K9 */ be_nested_string("bus", 1607822841, 3),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[44]) { /* code */ ( &(const binstruction[44]) { /* code */
0x8C100100, // 0000 GETMET R4 R0 K0 0x8C100100, // 0000 GETMET R4 R0 K0
0x7C100200, // 0001 CALL R4 1 0x7C100200, // 0001 CALL R4 1
@ -376,7 +376,7 @@ be_local_closure(read13, /* name */
/* K5 */ be_const_int(1), /* K5 */ be_const_int(1),
}), }),
(be_nested_const_str("read13", 12887293, 6)), (be_nested_const_str("read13", 12887293, 6)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[12]) { /* code */ ( &(const binstruction[12]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1 0x8C080501, // 0001 GETMET R2 R2 K1

View File

@ -33,7 +33,7 @@ be_local_closure(set_time, /* name */
/* K9 */ be_nested_string("set_text", 1849641155, 8), /* K9 */ be_nested_string("set_text", 1849641155, 8),
}), }),
(be_nested_const_str("set_time", 900236405, 8)), (be_nested_const_str("set_time", 900236405, 8)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[27]) { /* code */ ( &(const binstruction[27]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0 0xA4120000, // 0000 IMPORT R4 K0
0x88140101, // 0001 GETMBR R5 R0 K1 0x88140101, // 0001 GETMBR R5 R0 K1
@ -93,7 +93,7 @@ be_local_closure(every_second, /* name */
/* K8 */ be_nested_string("sec", -1155074638, 3), /* K8 */ be_nested_string("sec", -1155074638, 3),
}), }),
(be_nested_const_str("every_second", 2075451465, 12)), (be_nested_const_str("every_second", 2075451465, 12)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[17]) { /* code */ ( &(const binstruction[17]) { /* code */
0xB8060000, // 0000 GETNGBL R1 K0 0xB8060000, // 0000 GETNGBL R1 K0
0x8C040301, // 0001 GETMET R1 R1 K1 0x8C040301, // 0001 GETMET R1 R1 K1
@ -155,8 +155,8 @@ be_local_closure(init, /* name */
/* K20 */ be_nested_string("tasmota", 424643812, 7), /* K20 */ be_nested_string("tasmota", 424643812, 7),
/* K21 */ be_nested_string("add_driver", 1654458371, 10), /* K21 */ be_nested_string("add_driver", 1654458371, 10),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[82]) { /* code */ ( &(const binstruction[82]) { /* code */
0x60080003, // 0000 GETGBL R2 G3 0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0 0x5C0C0000, // 0001 MOVE R3 R0
@ -265,7 +265,7 @@ be_local_closure(del, /* name */
/* K2 */ be_nested_string("remove_driver", 1030243768, 13), /* K2 */ be_nested_string("remove_driver", 1030243768, 13),
}), }),
(be_nested_const_str("del", -816214454, 3)), (be_nested_const_str("del", -816214454, 3)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[10]) { /* code */ ( &(const binstruction[10]) { /* code */
0x60040003, // 0000 GETGBL R1 G3 0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0 0x5C080000, // 0001 MOVE R2 R0

View File

@ -25,7 +25,7 @@ be_local_closure(get_object_from_ptr, /* name */
/* K1 */ be_nested_string("find", -1108310694, 4), /* K1 */ be_nested_string("find", -1108310694, 4),
}), }),
(be_nested_const_str("get_object_from_ptr", -1949948095, 19)), (be_nested_const_str("get_object_from_ptr", -1949948095, 19)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[10]) { /* code */ ( &(const binstruction[10]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x4C0C0000, // 0001 LDNIL R3 0x4C0C0000, // 0001 LDNIL R3
@ -68,7 +68,7 @@ be_local_closure(widget_event_impl, /* name */
/* K8 */ be_nested_string("widget_event", 1951408186, 12), /* K8 */ be_nested_string("widget_event", 1951408186, 12),
}), }),
(be_nested_const_str("widget_event_impl", -2116536735, 17)), (be_nested_const_str("widget_event_impl", -2116536735, 17)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[30]) { /* code */ ( &(const binstruction[30]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0 0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1 0xB8120200, // 0001 GETNGBL R4 K1
@ -129,8 +129,8 @@ be_local_closure(lvgl_event_dispatch, /* name */
/* K6 */ be_nested_string("get_object_from_ptr", -1949948095, 19), /* K6 */ be_nested_string("get_object_from_ptr", -1949948095, 19),
}), }),
(be_nested_const_str("lvgl_event_dispatch", 2104396622, 19)), (be_nested_const_str("lvgl_event_dispatch", 2104396622, 19)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[18]) { /* code */ ( &(const binstruction[20]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0 0xA40A0000, // 0000 IMPORT R2 K0
0xB80E0200, // 0001 GETNGBL R3 K1 0xB80E0200, // 0001 GETNGBL R3 K1
0x8C0C0702, // 0002 GETMET R3 R3 K2 0x8C0C0702, // 0002 GETMET R3 R3 K2
@ -138,17 +138,19 @@ be_local_closure(lvgl_event_dispatch, /* name */
0x5C1C0200, // 0004 MOVE R7 R1 0x5C1C0200, // 0004 MOVE R7 R1
0x7C140400, // 0005 CALL R5 2 0x7C140400, // 0005 CALL R5 2
0x7C0C0400, // 0006 CALL R3 2 0x7C0C0400, // 0006 CALL R3 2
0x88100704, // 0007 GETMBR R4 R3 K4 0x60100009, // 0007 GETGBL R4 G9
0x88140105, // 0008 GETMBR R5 R0 K5 0x88140704, // 0008 GETMBR R5 R3 K4
0x94140A04, // 0009 GETIDX R5 R5 R4 0x7C100200, // 0009 CALL R4 1
0x8C180106, // 000A GETMET R6 R0 K6 0x88140105, // 000A GETMBR R5 R0 K5
0x5C200800, // 000B MOVE R8 R4 0x94140A04, // 000B GETIDX R5 R5 R4
0x7C180400, // 000C CALL R6 2 0x8C180106, // 000C GETMET R6 R0 K6
0x5C1C0A00, // 000D MOVE R7 R5 0x5C200800, // 000D MOVE R8 R4
0x5C200C00, // 000E MOVE R8 R6 0x7C180400, // 000E CALL R6 2
0x5C240600, // 000F MOVE R9 R3 0x5C1C0A00, // 000F MOVE R7 R5
0x7C1C0400, // 0010 CALL R7 2 0x5C200C00, // 0010 MOVE R8 R6
0x80000000, // 0011 RET 0 0x5C240600, // 0011 MOVE R9 R3
0x7C1C0400, // 0012 CALL R7 2
0x80000000, // 0013 RET 0
}) })
) )
); );
@ -178,7 +180,7 @@ be_local_closure(widget_dtor_impl, /* name */
/* K6 */ be_nested_string("widget_destructor", -87578951, 17), /* K6 */ be_nested_string("widget_destructor", -87578951, 17),
}), }),
(be_nested_const_str("widget_dtor_impl", 520430610, 16)), (be_nested_const_str("widget_dtor_impl", 520430610, 16)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[22]) { /* code */ ( &(const binstruction[22]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0 0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1 0xB8120200, // 0001 GETNGBL R4 K1
@ -226,7 +228,7 @@ be_local_closure(register_obj, /* name */
/* K1 */ be_nested_string("_p", 1594591802, 2), /* K1 */ be_nested_string("_p", 1594591802, 2),
}), }),
(be_nested_const_str("register_obj", -312352526, 12)), (be_nested_const_str("register_obj", -312352526, 12)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[13]) { /* code */ ( &(const binstruction[13]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x4C0C0000, // 0001 LDNIL R3 0x4C0C0000, // 0001 LDNIL R3
@ -274,7 +276,7 @@ be_local_closure(gen_cb, /* name */
/* K0 */ be_nested_string("lvgl_event_dispatch", 2104396622, 19), /* K0 */ be_nested_string("lvgl_event_dispatch", 2104396622, 19),
}), }),
(be_nested_const_str("<lambda>", 607256038, 8)), (be_nested_const_str("<lambda>", 607256038, 8)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x68040000, // 0000 GETUPV R1 U0 0x68040000, // 0000 GETUPV R1 U0
0x8C040300, // 0001 GETMET R1 R1 K0 0x8C040300, // 0001 GETMET R1 R1 K0
@ -296,7 +298,7 @@ be_local_closure(gen_cb, /* name */
/* K7 */ be_nested_string("cb_do_nothing", 1488730702, 13), /* K7 */ be_nested_string("cb_do_nothing", 1488730702, 13),
}), }),
(be_nested_const_str("gen_cb", -1049739745, 6)), (be_nested_const_str("gen_cb", -1049739745, 6)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[41]) { /* code */ ( &(const binstruction[41]) { /* code */
0x1C140300, // 0000 EQ R5 R1 K0 0x1C140300, // 0000 EQ R5 R1 K0
0x78160018, // 0001 JMPF R5 #001B 0x78160018, // 0001 JMPF R5 #001B
@ -364,7 +366,7 @@ be_local_closure(deregister_obj, /* name */
/* K2 */ be_nested_string("cb_event_closure", -466699971, 16), /* K2 */ be_nested_string("cb_event_closure", -466699971, 16),
}), }),
(be_nested_const_str("deregister_obj", -385000303, 14)), (be_nested_const_str("deregister_obj", -385000303, 14)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[17]) { /* code */ ( &(const binstruction[17]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x4C0C0000, // 0001 LDNIL R3 0x4C0C0000, // 0001 LDNIL R3
@ -416,7 +418,7 @@ be_local_closure(widget_cb, /* name */
/* K0 */ be_nested_string("widget_ctor_impl", 194252479, 16), /* K0 */ be_nested_string("widget_ctor_impl", 194252479, 16),
}), }),
(be_nested_const_str("<lambda>", 607256038, 8)), (be_nested_const_str("<lambda>", 607256038, 8)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */ ( &(const binstruction[ 6]) { /* code */
0x68080000, // 0000 GETUPV R2 U0 0x68080000, // 0000 GETUPV R2 U0
0x8C080500, // 0001 GETMET R2 R2 K0 0x8C080500, // 0001 GETMET R2 R2 K0
@ -441,7 +443,7 @@ be_local_closure(widget_cb, /* name */
/* K0 */ be_nested_string("widget_dtor_impl", 520430610, 16), /* K0 */ be_nested_string("widget_dtor_impl", 520430610, 16),
}), }),
(be_nested_const_str("<lambda>", 607256038, 8)), (be_nested_const_str("<lambda>", 607256038, 8)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */ ( &(const binstruction[ 6]) { /* code */
0x68080000, // 0000 GETUPV R2 U0 0x68080000, // 0000 GETUPV R2 U0
0x8C080500, // 0001 GETMET R2 R2 K0 0x8C080500, // 0001 GETMET R2 R2 K0
@ -466,7 +468,7 @@ be_local_closure(widget_cb, /* name */
/* K0 */ be_nested_string("widget_event_impl", -2116536735, 17), /* K0 */ be_nested_string("widget_event_impl", -2116536735, 17),
}), }),
(be_nested_const_str("<lambda>", 607256038, 8)), (be_nested_const_str("<lambda>", 607256038, 8)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */ ( &(const binstruction[ 6]) { /* code */
0x68080000, // 0000 GETUPV R2 U0 0x68080000, // 0000 GETUPV R2 U0
0x8C080500, // 0001 GETMET R2 R2 K0 0x8C080500, // 0001 GETMET R2 R2 K0
@ -496,7 +498,7 @@ be_local_closure(widget_cb, /* name */
/* K14 */ be_nested_string("event_cb", -1166269279, 8), /* K14 */ be_nested_string("event_cb", -1166269279, 8),
}), }),
(be_nested_const_str("widget_cb", -1531384241, 9)), (be_nested_const_str("widget_cb", -1531384241, 9)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[56]) { /* code */ ( &(const binstruction[56]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0 0x88040100, // 0000 GETMBR R1 R0 K0
0x4C080000, // 0001 LDNIL R2 0x4C080000, // 0001 LDNIL R2
@ -577,7 +579,7 @@ be_local_closure(_anonymous_, /* name */
/* K0 */ be_nested_string("LVG: call to unsupported callback", 504176819, 33), /* K0 */ be_nested_string("LVG: call to unsupported callback", 504176819, 33),
}), }),
(be_nested_const_str("_anonymous_", 1957281476, 11)), (be_nested_const_str("_anonymous_", 1957281476, 11)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 4]) { /* code */ ( &(const binstruction[ 4]) { /* code */
0x60000001, // 0000 GETGBL R0 G1 0x60000001, // 0000 GETGBL R0 G1
0x58040000, // 0001 LDCONST R1 K0 0x58040000, // 0001 LDCONST R1 K0
@ -632,7 +634,7 @@ be_local_closure(create_custom_widget, /* name */
/* K26 */ be_nested_string("class_init_obj", 178410604, 14), /* K26 */ be_nested_string("class_init_obj", 178410604, 14),
}), }),
(be_nested_const_str("create_custom_widget", 1140594778, 20)), (be_nested_const_str("create_custom_widget", 1140594778, 20)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[86]) { /* code */ ( &(const binstruction[86]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0 0xA40E0000, // 0000 IMPORT R3 K0
0x6010000F, // 0001 GETGBL R4 G15 0x6010000F, // 0001 GETGBL R4 G15
@ -751,7 +753,7 @@ be_local_closure(widget_ctor_impl, /* name */
/* K8 */ be_nested_string("widget_constructor", -1751181362, 18), /* K8 */ be_nested_string("widget_constructor", -1751181362, 18),
}), }),
(be_nested_const_str("widget_ctor_impl", 194252479, 16)), (be_nested_const_str("widget_ctor_impl", 194252479, 16)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[29]) { /* code */ ( &(const binstruction[29]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0 0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1 0xB8120200, // 0001 GETNGBL R4 K1

View File

@ -99,6 +99,7 @@ const lvbe_call_c_t lv_func[] = {
{ "theme_get_font_normal", (void*) &lv_theme_get_font_normal, "lv.lv_font", "(lv.lv_obj)" }, { "theme_get_font_normal", (void*) &lv_theme_get_font_normal, "lv.lv_font", "(lv.lv_obj)" },
{ "theme_get_font_small", (void*) &lv_theme_get_font_small, "lv.lv_font", "(lv.lv_obj)" }, { "theme_get_font_small", (void*) &lv_theme_get_font_small, "lv.lv_font", "(lv.lv_obj)" },
{ "theme_get_from_obj", (void*) &lv_theme_get_from_obj, "lv.lv_theme", "(lv.lv_obj)" }, { "theme_get_from_obj", (void*) &lv_theme_get_from_obj, "lv.lv_theme", "(lv.lv_obj)" },
{ "theme_mono_init", (void*) &lv_theme_mono_init, "lv.lv_theme", "(lv.lv_disp)b(lv.lv_font)" },
{ "theme_openhasp_init", (void*) &lv_theme_openhasp_init, "lv.lv_theme", "(lv.lv_disp)(lv.lv_color)(lv.lv_color)b(lv.lv_font)" }, { "theme_openhasp_init", (void*) &lv_theme_openhasp_init, "lv.lv_theme", "(lv.lv_disp)(lv.lv_color)(lv.lv_color)b(lv.lv_font)" },
{ "theme_openhasp_is_inited", (void*) &lv_theme_openhasp_is_inited, "b", "" }, { "theme_openhasp_is_inited", (void*) &lv_theme_openhasp_is_inited, "b", "" },
{ "theme_set_apply_cb", (void*) &lv_theme_set_apply_cb, "", "(lv.lv_theme)^lv_theme_apply_cb^" }, { "theme_set_apply_cb", (void*) &lv_theme_set_apply_cb, "", "(lv.lv_theme)^lv_theme_apply_cb^" },

View File

@ -26,7 +26,7 @@ be_local_closure(set_percentage, /* name */
/* K2 */ be_nested_string("invalidate", -1645232368, 10), /* K2 */ be_nested_string("invalidate", -1645232368, 10),
}), }),
(be_nested_const_str("set_percentage", -1342944572, 14)), (be_nested_const_str("set_percentage", -1342944572, 14)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[18]) { /* code */ ( &(const binstruction[18]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x540E0018, // 0001 LDINT R3 25 0x540E0018, // 0001 LDINT R3 25
@ -77,8 +77,8 @@ be_local_closure(init, /* name */
/* K8 */ be_nested_string("line_dsc", -200476318, 8), /* K8 */ be_nested_string("line_dsc", -200476318, 8),
/* K9 */ be_nested_string("draw_line_dsc", -74291093, 13), /* K9 */ be_nested_string("draw_line_dsc", -74291093, 13),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[24]) { /* code */ ( &(const binstruction[24]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0 0xB80A0000, // 0000 GETNGBL R2 K0
0x8C080501, // 0001 GETMET R2 R2 K1 0x8C080501, // 0001 GETMET R2 R2 K1
@ -135,7 +135,7 @@ be_local_closure(widget_event, /* name */
/* K0 */ be_const_int(1), /* K0 */ be_const_int(1),
}), }),
(be_nested_const_str("atleast1", 1956331672, 8)), (be_nested_const_str("atleast1", 1956331672, 8)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */ ( &(const binstruction[ 6]) { /* code */
0x28040100, // 0000 GE R1 R0 K0 0x28040100, // 0000 GE R1 R0 K0
0x78060001, // 0001 JMPF R1 #0004 0x78060001, // 0001 JMPF R1 #0004
@ -185,7 +185,7 @@ be_local_closure(widget_event, /* name */
/* K34 */ be_const_int(0), /* K34 */ be_const_int(0),
}), }),
(be_nested_const_str("widget_event", 1951408186, 12)), (be_nested_const_str("widget_event", 1951408186, 12)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[182]) { /* code */ ( &(const binstruction[182]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0 0xB80E0000, // 0000 GETNGBL R3 K0
0x8C0C0701, // 0001 GETMET R3 R3 K1 0x8C0C0701, // 0001 GETMET R3 R3 K1
@ -392,7 +392,7 @@ be_local_closure(get_percentage, /* name */
/* K0 */ be_nested_string("percentage", -1756136011, 10), /* K0 */ be_nested_string("percentage", -1756136011, 10),
}), }),
(be_nested_const_str("get_percentage", -1414483304, 14)), (be_nested_const_str("get_percentage", -1414483304, 14)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 2]) { /* code */ ( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0 0x88040100, // 0000 GETMBR R1 R0 K0
0x80040200, // 0001 RET 1 R1 0x80040200, // 0001 RET 1 R1

View File

@ -26,7 +26,7 @@ be_local_closure(set_percentage, /* name */
/* K2 */ be_nested_string("invalidate", -1645232368, 10), /* K2 */ be_nested_string("invalidate", -1645232368, 10),
}), }),
(be_nested_const_str("set_percentage", -1342944572, 14)), (be_nested_const_str("set_percentage", -1342944572, 14)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[18]) { /* code */ ( &(const binstruction[18]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x540E0013, // 0001 LDINT R3 20 0x540E0013, // 0001 LDINT R3 20
@ -77,8 +77,8 @@ be_local_closure(init, /* name */
/* K8 */ be_nested_string("line_dsc", -200476318, 8), /* K8 */ be_nested_string("line_dsc", -200476318, 8),
/* K9 */ be_nested_string("draw_line_dsc", -74291093, 13), /* K9 */ be_nested_string("draw_line_dsc", -74291093, 13),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[24]) { /* code */ ( &(const binstruction[24]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0 0xB80A0000, // 0000 GETNGBL R2 K0
0x8C080501, // 0001 GETMET R2 R2 K1 0x8C080501, // 0001 GETMET R2 R2 K1
@ -135,7 +135,7 @@ be_local_closure(widget_event, /* name */
/* K0 */ be_const_int(1), /* K0 */ be_const_int(1),
}), }),
(be_nested_const_str("atleast1", 1956331672, 8)), (be_nested_const_str("atleast1", 1956331672, 8)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */ ( &(const binstruction[ 6]) { /* code */
0x28040100, // 0000 GE R1 R0 K0 0x28040100, // 0000 GE R1 R0 K0
0x78060001, // 0001 JMPF R1 #0004 0x78060001, // 0001 JMPF R1 #0004
@ -187,7 +187,7 @@ be_local_closure(widget_event, /* name */
/* K36 */ be_nested_string("EVENT_DRAW_PART_END", -993342004, 19), /* K36 */ be_nested_string("EVENT_DRAW_PART_END", -993342004, 19),
}), }),
(be_nested_const_str("widget_event", 1951408186, 12)), (be_nested_const_str("widget_event", 1951408186, 12)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[138]) { /* code */ ( &(const binstruction[138]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0 0xB80E0000, // 0000 GETNGBL R3 K0
0x8C0C0701, // 0001 GETMET R3 R3 K1 0x8C0C0701, // 0001 GETMET R3 R3 K1
@ -350,7 +350,7 @@ be_local_closure(get_percentage, /* name */
/* K0 */ be_nested_string("percentage", -1756136011, 10), /* K0 */ be_nested_string("percentage", -1756136011, 10),
}), }),
(be_nested_const_str("get_percentage", -1414483304, 14)), (be_nested_const_str("get_percentage", -1414483304, 14)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 2]) { /* code */ ( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0 0x88040100, // 0000 GETMBR R1 R0 K0
0x80040200, // 0001 RET 1 R1 0x80040200, // 0001 RET 1 R1

View File

@ -40,8 +40,8 @@ be_local_closure(init, /* name */
/* K16 */ be_nested_string("set_style_pad_right", -980898242, 19), /* K16 */ be_nested_string("set_style_pad_right", -980898242, 19),
/* K17 */ be_const_int(1), /* K17 */ be_const_int(1),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[67]) { /* code */ ( &(const binstruction[67]) { /* code */
0x60080003, // 0000 GETGBL R2 G3 0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0 0x5C0C0000, // 0001 MOVE R3 R0

View File

@ -30,7 +30,7 @@ be_local_closure(every_second, /* name */
/* K6 */ be_const_int(0), /* K6 */ be_const_int(0),
}), }),
(be_nested_const_str("every_second", 2075451465, 12)), (be_nested_const_str("every_second", 2075451465, 12)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[23]) { /* code */ ( &(const binstruction[23]) { /* code */
0xB8060000, // 0000 GETNGBL R1 K0 0xB8060000, // 0000 GETNGBL R1 K0
0x8C040301, // 0001 GETMET R1 R1 K1 0x8C040301, // 0001 GETMET R1 R1 K1
@ -81,8 +81,8 @@ be_local_closure(init, /* name */
/* K3 */ be_nested_string("set_percentage", -1342944572, 14), /* K3 */ be_nested_string("set_percentage", -1342944572, 14),
/* K4 */ be_const_int(0), /* K4 */ be_const_int(0),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[14]) { /* code */ ( &(const binstruction[14]) { /* code */
0x60080003, // 0000 GETGBL R2 G3 0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0 0x5C0C0000, // 0001 MOVE R3 R0
@ -123,7 +123,7 @@ be_local_closure(del, /* name */
/* K2 */ be_nested_string("remove_driver", 1030243768, 13), /* K2 */ be_nested_string("remove_driver", 1030243768, 13),
}), }),
(be_nested_const_str("del", -816214454, 3)), (be_nested_const_str("del", -816214454, 3)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[10]) { /* code */ ( &(const binstruction[10]) { /* code */
0x60040003, // 0000 GETGBL R1 G3 0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0 0x5C080000, // 0001 MOVE R2 R0

View File

@ -39,8 +39,8 @@ be_local_closure(init, /* name */
/* K15 */ be_nested_string("set_style_pad_right", -980898242, 19), /* K15 */ be_nested_string("set_style_pad_right", -980898242, 19),
/* K16 */ be_const_int(1), /* K16 */ be_const_int(1),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[64]) { /* code */ ( &(const binstruction[64]) { /* code */
0x60080003, // 0000 GETGBL R2 G3 0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0 0x5C0C0000, // 0001 MOVE R3 R0

View File

@ -30,7 +30,7 @@ be_local_closure(every_second, /* name */
/* K6 */ be_const_int(0), /* K6 */ be_const_int(0),
}), }),
(be_nested_const_str("every_second", 2075451465, 12)), (be_nested_const_str("every_second", 2075451465, 12)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[23]) { /* code */ ( &(const binstruction[23]) { /* code */
0xB8060000, // 0000 GETNGBL R1 K0 0xB8060000, // 0000 GETNGBL R1 K0
0x8C040301, // 0001 GETMET R1 R1 K1 0x8C040301, // 0001 GETMET R1 R1 K1
@ -81,8 +81,8 @@ be_local_closure(init, /* name */
/* K3 */ be_nested_string("set_percentage", -1342944572, 14), /* K3 */ be_nested_string("set_percentage", -1342944572, 14),
/* K4 */ be_const_int(0), /* K4 */ be_const_int(0),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[14]) { /* code */ ( &(const binstruction[14]) { /* code */
0x60080003, // 0000 GETGBL R2 G3 0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0 0x5C0C0000, // 0001 MOVE R3 R0
@ -123,7 +123,7 @@ be_local_closure(del, /* name */
/* K2 */ be_nested_string("remove_driver", 1030243768, 13), /* K2 */ be_nested_string("remove_driver", 1030243768, 13),
}), }),
(be_nested_const_str("del", -816214454, 3)), (be_nested_const_str("del", -816214454, 3)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[10]) { /* code */ ( &(const binstruction[10]) { /* code */
0x60040003, // 0000 GETGBL R1 G3 0x60040003, // 0000 GETGBL R1 G3
0x5C080000, // 0001 MOVE R2 R0 0x5C080000, // 0001 MOVE R2 R0

View File

@ -32,6 +32,7 @@ be_extern_native_module(energy);
be_extern_native_module(webserver); be_extern_native_module(webserver);
be_extern_native_module(flash); be_extern_native_module(flash);
be_extern_native_module(path); be_extern_native_module(path);
be_extern_native_module(unishox);
#ifdef USE_LVGL #ifdef USE_LVGL
be_extern_native_module(lv); be_extern_native_module(lv);
#endif // USE_LVGL #endif // USE_LVGL
@ -89,6 +90,10 @@ BERRY_LOCAL const bntvmodule* const be_module_table[] = {
&be_native_module(light), &be_native_module(light),
#endif #endif
#ifdef USE_UNISHOX_COMPRESSION
&be_native_module(unishox),
#endif // USE_UNISHOX_COMPRESSION
#ifdef USE_LVGL #ifdef USE_LVGL
&be_native_module(lv), &be_native_module(lv),
#endif // USE_LVGL #endif // USE_LVGL

View File

@ -31,7 +31,7 @@ be_local_closure(save, /* name */
/* K7 */ be_nested_string("_dirty", 283846766, 6), /* K7 */ be_nested_string("_dirty", 283846766, 6),
}), }),
(be_nested_const_str("save", -855671224, 4)), (be_nested_const_str("save", -855671224, 4)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[30]) { /* code */ ( &(const binstruction[30]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0 0xA4060000, // 0000 IMPORT R1 K0
0x4C080000, // 0001 LDNIL R2 0x4C080000, // 0001 LDNIL R2
@ -87,7 +87,7 @@ be_local_closure(setmember, /* name */
/* K1 */ be_nested_string("_dirty", 283846766, 6), /* K1 */ be_nested_string("_dirty", 283846766, 6),
}), }),
(be_nested_const_str("setmember", 1432909441, 9)), (be_nested_const_str("setmember", 1432909441, 9)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x880C0100, // 0000 GETMBR R3 R0 K0 0x880C0100, // 0000 GETMBR R3 R0 K0
0x980C0202, // 0001 SETIDX R3 R1 R2 0x980C0202, // 0001 SETIDX R3 R1 R2
@ -121,8 +121,8 @@ be_local_closure(init, /* name */
/* K4 */ be_nested_string("load", -435725847, 4), /* K4 */ be_nested_string("load", -435725847, 4),
/* K5 */ be_nested_string("_dirty", 283846766, 6), /* K5 */ be_nested_string("_dirty", 283846766, 6),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[20]) { /* code */ ( &(const binstruction[20]) { /* code */
0x90020101, // 0000 SETMBR R0 K0 K1 0x90020101, // 0000 SETMBR R0 K0 K1
0x6008000F, // 0001 GETGBL R2 G15 0x6008000F, // 0001 GETGBL R2 G15
@ -176,7 +176,7 @@ be_local_closure(load, /* name */
/* K9 */ be_nested_string("_dirty", 283846766, 6), /* K9 */ be_nested_string("_dirty", 283846766, 6),
}), }),
(be_nested_const_str("load", -435725847, 4)), (be_nested_const_str("load", -435725847, 4)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[37]) { /* code */ ( &(const binstruction[37]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0 0xA4060000, // 0000 IMPORT R1 K0
0xA40A0200, // 0001 IMPORT R2 K1 0xA40A0200, // 0001 IMPORT R2 K1
@ -239,7 +239,7 @@ be_local_closure(has, /* name */
/* K1 */ be_nested_string("has", -306245661, 3), /* K1 */ be_nested_string("has", -306245661, 3),
}), }),
(be_nested_const_str("has", -306245661, 3)), (be_nested_const_str("has", -306245661, 3)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1 0x8C080501, // 0001 GETMET R2 R2 K1
@ -270,7 +270,7 @@ be_local_closure(zero, /* name */
/* K1 */ be_nested_string("_dirty", 283846766, 6), /* K1 */ be_nested_string("_dirty", 283846766, 6),
}), }),
(be_nested_const_str("zero", -1955600541, 4)), (be_nested_const_str("zero", -1955600541, 4)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */ ( &(const binstruction[ 6]) { /* code */
0x60040013, // 0000 GETGBL R1 G19 0x60040013, // 0000 GETGBL R1 G19
0x7C040000, // 0001 CALL R1 0 0x7C040000, // 0001 CALL R1 0
@ -302,7 +302,7 @@ be_local_closure(member, /* name */
/* K1 */ be_nested_string("find", -1108310694, 4), /* K1 */ be_nested_string("find", -1108310694, 4),
}), }),
(be_nested_const_str("member", 719708611, 6)), (be_nested_const_str("member", 719708611, 6)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1 0x8C080501, // 0001 GETMET R2 R2 K1
@ -334,7 +334,7 @@ be_local_closure(remove, /* name */
/* K2 */ be_nested_string("_dirty", 283846766, 6), /* K2 */ be_nested_string("_dirty", 283846766, 6),
}), }),
(be_nested_const_str("remove", -611183107, 6)), (be_nested_const_str("remove", -611183107, 6)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 7]) { /* code */ ( &(const binstruction[ 7]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1 0x8C080501, // 0001 GETMET R2 R2 K1
@ -367,7 +367,7 @@ be_local_closure(find, /* name */
/* K1 */ be_nested_string("find", -1108310694, 4), /* K1 */ be_nested_string("find", -1108310694, 4),
}), }),
(be_nested_const_str("find", -1108310694, 4)), (be_nested_const_str("find", -1108310694, 4)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */ ( &(const binstruction[ 6]) { /* code */
0x880C0100, // 0000 GETMBR R3 R0 K0 0x880C0100, // 0000 GETMBR R3 R0 K0
0x8C0C0701, // 0001 GETMET R3 R3 K1 0x8C0C0701, // 0001 GETMET R3 R3 K1
@ -422,7 +422,7 @@ be_local_closure(_anonymous_, /* name */
/* K0 */ be_const_class(be_class_Persist), /* K0 */ be_const_class(be_class_Persist),
}), }),
(be_nested_const_str("_anonymous_", 1957281476, 11)), (be_nested_const_str("_anonymous_", 1957281476, 11)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */ ( &(const binstruction[ 5]) { /* code */
0x58040000, // 0000 LDCONST R1 K0 0x58040000, // 0000 LDCONST R1 K0
0xB4000000, // 0001 CLASS K0 0xB4000000, // 0001 CLASS K0

View File

@ -50,6 +50,83 @@ extern int l_getswitch(bvm *vm);
extern int l_i2cenabled(bvm *vm); extern int l_i2cenabled(bvm *vm);
// KV class
/********************************************************************
** Solidified function: init
********************************************************************/
be_local_closure(kv_init, /* name */
be_nested_proto(
3, /* nstack */
3, /* 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("k", -301188886, 1),
/* K1 */ be_nested_string("v", -217300791, 1),
}),
((bstring*) &be_const_str_init),
((bstring*) &be_const_str_input),
( &(const binstruction[ 3]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
0x90020202, // 0001 SETMBR R0 K1 R2
0x80000000, // 0002 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified class: KV
********************************************************************/
be_local_class(KV,
2,
NULL,
be_nested_map(3,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_nested_key("k", -301188886, 1, 2), be_const_var(0) },
{ be_nested_key("v", -217300791, 1, -1), be_const_var(1) },
{ be_nested_key("init", 380752755, 4, -1), be_const_closure(kv_init_closure) },
})),
(be_nested_const_str("KV", 955173972, 2))
);
/********************************************************************
** Solidified function: kv
********************************************************************/
be_local_closure(kv, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
0, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_const_class(be_class_KV),
}),
(be_nested_const_str("kv", 1497177492, 2)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 7]) { /* code */
0x580C0000, // 0000 LDCONST R3 K0
0xB4000000, // 0001 CLASS K0
0x5C100600, // 0002 MOVE R4 R3
0x5C140200, // 0003 MOVE R5 R1
0x5C180400, // 0004 MOVE R6 R2
0x7C100400, // 0005 CALL R4 2
0x80040800, // 0006 RET 1 R4
})
)
);
/*******************************************************************/
/******************************************************************** /********************************************************************
** Solidified function: init ** Solidified function: init
********************************************************************/ ********************************************************************/
@ -76,7 +153,7 @@ be_local_closure(init, /* name */
/* K9 */ be_nested_string("toptr", -915119842, 5), /* K9 */ be_nested_string("toptr", -915119842, 5),
/* K10 */ be_nested_string("_settings_def", -519406989, 13), /* K10 */ be_nested_string("_settings_def", -519406989, 13),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("tasmota.be", 1128870755, 10)), (be_nested_const_str("tasmota.be", 1128870755, 10)),
( &(const binstruction[23]) { /* code */ ( &(const binstruction[23]) { /* code */
0xB8060200, // 0000 GETNGBL R1 K1 0xB8060200, // 0000 GETNGBL R1 K1
@ -125,7 +202,7 @@ be_local_closure(add_driver, /* name */
/* K1 */ be_nested_string("push", -2022703139, 4), /* K1 */ be_nested_string("push", -2022703139, 4),
}), }),
(be_nested_const_str("add_driver", 1654458371, 10)), (be_nested_const_str("add_driver", 1654458371, 10)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[12]) { /* code */ ( &(const binstruction[12]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x780A0004, // 0001 JMPF R2 #0007 0x780A0004, // 0001 JMPF R2 #0007
@ -168,7 +245,7 @@ be_local_closure(gen_cb, /* name */
/* K6 */ be_nested_string("No callback available", 633786138, 21), /* K6 */ be_nested_string("No callback available", 633786138, 21),
}), }),
(be_nested_const_str("gen_cb", -1049739745, 6)), (be_nested_const_str("gen_cb", -1049739745, 6)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[34]) { /* code */ ( &(const binstruction[34]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x4C0C0000, // 0001 LDNIL R3 0x4C0C0000, // 0001 LDNIL R3
@ -229,7 +306,7 @@ be_local_closure(set_light, /* name */
/* K2 */ be_nested_string("set", -970520829, 3), /* K2 */ be_nested_string("set", -970520829, 3),
}), }),
(be_nested_const_str("set_light", -1118891144, 9)), (be_nested_const_str("set_light", -1118891144, 9)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[18]) { /* code */ ( &(const binstruction[18]) { /* code */
0x600C0001, // 0000 GETGBL R3 G1 0x600C0001, // 0000 GETGBL R3 G1
0x58100000, // 0001 LDCONST R4 K0 0x58100000, // 0001 LDCONST R4 K0
@ -260,7 +337,7 @@ be_local_closure(set_light, /* name */
********************************************************************/ ********************************************************************/
be_local_closure(remove_rule, /* name */ be_local_closure(remove_rule, /* name */
be_nested_proto( be_nested_proto(
5, /* nstack */ 6, /* nstack */
2, /* argc */ 2, /* argc */
0, /* varg */ 0, /* varg */
0, /* has upvals */ 0, /* has upvals */
@ -268,20 +345,37 @@ be_local_closure(remove_rule, /* name */
0, /* has sup protos */ 0, /* has sup protos */
NULL, /* no sub protos */ NULL, /* no sub protos */
1, /* has constants */ 1, /* has constants */
( &(const bvalue[ 2]) { /* constants */ ( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_string("_rules", -28750191, 6), /* K0 */ be_nested_string("_rules", -28750191, 6),
/* K1 */ be_nested_string("remove", -611183107, 6), /* K1 */ be_const_int(0),
/* K2 */ be_nested_string("k", -301188886, 1),
/* K3 */ be_nested_string("remove", -611183107, 6),
/* K4 */ be_const_int(1),
}), }),
(be_nested_const_str("remove_rule", -838755968, 11)), (be_nested_const_str("remove_rule", -838755968, 11)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 7]) { /* code */ ( &(const binstruction[21]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x780A0003, // 0001 JMPF R2 #0006 0x780A0011, // 0001 JMPF R2 #0014
0x88080100, // 0002 GETMBR R2 R0 K0 0x58080001, // 0002 LDCONST R2 K1
0x8C080501, // 0003 GETMET R2 R2 K1 0x600C000C, // 0003 GETGBL R3 G12
0x5C100200, // 0004 MOVE R4 R1 0x88100100, // 0004 GETMBR R4 R0 K0
0x7C080400, // 0005 CALL R2 2 0x7C0C0200, // 0005 CALL R3 1
0x80000000, // 0006 RET 0 0x140C0403, // 0006 LT R3 R2 R3
0x780E000B, // 0007 JMPF R3 #0014
0x880C0100, // 0008 GETMBR R3 R0 K0
0x940C0602, // 0009 GETIDX R3 R3 R2
0x880C0702, // 000A GETMBR R3 R3 K2
0x1C0C0601, // 000B EQ R3 R3 R1
0x780E0004, // 000C JMPF R3 #0012
0x880C0100, // 000D GETMBR R3 R0 K0
0x8C0C0703, // 000E GETMET R3 R3 K3
0x5C140400, // 000F MOVE R5 R2
0x7C0C0400, // 0010 CALL R3 2
0x70020000, // 0011 JMP #0013
0x00080504, // 0012 ADD R2 R2 K4
0x7001FFEE, // 0013 JMP #0003
0x80000000, // 0014 RET 0
}) })
) )
); );
@ -308,7 +402,7 @@ be_local_closure(add_cmd, /* name */
/* K3 */ be_nested_string("the second argument is not a function", -340392827, 37), /* 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("add_cmd", -933336417, 7)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[15]) { /* code */ ( &(const binstruction[15]) { /* code */
0x880C0100, // 0000 GETMBR R3 R0 K0 0x880C0100, // 0000 GETMBR R3 R0 K0
0x740E0002, // 0001 JMPT R3 #0005 0x740E0002, // 0001 JMPT R3 #0005
@ -344,40 +438,49 @@ be_local_closure(wire_scan, /* name */
0, /* has sup protos */ 0, /* has sup protos */
NULL, /* no sub protos */ NULL, /* no sub protos */
1, /* has constants */ 1, /* has constants */
( &(const bvalue[ 4]) { /* constants */ ( &(const bvalue[ 5]) { /* constants */
/* K0 */ be_nested_string("i2c_enabled", 218388101, 11), /* K0 */ be_nested_string("i2c_enabled", 218388101, 11),
/* K1 */ be_nested_string("wire1", -1082245877, 5), /* K1 */ be_nested_string("wire1", -1082245877, 5),
/* K2 */ be_nested_string("detect", 8884370, 6), /* K2 */ be_nested_string("enabled", 49525662, 7),
/* K3 */ be_nested_string("wire2", -1065468258, 5), /* K3 */ be_nested_string("detect", 8884370, 6),
/* K4 */ be_nested_string("wire2", -1065468258, 5),
}), }),
(be_nested_const_str("wire_scan", -1623691416, 9)), (be_nested_const_str("wire_scan", -1623691416, 9)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[25]) { /* code */ ( &(const binstruction[33]) { /* code */
0x4C0C0000, // 0000 LDNIL R3 0x4C0C0000, // 0000 LDNIL R3
0x200C0403, // 0001 NE R3 R2 R3 0x200C0403, // 0001 NE R3 R2 R3
0x780E0005, // 0002 JMPF R3 #0009 0x780E0005, // 0002 JMPF R3 #0009
0x8C0C0100, // 0003 GETMET R3 R0 K0 0x8C0C0100, // 0003 GETMET R3 R0 K0
0x5C140400, // 0004 MOVE R5 R2 0x5C140400, // 0004 MOVE R5 R2
0x7C0C0400, // 0005 CALL R3 2 0x7C0C0400, // 0005 CALL R3 2
0x740E0001, // 0006 JMPT R3 #0009 0x740E0001, // 0006 JMPT R3 #0009
0x4C0C0000, // 0007 LDNIL R3 0x4C0C0000, // 0007 LDNIL R3
0x80040600, // 0008 RET 1 R3 0x80040600, // 0008 RET 1 R3
0x880C0101, // 0009 GETMBR R3 R0 K1 0x880C0101, // 0009 GETMBR R3 R0 K1
0x8C0C0702, // 000A GETMET R3 R3 K2 0x8C0C0702, // 000A GETMET R3 R3 K2
0x5C140200, // 000B MOVE R5 R1 0x7C0C0200, // 000B CALL R3 1
0x7C0C0400, // 000C CALL R3 2 0x780E0006, // 000C JMPF R3 #0014
0x780E0001, // 000D JMPF R3 #0010 0x880C0101, // 000D GETMBR R3 R0 K1
0x880C0101, // 000E GETMBR R3 R0 K1 0x8C0C0703, // 000E GETMET R3 R3 K3
0x80040600, // 000F RET 1 R3 0x5C140200, // 000F MOVE R5 R1
0x880C0103, // 0010 GETMBR R3 R0 K3 0x7C0C0400, // 0010 CALL R3 2
0x8C0C0702, // 0011 GETMET R3 R3 K2 0x780E0001, // 0011 JMPF R3 #0014
0x5C140200, // 0012 MOVE R5 R1 0x880C0101, // 0012 GETMBR R3 R0 K1
0x7C0C0400, // 0013 CALL R3 2 0x80040600, // 0013 RET 1 R3
0x780E0001, // 0014 JMPF R3 #0017 0x880C0104, // 0014 GETMBR R3 R0 K4
0x880C0103, // 0015 GETMBR R3 R0 K3 0x8C0C0702, // 0015 GETMET R3 R3 K2
0x80040600, // 0016 RET 1 R3 0x7C0C0200, // 0016 CALL R3 1
0x4C0C0000, // 0017 LDNIL R3 0x780E0006, // 0017 JMPF R3 #001F
0x80040600, // 0018 RET 1 R3 0x880C0104, // 0018 GETMBR R3 R0 K4
0x8C0C0703, // 0019 GETMET R3 R3 K3
0x5C140200, // 001A MOVE R5 R1
0x7C0C0400, // 001B CALL R3 2
0x780E0001, // 001C JMPF R3 #001F
0x880C0104, // 001D GETMBR R3 R0 K4
0x80040600, // 001E RET 1 R3
0x4C0C0000, // 001F LDNIL R3
0x80040600, // 0020 RET 1 R3
}) })
) )
); );
@ -405,7 +508,7 @@ be_local_closure(find_key_i, /* name */
/* K4 */ be_nested_string("stop_iteration", -121173395, 14), /* K4 */ be_nested_string("stop_iteration", -121173395, 14),
}), }),
(be_nested_const_str("find_key_i", 850136726, 10)), (be_nested_const_str("find_key_i", 850136726, 10)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[30]) { /* code */ ( &(const binstruction[30]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0 0xA40E0000, // 0000 IMPORT R3 K0
0x8C100701, // 0001 GETMET R4 R3 K1 0x8C100701, // 0001 GETMET R4 R3 K1
@ -461,7 +564,7 @@ be_local_closure(chars_in_string, /* name */
/* K1 */ be_const_int(1), /* K1 */ be_const_int(1),
}), }),
(be_nested_const_str("chars_in_string", -1146182164, 15)), (be_nested_const_str("chars_in_string", -1146182164, 15)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[31]) { /* code */ ( &(const binstruction[31]) { /* code */
0x780E0001, // 0000 JMPF R3 #0003 0x780E0001, // 0000 JMPF R3 #0003
0x50100200, // 0001 LDBOOL R4 1 0 0x50100200, // 0001 LDBOOL R4 1 0
@ -520,7 +623,7 @@ be_local_closure(set_timer, /* name */
/* K3 */ be_nested_string("millis", 1214679063, 6), /* K3 */ be_nested_string("millis", 1214679063, 6),
}), }),
(be_nested_const_str("set_timer", 2135414533, 9)), (be_nested_const_str("set_timer", 2135414533, 9)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[16]) { /* code */ ( &(const binstruction[16]) { /* code */
0x88100100, // 0000 GETMBR R4 R0 K0 0x88100100, // 0000 GETMBR R4 R0 K0
0x74120002, // 0001 JMPT R4 #0005 0x74120002, // 0001 JMPT R4 #0005
@ -549,7 +652,7 @@ be_local_closure(set_timer, /* name */
********************************************************************/ ********************************************************************/
be_local_closure(add_rule, /* name */ be_local_closure(add_rule, /* name */
be_nested_proto( be_nested_proto(
5, /* nstack */ 9, /* nstack */
3, /* argc */ 3, /* argc */
0, /* varg */ 0, /* varg */
0, /* has upvals */ 0, /* has upvals */
@ -557,30 +660,37 @@ be_local_closure(add_rule, /* name */
0, /* has sup protos */ 0, /* has sup protos */
NULL, /* no sub protos */ NULL, /* no sub protos */
1, /* has constants */ 1, /* has constants */
( &(const bvalue[ 4]) { /* constants */ ( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_string("_rules", -28750191, 6), /* K0 */ be_nested_string("_rules", -28750191, 6),
/* K1 */ be_nested_string("function", -1630125495, 8), /* K1 */ be_nested_string("function", -1630125495, 8),
/* K2 */ be_nested_string("value_error", 773297791, 11), /* K2 */ be_nested_string("push", -2022703139, 4),
/* K3 */ be_nested_string("the second argument is not a function", -340392827, 37), /* K3 */ be_nested_string("kv", 1497177492, 2),
/* K4 */ be_nested_string("value_error", 773297791, 11),
/* K5 */ be_nested_string("the second argument is not a function", -340392827, 37),
}), }),
(be_nested_const_str("add_rule", 596540743, 8)), (be_nested_const_str("add_rule", 596540743, 8)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[15]) { /* code */ ( &(const binstruction[20]) { /* code */
0x880C0100, // 0000 GETMBR R3 R0 K0 0x880C0100, // 0000 GETMBR R3 R0 K0
0x740E0002, // 0001 JMPT R3 #0005 0x740E0002, // 0001 JMPT R3 #0005
0x600C0013, // 0002 GETGBL R3 G19 0x600C0012, // 0002 GETGBL R3 G18
0x7C0C0000, // 0003 CALL R3 0 0x7C0C0000, // 0003 CALL R3 0
0x90020003, // 0004 SETMBR R0 K0 R3 0x90020003, // 0004 SETMBR R0 K0 R3
0x600C0004, // 0005 GETGBL R3 G4 0x600C0004, // 0005 GETGBL R3 G4
0x5C100400, // 0006 MOVE R4 R2 0x5C100400, // 0006 MOVE R4 R2
0x7C0C0200, // 0007 CALL R3 1 0x7C0C0200, // 0007 CALL R3 1
0x1C0C0701, // 0008 EQ R3 R3 K1 0x1C0C0701, // 0008 EQ R3 R3 K1
0x780E0002, // 0009 JMPF R3 #000D 0x780E0007, // 0009 JMPF R3 #0012
0x880C0100, // 000A GETMBR R3 R0 K0 0x880C0100, // 000A GETMBR R3 R0 K0
0x980C0202, // 000B SETIDX R3 R1 R2 0x8C0C0702, // 000B GETMET R3 R3 K2
0x70020000, // 000C JMP #000E 0x8C140103, // 000C GETMET R5 R0 K3
0xB0060503, // 000D RAISE 1 K2 K3 0x5C1C0200, // 000D MOVE R7 R1
0x80000000, // 000E RET 0 0x5C200400, // 000E MOVE R8 R2
0x7C140600, // 000F CALL R5 3
0x7C0C0400, // 0010 CALL R3 2
0x70020000, // 0011 JMP #0013
0xB0060905, // 0012 RAISE 1 K4 K5
0x80000000, // 0013 RET 0
}) })
) )
); );
@ -611,7 +721,7 @@ be_local_closure(run_deferred, /* name */
/* K7 */ be_const_int(1), /* K7 */ be_const_int(1),
}), }),
(be_nested_const_str("run_deferred", 371594696, 12)), (be_nested_const_str("run_deferred", 371594696, 12)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[27]) { /* code */ ( &(const binstruction[27]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0 0x88040100, // 0000 GETMBR R1 R0 K0
0x78060017, // 0001 JMPF R1 #001A 0x78060017, // 0001 JMPF R1 #001A
@ -712,7 +822,7 @@ be_local_closure(time_str, /* name */
/* K9 */ be_nested_string("sec", -1155074638, 3), /* K9 */ be_nested_string("sec", -1155074638, 3),
}), }),
(be_nested_const_str("time_str", -1681139684, 8)), (be_nested_const_str("time_str", -1681139684, 8)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[14]) { /* code */ ( &(const binstruction[14]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0 0xA40A0000, // 0000 IMPORT R2 K0
0x8C0C0101, // 0001 GETMET R3 R0 K1 0x8C0C0101, // 0001 GETMET R3 R0 K1
@ -768,7 +878,7 @@ be_local_closure(load, /* name */
/* K17 */ be_nested_string("BRY: could not save compiled file %s (%s)", 736659787, 41), /* K17 */ be_nested_string("BRY: could not save compiled file %s (%s)", 736659787, 41),
}), }),
(be_nested_const_str("load", -435725847, 4)), (be_nested_const_str("load", -435725847, 4)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[87]) { /* code */ ( &(const binstruction[87]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0 0xA40A0000, // 0000 IMPORT R2 K0
0xA40E0200, // 0001 IMPORT R3 K1 0xA40E0200, // 0001 IMPORT R3 K1
@ -885,7 +995,7 @@ be_local_closure(find_op, /* name */
/* K5 */ be_const_int(1), /* K5 */ be_const_int(1),
}), }),
(be_nested_const_str("find_op", -528253920, 7)), (be_nested_const_str("find_op", -528253920, 7)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[42]) { /* code */ ( &(const binstruction[42]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0 0xA40A0000, // 0000 IMPORT R2 K0
0x580C0001, // 0001 LDCONST R3 K1 0x580C0001, // 0001 LDCONST R3 K1
@ -958,7 +1068,7 @@ be_local_closure(remove_timer, /* name */
/* K6 */ be_const_int(1), /* K6 */ be_const_int(1),
}), }),
(be_nested_const_str("remove_timer", -153495081, 12)), (be_nested_const_str("remove_timer", -153495081, 12)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[23]) { /* code */ ( &(const binstruction[23]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0 0xB80A0000, // 0000 GETNGBL R2 K0
0x88080501, // 0001 GETMBR R2 R2 K1 0x88080501, // 0001 GETMBR R2 R2 K1
@ -1008,7 +1118,7 @@ be_local_closure(get_light, /* name */
/* K2 */ be_nested_string("get", 1410115415, 3), /* K2 */ be_nested_string("get", 1410115415, 3),
}), }),
(be_nested_const_str("get_light", 381930476, 9)), (be_nested_const_str("get_light", 381930476, 9)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[16]) { /* code */ ( &(const binstruction[16]) { /* code */
0x60080001, // 0000 GETGBL R2 G1 0x60080001, // 0000 GETGBL R2 G1
0x580C0000, // 0001 LDCONST R3 K0 0x580C0000, // 0001 LDCONST R3 K0
@ -1037,47 +1147,15 @@ be_local_closure(get_light, /* name */
********************************************************************/ ********************************************************************/
be_local_closure(exec_rules, /* name */ be_local_closure(exec_rules, /* name */
be_nested_proto( be_nested_proto(
10, /* nstack */ 12, /* nstack */
2, /* argc */ 2, /* argc */
0, /* varg */ 0, /* varg */
0, /* has upvals */ 0, /* has upvals */
NULL, /* no upvals */ NULL, /* no upvals */
1, /* has sup protos */ 0, /* has sup protos */
( &(const struct bproto*[ 1]) { NULL, /* no sub protos */
be_nested_proto(
8, /* nstack */
3, /* argc */
0, /* varg */
1, /* has upvals */
( &(const bupvaldesc[ 2]) { /* upvals */
be_local_const_upval(1, 0),
be_local_const_upval(1, 3),
}),
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_string("try_rule", 1986449405, 8),
}),
(be_nested_const_str("<lambda>", 607256038, 8)),
(be_nested_const_str("tasmota.be", 1128870755, 10)),
( &(const binstruction[11]) { /* code */
0x680C0000, // 0000 GETUPV R3 U0
0x8C0C0700, // 0001 GETMET R3 R3 K0
0x68140001, // 0002 GETUPV R5 U1
0x5C180000, // 0003 MOVE R6 R0
0x5C1C0200, // 0004 MOVE R7 R1
0x7C0C0800, // 0005 CALL R3 4
0x740E0001, // 0006 JMPT R3 #0009
0x740A0000, // 0007 JMPT R2 #0009
0x50080001, // 0008 LDBOOL R2 0 1
0x50080200, // 0009 LDBOOL R2 1 0
0x80040400, // 000A RET 1 R2
})
),
}),
1, /* has constants */ 1, /* has constants */
( &(const bvalue[ 9]) { /* constants */ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_string("_rules", -28750191, 6), /* K0 */ be_nested_string("_rules", -28750191, 6),
/* K1 */ be_nested_string("cmd_res", 921166762, 7), /* K1 */ be_nested_string("cmd_res", 921166762, 7),
/* K2 */ be_nested_string("json", 916562499, 4), /* K2 */ be_nested_string("json", 916562499, 4),
@ -1085,18 +1163,21 @@ be_local_closure(exec_rules, /* name */
/* K4 */ be_nested_string("log", 1062293841, 3), /* K4 */ be_nested_string("log", 1062293841, 3),
/* K5 */ be_nested_string("BRY: ERROR, bad json: ", -1579831487, 22), /* K5 */ be_nested_string("BRY: ERROR, bad json: ", -1579831487, 22),
/* K6 */ be_const_int(3), /* K6 */ be_const_int(3),
/* K7 */ be_nested_string("reduce", 2002030311, 6), /* K7 */ be_const_int(0),
/* K8 */ be_nested_string("stop_iteration", -121173395, 14), /* K8 */ be_nested_string("try_rule", 1986449405, 8),
/* K9 */ be_nested_string("k", -301188886, 1),
/* K10 */ be_nested_string("v", -217300791, 1),
/* K11 */ be_const_int(1),
}), }),
(be_nested_const_str("exec_rules", 1445221092, 10)), (be_nested_const_str("exec_rules", 1445221092, 10)),
(be_nested_const_str("tasmota.be", 1128870755, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[47]) { /* code */ ( &(const binstruction[48]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x740A0003, // 0001 JMPT R2 #0006 0x740A0003, // 0001 JMPT R2 #0006
0x88080101, // 0002 GETMBR R2 R0 K1 0x88080101, // 0002 GETMBR R2 R0 K1
0x4C0C0000, // 0003 LDNIL R3 0x4C0C0000, // 0003 LDNIL R3
0x20080403, // 0004 NE R2 R2 R3 0x20080403, // 0004 NE R2 R2 R3
0x780A0025, // 0005 JMPF R2 #002C 0x780A0027, // 0005 JMPF R2 #002E
0xA40A0400, // 0006 IMPORT R2 K2 0xA40A0400, // 0006 IMPORT R2 K2
0x8C0C0503, // 0007 GETMET R3 R2 K3 0x8C0C0503, // 0007 GETMET R3 R2 K3
0x5C140200, // 0008 MOVE R5 R1 0x5C140200, // 0008 MOVE R5 R1
@ -1116,28 +1197,29 @@ be_local_closure(exec_rules, /* name */
0x78160000, // 0016 JMPF R5 #0018 0x78160000, // 0016 JMPF R5 #0018
0x90020203, // 0017 SETMBR R0 K1 R3 0x90020203, // 0017 SETMBR R0 K1 R3
0x88140100, // 0018 GETMBR R5 R0 K0 0x88140100, // 0018 GETMBR R5 R0 K0
0x7816000E, // 0019 JMPF R5 #0029 0x78160012, // 0019 JMPF R5 #002D
0xA8020008, // 001A EXBLK 0 #0024 0x58140007, // 001A LDCONST R5 K7
0x88140100, // 001B GETMBR R5 R0 K0 0x6018000C, // 001B GETGBL R6 G12
0x8C140B07, // 001C GETMET R5 R5 K7 0x881C0100, // 001C GETMBR R7 R0 K0
0x841C0000, // 001D CLOSURE R7 P0 0x7C180200, // 001D CALL R6 1
0x4C200000, // 001E LDNIL R8 0x14180A06, // 001E LT R6 R5 R6
0x50240000, // 001F LDBOOL R9 0 0 0x781A000C, // 001F JMPF R6 #002D
0x7C140800, // 0020 CALL R5 4 0x88180100, // 0020 GETMBR R6 R0 K0
0x5C100A00, // 0021 MOVE R4 R5 0x94180C05, // 0021 GETIDX R6 R6 R5
0xA8040001, // 0022 EXBLK 1 1 0x8C1C0108, // 0022 GETMET R7 R0 K8
0x70020004, // 0023 JMP #0029 0x5C240600, // 0023 MOVE R9 R3
0x58140008, // 0024 LDCONST R5 K8 0x88280D09, // 0024 GETMBR R10 R6 K9
0xAC140200, // 0025 CATCH R5 1 0 0x882C0D0A, // 0025 GETMBR R11 R6 K10
0x70020000, // 0026 JMP #0028 0x7C1C0800, // 0026 CALL R7 4
0x70020000, // 0027 JMP #0029 0x741E0001, // 0027 JMPT R7 #002A
0xB0080000, // 0028 RAISE 2 R0 R0 0x74120000, // 0028 JMPT R4 #002A
0xA0000000, // 0029 CLOSE R0 0x50100001, // 0029 LDBOOL R4 0 1
0x80040800, // 002A RET 1 R4 0x50100200, // 002A LDBOOL R4 1 0
0xA0080000, // 002B CLOSE R2 0x00140B0B, // 002B ADD R5 R5 K11
0x50080000, // 002C LDBOOL R2 0 0 0x7001FFED, // 002C JMP #001B
0xA0000000, // 002D CLOSE R0 0x80040800, // 002D RET 1 R4
0x80040400, // 002E RET 1 R2 0x50080000, // 002E LDBOOL R2 0 0
0x80040400, // 002F RET 1 R2
}) })
) )
); );
@ -1149,47 +1231,15 @@ be_local_closure(exec_rules, /* name */
********************************************************************/ ********************************************************************/
be_local_closure(exec_tele, /* name */ be_local_closure(exec_tele, /* name */
be_nested_proto( be_nested_proto(
10, /* nstack */ 12, /* nstack */
2, /* argc */ 2, /* argc */
0, /* varg */ 0, /* varg */
0, /* has upvals */ 0, /* has upvals */
NULL, /* no upvals */ NULL, /* no upvals */
1, /* has sup protos */ 0, /* has sup protos */
( &(const struct bproto*[ 1]) { NULL, /* no sub protos */
be_nested_proto(
8, /* nstack */
3, /* argc */
0, /* varg */
1, /* has upvals */
( &(const bupvaldesc[ 2]) { /* upvals */
be_local_const_upval(1, 0),
be_local_const_upval(1, 3),
}),
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_string("try_rule", 1986449405, 8),
}),
(be_nested_const_str("<lambda>", 607256038, 8)),
(be_nested_const_str("tasmota.be", 1128870755, 10)),
( &(const binstruction[11]) { /* code */
0x680C0000, // 0000 GETUPV R3 U0
0x8C0C0700, // 0001 GETMET R3 R3 K0
0x68140001, // 0002 GETUPV R5 U1
0x5C180000, // 0003 MOVE R6 R0
0x5C1C0200, // 0004 MOVE R7 R1
0x7C0C0800, // 0005 CALL R3 4
0x740E0001, // 0006 JMPT R3 #0009
0x740A0000, // 0007 JMPT R2 #0009
0x50080001, // 0008 LDBOOL R2 0 1
0x50080200, // 0009 LDBOOL R2 1 0
0x80040400, // 000A RET 1 R2
})
),
}),
1, /* has constants */ 1, /* has constants */
( &(const bvalue[ 9]) { /* constants */ ( &(const bvalue[12]) { /* constants */
/* K0 */ be_nested_string("_rules", -28750191, 6), /* K0 */ be_nested_string("_rules", -28750191, 6),
/* K1 */ be_nested_string("json", 916562499, 4), /* K1 */ be_nested_string("json", 916562499, 4),
/* K2 */ be_nested_string("load", -435725847, 4), /* K2 */ be_nested_string("load", -435725847, 4),
@ -1197,14 +1247,17 @@ be_local_closure(exec_tele, /* name */
/* K4 */ be_nested_string("BRY: ERROR, bad json: ", -1579831487, 22), /* K4 */ be_nested_string("BRY: ERROR, bad json: ", -1579831487, 22),
/* K5 */ be_const_int(3), /* K5 */ be_const_int(3),
/* K6 */ be_nested_string("Tele", 1329980653, 4), /* K6 */ be_nested_string("Tele", 1329980653, 4),
/* K7 */ be_nested_string("reduce", 2002030311, 6), /* K7 */ be_const_int(0),
/* K8 */ be_nested_string("stop_iteration", -121173395, 14), /* K8 */ be_nested_string("try_rule", 1986449405, 8),
/* K9 */ be_nested_string("k", -301188886, 1),
/* K10 */ be_nested_string("v", -217300791, 1),
/* K11 */ be_const_int(1),
}), }),
(be_nested_const_str("exec_tele", 1020751601, 9)), (be_nested_const_str("exec_tele", 1020751601, 9)),
(be_nested_const_str("tasmota.be", 1128870755, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[40]) { /* code */ ( &(const binstruction[41]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x780A0022, // 0001 JMPF R2 #0025 0x780A0024, // 0001 JMPF R2 #0027
0xA40A0200, // 0002 IMPORT R2 K1 0xA40A0200, // 0002 IMPORT R2 K1
0x8C0C0502, // 0003 GETMET R3 R2 K2 0x8C0C0502, // 0003 GETMET R3 R2 K2
0x5C140200, // 0004 MOVE R5 R1 0x5C140200, // 0004 MOVE R5 R1
@ -1222,27 +1275,28 @@ be_local_closure(exec_tele, /* name */
0x7C140000, // 0010 CALL R5 0 0x7C140000, // 0010 CALL R5 0
0x98160C03, // 0011 SETIDX R5 K6 R3 0x98160C03, // 0011 SETIDX R5 K6 R3
0x5C0C0A00, // 0012 MOVE R3 R5 0x5C0C0A00, // 0012 MOVE R3 R5
0xA8020008, // 0013 EXBLK 0 #001D 0x58140007, // 0013 LDCONST R5 K7
0x88140100, // 0014 GETMBR R5 R0 K0 0x6018000C, // 0014 GETGBL R6 G12
0x8C140B07, // 0015 GETMET R5 R5 K7 0x881C0100, // 0015 GETMBR R7 R0 K0
0x841C0000, // 0016 CLOSURE R7 P0 0x7C180200, // 0016 CALL R6 1
0x4C200000, // 0017 LDNIL R8 0x14180A06, // 0017 LT R6 R5 R6
0x50240000, // 0018 LDBOOL R9 0 0 0x781A000C, // 0018 JMPF R6 #0026
0x7C140800, // 0019 CALL R5 4 0x88180100, // 0019 GETMBR R6 R0 K0
0x5C100A00, // 001A MOVE R4 R5 0x94180C05, // 001A GETIDX R6 R6 R5
0xA8040001, // 001B EXBLK 1 1 0x8C1C0108, // 001B GETMET R7 R0 K8
0x70020004, // 001C JMP #0022 0x5C240600, // 001C MOVE R9 R3
0x58140008, // 001D LDCONST R5 K8 0x88280D09, // 001D GETMBR R10 R6 K9
0xAC140200, // 001E CATCH R5 1 0 0x882C0D0A, // 001E GETMBR R11 R6 K10
0x70020000, // 001F JMP #0021 0x7C1C0800, // 001F CALL R7 4
0x70020000, // 0020 JMP #0022 0x741E0001, // 0020 JMPT R7 #0023
0xB0080000, // 0021 RAISE 2 R0 R0 0x74120000, // 0021 JMPT R4 #0023
0xA0000000, // 0022 CLOSE R0 0x50100001, // 0022 LDBOOL R4 0 1
0x80040800, // 0023 RET 1 R4 0x50100200, // 0023 LDBOOL R4 1 0
0xA0080000, // 0024 CLOSE R2 0x00140B0B, // 0024 ADD R5 R5 K11
0x50080000, // 0025 LDBOOL R2 0 0 0x7001FFED, // 0025 JMP #0014
0xA0000000, // 0026 CLOSE R0 0x80040800, // 0026 RET 1 R4
0x80040400, // 0027 RET 1 R2 0x50080000, // 0027 LDBOOL R2 0 0
0x80040400, // 0028 RET 1 R2
}) })
) )
); );
@ -1268,7 +1322,7 @@ be_local_closure(remove_driver, /* name */
/* K2 */ be_nested_string("pop", 1362321360, 3), /* K2 */ be_nested_string("pop", 1362321360, 3),
}), }),
(be_nested_const_str("remove_driver", 1030243768, 13)), (be_nested_const_str("remove_driver", 1030243768, 13)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[14]) { /* code */ ( &(const binstruction[14]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x780A000A, // 0001 JMPF R2 #000D 0x780A000A, // 0001 JMPF R2 #000D
@ -1322,7 +1376,7 @@ be_local_closure(try_rule, /* name */
/* K15 */ be_nested_string("<=", -1795743310, 2), /* K15 */ be_nested_string("<=", -1795743310, 2),
}), }),
(be_nested_const_str("try_rule", 1986449405, 8)), (be_nested_const_str("try_rule", 1986449405, 8)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[141]) { /* code */ ( &(const binstruction[141]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0 0xA4120000, // 0000 IMPORT R4 K0
0x8C140101, // 0001 GETMET R5 R0 K1 0x8C140101, // 0001 GETMET R5 R0 K1
@ -1490,7 +1544,7 @@ be_local_closure(cb_dispatch, /* name */
/* K2 */ be_nested_string("find", -1108310694, 4), /* K2 */ be_nested_string("find", -1108310694, 4),
}), }),
(be_nested_const_str("cb_dispatch", 1741510499, 11)), (be_nested_const_str("cb_dispatch", 1741510499, 11)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[20]) { /* code */ ( &(const binstruction[20]) { /* code */
0x88180100, // 0000 GETMBR R6 R0 K0 0x88180100, // 0000 GETMBR R6 R0 K0
0x4C1C0000, // 0001 LDNIL R7 0x4C1C0000, // 0001 LDNIL R7
@ -1537,7 +1591,7 @@ be_local_closure(gc, /* name */
/* K2 */ be_nested_string("allocated", 429986098, 9), /* K2 */ be_nested_string("allocated", 429986098, 9),
}), }),
(be_nested_const_str("gc", 1042313471, 2)), (be_nested_const_str("gc", 1042313471, 2)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */ ( &(const binstruction[ 6]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0 0xA4060000, // 0000 IMPORT R1 K0
0x8C080301, // 0001 GETMET R2 R1 K1 0x8C080301, // 0001 GETMET R2 R1 K1
@ -1707,7 +1761,7 @@ be_local_closure(remove_cmd, /* name */
/* K1 */ be_nested_string("remove", -611183107, 6), /* K1 */ be_nested_string("remove", -611183107, 6),
}), }),
(be_nested_const_str("remove_cmd", -462651594, 10)), (be_nested_const_str("remove_cmd", -462651594, 10)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 7]) { /* code */ ( &(const binstruction[ 7]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0 0x88080100, // 0000 GETMBR R2 R0 K0
0x780A0003, // 0001 JMPF R2 #0006 0x780A0003, // 0001 JMPF R2 #0006
@ -1743,7 +1797,7 @@ be_local_closure(exec_cmd, /* name */
/* K4 */ be_nested_string("resolvecmnd", 993361485, 11), /* K4 */ be_nested_string("resolvecmnd", 993361485, 11),
}), }),
(be_nested_const_str("exec_cmd", 493567399, 8)), (be_nested_const_str("exec_cmd", 493567399, 8)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[27]) { /* code */ ( &(const binstruction[27]) { /* code */
0x88100100, // 0000 GETMBR R4 R0 K0 0x88100100, // 0000 GETMBR R4 R0 K0
0x78120016, // 0001 JMPF R4 #0019 0x78120016, // 0001 JMPF R4 #0019
@ -1808,6 +1862,7 @@ class be_class_tasmota (scope: global, name: Tasmota) {
_settings_ptr, comptr(&Settings) _settings_ptr, comptr(&Settings)
init, closure(init_closure) init, closure(init_closure)
kv, closure(kv_closure)
get_free_heap, func(l_getFreeHeap) get_free_heap, func(l_getFreeHeap)
publish, func(l_publish) publish, func(l_publish)

View File

@ -27,7 +27,7 @@ be_local_closure(tostring, /* name */
/* K5 */ be_nested_string("id", 926444256, 2), /* K5 */ be_nested_string("id", 926444256, 2),
}), }),
(be_nested_const_str("tostring", -1995258651, 8)), (be_nested_const_str("tostring", -1995258651, 8)),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[19]) { /* code */ ( &(const binstruction[19]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0 0xA4060000, // 0000 IMPORT R1 K0
0x8C080301, // 0001 GETMET R2 R1 K1 0x8C080301, // 0001 GETMET R2 R1 K1
@ -72,8 +72,8 @@ be_local_closure(init, /* name */
/* K1 */ be_nested_string("f", -485742695, 1), /* K1 */ be_nested_string("f", -485742695, 1),
/* K2 */ be_nested_string("id", 926444256, 2), /* K2 */ be_nested_string("id", 926444256, 2),
}), }),
(be_nested_const_str("init", 380752755, 4)), ((bstring*) &be_const_str_init),
(be_nested_const_str("Tasmota.be", 825809411, 10)), ((bstring*) &be_const_str_input),
( &(const binstruction[ 4]) { /* code */ ( &(const binstruction[ 4]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1 0x90020001, // 0000 SETMBR R0 K0 R1
0x90020202, // 0001 SETMBR R0 K1 R2 0x90020202, // 0001 SETMBR R0 K1 R2

View File

@ -0,0 +1,28 @@
/********************************************************************
* Berry module `unishox`
*
* To use: `import unishox`
*
* Allows to respond to HTTP request
*******************************************************************/
#include "be_constobj.h"
#ifdef USE_UNISHOX_COMPRESSION
extern int be_unishox_compress(bvm *vm);
extern int be_unishox_decompress(bvm *vm);
/********************************************************************
** Solidified module: unishox
********************************************************************/
be_local_module(unishox,
"unishox",
be_nested_map(2,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_nested_key("decompress", -1407935646, 10, -1), be_const_func(be_unishox_decompress) },
{ be_nested_key("compress", -1476883059, 8, -1), be_const_func(be_unishox_compress) },
}))
);
BE_EXPORT_VARIABLE be_define_const_native_module(unishox);
#endif // USE_UNISHOX_COMPRESSION

View File

@ -23,6 +23,7 @@ extern int b_wire_scan(bvm *vm);
extern int b_wire_validwrite(bvm *vm); extern int b_wire_validwrite(bvm *vm);
extern int b_wire_validread(bvm *vm); extern int b_wire_validread(bvm *vm);
extern int b_wire_detect(bvm *vm); extern int b_wire_detect(bvm *vm);
extern int b_wire_enabled(bvm *vm);
/******************************************************************** /********************************************************************
** Solidified function: write_bytes ** Solidified function: write_bytes
@ -43,7 +44,7 @@ be_local_closure(write_bytes, /* name */
/* K2 */ be_nested_string("_end_transmission", -1057486896, 17), /* K2 */ be_nested_string("_end_transmission", -1057486896, 17),
}), }),
(be_nested_const_str("write_bytes", 1227543792, 11)), (be_nested_const_str("write_bytes", 1227543792, 11)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[12]) { /* code */ ( &(const binstruction[12]) { /* code */
0x8C100100, // 0000 GETMET R4 R0 K0 0x8C100100, // 0000 GETMET R4 R0 K0
0x5C180200, // 0001 MOVE R6 R1 0x5C180200, // 0001 MOVE R6 R1
@ -85,7 +86,7 @@ be_local_closure(read_bytes, /* name */
/* K5 */ be_nested_string("_read", 346717030, 5), /* K5 */ be_nested_string("_read", 346717030, 5),
}), }),
(be_nested_const_str("read_bytes", -718234123, 10)), (be_nested_const_str("read_bytes", -718234123, 10)),
(be_nested_const_str("input", -103256197, 5)), ((bstring*) &be_const_str_input),
( &(const binstruction[24]) { /* code */ ( &(const binstruction[24]) { /* code */
0x8C100100, // 0000 GETMET R4 R0 K0 0x8C100100, // 0000 GETMET R4 R0 K0
0x5C180200, // 0001 MOVE R6 R1 0x5C180200, // 0001 MOVE R6 R1
@ -140,6 +141,7 @@ class be_class_tasmota_wire (scope: global, name: Wire) {
write, func(b_wire_validwrite) write, func(b_wire_validwrite)
read, func(b_wire_validread) read, func(b_wire_validread)
detect, func(b_wire_detect) detect, func(b_wire_detect)
enabled, func(b_wire_enabled)
read_bytes, closure(read_bytes_closure) read_bytes, closure(read_bytes_closure)
write_bytes, closure(write_bytes_closure) write_bytes, closure(write_bytes_closure)

View File

@ -38,6 +38,20 @@ class Tasmota
end end
end end
# create a specific sub-class for rules: pattern(string) -> closure
# Classs KV has two members k and v
def kv(k, v)
class KV
var k, v
def init(k,v)
self.k = k
self.v = v
end
end
return KV(k, v)
end
# add `chars_in_string(s:string,c:string) -> int`` # add `chars_in_string(s:string,c:string) -> int``
# looks for any char in c, and return the position of the first char # looks for any char in c, and return the position of the first char
# or -1 if not found # or -1 if not found
@ -98,10 +112,10 @@ class Tasmota
# Rules # Rules
def add_rule(pat,f) def add_rule(pat,f)
if !self._rules if !self._rules
self._rules={} self._rules=[]
end end
if type(f) == 'function' if type(f) == 'function'
self._rules[pat] = f self._rules.push(self.kv(pat, f))
else else
raise 'value_error', 'the second argument is not a function' raise 'value_error', 'the second argument is not a function'
end end
@ -109,7 +123,14 @@ class Tasmota
def remove_rule(pat) def remove_rule(pat)
if self._rules if self._rules
self._rules.remove(pat) var i = 0
while i < size(self._rules)
if self._rules[i].k == pat
self._rules.remove(i) #- don't increment i since we removed the object -#
else
i += 1
end
end
end end
end end
@ -170,10 +191,11 @@ class Tasmota
end end
# try all rule handlers # try all rule handlers
if self._rules if self._rules
try var i = 0
ret = self._rules.reduce( /k,v,r-> self.try_rule(ev,k,v) || r, nil, false) while i < size(self._rules)
except "stop_iteration" var kv = self._rules[i]
# silence stop_iteration which means that the map was resized during iteration ret = self.try_rule(ev,kv.k,kv.v) || ret #- call should be first to avoid evaluation shortcut if ret is already true -#
i += 1
end end
end end
return ret return ret
@ -193,10 +215,12 @@ class Tasmota
end end
# insert tele prefix # insert tele prefix
ev = { "Tele": ev } ev = { "Tele": ev }
try
ret = self._rules.reduce( /k,v,r-> self.try_rule(ev,k,v) || r, nil, false) var i = 0
except "stop_iteration" while i < size(self._rules)
# silence stop_iteration which means that the map was resized during iteration var kv = self._rules[i]
ret = self.try_rule(ev,kv.k,kv.v) || ret #- call should be first to avoid evaluation shortcut -#
i += 1
end end
return ret return ret
end end
@ -285,8 +309,8 @@ class Tasmota
def wire_scan(addr,idx) def wire_scan(addr,idx)
# skip if the I2C index is disabled # skip if the I2C index is disabled
if idx != nil && !self.i2c_enabled(idx) return nil end if idx != nil && !self.i2c_enabled(idx) return nil end
if self.wire1.detect(addr) return self.wire1 end if self.wire1.enabled() && self.wire1.detect(addr) return self.wire1 end
if self.wire2.detect(addr) return self.wire2 end if self.wire2.enabled() && self.wire2.detect(addr) return self.wire2 end
return nil return nil
end end

View File

@ -38,7 +38,7 @@ class LVGL_glob
var event = lv.lv_event(introspect.toptr(event_ptr)) var event = lv.lv_event(introspect.toptr(event_ptr))
var target = event.target var target = int(event.target)
var f = self.cb_event_closure[target] var f = self.cb_event_closure[target]
var obj = self.get_object_from_ptr(target) var obj = self.get_object_from_ptr(target)
#print('>> lvgl_event_dispatch', f, obj, event) #print('>> lvgl_event_dispatch', f, obj, event)

View File

@ -1,239 +0,0 @@
GPIO_NONE 0
GPIO_KEY1 1
GPIO_KEY1_NP 2
GPIO_KEY1_INV 3
GPIO_KEY1_INV_NP 4
GPIO_SWT1 5
GPIO_SWT1_NP 6
GPIO_REL1 7
GPIO_REL1_INV 8
GPIO_LED1 9
GPIO_LED1_INV 10
GPIO_CNTR1 11
GPIO_CNTR1_NP 12
GPIO_PWM1 13
GPIO_PWM1_INV 14
GPIO_BUZZER 15
GPIO_BUZZER_INV 16
GPIO_LEDLNK 17
GPIO_LEDLNK_INV 18
GPIO_I2C_SCL 19
GPIO_I2C_SDA 20
GPIO_SPI_MISO 21
GPIO_SPI_MOSI 22
GPIO_SPI_CLK 23
GPIO_SPI_CS 24
GPIO_SPI_DC 25
GPIO_SSPI_MISO 26
GPIO_SSPI_MOSI 27
GPIO_SSPI_SCLK 28
GPIO_SSPI_CS 29
GPIO_SSPI_DC 30
GPIO_BACKLIGHT 31
GPIO_OLED_RESET 32
GPIO_IRSEND 33
GPIO_IRRECV 34
GPIO_RFSEND 35
GPIO_RFRECV 36
GPIO_DHT11 37
GPIO_DHT22 38
GPIO_SI7021 39
GPIO_DHT11_OUT 40
GPIO_DSB 41
GPIO_DSB_OUT 42
GPIO_WS2812 43
GPIO_MHZ_TXD 44
GPIO_MHZ_RXD 45
GPIO_PZEM0XX_TX 46
GPIO_PZEM004_RX 47
GPIO_PZEM016_RX 48
GPIO_PZEM017_RX 49
GPIO_SAIR_TX 50
GPIO_SAIR_RX 51
GPIO_PMS5003_TX 52
GPIO_PMS5003_RX 53
GPIO_SDS0X1_TX 54
GPIO_SDS0X1_RX 55
GPIO_SBR_TX 56
GPIO_SBR_RX 57
GPIO_SR04_TRIG 58
GPIO_SR04_ECHO 59
GPIO_SDM120_TX 60
GPIO_SDM120_RX 61
GPIO_SDM630_TX 62
GPIO_SDM630_RX 63
GPIO_TM1638CLK 64
GPIO_TM1638DIO 65
GPIO_TM1638STB 66
GPIO_MP3_DFR562 67
GPIO_HX711_SCK 68
GPIO_HX711_DAT 69
GPIO_TX2X_TXD_BLACK 70
GPIO_TUYA_TX 71
GPIO_TUYA_RX 72
GPIO_MGC3130_XFER 73
GPIO_MGC3130_RESET 74
GPIO_RF_SENSOR 75
GPIO_AZ_TXD 76
GPIO_AZ_RXD 77
GPIO_MAX31855CS 78
GPIO_MAX31855CLK 79
GPIO_MAX31855DO 80
GPIO_NRG_SEL 81
GPIO_NRG_SEL_INV 82
GPIO_NRG_CF1 83
GPIO_HLW_CF 84
GPIO_HJL_CF 85
GPIO_MCP39F5_TX 86
GPIO_MCP39F5_RX 87
GPIO_MCP39F5_RST 88
GPIO_PN532_TXD 89
GPIO_PN532_RXD 90
GPIO_SM16716_CLK 91
GPIO_SM16716_DAT 92
GPIO_SM16716_SEL 93
GPIO_DI 94
GPIO_DCKI 95
GPIO_CSE7766_TX 96
GPIO_CSE7766_RX 97
GPIO_ARIRFRCV 98
GPIO_ARIRFSEL 99
GPIO_TXD 100
GPIO_RXD 101
GPIO_ROT1A 102
GPIO_ROT1B 103
GPIO_ADC_JOY 104
GPIO_SSPI_MAX31865_CS1 105
GPIO_HRE_CLOCK 106
GPIO_HRE_DATA 107
GPIO_ADE7953_IRQ 108
GPIO_SOLAXX1_TX 109
GPIO_SOLAXX1_RX 110
GPIO_ZIGBEE_TX 111
GPIO_ZIGBEE_RX 112
GPIO_RDM6300_RX 113
GPIO_IBEACON_TX 114
GPIO_IBEACON_RX 115
GPIO_A4988_DIR 116
GPIO_A4988_STP 117
GPIO_A4988_ENA 118
GPIO_A4988_MS1 119
GPIO_OUTPUT_HI 120
GPIO_OUTPUT_LO 121
GPIO_DDS2382_TX 122
GPIO_DDS2382_RX 123
GPIO_DDSU666_TX 124
GPIO_DDSU666_RX 125
GPIO_SM2135_CLK 126
GPIO_SM2135_DAT 127
GPIO_DEEPSLEEP 128
GPIO_EXS_ENABLE 129
GPIO_TASMOTACLIENT_TXD 130
GPIO_TASMOTACLIENT_RXD 131
GPIO_TASMOTACLIENT_RST 132
GPIO_TASMOTACLIENT_RST_INV 133
GPIO_HPMA_RX 134
GPIO_HPMA_TX 135
GPIO_GPS_RX 136
GPIO_GPS_TX 137
GPIO_HM10_RX 138
GPIO_HM10_TX 139
GPIO_LE01MR_RX 140
GPIO_LE01MR_TX 141
GPIO_CC1101_GDO0 142
GPIO_CC1101_GDO2 143
GPIO_HRXL_RX 144
GPIO_ELECTRIQ_MOODL_TX 145
GPIO_AS3935 146
GPIO_ADC_INPUT 147
GPIO_ADC_TEMP 148
GPIO_ADC_LIGHT 149
GPIO_ADC_BUTTON 150
GPIO_ADC_BUTTON_INV 151
GPIO_ADC_RANGE 152
GPIO_ADC_CT_POWER 153
GPIO_WEBCAM_PWDN 154
GPIO_WEBCAM_RESET 155
GPIO_WEBCAM_XCLK 156
GPIO_WEBCAM_SIOD 157
GPIO_WEBCAM_SIOC 158
GPIO_WEBCAM_DATA 159
GPIO_WEBCAM_VSYNC 160
GPIO_WEBCAM_HREF 161
GPIO_WEBCAM_PCLK 162
GPIO_WEBCAM_PSCLK 163
GPIO_WEBCAM_HSD 164
GPIO_WEBCAM_PSRCS 165
GPIO_BOILER_OT_RX 166
GPIO_BOILER_OT_TX 167
GPIO_WINDMETER_SPEED 168
GPIO_KEY1_TC 169
GPIO_BL0940_RX 170
GPIO_TCP_TX 171
GPIO_TCP_RX 172
GPIO_ETH_PHY_POWER 173
GPIO_ETH_PHY_MDC 174
GPIO_ETH_PHY_MDIO 175
GPIO_TELEINFO_RX 176
GPIO_TELEINFO_ENABLE 177
GPIO_LMT01 178
GPIO_IEM3000_TX 179
GPIO_IEM3000_RX 180
GPIO_ZIGBEE_RST 181
GPIO_DYP_RX 182
GPIO_MIEL_HVAC_TX 183
GPIO_MIEL_HVAC_RX 184
GPIO_WE517_TX 185
GPIO_WE517_RX 186
GPIO_AS608_TX 187
GPIO_AS608_RX 188
GPIO_SHELLY_DIMMER_BOOT0 189
GPIO_SHELLY_DIMMER_RST_INV 190
GPIO_RC522_RST 191
GPIO_P9813_CLK 192
GPIO_P9813_DAT 193
GPIO_OPTION_A 194
GPIO_FTC532 195
GPIO_RC522_CS 196
GPIO_NRF24_CS 197
GPIO_NRF24_DC 198
GPIO_ILI9341_CS 199
GPIO_ILI9341_DC 200
GPIO_ILI9488_CS 201
GPIO_EPAPER29_CS 202
GPIO_EPAPER42_CS 203
GPIO_SSD1351_CS 204
GPIO_RA8876_CS 205
GPIO_ST7789_CS 206
GPIO_ST7789_DC 207
GPIO_SSD1331_CS 208
GPIO_SSD1331_DC 209
GPIO_SDCARD_CS 210
GPIO_ROT1A_NP 211
GPIO_ROT1B_NP 212
GPIO_ADC_PH 213
GPIO_BS814_CLK 214
GPIO_BS814_DAT 215
GPIO_WIEGAND_D0 216
GPIO_WIEGAND_D1 217
GPIO_NEOPOOL_TX 218
GPIO_NEOPOOL_RX 219
GPIO_SDM72_TX 220
GPIO_SDM72_RX 221
GPIO_TM1637CLK 222
GPIO_TM1637DIO 223
GPIO_PROJECTOR_CTRL_TX 224
GPIO_PROJECTOR_CTRL_RX 225
GPIO_SSD1351_DC 226
GPIO_XPT2046_CS 227
GPIO_CSE7761_TX 228
GPIO_CSE7761_RX 229
GPIO_VL53L0X_XSHUT1 230
GPIO_MAX7219CLK 231
GPIO_MAX7219DIN 232
GPIO_MAX7219CS 233
GPIO_TFMINIPLUS_TX 234
GPIO_TFMINIPLUS_RX 235
GPIO_ZEROCROSS 236
GPIO_HALLEFFECT 237
GPIO_SENSOR_END 238

View File

@ -1,601 +1,340 @@
extern const bcstring be_const_str_WEBCAM_PWDN;
extern const bcstring be_const_str_gc;
extern const bcstring be_const_str_pin_mode;
extern const bcstring be_const_str_SERIAL_7N2;
extern const bcstring be_const_str_WEBCAM_XCLK;
extern const bcstring be_const_str_list;
extern const bcstring be_const_str_top;
extern const bcstring be_const_str_CSE7761_RX;
extern const bcstring be_const_str_I2S_OUT_CLK;
extern const bcstring be_const_str_MCP39F5_RST;
extern const bcstring be_const_str_SBR_RX;
extern const bcstring be_const_str_codedump;
extern const bcstring be_const_str_SERIAL_7E2;
extern const bcstring be_const_str_exec_rules;
extern const bcstring be_const_str_insert;
extern const bcstring be_const_str_SI7021;
extern const bcstring be_const_str_WE517_TX;
extern const bcstring be_const_str_pi;
extern const bcstring be_const_str_TCP_RX;
extern const bcstring be_const_str_RFSEND;
extern const bcstring be_const_str_fromb64;
extern const bcstring be_const_str_resp_cmnd;
extern const bcstring be_const_str_format;
extern const bcstring be_const_str_update;
extern const bcstring be_const_str_classof;
extern const bcstring be_const_str___lower__;
extern const bcstring be_const_str_finish;
extern const bcstring be_const_str_getbits;
extern const bcstring be_const_str_pow;
extern const bcstring be_const_str_PULLDOWN;
extern const bcstring be_const_str_SBR_TX;
extern const bcstring be_const_str_SERIAL_7N1;
extern const bcstring be_const_str_cmd;
extern const bcstring be_const_str_sin;
extern const bcstring be_const_str_time_reached;
extern const bcstring be_const_str_MP3_DFR562;
extern const bcstring be_const_str_TUYA_TX;
extern const bcstring be_const_str_WEBCAM_SIOD;
extern const bcstring be_const_str_WIEGAND_D1;
extern const bcstring be_const_str_SERIAL_8E1;
extern const bcstring be_const_str_byte;
extern const bcstring be_const_str_WINDMETER_SPEED;
extern const bcstring be_const_str_A4988_STP;
extern const bcstring be_const_str_WEBCAM_PSRCS;
extern const bcstring be_const_str_XPT2046_CS;
extern const bcstring be_const_str_gen_cb;
extern const bcstring be_const_str_scale_uint;
extern const bcstring be_const_str_ADC_RANGE;
extern const bcstring be_const_str_PMS5003_TX;
extern const bcstring be_const_str_SM16716_DAT;
extern const bcstring be_const_str_asin;
extern const bcstring be_const_str_tomap;
extern const bcstring be_const_str_PZEM0XX_TX;
extern const bcstring be_const_str_call;
extern const bcstring be_const_str_get_string;
extern const bcstring be_const_str_SR04_ECHO;
extern const bcstring be_const_str_isnan;
extern const bcstring be_const_str_super;
extern const bcstring be_const_str_REL1;
extern const bcstring be_const_str_get;
extern const bcstring be_const_str_remove;
extern const bcstring be_const_str_for;
extern const bcstring be_const_str_TCP_TX;
extern const bcstring be_const_str_TM1638STB;
extern const bcstring be_const_str_collect;
extern const bcstring be_const_str_LE01MR_RX;
extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0;
extern const bcstring be_const_str_TUYA_RX;
extern const bcstring be_const_str_module;
extern const bcstring be_const_str_set_timeouts;
extern const bcstring be_const_str_skip;
extern const bcstring be_const_str_ROT1A_NP;
extern const bcstring be_const_str_WIEGAND_D0;
extern const bcstring be_const_str_else;
extern const bcstring be_const_str_wifi;
extern const bcstring be_const_str_wire1;
extern const bcstring be_const_str_ADC_INPUT;
extern const bcstring be_const_str_ceil;
extern const bcstring be_const_str_sqrt;
extern const bcstring be_const_str_srand;
extern const bcstring be_const_str_try;
extern const bcstring be_const_str_DHT11_OUT;
extern const bcstring be_const_str_SDM120_TX;
extern const bcstring be_const_str_ARIRFSEL;
extern const bcstring be_const_str_AS608_TX;
extern const bcstring be_const_str_ETH_PHY_POWER;
extern const bcstring be_const_str_get_free_heap;
extern const bcstring be_const_str_GPS_TX;
extern const bcstring be_const_str_IBEACON_TX;
extern const bcstring be_const_str_INPUT_PULLDOWN;
extern const bcstring be_const_str_isrunning;
extern const bcstring be_const_str_wire_scan;
extern const bcstring be_const_str_LE01MR_TX;
extern const bcstring be_const_str_arg;
extern const bcstring be_const_str_digital_write;
extern const bcstring be_const_str_NRG_SEL_INV;
extern const bcstring be_const_str_LEDLNK_INV;
extern const bcstring be_const_str_ROT1B_NP;
extern const bcstring be_const_str_scan;
extern const bcstring be_const_str_SWT1_PD;
extern const bcstring be_const_str_classname;
extern const bcstring be_const_str_PZEM016_RX;
extern const bcstring be_const_str_TELEINFO_ENABLE;
extern const bcstring be_const_str_TX2X_TXD_BLACK;
extern const bcstring be_const_str_deinit;
extern const bcstring be_const_str_setmember;
extern const bcstring be_const_str_wire2;
extern const bcstring be_const_str_SDM630_RX;
extern const bcstring be_const_str_SERIAL_7E1;
extern const bcstring be_const_str_SSPI_SCLK;
extern const bcstring be_const_str_web_send;
extern const bcstring be_const_str_content_stop;
extern const bcstring be_const_str_OUTPUT_HI;
extern const bcstring be_const_str_nil;
extern const bcstring be_const_str_opt_neq;
extern const bcstring be_const_str_allocated;
extern const bcstring be_const_str_gamma8;
extern const bcstring be_const_str_i2c_enabled;
extern const bcstring be_const_str__drivers;
extern const bcstring be_const_str_seti;
extern const bcstring be_const_str_;
extern const bcstring be_const_str_KEY1_NP;
extern const bcstring be_const_str_MD5;
extern const bcstring be_const_str_RC522_RST;
extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV;
extern const bcstring be_const_str_SM16716_CLK;
extern const bcstring be_const_str_HRXL_RX;
extern const bcstring be_const_str_EC_C25519;
extern const bcstring be_const_str_SDM120_RX;
extern const bcstring be_const_str_upper;
extern const bcstring be_const_str_HPMA_RX;
extern const bcstring be_const_str_OneWire;
extern const bcstring be_const_str_read12;
extern const bcstring be_const_str_SERIAL_8E2;
extern const bcstring be_const_str_time_str;
extern const bcstring be_const_str_DYP_RX;
extern const bcstring be_const_str_KEY1_INV_PD;
extern const bcstring be_const_str_RC522_CS;
extern const bcstring be_const_str_SDS0X1_RX;
extern const bcstring be_const_str_SSPI_MISO;
extern const bcstring be_const_str_lower;
extern const bcstring be_const_str_SDCARD_CS;
extern const bcstring be_const_str_member;
extern const bcstring be_const_str_size; extern const bcstring be_const_str_size;
extern const bcstring be_const_str_eth;
extern const bcstring be_const_str_members;
extern const bcstring be_const_str_TXD;
extern const bcstring be_const_str_issubclass;
extern const bcstring be_const_str_MAX7219DIN;
extern const bcstring be_const_str_Wire;
extern const bcstring be_const_str_HM10_RX;
extern const bcstring be_const_str_MAX7219CLK;
extern const bcstring be_const_str_MIEL_HVAC_TX;
extern const bcstring be_const_str_check_privileged_access;
extern const bcstring be_const_str_SPI_CS;
extern const bcstring be_const_str_WEBCAM_PCLK;
extern const bcstring be_const_str_WEBCAM_RESET;
extern const bcstring be_const_str_SPI_MOSI;
extern const bcstring be_const_str_last_modified;
extern const bcstring be_const_str_log;
extern const bcstring be_const_str_tob64;
extern const bcstring be_const_str_A4988_MS1;
extern const bcstring be_const_str_DAC;
extern const bcstring be_const_str_SSPI_MOSI;
extern const bcstring be_const_str_encrypt;
extern const bcstring be_const_str_P9813_DAT;
extern const bcstring be_const_str__ccmd;
extern const bcstring be_const_str_cmd_res;
extern const bcstring be_const_str_content_start;
extern const bcstring be_const_str_settings;
extern const bcstring be_const_str_NRF24_CS;
extern const bcstring be_const_str_PZEM004_RX;
extern const bcstring be_const_str_resp_cmnd_done;
extern const bcstring be_const_str_dot_size;
extern const bcstring be_const_str_EPAPER42_CS;
extern const bcstring be_const_str_I2C_SCL;
extern const bcstring be_const_str_INTERRUPT;
extern const bcstring be_const_str_dac_voltage;
extern const bcstring be_const_str_break;
extern const bcstring be_const_str_AZ_TXD;
extern const bcstring be_const_str_CNTR1;
extern const bcstring be_const_str_PULLUP;
extern const bcstring be_const_str_shared_key;
extern const bcstring be_const_str_A4988_DIR;
extern const bcstring be_const_str_HLW_CF;
extern const bcstring be_const_str_end;
extern const bcstring be_const_str_SSPI_MAX31865_CS1;
extern const bcstring be_const_str_opt_call;
extern const bcstring be_const_str_print;
extern const bcstring be_const_str_begin;
extern const bcstring be_const_str_isinstance;
extern const bcstring be_const_str_public_key;
extern const bcstring be_const_str_wire;
extern const bcstring be_const_str_static;
extern const bcstring be_const_str_exists;
extern const bcstring be_const_str_INPUT_PULLUP;
extern const bcstring be_const_str_SERIAL_6N2;
extern const bcstring be_const_str_chars_in_string;
extern const bcstring be_const_str_CHANGE;
extern const bcstring be_const_str_SM16716_SEL;
extern const bcstring be_const_str_IBEACON_RX;
extern const bcstring be_const_str_SPI_DC;
extern const bcstring be_const_str_TELEINFO_RX;
extern const bcstring be_const_str_find_op;
extern const bcstring be_const_str_PMS5003_RX;
extern const bcstring be_const_str_read32;
extern const bcstring be_const_str_MAX7219CS;
extern const bcstring be_const_str_SDM72_RX;
extern const bcstring be_const_str_TM1638DIO;
extern const bcstring be_const_str_CSE7766_RX;
extern const bcstring be_const_str_VL53L0X_XSHUT1;
extern const bcstring be_const_str_content_send_style;
extern const bcstring be_const_str__end_transmission;
extern const bcstring be_const_str_cos;
extern const bcstring be_const_str_SERIAL_8N1;
extern const bcstring be_const_str_publish_result;
extern const bcstring be_const_str_remove_driver;
extern const bcstring be_const_str_A4988_ENA;
extern const bcstring be_const_str_DEEPSLEEP;
extern const bcstring be_const_str__write;
extern const bcstring be_const_str_asstring;
extern const bcstring be_const_str_addr;
extern const bcstring be_const_str_BL0940_RX;
extern const bcstring be_const_str__global_def;
extern const bcstring be_const_str_EXS_ENABLE;
extern const bcstring be_const_str_OPTION_A;
extern const bcstring be_const_str__available;
extern const bcstring be_const_str_read_bytes;
extern const bcstring be_const_str_try_rule;
extern const bcstring be_const_str_write8;
extern const bcstring be_const_str_BOILER_OT_RX;
extern const bcstring be_const_str_DHT11;
extern const bcstring be_const_str_tostring;
extern const bcstring be_const_str_write_bit;
extern const bcstring be_const_str_PWM1;
extern const bcstring be_const_str_SDS0X1_TX;
extern const bcstring be_const_str_ctypes_bytes_dyn;
extern const bcstring be_const_str_SERIAL_8N2;
extern const bcstring be_const_str_write_bytes;
extern const bcstring be_const_str_TM1637DIO;
extern const bcstring be_const_str_read;
extern const bcstring be_const_str_DDS2382_TX;
extern const bcstring be_const_str_LEDLNK;
extern const bcstring be_const_str_SAIR_RX;
extern const bcstring be_const_str_ILI9488_CS;
extern const bcstring be_const_str__request_from;
extern const bcstring be_const_str_content_flush;
extern const bcstring be_const_str_SSPI_CS;
extern const bcstring be_const_str_log10;
extern const bcstring be_const_str_BOILER_OT_TX;
extern const bcstring be_const_str_exp;
extern const bcstring be_const_str_on;
extern const bcstring be_const_str_type; extern const bcstring be_const_str_type;
extern const bcstring be_const_str_add_header;
extern const bcstring be_const_str_strftime;
extern const bcstring be_const_str_as;
extern const bcstring be_const_str_KEY1_PD;
extern const bcstring be_const_str_PROJECTOR_CTRL_RX;
extern const bcstring be_const_str_clear;
extern const bcstring be_const_str_I2S_IN_CLK;
extern const bcstring be_const_str_SERIAL_6N1;
extern const bcstring be_const_str_LMT01;
extern const bcstring be_const_str_RXD;
extern const bcstring be_const_str_item;
extern const bcstring be_const_str_PN532_RXD;
extern const bcstring be_const_str_char;
extern const bcstring be_const_str_MAX31855CS;
extern const bcstring be_const_str_ELECTRIQ_MOODL_TX;
extern const bcstring be_const_str_find;
extern const bcstring be_const_str_gamma10;
extern const bcstring be_const_str_dot_len;
extern const bcstring be_const_str_AudioOutputI2S;
extern const bcstring be_const_str_CC1101_GDO0;
extern const bcstring be_const_str_DSB_OUT;
extern const bcstring be_const_str_pin_used;
extern const bcstring be_const_str_BUZZER_INV;
extern const bcstring be_const_str_SERIAL_5N1;
extern const bcstring be_const_str_set_power;
extern const bcstring be_const_str_acos;
extern const bcstring be_const_str_str;
extern const bcstring be_const_str_add_driver;
extern const bcstring be_const_str_content_button;
extern const bcstring be_const_str_save;
extern const bcstring be_const_str_yield;
extern const bcstring be_const_str_NONE;
extern const bcstring be_const_str_TASMOTACLIENT_RST;
extern const bcstring be_const_str_exec_tele;
extern const bcstring be_const_str_read24;
extern const bcstring be_const_str_search;
extern const bcstring be_const_str_web_send_decimal;
extern const bcstring be_const_str_IEM3000_RX;
extern const bcstring be_const_str_SM2135_CLK;
extern const bcstring be_const_str_erase;
extern const bcstring be_const_str_Tasmota;
extern const bcstring be_const_str_has_arg; extern const bcstring be_const_str_has_arg;
extern const bcstring be_const_str_target_search; extern const bcstring be_const_str_remove;
extern const bcstring be_const_str_var; extern const bcstring be_const_str_SERIAL_6E1;
extern const bcstring be_const_str_IRRECV; extern const bcstring be_const_str_SERIAL_8O1;
extern const bcstring be_const_str_MHZ_RXD;
extern const bcstring be_const_str_TM1638CLK;
extern const bcstring be_const_str_raise;
extern const bcstring be_const_str_MGC3130_RESET;
extern const bcstring be_const_str_TFMINIPLUS_TX;
extern const bcstring be_const_str_elif;
extern const bcstring be_const_str_HRE_CLOCK;
extern const bcstring be_const_str_tag;
extern const bcstring be_const_str_class;
extern const bcstring be_const_str_IEM3000_TX;
extern const bcstring be_const_str__ptr;
extern const bcstring be_const_str_cosh; extern const bcstring be_const_str_cosh;
extern const bcstring be_const_str_HPMA_TX; extern const bcstring be_const_str_global;
extern const bcstring be_const_str_ctypes_bytes; extern const bcstring be_const_str_last_modified;
extern const bcstring be_const_str_loop; extern const bcstring be_const_str_public_key;
extern const bcstring be_const_str_setitem; extern const bcstring be_const_str_dac_voltage;
extern const bcstring be_const_str_TASMOTACLIENT_RXD; extern const bcstring be_const_str_set_power;
extern const bcstring be_const_str_WS2812;
extern const bcstring be_const_str_HX711_DAT;
extern const bcstring be_const_str_add;
extern const bcstring be_const_str_rtc;
extern const bcstring be_const_str_LED1;
extern const bcstring be_const_str_POST;
extern const bcstring be_const_str__settings_def;
extern const bcstring be_const_str_delay;
extern const bcstring be_const_str_GPS_RX;
extern const bcstring be_const_str_LED1_INV;
extern const bcstring be_const_str_reduce;
extern const bcstring be_const_str_url_encode; extern const bcstring be_const_str_url_encode;
extern const bcstring be_const_str_CC1101_GDO2; extern const bcstring be_const_str_SERIAL_7N2;
extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; extern const bcstring be_const_str_content_button;
extern const bcstring be_const_str_WEBCAM_HSD; extern const bcstring be_const_str__cb;
extern const bcstring be_const_str_AudioFileSource; extern const bcstring be_const_str_atan;
extern const bcstring be_const_str_reset;
extern const bcstring be_const_str_NEOPOOL_TX;
extern const bcstring be_const_str_publish;
extern const bcstring be_const_str_setrange;
extern const bcstring be_const_str_DDS2382_RX;
extern const bcstring be_const_str_SAIR_TX;
extern const bcstring be_const_str_BS814_CLK;
extern const bcstring be_const_str_RISING;
extern const bcstring be_const_str_decrypt;
extern const bcstring be_const_str_PWM1_INV;
extern const bcstring be_const_str_rand;
extern const bcstring be_const_str_AS3935;
extern const bcstring be_const_str_if;
extern const bcstring be_const_str_dot_p2; extern const bcstring be_const_str_dot_p2;
extern const bcstring be_const_str_continue; extern const bcstring be_const_str_iter;
extern const bcstring be_const_str_SERIAL_6E2; extern const bcstring be_const_str_remove_timer;
extern const bcstring be_const_str_WEBCAM_VSYNC;
extern const bcstring be_const_str_find_key_i;
extern const bcstring be_const_str_SERIAL_5N2;
extern const bcstring be_const_str_HRE_DATA;
extern const bcstring be_const_str_SERIAL_6O1;
extern const bcstring be_const_str_ZIGBEE_RST;
extern const bcstring be_const_str_HJL_CF;
extern const bcstring be_const_str_MAX31855CLK;
extern const bcstring be_const_str_RF_SENSOR;
extern const bcstring be_const_str_init;
extern const bcstring be_const_str_SERIAL_5O2;
extern const bcstring be_const_str_resp_cmnd_error;
extern const bcstring be_const_str_ADC_BUTTON_INV;
extern const bcstring be_const_str_ARIRFRCV;
extern const bcstring be_const_str_available;
extern const bcstring be_const_str_select; extern const bcstring be_const_str_select;
extern const bcstring be_const_str_ADC_PH; extern const bcstring be_const_str_setmember;
extern const bcstring be_const_str_tanh; extern const bcstring be_const_str_top;
extern const bcstring be_const_str_false; extern const bcstring be_const_str_decrypt;
extern const bcstring be_const_str_SWT1; extern const bcstring be_const_str_gamma10;
extern const bcstring be_const_str_i2c_enabled;
extern const bcstring be_const_str_on;
extern const bcstring be_const_str_pin_mode;
extern const bcstring be_const_str_SERIAL_7O1;
extern const bcstring be_const_str_chars_in_string;
extern const bcstring be_const_str_wifi;
extern const bcstring be_const_str_SERIAL_5N2;
extern const bcstring be_const_str_allocated;
extern const bcstring be_const_str_set_timer;
extern const bcstring be_const_str_SERIAL_8N2;
extern const bcstring be_const_str_ceil;
extern const bcstring be_const_str_clear;
extern const bcstring be_const_str_wire1;
extern const bcstring be_const_str_resp_cmnd_failed;
extern const bcstring be_const_str_SERIAL_5E1;
extern const bcstring be_const_str_classname;
extern const bcstring be_const_str__global_def;
extern const bcstring be_const_str_event;
extern const bcstring be_const_str_pin;
extern const bcstring be_const_str_response_append;
extern const bcstring be_const_str_else;
extern const bcstring be_const_str__rules;
extern const bcstring be_const_str_deinit;
extern const bcstring be_const_str_end;
extern const bcstring be_const_str___upper__;
extern const bcstring be_const_str_char;
extern const bcstring be_const_str_add_header;
extern const bcstring be_const_str_OneWire;
extern const bcstring be_const_str_deg;
extern const bcstring be_const_str_digital_read;
extern const bcstring be_const_str_srand;
extern const bcstring be_const_str_close;
extern const bcstring be_const_str_enabled;
extern const bcstring be_const_str_read13;
extern const bcstring be_const_str_AudioOutput;
extern const bcstring be_const_str_copy;
extern const bcstring be_const_str_exp;
extern const bcstring be_const_str_remove_rule;
extern const bcstring be_const_str_gen_cb;
extern const bcstring be_const_str_opt_neq;
extern const bcstring be_const_str_assert;
extern const bcstring be_const_str_isinstance;
extern const bcstring be_const_str_pow;
extern const bcstring be_const_str_count;
extern const bcstring be_const_str_read_bytes;
extern const bcstring be_const_str_web_send;
extern const bcstring be_const_str_classof;
extern const bcstring be_const_str_cos;
extern const bcstring be_const_str_redirect;
extern const bcstring be_const_str_write_bytes;
extern const bcstring be_const_str_rand;
extern const bcstring be_const_str_class;
extern const bcstring be_const_str_cb_dispatch;
extern const bcstring be_const_str_ctypes_bytes_dyn;
extern const bcstring be_const_str_floor;
extern const bcstring be_const_str_number;
extern const bcstring be_const_str_toptr;
extern const bcstring be_const_str_SERIAL_5N1;
extern const bcstring be_const_str__def;
extern const bcstring be_const_str_find_op;
extern const bcstring be_const_str_wire_scan;
extern const bcstring be_const_str_get_switch;
extern const bcstring be_const_str__read;
extern const bcstring be_const_str_member;
extern const bcstring be_const_str_target_search;
extern const bcstring be_const_str_traceback;
extern const bcstring be_const_str_static;
extern const bcstring be_const_str_opt_eq;
extern const bcstring be_const_str_fromptr;
extern const bcstring be_const_str_getbits;
extern const bcstring be_const_str_setbits;
extern const bcstring be_const_str_stop;
extern const bcstring be_const_str_issubclass;
extern const bcstring be_const_str_flush;
extern const bcstring be_const_str_I2C_Driver;
extern const bcstring be_const_str_atan2;
extern const bcstring be_const_str_resp_cmnd_str;
extern const bcstring be_const_str__settings_def;
extern const bcstring be_const_str_name;
extern const bcstring be_const_str_acos;
extern const bcstring be_const_str_asin;
extern const bcstring be_const_str_members;
extern const bcstring be_const_str_split;
extern const bcstring be_const_str_exists;
extern const bcstring be_const_str_super;
extern const bcstring be_const_str_EC_C25519;
extern const bcstring be_const_str_calldepth;
extern const bcstring be_const_str_ctypes_bytes;
extern const bcstring be_const_str_get_free_heap;
extern const bcstring be_const_str_bus;
extern const bcstring be_const_str_log;
extern const bcstring be_const_str_raise;
extern const bcstring be_const_str_bytes;
extern const bcstring be_const_str_set;
extern const bcstring be_const_str_SERIAL_6N1;
extern const bcstring be_const_str__cmd;
extern const bcstring be_const_str_dot_size;
extern const bcstring be_const_str_SERIAL_5O1;
extern const bcstring be_const_str_AES_GCM;
extern const bcstring be_const_str_AudioFileSourceFS;
extern const bcstring be_const_str_sinh;
extern const bcstring be_const_str_time_str;
extern const bcstring be_const_str_cmd;
extern const bcstring be_const_str_tostring;
extern const bcstring be_const_str__buffer;
extern const bcstring be_const_str_exec_tele;
extern const bcstring be_const_str_except;
extern const bcstring be_const_str_dot_len;
extern const bcstring be_const_str_AudioGeneratorMP3;
extern const bcstring be_const_str__global_addr;
extern const bcstring be_const_str_SERIAL_6E2;
extern const bcstring be_const_str_SERIAL_7E1;
extern const bcstring be_const_str_SERIAL_8O2;
extern const bcstring be_const_str_get;
extern const bcstring be_const_str_SERIAL_8E2;
extern const bcstring be_const_str_init;
extern const bcstring be_const_str_module;
extern const bcstring be_const_str_skip;
extern const bcstring be_const_str__ptr;
extern const bcstring be_const_str_find;
extern const bcstring be_const_str_item;
extern const bcstring be_const_str_GET;
extern const bcstring be_const_str_format;
extern const bcstring be_const_str_sqrt;
extern const bcstring be_const_str_byte;
extern const bcstring be_const_str_true;
extern const bcstring be_const_str__write;
extern const bcstring be_const_str_content_send_style;
extern const bcstring be_const_str_rtc;
extern const bcstring be_const_str_Wire;
extern const bcstring be_const_str_digital_write;
extern const bcstring be_const_str_get_light;
extern const bcstring be_const_str_SERIAL_8N1;
extern const bcstring be_const_str_read12;
extern const bcstring be_const_str_exec_cmd;
extern const bcstring be_const_str_remove_cmd;
extern const bcstring be_const_str_str;
extern const bcstring be_const_str_available;
extern const bcstring be_const_str_read24;
extern const bcstring be_const_str_scale_uint;
extern const bcstring be_const_str_try_rule;
extern const bcstring be_const_str_publish_result;
extern const bcstring be_const_str_state;
extern const bcstring be_const_str_strftime;
extern const bcstring be_const_str_toupper;
extern const bcstring be_const_str_;
extern const bcstring be_const_str_break;
extern const bcstring be_const_str_SERIAL_6N2;
extern const bcstring be_const_str_resolvecmnd;
extern const bcstring be_const_str_AudioOutputI2S;
extern const bcstring be_const_str_SERIAL_5O2;
extern const bcstring be_const_str_erase;
extern const bcstring be_const_str_lower;
extern const bcstring be_const_str_fromstring;
extern const bcstring be_const_str_print;
extern const bcstring be_const_str_def;
extern const bcstring be_const_str__request_from;
extern const bcstring be_const_str_read8;
extern const bcstring be_const_str_detect;
extern const bcstring be_const_str_dump;
extern const bcstring be_const_str_isrunning;
extern const bcstring be_const_str_push;
extern const bcstring be_const_str_time_dump;
extern const bcstring be_const_str_return;
extern const bcstring be_const_str_nil;
extern const bcstring be_const_str_remove_driver;
extern const bcstring be_const_str_SERIAL_7E2;
extern const bcstring be_const_str_add_driver;
extern const bcstring be_const_str_keys;
extern const bcstring be_const_str_run_deferred;
extern const bcstring be_const_str_SERIAL_8E1;
extern const bcstring be_const_str_delay;
extern const bcstring be_const_str_depower;
extern const bcstring be_const_str_imin;
extern const bcstring be_const_str_write8;
extern const bcstring be_const_str_add;
extern const bcstring be_const_str_add_cmd;
extern const bcstring be_const_str_add_rule;
extern const bcstring be_const_str_compile;
extern const bcstring be_const_str_geti;
extern const bcstring be_const_str_upper;
extern const bcstring be_const_str_webclient;
extern const bcstring be_const_str_has;
extern const bcstring be_const_str_codedump;
extern const bcstring be_const_str_reduce;
extern const bcstring be_const_str_as;
extern const bcstring be_const_str_get_size;
extern const bcstring be_const_str_tag;
extern const bcstring be_const_str_opt_connect;
extern const bcstring be_const_str__get_cb;
extern const bcstring be_const_str_try;
extern const bcstring be_const_str_while;
extern const bcstring be_const_str_gc;
extern const bcstring be_const_str_begin;
extern const bcstring be_const_str_kv;
extern const bcstring be_const_str_open;
extern const bcstring be_const_str_web_send_decimal;
extern const bcstring be_const_str_cmd_res;
extern const bcstring be_const_str_settings;
extern const bcstring be_const_str_insert;
extern const bcstring be_const_str___iterator__;
extern const bcstring be_const_str_asstring;
extern const bcstring be_const_str_get_option;
extern const bcstring be_const_str_SERIAL_7N1;
extern const bcstring be_const_str_call;
extern const bcstring be_const_str_eth;
extern const bcstring be_const_str_if;
extern const bcstring be_const_str_int;
extern const bcstring be_const_str_time_reached;
extern const bcstring be_const_str_dot_p1; extern const bcstring be_const_str_dot_p1;
extern const bcstring be_const_str_ADC_LIGHT; extern const bcstring be_const_str_concat;
extern const bcstring be_const_str_content_flush;
extern const bcstring be_const_str_list;
extern const bcstring be_const_str_map;
extern const bcstring be_const_str_for;
extern const bcstring be_const_str_dot_p;
extern const bcstring be_const_str_set_timeouts;
extern const bcstring be_const_str_SERIAL_7O2;
extern const bcstring be_const_str_POST;
extern const bcstring be_const_str_abs; extern const bcstring be_const_str_abs;
extern const bcstring be_const_str_reverse; extern const bcstring be_const_str_reverse;
extern const bcstring be_const_str__cmd;
extern const bcstring be_const_str_attrdump;
extern const bcstring be_const_str_depower;
extern const bcstring be_const_str_OUTPUT_LO;
extern const bcstring be_const_str_import;
extern const bcstring be_const_str_SERIAL_6E1;
extern const bcstring be_const_str_def;
extern const bcstring be_const_str_IRSEND;
extern const bcstring be_const_str_keys;
extern const bcstring be_const_str_time_dump;
extern const bcstring be_const_str_AS608_RX;
extern const bcstring be_const_str_AudioGeneratorWAV;
extern const bcstring be_const_str_ST7789_CS;
extern const bcstring be_const_str_set_timer;
extern const bcstring be_const_str_ILI9341_DC;
extern const bcstring be_const_str_SPI_MISO;
extern const bcstring be_const_str_dot_p;
extern const bcstring be_const_str_P9813_CLK;
extern const bcstring be_const_str_REL1_INV;
extern const bcstring be_const_str_fromptr;
extern const bcstring be_const_str_INPUT;
extern const bcstring be_const_str_iter;
extern const bcstring be_const_str_AES_GCM;
extern const bcstring be_const_str_load;
extern const bcstring be_const_str_MGC3130_XFER;
extern const bcstring be_const_str_TFMINIPLUS_RX;
extern const bcstring be_const_str_resize;
extern const bcstring be_const_str_SWT1_NP;
extern const bcstring be_const_str_count;
extern const bcstring be_const_str_input;
extern const bcstring be_const_str_SPI_CLK;
extern const bcstring be_const_str_deg;
extern const bcstring be_const_str_AudioGenerator;
extern const bcstring be_const_str_SSD1331_DC;
extern const bcstring be_const_str_global;
extern const bcstring be_const_str_traceback;
extern const bcstring be_const_str_do;
extern const bcstring be_const_str_KEY1;
extern const bcstring be_const_str_SERIAL_8O2;
extern const bcstring be_const_str_SSPI_DC;
extern const bcstring be_const_str__global_addr;
extern const bcstring be_const_str_exec_cmd;
extern const bcstring be_const_str_toupper;
extern const bcstring be_const_str_true;
extern const bcstring be_const_str_AudioGeneratorMP3;
extern const bcstring be_const_str_atan;
extern const bcstring be_const_str_SDM72_TX;
extern const bcstring be_const_str_remove_timer;
extern const bcstring be_const_str_I2C_Driver;
extern const bcstring be_const_str_close;
extern const bcstring be_const_str_ZEROCROSS;
extern const bcstring be_const_str_while;
extern const bcstring be_const_str_opt_eq;
extern const bcstring be_const_str_counters;
extern const bcstring be_const_str_imax;
extern const bcstring be_const_str_I2S_OUT_DATA;
extern const bcstring be_const_str_ST7789_DC;
extern const bcstring be_const_str_AudioFileSourceFS;
extern const bcstring be_const_str_SM2135_DAT;
extern const bcstring be_const_str__cb;
extern const bcstring be_const_str_read13;
extern const bcstring be_const_str_CSE7761_TX;
extern const bcstring be_const_str_LOW;
extern const bcstring be_const_str_SERIAL_6O2;
extern const bcstring be_const_str_SERIAL_8O1;
extern const bcstring be_const_str_MHZ_TXD;
extern const bcstring be_const_str_dump;
extern const bcstring be_const_str_get_power;
extern const bcstring be_const_str_number;
extern const bcstring be_const_str_ROT1A;
extern const bcstring be_const_str_SERIAL_5O1;
extern const bcstring be_const_str_TM1637CLK;
extern const bcstring be_const_str__begin_transmission;
extern const bcstring be_const_str_EPAPER29_CS;
extern const bcstring be_const_str_name;
extern const bcstring be_const_str_resp_cmnd_failed;
extern const bcstring be_const_str_return;
extern const bcstring be_const_str_calldepth;
extern const bcstring be_const_str_FALLING;
extern const bcstring be_const_str_push;
extern const bcstring be_const_str_real;
extern const bcstring be_const_str_PN532_TXD;
extern const bcstring be_const_str_RFRECV;
extern const bcstring be_const_str_SOLAXX1_TX;
extern const bcstring be_const_str_get_light;
extern const bcstring be_const_str_millis;
extern const bcstring be_const_str_pop;
extern const bcstring be_const_str___iterator__;
extern const bcstring be_const_str_remove_rule;
extern const bcstring be_const_str_ADC_BUTTON;
extern const bcstring be_const_str_PROJECTOR_CTRL_TX;
extern const bcstring be_const_str_HX711_SCK;
extern const bcstring be_const_str_webclient;
extern const bcstring be_const_str_DDSU666_RX;
extern const bcstring be_const_str_I2C_SDA;
extern const bcstring be_const_str_add_cmd;
extern const bcstring be_const_str__get_cb;
extern const bcstring be_const_str_copy;
extern const bcstring be_const_str_detect;
extern const bcstring be_const_str_digital_read;
extern const bcstring be_const_str_setbits;
extern const bcstring be_const_str_NRF24_DC;
extern const bcstring be_const_str_SSD1351_CS;
extern const bcstring be_const_str_BACKLIGHT;
extern const bcstring be_const_str_SOLAXX1_RX;
extern const bcstring be_const_str_WEBCAM_PSCLK;
extern const bcstring be_const_str_get_size;
extern const bcstring be_const_str_SDM630_TX;
extern const bcstring be_const_str_geti;
extern const bcstring be_const_str_open;
extern const bcstring be_const_str_ADC_JOY;
extern const bcstring be_const_str_ETH_PHY_MDC;
extern const bcstring be_const_str_DDSU666_TX;
extern const bcstring be_const_str_run_deferred;
extern const bcstring be_const_str_opt_add;
extern const bcstring be_const_str__settings_ptr;
extern const bcstring be_const_str_tan;
extern const bcstring be_const_str_KEY1_TC;
extern const bcstring be_const_str_split;
extern const bcstring be_const_str_stop;
extern const bcstring be_const_str_tolower;
extern const bcstring be_const_str_AZ_RXD;
extern const bcstring be_const_str_HIGH;
extern const bcstring be_const_str_fromstring;
extern const bcstring be_const_str_redirect;
extern const bcstring be_const_str_ADC_TEMP;
extern const bcstring be_const_str_DSB;
extern const bcstring be_const_str_add_rule;
extern const bcstring be_const_str_CNTR1_NP;
extern const bcstring be_const_str_TASMOTACLIENT_TXD;
extern const bcstring be_const_str_MAX31855DO;
extern const bcstring be_const_str_MIEL_HVAC_RX;
extern const bcstring be_const_str_SR04_TRIG;
extern const bcstring be_const_str_get_option;
extern const bcstring be_const_str_ETH_PHY_MDIO;
extern const bcstring be_const_str_I2S_IN_SLCT;
extern const bcstring be_const_str_NRG_CF1;
extern const bcstring be_const_str_hex;
extern const bcstring be_const_str_map;
extern const bcstring be_const_str_rad;
extern const bcstring be_const_str_bus;
extern const bcstring be_const_str_concat;
extern const bcstring be_const_str_WEBCAM_SIOC;
extern const bcstring be_const_str_SENSOR_END;
extern const bcstring be_const_str_ZIGBEE_TX;
extern const bcstring be_const_str_assert;
extern const bcstring be_const_str_AudioOutput;
extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN;
extern const bcstring be_const_str_state;
extern const bcstring be_const_str_int;
extern const bcstring be_const_str_I2S_IN_DATA;
extern const bcstring be_const_str_ROT1B;
extern const bcstring be_const_str_dot_w;
extern const bcstring be_const_str_ADE7953_IRQ;
extern const bcstring be_const_str_SSD1351_DC;
extern const bcstring be_const_str_reset_search;
extern const bcstring be_const_str_opt_connect;
extern const bcstring be_const_str_BUZZER;
extern const bcstring be_const_str_PZEM017_RX;
extern const bcstring be_const_str_RA8876_CS;
extern const bcstring be_const_str__def;
extern const bcstring be_const_str_DI;
extern const bcstring be_const_str_I2S_OUT_SLCT;
extern const bcstring be_const_str_NRG_SEL;
extern const bcstring be_const_str_floor;
extern const bcstring be_const_str_NEOPOOL_RX;
extern const bcstring be_const_str_OUTPUT;
extern const bcstring be_const_str_reverse_gamma10;
extern const bcstring be_const_str_ILI9341_CS;
extern const bcstring be_const_str_KEY1_INV_NP;
extern const bcstring be_const_str_ZIGBEE_RX;
extern const bcstring be_const_str_set_light;
extern const bcstring be_const_str_HM10_TX;
extern const bcstring be_const_str_cb_dispatch;
extern const bcstring be_const_str_MCP39F5_TX;
extern const bcstring be_const_str_toptr;
extern const bcstring be_const_str_sinh;
extern const bcstring be_const_str_imin;
extern const bcstring be_const_str_nan;
extern const bcstring be_const_str_SERIAL_7O1;
extern const bcstring be_const_str_set_auth;
extern const bcstring be_const_str__rules;
extern const bcstring be_const_str_event;
extern const bcstring be_const_str_OLED_RESET;
extern const bcstring be_const_str__read;
extern const bcstring be_const_str___upper__;
extern const bcstring be_const_str_content_send;
extern const bcstring be_const_str_ADC_CT_POWER;
extern const bcstring be_const_str_BS814_DAT;
extern const bcstring be_const_str_arg_size;
extern const bcstring be_const_str_SERIAL_5E1;
extern const bcstring be_const_str_resp_cmnd_str;
extern const bcstring be_const_str_RDM6300_RX;
extern const bcstring be_const_str_WEBCAM_DATA;
extern const bcstring be_const_str_WEBCAM_HREF;
extern const bcstring be_const_str_bytes;
extern const bcstring be_const_str_DCKI;
extern const bcstring be_const_str_memory;
extern const bcstring be_const_str_CSE7766_TX;
extern const bcstring be_const_str_response_append;
extern const bcstring be_const_str_EPD_DATA;
extern const bcstring be_const_str_SERIAL_7O2;
extern const bcstring be_const_str_SSD1331_CS;
extern const bcstring be_const_str_arg_name;
extern const bcstring be_const_str_serial;
extern const bcstring be_const_str_HALLEFFECT;
extern const bcstring be_const_str_read8;
extern const bcstring be_const_str_write;
extern const bcstring be_const_str_OPEN_DRAIN;
extern const bcstring be_const_str_WE517_RX;
extern const bcstring be_const_str_has;
extern const bcstring be_const_str_pin;
extern const bcstring be_const_str_remove_cmd;
extern const bcstring be_const_str_GET;
extern const bcstring be_const_str_MCP39F5_RX;
extern const bcstring be_const_str_SERIAL_5E2;
extern const bcstring be_const_str_resolvecmnd;
extern const bcstring be_const_str_set;
extern const bcstring be_const_str_set_useragent; extern const bcstring be_const_str_set_useragent;
extern const bcstring be_const_str_except; extern const bcstring be_const_str_wire2;
extern const bcstring be_const_str_DHT22; extern const bcstring be_const_str_hex;
extern const bcstring be_const_str_compile; extern const bcstring be_const_str_set_light;
extern const bcstring be_const_str_get_switch; extern const bcstring be_const_str_SERIAL_5E2;
extern const bcstring be_const_str_KEY1_INV; extern const bcstring be_const_str_seti;
extern const bcstring be_const_str__timers; extern const bcstring be_const_str_opt_add;
extern const bcstring be_const_str_content_send;
extern const bcstring be_const_str_real;
extern const bcstring be_const_str_publish;
extern const bcstring be_const_str_reset_search;
extern const bcstring be_const_str_log10;
extern const bcstring be_const_str__drivers;
extern const bcstring be_const_str_resp_cmnd_error;
extern const bcstring be_const_str_arg;
extern const bcstring be_const_str_collect;
extern const bcstring be_const_str_loop;
extern const bcstring be_const_str_wire;
extern const bcstring be_const_str_dot_w;
extern const bcstring be_const_str_addr;
extern const bcstring be_const_str_tob64;
extern const bcstring be_const_str_scan;
extern const bcstring be_const_str_set_auth;
extern const bcstring be_const_str_AudioFileSource;
extern const bcstring be_const_str_arg_name;
extern const bcstring be_const_str_contains;
extern const bcstring be_const_str_content_stop;
extern const bcstring be_const_str_nan;
extern const bcstring be_const_str_MD5;
extern const bcstring be_const_str_gamma8;
extern const bcstring be_const_str_isnan;
extern const bcstring be_const_str_pin_used;
extern const bcstring be_const_str_read;
extern const bcstring be_const_str_reverse_gamma10;
extern const bcstring be_const_str_SERIAL_6O2;
extern const bcstring be_const_str_check_privileged_access;
extern const bcstring be_const_str_load;
extern const bcstring be_const_str_resize;
extern const bcstring be_const_str_content_start;
extern const bcstring be_const_str_write;
extern const bcstring be_const_str_AudioGenerator;
extern const bcstring be_const_str_AudioGeneratorWAV;
extern const bcstring be_const_str_range; extern const bcstring be_const_str_range;
extern const bcstring be_const_str_atan2; extern const bcstring be_const_str_encrypt;
extern const bcstring be_const_str_FTC532; extern const bcstring be_const_str_exec_rules;
extern const bcstring be_const_str__buffer; extern const bcstring be_const_str_fromb64;
extern const bcstring be_const_str_flush; extern const bcstring be_const_str_get_power;
extern const bcstring be_const_str_serial;
extern const bcstring be_const_str__available;
extern const bcstring be_const_str_finish;
extern const bcstring be_const_str_attrdump;
extern const bcstring be_const_str_continue;
extern const bcstring be_const_str_do;
extern const bcstring be_const_str_false;
extern const bcstring be_const_str_tomap;
extern const bcstring be_const_str_find_key_i;
extern const bcstring be_const_str_pop;
extern const bcstring be_const_str_reset;
extern const bcstring be_const_str_tolower;
extern const bcstring be_const_str_sin;
extern const bcstring be_const_str_input;
extern const bcstring be_const_str_resp_cmnd;
extern const bcstring be_const_str_Tasmota;
extern const bcstring be_const_str_rad;
extern const bcstring be_const_str_read32;
extern const bcstring be_const_str__begin_transmission;
extern const bcstring be_const_str_pi;
extern const bcstring be_const_str_save;
extern const bcstring be_const_str_shared_key;
extern const bcstring be_const_str_write_bit;
extern const bcstring be_const_str__settings_ptr;
extern const bcstring be_const_str_search;
extern const bcstring be_const_str_opt_call;
extern const bcstring be_const_str_setrange;
extern const bcstring be_const_str_var;
extern const bcstring be_const_str_resp_cmnd_done;
extern const bcstring be_const_str_tan;
extern const bcstring be_const_str_update;
extern const bcstring be_const_str_get_string;
extern const bcstring be_const_str_setitem;
extern const bcstring be_const_str_memory;
extern const bcstring be_const_str_tanh;
extern const bcstring be_const_str_SERIAL_6O1;
extern const bcstring be_const_str__end_transmission;
extern const bcstring be_const_str__timers;
extern const bcstring be_const_str_counters;
extern const bcstring be_const_str_millis;
extern const bcstring be_const_str_import;
extern const bcstring be_const_str___lower__;
extern const bcstring be_const_str_yield;
extern const bcstring be_const_str__ccmd;
extern const bcstring be_const_str_arg_size;
extern const bcstring be_const_str_imax;
extern const bcstring be_const_str_elif;

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +1,25 @@
#include "be_constobj.h" #include "be_constobj.h"
static be_define_const_map_slots(be_class_map_map) { static be_define_const_map_slots(be_class_map_map) {
{ be_const_key(tostring, -1), be_const_func(m_tostring) }, { be_const_key(setitem, -1), be_const_func(m_setitem) },
{ be_const_key(size, -1), be_const_func(m_size) }, { be_const_key(remove, 8), be_const_func(m_remove) },
{ be_const_key(item, 4), be_const_func(m_item) },
{ be_const_key(setitem, 9), be_const_func(m_setitem) },
{ be_const_key(has, -1), be_const_func(m_has) },
{ be_const_key(keys, -1), be_const_func(m_keys) },
{ be_const_key(init, -1), be_const_func(m_init) },
{ be_const_key(remove, 5), be_const_func(m_remove) },
{ be_const_key(reduce, -1), be_const_func(m_reduce) },
{ be_const_key(iter, -1), be_const_func(m_iter) },
{ be_const_key(insert, -1), be_const_func(m_insert) }, { be_const_key(insert, -1), be_const_func(m_insert) },
{ be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(tostring, 4), be_const_func(m_tostring) },
{ be_const_key(find, 1), be_const_func(m_find) }, { be_const_key(has, -1), be_const_func(m_contains) },
{ be_const_key(init, -1), be_const_func(m_init) },
{ be_const_key(contains, 9), be_const_func(m_contains) },
{ be_const_key(dot_p, 13), be_const_var(0) },
{ be_const_key(reduce, -1), be_const_func(m_reduce) },
{ be_const_key(size, -1), be_const_func(m_size) },
{ be_const_key(find, -1), be_const_func(m_find) },
{ be_const_key(keys, -1), be_const_func(m_keys) },
{ be_const_key(item, -1), be_const_func(m_item) },
{ be_const_key(iter, -1), be_const_func(m_iter) },
}; };
static be_define_const_map( static be_define_const_map(
be_class_map_map, be_class_map_map,
13 14
); );
BE_EXPORT_VARIABLE be_define_const_class( BE_EXPORT_VARIABLE be_define_const_class(

View File

@ -1,84 +1,85 @@
#include "be_constobj.h" #include "be_constobj.h"
static be_define_const_map_slots(be_class_tasmota_map) { static be_define_const_map_slots(be_class_tasmota_map) {
{ be_const_key(add_rule, 52), be_const_closure(add_rule_closure) },
{ be_const_key(_global_addr, -1), be_const_comptr(&TasmotaGlobal) },
{ be_const_key(web_send, 14), be_const_func(l_webSend) },
{ be_const_key(settings, -1), be_const_var(0) },
{ be_const_key(set_power, -1), be_const_func(l_setpower) },
{ be_const_key(add_cmd, -1), be_const_closure(add_cmd_closure) },
{ be_const_key(publish, 13), be_const_func(l_publish) },
{ be_const_key(remove_timer, -1), be_const_closure(remove_timer_closure) },
{ be_const_key(resp_cmnd, 55), be_const_func(l_respCmnd) },
{ be_const_key(i2c_enabled, -1), be_const_func(l_i2cenabled) },
{ be_const_key(time_reached, 38), be_const_func(l_timereached) },
{ be_const_key(resp_cmnd_error, 3), be_const_func(l_respCmndError) },
{ be_const_key(init, -1), be_const_closure(init_closure) },
{ be_const_key(eth, 35), be_const_func(l_eth) },
{ be_const_key(time_dump, -1), be_const_func(l_time_dump) },
{ be_const_key(_rules, 29), be_const_var(1) },
{ be_const_key(millis, 41), be_const_func(l_millis) },
{ be_const_key(get_option, -1), be_const_func(l_getoption) },
{ be_const_key(exec_cmd, 49), be_const_closure(exec_cmd_closure) },
{ be_const_key(_cb, -1), be_const_var(2) },
{ be_const_key(wire_scan, -1), be_const_closure(wire_scan_closure) },
{ be_const_key(response_append, 58), be_const_func(l_respAppend) },
{ be_const_key(add_driver, 44), be_const_closure(add_driver_closure) },
{ be_const_key(find_key_i, 28), be_const_closure(find_key_i_closure) },
{ be_const_key(remove_driver, 34), be_const_closure(remove_driver_closure) },
{ be_const_key(get_power, -1), be_const_func(l_getpower) },
{ be_const_key(resp_cmnd_str, -1), be_const_func(l_respCmndStr) },
{ be_const_key(find_op, 21), be_const_closure(find_op_closure) },
{ be_const_key(resolvecmnd, -1), be_const_func(l_resolveCmnd) },
{ be_const_key(cb_dispatch, 40), be_const_closure(cb_dispatch_closure) },
{ be_const_key(get_free_heap, -1), be_const_func(l_getFreeHeap) },
{ be_const_key(log, -1), be_const_func(l_logInfo) },
{ be_const_key(cmd_res, 45), be_const_var(3) },
{ be_const_key(wire1, 43), be_const_var(4) },
{ be_const_key(get_light, -1), be_const_closure(get_light_closure) },
{ be_const_key(strftime, -1), be_const_func(l_strftime) },
{ be_const_key(set_light, -1), be_const_closure(set_light_closure) }, { be_const_key(set_light, -1), be_const_closure(set_light_closure) },
{ be_const_key(global, -1), be_const_var(5) },
{ be_const_key(publish_result, -1), be_const_func(l_publish_result) },
{ be_const_key(cmd, -1), be_const_closure(cmd_closure) },
{ be_const_key(_settings_def, 46), be_const_comptr(&be_tasmota_settings_struct) },
{ be_const_key(load, -1), be_const_closure(load_closure) },
{ be_const_key(resp_cmnd_done, 23), be_const_func(l_respCmndDone) },
{ be_const_key(event, 25), be_const_closure(event_closure) },
{ be_const_key(run_deferred, 57), be_const_closure(run_deferred_closure) },
{ be_const_key(_ccmd, -1), be_const_var(6) },
{ be_const_key(exec_rules, -1), be_const_closure(exec_rules_closure) },
{ be_const_key(exec_tele, -1), be_const_closure(exec_tele_closure) },
{ be_const_key(remove_rule, 63), be_const_closure(remove_rule_closure) },
{ be_const_key(_get_cb, -1), be_const_func(l_get_cb) },
{ be_const_key(try_rule, -1), be_const_closure(try_rule_closure) },
{ be_const_key(time_str, -1), be_const_closure(time_str_closure) },
{ be_const_key(scale_uint, -1), be_const_func(l_scaleuint) },
{ be_const_key(gc, -1), be_const_closure(gc_closure) }, { be_const_key(gc, -1), be_const_closure(gc_closure) },
{ be_const_key(yield, -1), be_const_func(l_yield) },
{ be_const_key(web_send_decimal, -1), be_const_func(l_webSendDecimal) },
{ be_const_key(_timers, 32), be_const_var(7) },
{ be_const_key(get_switch, -1), be_const_func(l_getswitch) },
{ be_const_key(remove_cmd, -1), be_const_closure(remove_cmd_closure) }, { be_const_key(remove_cmd, -1), be_const_closure(remove_cmd_closure) },
{ be_const_key(memory, -1), be_const_func(l_memory) }, { be_const_key(set_timer, 42), be_const_closure(set_timer_closure) },
{ be_const_key(save, 9), be_const_func(l_save) }, { be_const_key(_settings_ptr, -1), be_const_comptr(&Settings) },
{ be_const_key(_settings_ptr, 26), be_const_comptr(&Settings) }, { be_const_key(set_power, -1), be_const_func(l_setpower) },
{ be_const_key(wire2, -1), be_const_var(8) }, { be_const_key(remove_driver, -1), be_const_closure(remove_driver_closure) },
{ be_const_key(_cmd, -1), be_const_func(l_cmd) }, { be_const_key(try_rule, -1), be_const_closure(try_rule_closure) },
{ be_const_key(set_timer, -1), be_const_closure(set_timer_closure) }, { be_const_key(find_op, 58), be_const_closure(find_op_closure) },
{ be_const_key(_drivers, 1), be_const_var(9) }, { be_const_key(resp_cmnd_str, -1), be_const_func(l_respCmndStr) },
{ be_const_key(chars_in_string, -1), be_const_closure(chars_in_string_closure) }, { be_const_key(find_key_i, -1), be_const_closure(find_key_i_closure) },
{ be_const_key(rtc, -1), be_const_func(l_rtc) }, { be_const_key(_cb, 3), be_const_var(0) },
{ be_const_key(web_send, -1), be_const_func(l_webSend) },
{ be_const_key(log, 1), be_const_func(l_logInfo) },
{ be_const_key(get_switch, 50), be_const_func(l_getswitch) },
{ be_const_key(_ccmd, 19), be_const_var(1) },
{ be_const_key(eth, -1), be_const_func(l_eth) },
{ be_const_key(_settings_def, -1), be_const_comptr(&be_tasmota_settings_struct) },
{ be_const_key(init, 39), be_const_closure(init_closure) },
{ be_const_key(strftime, -1), be_const_func(l_strftime) },
{ be_const_key(kv, -1), be_const_closure(kv_closure) },
{ be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) },
{ be_const_key(cmd_res, 67), be_const_var(2) },
{ be_const_key(wire1, 43), be_const_var(3) },
{ be_const_key(get_light, -1), be_const_closure(get_light_closure) },
{ be_const_key(resp_cmnd_error, 62), be_const_func(l_respCmndError) },
{ be_const_key(publish_result, 9), be_const_func(l_publish_result) },
{ be_const_key(gen_cb, -1), be_const_closure(gen_cb_closure) }, { be_const_key(gen_cb, -1), be_const_closure(gen_cb_closure) },
{ be_const_key(yield, -1), be_const_func(l_yield) },
{ be_const_key(add_rule, -1), be_const_closure(add_rule_closure) },
{ be_const_key(settings, -1), be_const_var(4) },
{ be_const_key(chars_in_string, -1), be_const_closure(chars_in_string_closure) },
{ be_const_key(resp_cmnd, 31), be_const_func(l_respCmnd) },
{ be_const_key(exec_tele, 68), be_const_closure(exec_tele_closure) },
{ be_const_key(exec_rules, 51), be_const_closure(exec_rules_closure) },
{ be_const_key(load, -1), be_const_closure(load_closure) },
{ be_const_key(remove_rule, 22), be_const_closure(remove_rule_closure) },
{ be_const_key(_rules, 18), be_const_var(5) },
{ be_const_key(publish, -1), be_const_func(l_publish) },
{ be_const_key(get_option, 15), be_const_func(l_getoption) },
{ be_const_key(global, -1), be_const_var(6) },
{ be_const_key(add_driver, 33), be_const_closure(add_driver_closure) },
{ be_const_key(cmd, -1), be_const_closure(cmd_closure) },
{ be_const_key(add_cmd, -1), be_const_closure(add_cmd_closure) },
{ be_const_key(run_deferred, -1), be_const_closure(run_deferred_closure) },
{ be_const_key(get_free_heap, -1), be_const_func(l_getFreeHeap) },
{ be_const_key(wifi, -1), be_const_func(l_wifi) }, { be_const_key(wifi, -1), be_const_func(l_wifi) },
{ be_const_key(time_dump, -1), be_const_func(l_time_dump) },
{ be_const_key(rtc, 24), be_const_func(l_rtc) },
{ be_const_key(cb_dispatch, -1), be_const_closure(cb_dispatch_closure) },
{ be_const_key(_get_cb, -1), be_const_func(l_get_cb) },
{ be_const_key(resp_cmnd_failed, 72), be_const_func(l_respCmndFailed) },
{ be_const_key(wire_scan, -1), be_const_closure(wire_scan_closure) },
{ be_const_key(exec_cmd, -1), be_const_closure(exec_cmd_closure) },
{ be_const_key(_cmd, 46), be_const_func(l_cmd) },
{ be_const_key(remove_timer, -1), be_const_closure(remove_timer_closure) },
{ be_const_key(time_str, 34), be_const_closure(time_str_closure) },
{ be_const_key(response_append, -1), be_const_func(l_respAppend) },
{ be_const_key(web_send_decimal, 60), be_const_func(l_webSendDecimal) },
{ be_const_key(_drivers, 71), be_const_var(7) },
{ be_const_key(delay, -1), be_const_func(l_delay) }, { be_const_key(delay, -1), be_const_func(l_delay) },
{ be_const_key(_global_def, 37), be_const_comptr(&be_tasmota_global_struct) }, { be_const_key(time_reached, -1), be_const_func(l_timereached) },
{ be_const_key(resp_cmnd_failed, 39), be_const_func(l_respCmndFailed) }, { be_const_key(_global_def, -1), be_const_comptr(&be_tasmota_global_struct) },
{ be_const_key(resolvecmnd, -1), be_const_func(l_resolveCmnd) },
{ be_const_key(_timers, -1), be_const_var(8) },
{ be_const_key(event, 7), be_const_closure(event_closure) },
{ be_const_key(wire2, -1), be_const_var(9) },
{ be_const_key(scale_uint, -1), be_const_func(l_scaleuint) },
{ be_const_key(get_power, 73), be_const_func(l_getpower) },
{ be_const_key(millis, -1), be_const_func(l_millis) },
{ be_const_key(save, 44), be_const_func(l_save) },
{ be_const_key(_global_addr, -1), be_const_comptr(&TasmotaGlobal) },
{ be_const_key(memory, -1), be_const_func(l_memory) },
{ be_const_key(i2c_enabled, -1), be_const_func(l_i2cenabled) },
}; };
static be_define_const_map( static be_define_const_map(
be_class_tasmota_map, be_class_tasmota_map,
73 74
); );
BE_EXPORT_VARIABLE be_define_const_class( BE_EXPORT_VARIABLE be_define_const_class(

View File

@ -1,25 +1,26 @@
#include "be_constobj.h" #include "be_constobj.h"
static be_define_const_map_slots(be_class_tasmota_wire_map) { static be_define_const_map_slots(be_class_tasmota_wire_map) {
{ be_const_key(_end_transmission, 10), be_const_func(b_wire_endtransmission) },
{ be_const_key(bus, -1), be_const_var(0) },
{ be_const_key(_read, 7), be_const_func(b_wire_read) },
{ be_const_key(read, -1), be_const_func(b_wire_validread) },
{ be_const_key(_request_from, -1), be_const_func(b_wire_requestfrom) },
{ be_const_key(init, -1), be_const_func(b_wire_init) }, { be_const_key(init, -1), be_const_func(b_wire_init) },
{ be_const_key(write_bytes, -1), be_const_closure(write_bytes_closure) },
{ be_const_key(_begin_transmission, -1), be_const_func(b_wire_begintransmission) },
{ be_const_key(scan, -1), be_const_func(b_wire_scan) },
{ be_const_key(_write, 1), be_const_func(b_wire_write) },
{ be_const_key(write, -1), be_const_func(b_wire_validwrite) },
{ be_const_key(_available, -1), be_const_func(b_wire_available) }, { be_const_key(_available, -1), be_const_func(b_wire_available) },
{ be_const_key(detect, -1), be_const_func(b_wire_detect) }, { be_const_key(bus, -1), be_const_var(0) },
{ be_const_key(read_bytes, -1), be_const_closure(read_bytes_closure) }, { be_const_key(read_bytes, -1), be_const_closure(read_bytes_closure) },
{ be_const_key(_request_from, -1), be_const_func(b_wire_requestfrom) },
{ be_const_key(detect, -1), be_const_func(b_wire_detect) },
{ be_const_key(scan, 2), be_const_func(b_wire_scan) },
{ be_const_key(enabled, -1), be_const_func(b_wire_enabled) },
{ be_const_key(_write, 13), be_const_func(b_wire_write) },
{ be_const_key(read, -1), be_const_func(b_wire_validread) },
{ be_const_key(_end_transmission, 8), be_const_func(b_wire_endtransmission) },
{ be_const_key(_begin_transmission, -1), be_const_func(b_wire_begintransmission) },
{ be_const_key(write_bytes, 7), be_const_closure(write_bytes_closure) },
{ be_const_key(_read, -1), be_const_func(b_wire_read) },
{ be_const_key(write, -1), be_const_func(b_wire_validwrite) },
}; };
static be_define_const_map( static be_define_const_map(
be_class_tasmota_wire_map, be_class_tasmota_wire_map,
14 15
); );
BE_EXPORT_VARIABLE be_define_const_class( BE_EXPORT_VARIABLE be_define_const_class(

View File

@ -1,281 +1,18 @@
#include "be_constobj.h" #include "be_constobj.h"
static be_define_const_map_slots(m_libgpio_map) { static be_define_const_map_slots(m_libgpio_map) {
{ be_const_key(SENSOR_END, 167), be_const_int(250) },
{ be_const_key(DHT11_OUT, -1), be_const_int(40) },
{ be_const_key(HM10_TX, 199), be_const_int(139) },
{ be_const_key(DHT22, 6), be_const_int(38) },
{ be_const_key(ARIRFRCV, 226), be_const_int(98) },
{ be_const_key(WEBCAM_HREF, 183), be_const_int(161) },
{ be_const_key(SM16716_CLK, 168), be_const_int(91) },
{ be_const_key(ZIGBEE_RST, 264), be_const_int(181) },
{ be_const_key(KEY1_INV_NP, 223), be_const_int(4) },
{ be_const_key(KEY1_TC, 81), be_const_int(169) },
{ be_const_key(PROJECTOR_CTRL_RX, -1), be_const_int(225) },
{ be_const_key(TFMINIPLUS_RX, -1), be_const_int(235) },
{ be_const_key(SSD1331_CS, -1), be_const_int(208) },
{ be_const_key(MP3_DFR562, 162), be_const_int(67) },
{ be_const_key(WEBCAM_VSYNC, 140), be_const_int(160) },
{ be_const_key(CNTR1, 246), be_const_int(11) },
{ be_const_key(ROT1B_NP, -1), be_const_int(212) },
{ be_const_key(ELECTRIQ_MOODL_TX, -1), be_const_int(145) },
{ be_const_key(TASMOTACLIENT_RXD, -1), be_const_int(131) },
{ be_const_key(NONE, -1), be_const_int(0) },
{ be_const_key(RF_SENSOR, -1), be_const_int(75) },
{ be_const_key(MAX31855CS, -1), be_const_int(78) },
{ be_const_key(SPI_MOSI, 233), be_const_int(22) },
{ be_const_key(I2S_OUT_DATA, -1), be_const_int(243) },
{ be_const_key(HPMA_TX, 108), be_const_int(135) },
{ be_const_key(TASMOTACLIENT_RST_INV, 156), be_const_int(133) },
{ be_const_key(IEM3000_RX, -1), be_const_int(180) },
{ be_const_key(BS814_DAT, 196), be_const_int(215) },
{ be_const_key(OUTPUT_LO, -1), be_const_int(121) },
{ be_const_key(SSD1351_CS, 236), be_const_int(204) },
{ be_const_key(TM1637DIO, -1), be_const_int(223) },
{ be_const_key(INTERRUPT, 240), be_const_int(249) },
{ be_const_key(PN532_RXD, 195), be_const_int(90) },
{ be_const_key(SM2135_CLK, -1), be_const_int(126) },
{ be_const_key(DI, -1), be_const_int(94) },
{ be_const_key(TM1638CLK, 87), be_const_int(64) },
{ be_const_key(DSB_OUT, 65), be_const_int(42) },
{ be_const_key(I2S_OUT_SLCT, -1), be_const_int(245) },
{ be_const_key(RDM6300_RX, -1), be_const_int(113) },
{ be_const_key(TUYA_RX, 59), be_const_int(72) },
{ be_const_key(WIEGAND_D1, -1), be_const_int(217) },
{ be_const_key(EPAPER42_CS, 133), be_const_int(203) },
{ be_const_key(INPUT_PULLDOWN, -1), be_const_int(9) },
{ be_const_key(A4988_DIR, 75), be_const_int(116) },
{ be_const_key(NEOPOOL_RX, -1), be_const_int(219) },
{ be_const_key(PZEM016_RX, 36), be_const_int(48) },
{ be_const_key(digital_write, 225), be_const_func(gp_digital_write) },
{ be_const_key(NRG_CF1, -1), be_const_int(83) },
{ be_const_key(FTC532, -1), be_const_int(195) },
{ be_const_key(DDS2382_TX, -1), be_const_int(122) },
{ be_const_key(WEBCAM_RESET, 230), be_const_int(155) },
{ be_const_key(TELEINFO_ENABLE, 42), be_const_int(177) },
{ be_const_key(IRRECV, 89), be_const_int(34) },
{ be_const_key(SDM120_RX, 148), be_const_int(61) },
{ be_const_key(PMS5003_TX, -1), be_const_int(52) },
{ be_const_key(CC1101_GDO2, -1), be_const_int(143) },
{ be_const_key(HPMA_RX, 238), be_const_int(134) },
{ be_const_key(MAX7219CS, -1), be_const_int(233) },
{ be_const_key(CSE7766_RX, 46), be_const_int(97) },
{ be_const_key(RISING, 103), be_const_int(1) },
{ be_const_key(SPI_MISO, -1), be_const_int(21) },
{ be_const_key(RFRECV, -1), be_const_int(36) },
{ be_const_key(SHELLY_DIMMER_RST_INV, 228), be_const_int(190) },
{ be_const_key(TASMOTACLIENT_RST, -1), be_const_int(132) },
{ be_const_key(PULLDOWN, 189), be_const_int(8) },
{ be_const_key(SSPI_CS, -1), be_const_int(29) },
{ be_const_key(TUYA_TX, -1), be_const_int(71) },
{ be_const_key(LED1_INV, 0), be_const_int(10) },
{ be_const_key(digital_read, -1), be_const_func(gp_digital_read) },
{ be_const_key(CSE7766_TX, 215), be_const_int(96) },
{ be_const_key(DCKI, -1), be_const_int(95) },
{ be_const_key(ILI9341_CS, -1), be_const_int(199) },
{ be_const_key(pin_used, -1), be_const_func(gp_pin_used) },
{ be_const_key(ADC_RANGE, 237), be_const_int(152) },
{ be_const_key(PZEM0XX_TX, 31), be_const_int(46) },
{ be_const_key(ROT1A_NP, -1), be_const_int(211) },
{ be_const_key(ROT1A, 202), be_const_int(102) },
{ be_const_key(HALLEFFECT, -1), be_const_int(237) },
{ be_const_key(OPEN_DRAIN, -1), be_const_int(16) },
{ be_const_key(TM1638DIO, 220), be_const_int(65) },
{ be_const_key(IEM3000_TX, -1), be_const_int(179) },
{ be_const_key(MAX7219DIN, 118), be_const_int(232) },
{ be_const_key(A4988_ENA, -1), be_const_int(118) },
{ be_const_key(MHZ_TXD, 23), be_const_int(44) },
{ be_const_key(WEBCAM_PWDN, -1), be_const_int(154) },
{ be_const_key(SDS0X1_RX, -1), be_const_int(55) },
{ be_const_key(SPI_CS, -1), be_const_int(24) },
{ be_const_key(BS814_CLK, -1), be_const_int(214) },
{ be_const_key(CSE7761_RX, -1), be_const_int(229) },
{ be_const_key(ADC_JOY, -1), be_const_int(104) },
{ be_const_key(OPTION_A, 171), be_const_int(194) },
{ be_const_key(RFSEND, -1), be_const_int(35) },
{ be_const_key(HRE_DATA, 135), be_const_int(107) },
{ be_const_key(BOILER_OT_TX, 221), be_const_int(167) },
{ be_const_key(ETH_PHY_MDC, 30), be_const_int(174) },
{ be_const_key(LED1, 11), be_const_int(9) },
{ be_const_key(DDSU666_RX, 64), be_const_int(125) },
{ be_const_key(MAX31855CLK, -1), be_const_int(79) },
{ be_const_key(RA8876_CS, -1), be_const_int(205) },
{ be_const_key(AZ_TXD, -1), be_const_int(76) },
{ be_const_key(SBR_TX, -1), be_const_int(56) },
{ be_const_key(REL1_INV, 212), be_const_int(8) },
{ be_const_key(CC1101_GDO0, -1), be_const_int(142) },
{ be_const_key(AZ_RXD, 149), be_const_int(77) },
{ be_const_key(EPAPER29_CS, 229), be_const_int(202) },
{ be_const_key(P9813_DAT, 177), be_const_int(193) },
{ be_const_key(PWM1, -1), be_const_int(13) },
{ be_const_key(INPUT, -1), be_const_int(239) },
{ be_const_key(PN532_TXD, -1), be_const_int(89) },
{ be_const_key(I2S_IN_DATA, -1), be_const_int(246) },
{ be_const_key(SOLAXX1_TX, -1), be_const_int(109) },
{ be_const_key(LEDLNK_INV, 208), be_const_int(18) },
{ be_const_key(ADC_LIGHT, -1), be_const_int(149) },
{ be_const_key(SDS0X1_TX, 92), be_const_int(54) },
{ be_const_key(ADC_PH, 1), be_const_int(213) },
{ be_const_key(WEBCAM_XCLK, 267), be_const_int(156) },
{ be_const_key(ADC_BUTTON_INV, -1), be_const_int(151) },
{ be_const_key(IBEACON_TX, 13), be_const_int(114) },
{ be_const_key(SWT1_NP, -1), be_const_int(6) },
{ be_const_key(SDCARD_CS, 62), be_const_int(210) },
{ be_const_key(KEY1_PD, -1), be_const_int(240) },
{ be_const_key(BUZZER, 69), be_const_int(15) },
{ be_const_key(SM2135_DAT, -1), be_const_int(127) },
{ be_const_key(CNTR1_NP, -1), be_const_int(12) },
{ be_const_key(NRF24_CS, 49), be_const_int(197) },
{ be_const_key(DYP_RX, -1), be_const_int(182) },
{ be_const_key(IRSEND, -1), be_const_int(33) },
{ be_const_key(WEBCAM_SIOC, 258), be_const_int(158) },
{ be_const_key(MAX7219CLK, 56), be_const_int(231) },
{ be_const_key(WIEGAND_D0, 165), be_const_int(216) },
{ be_const_key(ZIGBEE_RX, -1), be_const_int(112) },
{ be_const_key(CHANGE, 33), be_const_int(4) },
{ be_const_key(AS608_RX, -1), be_const_int(188) },
{ be_const_key(TCP_RX, -1), be_const_int(172) },
{ be_const_key(PZEM017_RX, -1), be_const_int(49) },
{ be_const_key(NRF24_DC, -1), be_const_int(198) },
{ be_const_key(BACKLIGHT, 35), be_const_int(31) },
{ be_const_key(SSPI_MOSI, -1), be_const_int(27) },
{ be_const_key(MAX31855DO, -1), be_const_int(80) },
{ be_const_key(LE01MR_RX, -1), be_const_int(140) },
{ be_const_key(I2S_IN_SLCT, -1), be_const_int(248) },
{ be_const_key(ETH_PHY_POWER, -1), be_const_int(173) },
{ be_const_key(ADE7953_IRQ, 29), be_const_int(108) },
{ be_const_key(SSPI_MISO, -1), be_const_int(26) },
{ be_const_key(WINDMETER_SPEED, 79), be_const_int(168) },
{ be_const_key(IBEACON_RX, -1), be_const_int(115) },
{ be_const_key(TX2X_TXD_BLACK, 8), be_const_int(70) },
{ be_const_key(TM1637CLK, 102), be_const_int(222) },
{ be_const_key(KEY1_INV, -1), be_const_int(3) },
{ be_const_key(BOILER_OT_RX, -1), be_const_int(166) },
{ be_const_key(DDSU666_TX, -1), be_const_int(124) },
{ be_const_key(WEBCAM_DATA, -1), be_const_int(159) },
{ be_const_key(DDS2382_RX, -1), be_const_int(123) },
{ be_const_key(EXS_ENABLE, 53), be_const_int(129) },
{ be_const_key(AS608_TX, -1), be_const_int(187) },
{ be_const_key(OLED_RESET, 100), be_const_int(32) },
{ be_const_key(AS3935, -1), be_const_int(146) },
{ be_const_key(LMT01, -1), be_const_int(178) },
{ be_const_key(ADC_INPUT, -1), be_const_int(147) },
{ be_const_key(SDM72_TX, 235), be_const_int(220) },
{ be_const_key(ADC_TEMP, -1), be_const_int(148) },
{ be_const_key(LEDLNK, 7), be_const_int(17) },
{ be_const_key(DAC, -1), be_const_int(-1) },
{ be_const_key(SAIR_RX, -1), be_const_int(51) },
{ be_const_key(SOLAXX1_RX, -1), be_const_int(110) },
{ be_const_key(WEBCAM_PCLK, -1), be_const_int(162) },
{ be_const_key(KEY1_NP, 14), be_const_int(2) },
{ be_const_key(TFMINIPLUS_TX, -1), be_const_int(234) },
{ be_const_key(SR04_TRIG, -1), be_const_int(58) },
{ be_const_key(A4988_STP, 182), be_const_int(117) },
{ be_const_key(TASMOTACLIENT_TXD, -1), be_const_int(130) },
{ be_const_key(HX711_DAT, 207), be_const_int(69) },
{ be_const_key(HM10_RX, -1), be_const_int(138) },
{ be_const_key(ARIRFSEL, 249), be_const_int(99) },
{ be_const_key(MIEL_HVAC_TX, 141), be_const_int(183) },
{ be_const_key(NRG_SEL, -1), be_const_int(81) },
{ be_const_key(DEEPSLEEP, 132), be_const_int(128) },
{ be_const_key(CSE7761_TX, -1), be_const_int(228) },
{ be_const_key(WS2812, 18), be_const_int(43) },
{ be_const_key(WE517_RX, 188), be_const_int(186) },
{ be_const_key(PROJECTOR_CTRL_TX, -1), be_const_int(224) },
{ be_const_key(SI7021, 242), be_const_int(39) },
{ be_const_key(SM16716_SEL, -1), be_const_int(93) },
{ be_const_key(KEY1_INV_PD, -1), be_const_int(241) },
{ be_const_key(SPI_CLK, -1), be_const_int(23) },
{ be_const_key(ZEROCROSS, -1), be_const_int(236) },
{ be_const_key(OUTPUT_OPEN_DRAIN, -1), be_const_int(18) },
{ be_const_key(REL1, -1), be_const_int(7) },
{ be_const_key(NRG_SEL_INV, -1), be_const_int(82) },
{ be_const_key(RC522_CS, -1), be_const_int(196) },
{ be_const_key(ADC_BUTTON, -1), be_const_int(150) },
{ be_const_key(SAIR_TX, -1), be_const_int(50) },
{ be_const_key(OUTPUT_HI, 105), be_const_int(120) },
{ be_const_key(LE01MR_TX, -1), be_const_int(141) },
{ be_const_key(ILI9341_DC, 22), be_const_int(200) },
{ be_const_key(SR04_ECHO, 263), be_const_int(59) },
{ be_const_key(HJL_CF, 241), be_const_int(85) },
{ be_const_key(I2S_OUT_CLK, -1), be_const_int(244) },
{ be_const_key(MIEL_HVAC_RX, 12), be_const_int(184) },
{ be_const_key(GPS_RX, 247), be_const_int(136) },
{ be_const_key(pin_mode, -1), be_const_func(gp_pin_mode) },
{ be_const_key(P9813_CLK, -1), be_const_int(192) },
{ be_const_key(ZIGBEE_TX, 262), be_const_int(111) },
{ be_const_key(dac_voltage, -1), be_const_func(gp_dac_voltage) },
{ be_const_key(INPUT_PULLUP, -1), be_const_int(5) },
{ be_const_key(SDM120_TX, -1), be_const_int(60) },
{ be_const_key(HRXL_RX, -1), be_const_int(144) },
{ be_const_key(pin, -1), be_const_func(gp_pin) }, { be_const_key(pin, -1), be_const_func(gp_pin) },
{ be_const_key(HRE_CLOCK, -1), be_const_int(106) }, { be_const_key(member, -1), be_const_func(gp_member) },
{ be_const_key(DHT11, -1), be_const_int(37) }, { be_const_key(digital_write, -1), be_const_func(gp_digital_write) },
{ be_const_key(PWM1_INV, 109), be_const_int(14) }, { be_const_key(pin_mode, 1), be_const_func(gp_pin_mode) },
{ be_const_key(A4988_MS1, 94), be_const_int(119) }, { be_const_key(pin_used, -1), be_const_func(gp_pin_used) },
{ be_const_key(SBR_RX, -1), be_const_int(57) }, { be_const_key(dac_voltage, -1), be_const_func(gp_dac_voltage) },
{ be_const_key(SWT1_PD, -1), be_const_int(242) }, { be_const_key(digital_read, 3), be_const_func(gp_digital_read) },
{ be_const_key(FALLING, 5), be_const_int(2) },
{ be_const_key(PULLUP, -1), be_const_int(4) },
{ be_const_key(TELEINFO_RX, -1), be_const_int(176) },
{ be_const_key(MCP39F5_RX, -1), be_const_int(87) },
{ be_const_key(ETH_PHY_MDIO, -1), be_const_int(175) },
{ be_const_key(BL0940_RX, -1), be_const_int(170) },
{ be_const_key(NEOPOOL_TX, 248), be_const_int(218) },
{ be_const_key(VL53L0X_XSHUT1, -1), be_const_int(230) },
{ be_const_key(MCP39F5_RST, 203), be_const_int(88) },
{ be_const_key(HLW_CF, 231), be_const_int(84) },
{ be_const_key(WEBCAM_PSRCS, -1), be_const_int(165) },
{ be_const_key(SSD1331_DC, -1), be_const_int(209) },
{ be_const_key(ST7789_CS, -1), be_const_int(206) },
{ be_const_key(SDM72_RX, 66), be_const_int(221) },
{ be_const_key(SSD1351_DC, -1), be_const_int(226) },
{ be_const_key(SSPI_SCLK, -1), be_const_int(28) },
{ be_const_key(I2S_IN_CLK, -1), be_const_int(247) },
{ be_const_key(SM16716_DAT, -1), be_const_int(92) },
{ be_const_key(I2C_SDA, -1), be_const_int(20) },
{ be_const_key(PZEM004_RX, -1), be_const_int(47) },
{ be_const_key(TCP_TX, -1), be_const_int(171) },
{ be_const_key(SDM630_RX, -1), be_const_int(63) },
{ be_const_key(SWT1, -1), be_const_int(5) },
{ be_const_key(ROT1B, -1), be_const_int(103) },
{ be_const_key(I2C_SCL, -1), be_const_int(19) },
{ be_const_key(RXD, -1), be_const_int(101) },
{ be_const_key(DSB, 261), be_const_int(41) },
{ be_const_key(MCP39F5_TX, 252), be_const_int(86) },
{ be_const_key(HIGH, 266), be_const_int(1) },
{ be_const_key(RC522_RST, -1), be_const_int(191) },
{ be_const_key(SSPI_DC, -1), be_const_int(30) },
{ be_const_key(LOW, -1), be_const_int(0) },
{ be_const_key(BUZZER_INV, -1), be_const_int(16) },
{ be_const_key(XPT2046_CS, -1), be_const_int(227) },
{ be_const_key(WEBCAM_HSD, -1), be_const_int(164) },
{ be_const_key(TM1638STB, -1), be_const_int(66) },
{ be_const_key(PMS5003_RX, -1), be_const_int(53) },
{ be_const_key(SPI_DC, -1), be_const_int(25) },
{ be_const_key(MHZ_RXD, -1), be_const_int(45) },
{ be_const_key(ILI9488_CS, 119), be_const_int(201) },
{ be_const_key(HX711_SCK, 57), be_const_int(68) },
{ be_const_key(SDM630_TX, 227), be_const_int(62) },
{ be_const_key(SHELLY_DIMMER_BOOT0, -1), be_const_int(189) },
{ be_const_key(EPD_DATA, -1), be_const_int(238) },
{ be_const_key(WE517_TX, -1), be_const_int(185) },
{ be_const_key(TXD, 234), be_const_int(100) },
{ be_const_key(OUTPUT, -1), be_const_int(2) },
{ be_const_key(SSPI_MAX31865_CS1, -1), be_const_int(105) },
{ be_const_key(WEBCAM_PSCLK, -1), be_const_int(163) },
{ be_const_key(WEBCAM_SIOD, -1), be_const_int(157) },
{ be_const_key(MGC3130_RESET, -1), be_const_int(74) },
{ be_const_key(KEY1, -1), be_const_int(1) },
{ be_const_key(MGC3130_XFER, -1), be_const_int(73) },
{ be_const_key(ST7789_DC, 245), be_const_int(207) },
{ be_const_key(GPS_TX, 123), be_const_int(137) },
{ be_const_key(ADC_CT_POWER, 58), be_const_int(153) },
}; };
static be_define_const_map( static be_define_const_map(
m_libgpio_map, m_libgpio_map,
270 7
); );
static be_define_const_module( static be_define_const_module(

View File

@ -1125,15 +1125,20 @@ static int m_buffer(bvm *vm)
/* /*
* External API * External API
*/ */
BERRY_API void be_pushbytes(bvm *vm, const void * bytes, size_t len) BERRY_API void * be_pushbytes(bvm *vm, const void * bytes, size_t len)
{ {
bytes_new_object(vm, len); bytes_new_object(vm, len);
buf_impl attr = m_read_attributes(vm, -1); buf_impl attr = m_read_attributes(vm, -1);
if ((int32_t)len > attr.size) { len = attr.size; } /* double check if the buffer allocated was smaller */ if ((int32_t)len > attr.size) { len = attr.size; } /* double check if the buffer allocated was smaller */
memmove((void*)attr.bufptr, bytes, len); if (bytes) { /* if bytes is null, buffer is filled with zeros */
memmove((void*)attr.bufptr, bytes, len);
} else {
memset((void*)attr.bufptr, 0, len);
}
attr.len = len; attr.len = len;
m_write_attributes(vm, -1, &attr); /* update instance */ m_write_attributes(vm, -1, &attr); /* update instance */
/* bytes instance is on top of stack */ /* bytes instance is on top of stack */
return (void*)attr.bufptr;
} }
BERRY_API const void *be_tobytes(bvm *vm, int rel_index, size_t *len) BERRY_API const void *be_tobytes(bvm *vm, int rel_index, size_t *len)

View File

@ -15,6 +15,7 @@ extern "C" {
#include "be_object.h" #include "be_object.h"
#include "be_gc.h" #include "be_gc.h"
#include "be_map.h" #include "be_map.h"
#include "be_list.h"
#include "be_class.h" #include "be_class.h"
#include "be_string.h" #include "be_string.h"
#include "be_module.h" #include "be_module.h"
@ -92,6 +93,21 @@ extern "C" {
.type = BE_MODULE \ .type = BE_MODULE \
} }
#define be_const_simple_instance(_instance) { \
.v.c = (_instance), \
.type = BE_INSTANCE \
}
#define be_const_map(_map) { \
.v.c = &(_map), \
.type = BE_MAP \
}
#define be_const_list(_list) { \
.v.c = &(_list), \
.type = BE_LIST \
}
#define be_define_const_map_slots(_name) \ #define be_define_const_map_slots(_name) \
const bmapnode _name##_slots[] = const bmapnode _name##_slots[] =
@ -164,6 +180,26 @@ const bntvmodule be_native_module(_module) = { \
.info.name = _module_name \ .info.name = _module_name \
} }
/* only instances with no super and no sub instance are supported */
/* primarily for `list` and `map`*/
#define be_nested_simple_instance(_class_ptr, _members) \
& (const binstance) { \
be_const_header(BE_INSTANCE), \
.super = NULL, \
.sub = NULL, \
._class = (bclass*) _class_ptr, \
.members = _members \
}
// #define be_local_instance(_name, _class_ptr, _members) \
// static const binstance i_##_name = { \
// be_const_header(BE_INSTANCE), \
// .super = NULL, \
// .sub = NULL, \
// ._class = (bclass*) _class_ptr, \
// .members = _members \
// }
#define be_nested_map(_size, _slots) \ #define be_nested_map(_size, _slots) \
& (const bmap) { \ & (const bmap) { \
be_const_header(BE_MAP), \ be_const_header(BE_MAP), \
@ -173,6 +209,14 @@ const bntvmodule be_native_module(_module) = { \
.count = _size \ .count = _size \
} }
#define be_nested_list(_size, _items) \
& (const blist) { \
be_const_header(BE_LIST), \
.count = _size, \
.capacity = _size, \
.data = _items \
}
#define be_nested_string(_str, _hash, _len) \ #define be_nested_string(_str, _hash, _len) \
{ \ { \
{ .s=(be_nested_const_str(_str, _hash, _len )) \ { .s=(be_nested_const_str(_str, _hash, _len )) \
@ -284,16 +328,19 @@ const bvector _name = { \
(void*)_data, (void*)(_data + (_size) - 1) \ (void*)_data, (void*)(_data + (_size) - 1) \
} }
#define be_define_const_native_module(_module, _init) \ #define be_define_const_native_module(_module) \
const bntvmodule be_native_module(_module) = { \ const bntvmodule be_native_module(_module) = { \
#_module, \ #_module, \
0, 0, \ 0, 0, \
(bmodule*)&(m_lib##_module), \ (bmodule*)&(m_lib##_module) \
_init \
} }
#endif #endif
/* provide pointers to map and list classes for solidified code */
extern const bclass be_class_list;
extern const bclass be_class_map;
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -69,7 +69,6 @@ static int m_findmember(bvm *vm)
if (top >= 2 && (be_isinstance(vm, 1) || be_ismodule(vm, 1) || be_isclass(vm, 1)) && be_isstring(vm, 2)) { if (top >= 2 && (be_isinstance(vm, 1) || be_ismodule(vm, 1) || be_isclass(vm, 1)) && be_isstring(vm, 2)) {
int ret = be_execprotected(vm, &m_findmember_protected, (void*) be_tostring(vm, 2)); int ret = be_execprotected(vm, &m_findmember_protected, (void*) be_tostring(vm, 2));
if (ret == BE_OK) { if (ret == BE_OK) {
// be_getmember(vm, 1, be_tostring(vm, 2));
be_return(vm); be_return(vm);
} }
} }

View File

@ -121,7 +121,7 @@ static int m_find(bvm *vm)
be_return(vm); be_return(vm);
} }
static int m_has(bvm *vm) static int m_contains(bvm *vm)
{ {
be_getmember(vm, 1, ".p"); be_getmember(vm, 1, ".p");
map_check_data(vm, 2); map_check_data(vm, 2);
@ -279,6 +279,8 @@ void be_load_maplib(bvm *vm)
{ "item", m_item }, { "item", m_item },
{ "setitem", m_setitem }, { "setitem", m_setitem },
{ "find", m_find }, { "find", m_find },
{ "contains", m_contains },
{ "has", m_contains }, /* deprecated */
{ "size", m_size }, { "size", m_size },
{ "insert", m_insert }, { "insert", m_insert },
{ "iter", m_iter }, { "iter", m_iter },
@ -298,7 +300,8 @@ class be_class_map (scope: global, name: map) {
item, func(m_item) item, func(m_item)
setitem, func(m_setitem) setitem, func(m_setitem)
find, func(m_find) find, func(m_find)
has, func(m_has) contains, func(m_contains)
has, func(m_contains)
size, func(m_size) size, func(m_size)
insert, func(m_insert) insert, func(m_insert)
iter, func(m_iter) iter, func(m_iter)

View File

@ -10,6 +10,7 @@
#include "be_string.h" #include "be_string.h"
#include "be_vector.h" #include "be_vector.h"
#include "be_class.h" #include "be_class.h"
#include "be_list.h"
#include "be_debug.h" #include "be_debug.h"
#include "be_map.h" #include "be_map.h"
#include "be_vm.h" #include "be_vm.h"
@ -17,6 +18,9 @@
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
extern const bclass be_class_list;
extern const bclass be_class_map;
#if BE_USE_SOLIDIFY_MODULE #if BE_USE_SOLIDIFY_MODULE
#include <inttypes.h> #include <inttypes.h>
@ -33,6 +37,50 @@
be_writestring(__lbuf); \ be_writestring(__lbuf); \
} while (0) } while (0)
static void m_solidify_bvalue(bvm *vm, bvalue * value, const char *classname, const char *key);
static void m_solidify_map(bvm *vm, bmap * map, const char *class_name)
{
logfmt(" be_nested_map(%i,\n", map->count);
logfmt(" ( (struct bmapnode*) &(const bmapnode[]) {\n");
for (int i = 0; i < map->size; i++) {
bmapnode * node = &map->slots[i];
if (node->key.type == BE_NIL) {
continue; /* key not used */
}
if (node->key.type != BE_STRING) {
char error[64];
snprintf(error, sizeof(error), "Unsupported type in key: %i", node->key.type);
be_raise(vm, "internal_error", error);
}
int key_next = node->key.next;
size_t len = strlen(str(node->key.v.s));
if (0xFFFFFF == key_next) {
key_next = -1; /* more readable */
}
logfmt(" { be_nested_key(\"%s\", %i, %zu, %i), ", str(node->key.v.s), be_strhash(node->key.v.s), len >= 255 ? 255 : len, key_next);
m_solidify_bvalue(vm, &node->value, class_name, str(node->key.v.s));
logfmt(" },\n");
}
logfmt(" }))"); // TODO need terminal comma?
}
static void m_solidify_list(bvm *vm, blist * list, const char *class_name)
{
logfmt(" be_nested_list(%i,\n", list->count);
logfmt(" ( (struct bvalue*) &(const bvalue[]) {\n");
for (int i = 0; i < list->count; i++) {
logfmt(" ");
m_solidify_bvalue(vm, &list->data[i], class_name, "");
logfmt(",\n");
}
logfmt(" }))"); // TODO need terminal comma?
}
// pass key name in case of class, or NULL if none // pass key name in case of class, or NULL if none
static void m_solidify_bvalue(bvm *vm, bvalue * value, const char *classname, const char *key) static void m_solidify_bvalue(bvm *vm, bvalue * value, const char *classname, const char *key)
{ {
@ -88,6 +136,35 @@ static void m_solidify_bvalue(bvm *vm, bvalue * value, const char *classname, co
case BE_NTVFUNC: case BE_NTVFUNC:
logfmt("be_const_func(be_ntv_%s_%s)", classname ? classname : "unknown", key ? key : "unknown"); logfmt("be_const_func(be_ntv_%s_%s)", classname ? classname : "unknown", key ? key : "unknown");
break; break;
case BE_INSTANCE:
{
binstance * ins = (binstance *) var_toobj(value);
bclass * cl = ins->_class;
if (ins->super || ins->sub) {
be_raise(vm, "internal_error", "instance must not have a super/sub class");
} else if (cl->nvar != 1) {
be_raise(vm, "internal_error", "instance must have only one instance variable");
} else if ((cl != &be_class_map && cl != &be_class_list) || 1) { // TODO
const char * cl_ptr = "";
if (cl == &be_class_map) { cl_ptr = "map"; }
if (cl == &be_class_list) { cl_ptr = "list"; }
logfmt("be_const_simple_instance(be_nested_simple_instance(&be_class_%s, {\n", cl_ptr);
if (cl == &be_class_map) {
logfmt(" be_const_map( * ");
} else {
logfmt(" be_const_list( * ");
}
m_solidify_bvalue(vm, &ins->members[0], classname, key);
logfmt(" ) } ))");
}
}
break;
case BE_MAP:
m_solidify_map(vm, (bmap *) var_toobj(value), classname);
break;
case BE_LIST:
m_solidify_list(vm, (blist *) var_toobj(value), classname);
break;
default: default:
{ {
char error[64]; char error[64];
@ -166,7 +243,9 @@ static void m_solidify_proto(bvm *vm, bproto *pr, const char * func_name, int bu
} }
logfmt("%*s(be_nested_const_str(\"%s\", %i, %i)),\n", indent, "", str(pr->name), be_strhash(pr->name), str_len(pr->name)); logfmt("%*s(be_nested_const_str(\"%s\", %i, %i)),\n", indent, "", str(pr->name), be_strhash(pr->name), str_len(pr->name));
logfmt("%*s(be_nested_const_str(\"%s\", %i, %i)),\n", indent, "", func_source, be_strhash(pr->source), str_len(pr->source)); // logfmt("%*s(be_nested_const_str(\"%s\", %i, %i)),\n", indent, "", func_source, be_strhash(pr->source), str_len(pr->source));
// hard-code source as "input" for solidified
logfmt("%*s((bstring*) &be_const_str_input),\n");
logfmt("%*s( &(const binstruction[%2d]) { /* code */\n", indent, "", pr->codesize); logfmt("%*s( &(const binstruction[%2d]) { /* code */\n", indent, "", pr->codesize);
for (int pc = 0; pc < pr->codesize; pc++) { for (int pc = 0; pc < pr->codesize; pc++) {
@ -253,27 +332,8 @@ static void m_solidify_subclass(bvm *vm, bclass *cl, int builtins)
} }
if (cl->members) { if (cl->members) {
logfmt(" be_nested_map(%i,\n", cl->members->count); m_solidify_map(vm, cl->members, class_name);
logfmt(",\n");
logfmt(" ( (struct bmapnode*) &(const bmapnode[]) {\n");
for (int i = 0; i < cl->members->count; i++) {
bmapnode * node = &cl->members->slots[i];
if (node->key.type != BE_STRING) {
char error[64];
snprintf(error, sizeof(error), "Unsupported type in key: %i", node->key.type);
be_raise(vm, "internal_error", error);
}
int key_next = node->key.next;
size_t len = strlen(str(node->key.v.s));
if (0xFFFFFF == key_next) {
key_next = -1; /* more readable */
}
logfmt(" { be_nested_key(\"%s\", %i, %zu, %i), ", str(node->key.v.s), be_strhash(node->key.v.s), len >= 255 ? 255 : len, key_next);
m_solidify_bvalue(vm, &node->value, class_name, str(node->key.v.s));
logfmt(" },\n");
}
logfmt(" })),\n");
} else { } else {
logfmt(" NULL,\n"); logfmt(" NULL,\n");
} }
@ -299,7 +359,8 @@ static void m_solidify_class(bvm *vm, bclass *cl, int builtins)
static void m_solidify_module(bvm *vm, bmodule *ml, int builtins) static void m_solidify_module(bvm *vm, bmodule *ml, int builtins)
{ {
const char * module_name = ml->info.name; const char * module_name = be_module_name(ml);
if (!module_name) { module_name = ""; }
/* iterate on members to dump closures */ /* iterate on members to dump closures */
if (ml->table) { if (ml->table) {
@ -323,33 +384,14 @@ static void m_solidify_module(bvm *vm, bmodule *ml, int builtins)
logfmt(" \"%s\",\n", module_name); logfmt(" \"%s\",\n", module_name);
if (ml->table) { if (ml->table) {
logfmt(" be_nested_map(%i,\n", ml->table->count); m_solidify_map(vm, ml->table, module_name);
logfmt("\n");
logfmt(" ( (struct bmapnode*) &(const bmapnode[]) {\n");
for (int i = 0; i < ml->table->count; i++) {
bmapnode * node = &ml->table->slots[i];
if (node->key.type != BE_STRING) {
char error[64];
snprintf(error, sizeof(error), "Unsupported type in key: %i", node->key.type);
be_raise(vm, "internal_error", error);
}
int key_next = node->key.next;
size_t len = strlen(str(node->key.v.s));
if (0xFFFFFF == key_next) {
key_next = -1; /* more readable */
}
logfmt(" { be_nested_key(\"%s\", %i, %zu, %i), ", str(node->key.v.s), be_strhash(node->key.v.s), len >= 255 ? 255 : len, key_next);
m_solidify_bvalue(vm, &node->value, module_name, str(node->key.v.s));
logfmt(" },\n");
}
logfmt(" }))\n");
} else { } else {
logfmt(" NULL,\n"); logfmt(" NULL,\n");
} }
logfmt(");\n"); logfmt(");\n");
logfmt("BE_EXPORT_VARIABLE be_define_const_native_module(%s, NULL);\n", module_name); logfmt("BE_EXPORT_VARIABLE be_define_const_native_module(%s, NULL);\n", module_name);
logfmt("/********************************************************************\n"); logfmt("/********************************************************************/\n");
} }
@ -366,6 +408,8 @@ static int m_dump(bvm *vm)
m_solidify_class(vm, var_toobj(v), be_builtin_count(vm)); m_solidify_class(vm, var_toobj(v), be_builtin_count(vm));
} else if (var_ismodule(v)) { } else if (var_ismodule(v)) {
m_solidify_module(vm, var_toobj(v), be_builtin_count(vm)); m_solidify_module(vm, var_toobj(v), be_builtin_count(vm));
} else {
be_raise(vm, "value_error", "unsupported type");
} }
} }
be_return_nil(vm); be_return_nil(vm);

View File

@ -821,7 +821,6 @@ newframe: /* a new call frame */
vm->counter_get++; vm->counter_get++;
#endif #endif
bvalue a_temp; /* copy result to a temp variable because the stack may be relocated in virtual member calls */ bvalue a_temp; /* copy result to a temp variable because the stack may be relocated in virtual member calls */
// bvalue *a = RA(), *b = RKB(), *c = RKC();
bvalue *b = RKB(), *c = RKC(); bvalue *b = RKB(), *c = RKC();
if (var_isinstance(b) && var_isstr(c)) { if (var_isinstance(b) && var_isstr(c)) {
obj_attribute(vm, b, var_tostr(c), &a_temp); obj_attribute(vm, b, var_tostr(c), &a_temp);
@ -834,6 +833,7 @@ newframe: /* a new call frame */
reg = vm->reg; reg = vm->reg;
} else { } else {
attribute_error(vm, "attribute", b, c); attribute_error(vm, "attribute", b, c);
a_temp = *RA(); /* avoid gcc warning for uninitialized variable a_temp, this code is never reached */
} }
bvalue *a = RA(); bvalue *a = RA();
*a = a_temp; /* assign the resul to the specified register on the updated stack */ *a = a_temp; /* assign the resul to the specified register on the updated stack */

View File

@ -562,7 +562,7 @@ BERRY_API void be_module_path(bvm *vm);
BERRY_API void be_module_path_set(bvm *vm, const char *path); BERRY_API void be_module_path_set(bvm *vm, const char *path);
/* bytes operations */ /* bytes operations */
BERRY_API void be_pushbytes(bvm *vm, const void *buf, size_t len); BERRY_API void* be_pushbytes(bvm *vm, const void *buf, size_t len);
BERRY_API const void* be_tobytes(bvm *vm, int index, size_t *len); BERRY_API const void* be_tobytes(bvm *vm, int index, size_t *len);
/* registry operation */ /* registry operation */

View File

@ -1,6 +1,6 @@
#include "epd_driver.h" #include "epd_driver.h"
#include "waveforms/ED047TC2.h"
#include "waveforms/epdiy_ED047TC1.h" #include "waveforms/epdiy_ED047TC1.h"
#include "waveforms/epdiy_ED060SC4.h" #include "waveforms/epdiy_ED060SC4.h"
#include "waveforms/epdiy_ED060XC3.h" #include "waveforms/epdiy_ED060XC3.h"

View File

@ -86,7 +86,7 @@ typedef struct {
extern const EpdWaveform ed047tc2;
extern const EpdWaveform epdiy_ED060SC4; extern const EpdWaveform epdiy_ED060SC4;
extern const EpdWaveform epdiy_ED097OC4; extern const EpdWaveform epdiy_ED097OC4;
extern const EpdWaveform epdiy_ED047TC1; extern const EpdWaveform epdiy_ED047TC1;
@ -96,7 +96,8 @@ extern const EpdWaveform epdiy_ED060SCT;
extern const EpdWaveform epdiy_ED133UT2; extern const EpdWaveform epdiy_ED133UT2;
#if defined(CONFIG_EPD_DISPLAY_TYPE_ED047TC1) #if defined(CONFIG_EPD_DISPLAY_TYPE_ED047TC1)
#define EPD_BUILTIN_WAVEFORM &epdiy_ED047TC1 //#define EPD_BUILTIN_WAVEFORM &epdiy_ED047TC1
#define EPD_BUILTIN_WAVEFORM &ed047tc2
#elif defined(CONFIG_EPD_DISPLAY_TYPE_ED060SC4) #elif defined(CONFIG_EPD_DISPLAY_TYPE_ED060SC4)
#define EPD_BUILTIN_WAVEFORM &epdiy_ED060SC4 #define EPD_BUILTIN_WAVEFORM &epdiy_ED060SC4
#elif defined(CONFIG_EPD_DISPLAY_TYPE_ED060XC3) #elif defined(CONFIG_EPD_DISPLAY_TYPE_ED060XC3)
@ -143,5 +144,3 @@ typedef struct {
#endif // EPD_INTERNALS_H #endif // EPD_INTERNALS_H

File diff suppressed because one or more lines are too long

View File

@ -91,8 +91,9 @@ lib_extra_dirs = ${library.lib_extra_dirs}
[env:tasmota32_base] [env:tasmota32_base]
; *** Uncomment next lines ";" to enable Beta Tasmota Arduino version ESP32 IDF4.4 ; *** Uncomment next lines ";" to enable Beta Tasmota Arduino version ESP32 IDF4.4
;platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master ;platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master
;platform_packages = ${core32.platform_packages} ;platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.1rc1/framework-arduinoespressif32-release_IDF4.4.tar.gz
; framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.1rc1/framework-arduinoespressif32-release_IDF4.4.tar.gz ; platformio/tool-esptoolpy @ https://github.com/tasmota/esptool/releases/download/v3.2/esptool-v3.2.zip
; platformio/tool-mklittlefs @ ~1.203.200522
build_unflags = ${esp32_defaults.build_unflags} build_unflags = ${esp32_defaults.build_unflags}
build_flags = ${esp32_defaults.build_flags} build_flags = ${esp32_defaults.build_flags}

View File

@ -28,7 +28,18 @@ build_flags = ${esp_defaults.build_flags}
[core32] [core32]
platform = espressif32 @ 3.3.1 platform = espressif32 @ 3.3.1
platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.5/tasmota-arduinoespressif32-release_v3.3.5.tar.gz platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.5/tasmota-arduinoespressif32-release_v3.3.5.tar.gz
platformio/tool-esptoolpy @ ~1.30100 platformio/toolchain-xtensa32 @ ~2.50200.0
platformio/tool-esptoolpy @ https://github.com/tasmota/esptool/releases/download/v3.2/esptool-v3.2.zip
platformio/tool-mklittlefs @ ~1.203.200522
build_unflags = ${esp32_defaults.build_unflags}
build_flags = ${esp32_defaults.build_flags}
[core32solo1]
platform = espressif32 @ 3.3.1
platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.5/tasmota-arduinoespressif32-solo1-release_v3.3.5.tar.gz
platformio/toolchain-xtensa32 @ ~2.50200.0
platformio/tool-esptoolpy @ https://github.com/tasmota/esptool/releases/download/v3.2/esptool-v3.2.zip
platformio/tool-mklittlefs @ ~1.203.200522 platformio/tool-mklittlefs @ ~1.203.200522
build_unflags = ${esp32_defaults.build_unflags} build_unflags = ${esp32_defaults.build_unflags}
build_flags = ${esp32_defaults.build_flags} build_flags = ${esp32_defaults.build_flags}

View File

@ -1,11 +1,26 @@
; *** Tasmota32 development core version ESP32 IDF4.4 ; *** Tasmota32 development core version ESP32 IDF4.4
[env:tasmota32-dev] [env:tasmota32-dev]
extends = env:tasmota32idf4 extends = env:tasmota32idf4
platform_packages = ${core32.platform_packages} platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/516/framework-arduinoespressif32-release_v4.4-432c3c78c.tar.gz
framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/511/framework-arduinoespressif32-release_v4.4-432c3c78c.tar.gz platformio/tool-esptoolpy @ https://github.com/tasmota/esptool/releases/download/v3.2/esptool-v3.2.zip
platformio/tool-mklittlefs @ ~1.203.200522
build_flags = ${env:tasmota32idf4.build_flags} build_flags = ${env:tasmota32idf4.build_flags}
-D FIRMWARE_TASMOTA32 -D FIRMWARE_TASMOTA32
;*** Beta Tasmota version for ESP32-S2
;*** Example how to override the standard core with [tasmota32-dev] core
[env:tasmota32s2]
extends = env:tasmota32-dev
platform_packages = ${env:tasmota32-dev.platform_packages}
board = esp32s2
build_flags = ${env:tasmota32idf4.build_flags}
lib_extra_dirs = lib/libesp32
lib/libesp32_lvgl
lib/lib_basic
lib/lib_i2c
lib/lib_ssl
lib/lib_display
[env:tasmota-rangeextender] [env:tasmota-rangeextender]
build_flags = ${env.build_flags} build_flags = ${env.build_flags}
-D FIRMWARE_RANGE_EXTENDER -D FIRMWARE_RANGE_EXTENDER
@ -13,24 +28,6 @@ build_flags = ${env.build_flags}
-D USE_WIFI_RANGE_EXTENDER -D USE_WIFI_RANGE_EXTENDER
-D USE_WIFI_RANGE_EXTENDER_NAPT -D USE_WIFI_RANGE_EXTENDER_NAPT
; *** Beta Tasmota version for ESP32 IDF4.4.
[env:tasmota32idf4]
extends = env:tasmota32_base
platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master
platform_packages = ${core32.platform_packages}
framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.1rc1/framework-arduinoespressif32-release_IDF4.4.tar.gz
build_unflags = ${env:tasmota32_base.build_unflags}
-Wswitch-unreachable
-Wstringop-overflow
-Wincompatible-pointer-types
build_flags = ${env:tasmota32_base.build_flags}
-Wno-switch-unreachable
-Wno-stringop-overflow
; ***Uncomment next two lines to enable BLE
;-DUSE_BLE_ESP32
;-DUSE_MI_ESP32
;-DESP32_STAGE=true
[env:tasmota32-rangeextender] [env:tasmota32-rangeextender]
extends = env:tasmota32idf4 extends = env:tasmota32idf4
build_flags = ${env:tasmota32idf4.build_flags} build_flags = ${env:tasmota32idf4.build_flags}
@ -38,32 +35,6 @@ build_flags = ${env:tasmota32idf4.build_flags}
-D USE_WIFI_RANGE_EXTENDER -D USE_WIFI_RANGE_EXTENDER
-D USE_WIFI_RANGE_EXTENDER_NAPT -D USE_WIFI_RANGE_EXTENDER_NAPT
;*** Beta Tasmota version for ESP32-S2
[env:tasmota32s2]
extends = env:tasmota32_base
board = esp32s2
platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master
platform_packages = ${core32.platform_packages}
framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.1rc1/framework-arduinoespressif32-release_IDF4.4.tar.gz
build_unflags = ${env:tasmota32_base.build_unflags}
-Wswitch-unreachable
-Wstringop-overflow
-Wincompatible-pointer-types
build_flags = ${env:tasmota32_base.build_flags}
-Wno-switch-unreachable
-Wno-stringop-overflow
lib_extra_dirs = lib/libesp32
lib/libesp32_lvgl
lib/lib_basic
lib/lib_i2c
lib/lib_ssl
lib/lib_display
lib_ignore =
NimBLE-Arduino
TTGO TWatch Library
ESP32-HomeKit
Micro-RTSP
; *** Debug version used for PlatformIO Home Project Inspection ; *** Debug version used for PlatformIO Home Project Inspection
[env:tasmota-debug] [env:tasmota-debug]
build_type = debug build_type = debug
@ -93,8 +64,7 @@ build_flags = ${env:tasmota32_base.build_flags}
[env:tasmota32solo1-ocd] [env:tasmota32solo1-ocd]
;build_type = debug ;build_type = debug
extends = env:tasmota32_base extends = env:tasmota32_base
platform_packages = ${core32.platform_packages} platform_packages = ${core32solo1.platform_packages}
framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.5/tasmota-arduinoespressif32-solo1-release_v3.3.5.tar.gz
board = esp32_solo1_4M board = esp32_solo1_4M
debug_tool = esp-prog debug_tool = esp-prog
upload_protocol = esp-prog upload_protocol = esp-prog

View File

@ -33,6 +33,20 @@ lib_ignore =
; Disable next if you want to use ArduinoOTA in Tasmota32 (default disabled) ; Disable next if you want to use ArduinoOTA in Tasmota32 (default disabled)
ArduinoOTA ArduinoOTA
[env:tasmota32idf4]
extends = env:tasmota32_base
platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master
platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.1rc1/framework-arduinoespressif32-release_IDF4.4.tar.gz
platformio/tool-esptoolpy @ https://github.com/tasmota/esptool/releases/download/v3.2/esptool-v3.2.zip
platformio/tool-mklittlefs @ ~1.203.200522
build_unflags = ${env:tasmota32_base.build_unflags}
-Wswitch-unreachable
-Wstringop-overflow
-Wincompatible-pointer-types
-Wnonnull-compare
build_flags = ${env:tasmota32_base.build_flags}
-Wno-switch-unreachable
-Wno-stringop-overflow
[env:tasmota32] [env:tasmota32]
extends = env:tasmota32_base extends = env:tasmota32_base
@ -50,8 +64,7 @@ build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32
[env:tasmota32solo1] [env:tasmota32solo1]
extends = env:tasmota32_base extends = env:tasmota32_base
platform_packages = ${core32.platform_packages} platform_packages = ${core32solo1.platform_packages}
framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.5/tasmota-arduinoespressif32-solo1-release_v3.3.5.tar.gz
build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32 build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32
[env:tasmota32-webcam] [env:tasmota32-webcam]
@ -94,35 +107,29 @@ build_flags = ${env:tasmota32_base.build_flags} -DUSE_IR_REMOTE_FULL
lib_extra_dirs = lib/libesp32, lib/lib_basic lib_extra_dirs = lib/libesp32, lib/lib_basic
[env:tasmota32c3] [env:tasmota32c3]
extends = env:tasmota32_base extends = env:tasmota32idf4
board = esp32c3 board = esp32c3
platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master platform = ${env:tasmota32idf4.platform}
platform_packages = ${core32.platform_packages} platform_packages = ${env:tasmota32idf4.platform_packages}
framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.1rc1/framework-arduinoespressif32-release_IDF4.4.tar.gz build_unflags = ${env:tasmota32idf4.build_unflags}
build_unflags = ${env:tasmota32_base.build_unflags} -mtarget-align
-Wswitch-unreachable -DNDEBUG
-Wstringop-overflow build_flags = ${env:tasmota32idf4.build_flags}
-Wincompatible-pointer-types
-mtarget-align
-DNDEBUG
build_flags = ${env:tasmota32_base.build_flags}
-Wno-switch-unreachable
-Wno-stringop-overflow
; *** Comment next two lines to disable BLE ; *** Comment next two lines to disable BLE
; -DUSE_BLE_ESP32 ; -DUSE_BLE_ESP32
; -DUSE_MI_ESP32 ; -DUSE_MI_ESP32
;-DESP32_STAGE=true ;-DESP32_STAGE=true
lib_extra_dirs = lib/libesp32 lib_extra_dirs = lib/libesp32
lib/libesp32_div lib/libesp32_div
lib/libesp32_lvgl lib/libesp32_lvgl
lib/lib_basic lib/lib_basic
lib/lib_i2c lib/lib_i2c
lib/lib_ssl lib/lib_ssl
lib/lib_display lib/lib_display
lib_ignore = lib_ignore =
TTGO TWatch Library TTGO TWatch Library
ESP32-HomeKit ESP32-HomeKit
Micro-RTSP Micro-RTSP
[env:tasmota32-AF] [env:tasmota32-AF]
extends = env:tasmota32_base extends = env:tasmota32_base

View File

@ -3,7 +3,7 @@
-------------------------------------------------------------# -------------------------------------------------------------#
class AXP192_M5Stack_Core2 : AXP192 class AXP192_M5Stack_Core2 : AXP192
def init() def init()
super(self, AXP192).init() super(self).init()
if self.wire if self.wire
# Disable vbus hold limit # Disable vbus hold limit
@ -116,6 +116,20 @@ class AXP192_M5Stack_Core2 : AXP192
self.write8(0x12, self.read8(0x12) | 0x40) # set EXTEN to enable 5v boost self.write8(0x12, self.read8(0x12) | 0x40) # set EXTEN to enable 5v boost
end end
end end
# Dimmer in percentage
def set_displaydimmer(x)
var v = tasmota.scale_uint(x, 0, 100, 2500, 3300)
self.set_lcd_voltage(v)
end
# respond to display events
def display(cmd, idx, payload, raw)
if cmd == "dim" || cmd == "power"
self.set_displaydimmer(idx)
end
end
end end
axp = AXP192_M5Stack_Core2() axp = AXP192_M5Stack_Core2()

View File

@ -0,0 +1,284 @@
/********************************************************************
* Generated code, don't edit
*******************************************************************/
const be_constint_t lv_gpio_constants[] = {
{ "A4988_DIR", (int32_t) GPIO_A4988_DIR },
{ "A4988_ENA", (int32_t) GPIO_A4988_ENA },
{ "A4988_MS1", (int32_t) GPIO_A4988_MS1 },
{ "A4988_STP", (int32_t) GPIO_A4988_STP },
{ "ADC_BUTTON", (int32_t) GPIO_ADC_BUTTON },
{ "ADC_BUTTON_INV", (int32_t) GPIO_ADC_BUTTON_INV },
{ "ADC_CT_POWER", (int32_t) GPIO_ADC_CT_POWER },
{ "ADC_INPUT", (int32_t) GPIO_ADC_INPUT },
{ "ADC_JOY", (int32_t) GPIO_ADC_JOY },
{ "ADC_LIGHT", (int32_t) GPIO_ADC_LIGHT },
{ "ADC_PH", (int32_t) GPIO_ADC_PH },
{ "ADC_RANGE", (int32_t) GPIO_ADC_RANGE },
{ "ADC_TEMP", (int32_t) GPIO_ADC_TEMP },
{ "ADE7953_IRQ", (int32_t) GPIO_ADE7953_IRQ },
{ "ARIRFRCV", (int32_t) GPIO_ARIRFRCV },
{ "ARIRFSEL", (int32_t) GPIO_ARIRFSEL },
{ "AS3935", (int32_t) GPIO_AS3935 },
{ "AS608_RX", (int32_t) GPIO_AS608_RX },
{ "AS608_TX", (int32_t) GPIO_AS608_TX },
{ "AZ_RXD", (int32_t) GPIO_AZ_RXD },
{ "AZ_TXD", (int32_t) GPIO_AZ_TXD },
{ "BACKLIGHT", (int32_t) GPIO_BACKLIGHT },
{ "BL0939_RX", (int32_t) GPIO_BL0939_RX },
{ "BL0940_RX", (int32_t) GPIO_BL0940_RX },
{ "BL0942_RX", (int32_t) GPIO_BL0942_RX },
{ "BOILER_OT_RX", (int32_t) GPIO_BOILER_OT_RX },
{ "BOILER_OT_TX", (int32_t) GPIO_BOILER_OT_TX },
{ "BS814_CLK", (int32_t) GPIO_BS814_CLK },
{ "BS814_DAT", (int32_t) GPIO_BS814_DAT },
{ "BUZZER", (int32_t) GPIO_BUZZER },
{ "BUZZER_INV", (int32_t) GPIO_BUZZER_INV },
{ "CC1101_GDO0", (int32_t) GPIO_CC1101_GDO0 },
{ "CC1101_GDO2", (int32_t) GPIO_CC1101_GDO2 },
{ "CHANGE", CHANGE },
{ "CNTR1", (int32_t) GPIO_CNTR1 },
{ "CNTR1_NP", (int32_t) GPIO_CNTR1_NP },
{ "CSE7761_RX", (int32_t) GPIO_CSE7761_RX },
{ "CSE7761_TX", (int32_t) GPIO_CSE7761_TX },
{ "CSE7766_RX", (int32_t) GPIO_CSE7766_RX },
{ "CSE7766_TX", (int32_t) GPIO_CSE7766_TX },
{ "DAC", (int32_t) -1 },
{ "DCKI", (int32_t) GPIO_DCKI },
{ "DDS2382_RX", (int32_t) GPIO_DDS2382_RX },
{ "DDS2382_TX", (int32_t) GPIO_DDS2382_TX },
{ "DDSU666_RX", (int32_t) GPIO_DDSU666_RX },
{ "DDSU666_TX", (int32_t) GPIO_DDSU666_TX },
{ "DEEPSLEEP", (int32_t) GPIO_DEEPSLEEP },
{ "DHT11", (int32_t) GPIO_DHT11 },
{ "DHT11_OUT", (int32_t) GPIO_DHT11_OUT },
{ "DHT22", (int32_t) GPIO_DHT22 },
{ "DI", (int32_t) GPIO_DI },
{ "DSB", (int32_t) GPIO_DSB },
{ "DSB_OUT", (int32_t) GPIO_DSB_OUT },
{ "DYP_RX", (int32_t) GPIO_DYP_RX },
{ "ELECTRIQ_MOODL_TX", (int32_t) GPIO_ELECTRIQ_MOODL_TX },
{ "EPAPER29_CS", (int32_t) GPIO_EPAPER29_CS },
{ "EPAPER42_CS", (int32_t) GPIO_EPAPER42_CS },
{ "EPD_DATA", (int32_t) GPIO_EPD_DATA },
{ "ETH_PHY_MDC", (int32_t) GPIO_ETH_PHY_MDC },
{ "ETH_PHY_MDIO", (int32_t) GPIO_ETH_PHY_MDIO },
{ "ETH_PHY_POWER", (int32_t) GPIO_ETH_PHY_POWER },
{ "EXS_ENABLE", (int32_t) GPIO_EXS_ENABLE },
{ "FALLING", FALLING },
{ "FTC532", (int32_t) GPIO_FTC532 },
{ "GPS_RX", (int32_t) GPIO_GPS_RX },
{ "GPS_TX", (int32_t) GPIO_GPS_TX },
{ "HALLEFFECT", (int32_t) GPIO_HALLEFFECT },
{ "HEARTBEAT", (int32_t) GPIO_HEARTBEAT },
{ "HEARTBEAT_INV", (int32_t) GPIO_HEARTBEAT_INV },
{ "HIGH", HIGH },
{ "HJL_CF", (int32_t) GPIO_HJL_CF },
{ "HLW_CF", (int32_t) GPIO_HLW_CF },
{ "HM10_RX", (int32_t) GPIO_HM10_RX },
{ "HM10_TX", (int32_t) GPIO_HM10_TX },
{ "HM330X_SET", (int32_t) GPIO_HM330X_SET },
{ "HPMA_RX", (int32_t) GPIO_HPMA_RX },
{ "HPMA_TX", (int32_t) GPIO_HPMA_TX },
{ "HRE_CLOCK", (int32_t) GPIO_HRE_CLOCK },
{ "HRE_DATA", (int32_t) GPIO_HRE_DATA },
{ "HRG15_TX", (int32_t) GPIO_HRG15_TX },
{ "HRXL_RX", (int32_t) GPIO_HRXL_RX },
{ "HX711_DAT", (int32_t) GPIO_HX711_DAT },
{ "HX711_SCK", (int32_t) GPIO_HX711_SCK },
{ "I2C_SCL", (int32_t) GPIO_I2C_SCL },
{ "I2C_SDA", (int32_t) GPIO_I2C_SDA },
{ "I2S_IN_CLK", (int32_t) GPIO_I2S_IN_CLK },
{ "I2S_IN_DATA", (int32_t) GPIO_I2S_IN_DATA },
{ "I2S_IN_SLCT", (int32_t) GPIO_I2S_IN_SLCT },
{ "I2S_OUT_CLK", (int32_t) GPIO_I2S_OUT_CLK },
{ "I2S_OUT_DATA", (int32_t) GPIO_I2S_OUT_DATA },
{ "I2S_OUT_SLCT", (int32_t) GPIO_I2S_OUT_SLCT },
{ "IBEACON_RX", (int32_t) GPIO_IBEACON_RX },
{ "IBEACON_TX", (int32_t) GPIO_IBEACON_TX },
{ "IEM3000_RX", (int32_t) GPIO_IEM3000_RX },
{ "IEM3000_TX", (int32_t) GPIO_IEM3000_TX },
{ "ILI9341_CS", (int32_t) GPIO_ILI9341_CS },
{ "ILI9341_DC", (int32_t) GPIO_ILI9341_DC },
{ "ILI9488_CS", (int32_t) GPIO_ILI9488_CS },
{ "INPUT", (int32_t) GPIO_INPUT },
{ "INPUT_PULLDOWN", INPUT_PULLDOWN },
{ "INPUT_PULLUP", INPUT_PULLUP },
{ "INTERRUPT", (int32_t) GPIO_INTERRUPT },
{ "IRRECV", (int32_t) GPIO_IRRECV },
{ "IRSEND", (int32_t) GPIO_IRSEND },
{ "KEY1", (int32_t) GPIO_KEY1 },
{ "KEY1_INV", (int32_t) GPIO_KEY1_INV },
{ "KEY1_INV_NP", (int32_t) GPIO_KEY1_INV_NP },
{ "KEY1_INV_PD", (int32_t) GPIO_KEY1_INV_PD },
{ "KEY1_NP", (int32_t) GPIO_KEY1_NP },
{ "KEY1_PD", (int32_t) GPIO_KEY1_PD },
{ "KEY1_TC", (int32_t) GPIO_KEY1_TC },
{ "LE01MR_RX", (int32_t) GPIO_LE01MR_RX },
{ "LE01MR_TX", (int32_t) GPIO_LE01MR_TX },
{ "LED1", (int32_t) GPIO_LED1 },
{ "LED1_INV", (int32_t) GPIO_LED1_INV },
{ "LEDLNK", (int32_t) GPIO_LEDLNK },
{ "LEDLNK_INV", (int32_t) GPIO_LEDLNK_INV },
{ "LMT01", (int32_t) GPIO_LMT01 },
{ "LOW", LOW },
{ "MAX31855CLK", (int32_t) GPIO_MAX31855CLK },
{ "MAX31855CS", (int32_t) GPIO_MAX31855CS },
{ "MAX31855DO", (int32_t) GPIO_MAX31855DO },
{ "MAX7219CLK", (int32_t) GPIO_MAX7219CLK },
{ "MAX7219CS", (int32_t) GPIO_MAX7219CS },
{ "MAX7219DIN", (int32_t) GPIO_MAX7219DIN },
{ "MCP2515_CS", (int32_t) GPIO_MCP2515_CS },
{ "MCP39F5_RST", (int32_t) GPIO_MCP39F5_RST },
{ "MCP39F5_RX", (int32_t) GPIO_MCP39F5_RX },
{ "MCP39F5_TX", (int32_t) GPIO_MCP39F5_TX },
{ "MGC3130_RESET", (int32_t) GPIO_MGC3130_RESET },
{ "MGC3130_XFER", (int32_t) GPIO_MGC3130_XFER },
{ "MHZ_RXD", (int32_t) GPIO_MHZ_RXD },
{ "MHZ_TXD", (int32_t) GPIO_MHZ_TXD },
{ "MIEL_HVAC_RX", (int32_t) GPIO_MIEL_HVAC_RX },
{ "MIEL_HVAC_TX", (int32_t) GPIO_MIEL_HVAC_TX },
{ "MP3_DFR562", (int32_t) GPIO_MP3_DFR562 },
{ "NEOPOOL_RX", (int32_t) GPIO_NEOPOOL_RX },
{ "NEOPOOL_TX", (int32_t) GPIO_NEOPOOL_TX },
{ "NONE", (int32_t) GPIO_NONE },
{ "NRF24_CS", (int32_t) GPIO_NRF24_CS },
{ "NRF24_DC", (int32_t) GPIO_NRF24_DC },
{ "NRG_CF1", (int32_t) GPIO_NRG_CF1 },
{ "NRG_SEL", (int32_t) GPIO_NRG_SEL },
{ "NRG_SEL_INV", (int32_t) GPIO_NRG_SEL_INV },
{ "OLED_RESET", (int32_t) GPIO_OLED_RESET },
{ "OPEN_DRAIN", OPEN_DRAIN },
{ "OPTION_A", (int32_t) GPIO_OPTION_A },
{ "OUTPUT", OUTPUT },
{ "OUTPUT_HI", (int32_t) GPIO_OUTPUT_HI },
{ "OUTPUT_LO", (int32_t) GPIO_OUTPUT_LO },
{ "OUTPUT_OPEN_DRAIN", OUTPUT_OPEN_DRAIN },
{ "P9813_CLK", (int32_t) GPIO_P9813_CLK },
{ "P9813_DAT", (int32_t) GPIO_P9813_DAT },
{ "PMS5003_RX", (int32_t) GPIO_PMS5003_RX },
{ "PMS5003_TX", (int32_t) GPIO_PMS5003_TX },
{ "PN532_RXD", (int32_t) GPIO_PN532_RXD },
{ "PN532_TXD", (int32_t) GPIO_PN532_TXD },
{ "PROJECTOR_CTRL_RX", (int32_t) GPIO_PROJECTOR_CTRL_RX },
{ "PROJECTOR_CTRL_TX", (int32_t) GPIO_PROJECTOR_CTRL_TX },
{ "PULLDOWN", PULLDOWN },
{ "PULLUP", PULLUP },
{ "PWM1", (int32_t) GPIO_PWM1 },
{ "PWM1_INV", (int32_t) GPIO_PWM1_INV },
{ "PZEM004_RX", (int32_t) GPIO_PZEM004_RX },
{ "PZEM016_RX", (int32_t) GPIO_PZEM016_RX },
{ "PZEM017_RX", (int32_t) GPIO_PZEM017_RX },
{ "PZEM0XX_TX", (int32_t) GPIO_PZEM0XX_TX },
{ "RA8876_CS", (int32_t) GPIO_RA8876_CS },
{ "RC522_CS", (int32_t) GPIO_RC522_CS },
{ "RC522_RST", (int32_t) GPIO_RC522_RST },
{ "RDM6300_RX", (int32_t) GPIO_RDM6300_RX },
{ "REL1", (int32_t) GPIO_REL1 },
{ "REL1_INV", (int32_t) GPIO_REL1_INV },
{ "RFRECV", (int32_t) GPIO_RFRECV },
{ "RFSEND", (int32_t) GPIO_RFSEND },
{ "RF_SENSOR", (int32_t) GPIO_RF_SENSOR },
{ "RISING", RISING },
{ "ROT1A", (int32_t) GPIO_ROT1A },
{ "ROT1A_NP", (int32_t) GPIO_ROT1A_NP },
{ "ROT1B", (int32_t) GPIO_ROT1B },
{ "ROT1B_NP", (int32_t) GPIO_ROT1B_NP },
{ "RXD", (int32_t) GPIO_RXD },
{ "SAIR_RX", (int32_t) GPIO_SAIR_RX },
{ "SAIR_TX", (int32_t) GPIO_SAIR_TX },
{ "SBR_RX", (int32_t) GPIO_SBR_RX },
{ "SBR_TX", (int32_t) GPIO_SBR_TX },
{ "SDCARD_CS", (int32_t) GPIO_SDCARD_CS },
{ "SDM120_RX", (int32_t) GPIO_SDM120_RX },
{ "SDM120_TX", (int32_t) GPIO_SDM120_TX },
{ "SDM630_RX", (int32_t) GPIO_SDM630_RX },
{ "SDM630_TX", (int32_t) GPIO_SDM630_TX },
{ "SDM72_RX", (int32_t) GPIO_SDM72_RX },
{ "SDM72_TX", (int32_t) GPIO_SDM72_TX },
{ "SDS0X1_RX", (int32_t) GPIO_SDS0X1_RX },
{ "SDS0X1_TX", (int32_t) GPIO_SDS0X1_TX },
{ "SENSOR_END", (int32_t) GPIO_SENSOR_END },
{ "SHELLY_DIMMER_BOOT0", (int32_t) GPIO_SHELLY_DIMMER_BOOT0 },
{ "SHELLY_DIMMER_RST_INV", (int32_t) GPIO_SHELLY_DIMMER_RST_INV },
{ "SI7021", (int32_t) GPIO_SI7021 },
{ "SM16716_CLK", (int32_t) GPIO_SM16716_CLK },
{ "SM16716_DAT", (int32_t) GPIO_SM16716_DAT },
{ "SM16716_SEL", (int32_t) GPIO_SM16716_SEL },
{ "SM2135_CLK", (int32_t) GPIO_SM2135_CLK },
{ "SM2135_DAT", (int32_t) GPIO_SM2135_DAT },
{ "SOLAXX1_RX", (int32_t) GPIO_SOLAXX1_RX },
{ "SOLAXX1_TX", (int32_t) GPIO_SOLAXX1_TX },
{ "SPI_CLK", (int32_t) GPIO_SPI_CLK },
{ "SPI_CS", (int32_t) GPIO_SPI_CS },
{ "SPI_DC", (int32_t) GPIO_SPI_DC },
{ "SPI_MISO", (int32_t) GPIO_SPI_MISO },
{ "SPI_MOSI", (int32_t) GPIO_SPI_MOSI },
{ "SR04_ECHO", (int32_t) GPIO_SR04_ECHO },
{ "SR04_TRIG", (int32_t) GPIO_SR04_TRIG },
{ "SSD1331_CS", (int32_t) GPIO_SSD1331_CS },
{ "SSD1331_DC", (int32_t) GPIO_SSD1331_DC },
{ "SSD1351_CS", (int32_t) GPIO_SSD1351_CS },
{ "SSD1351_DC", (int32_t) GPIO_SSD1351_DC },
{ "SSPI_CS", (int32_t) GPIO_SSPI_CS },
{ "SSPI_DC", (int32_t) GPIO_SSPI_DC },
{ "SSPI_MAX31865_CS1", (int32_t) GPIO_SSPI_MAX31865_CS1 },
{ "SSPI_MISO", (int32_t) GPIO_SSPI_MISO },
{ "SSPI_MOSI", (int32_t) GPIO_SSPI_MOSI },
{ "SSPI_SCLK", (int32_t) GPIO_SSPI_SCLK },
{ "ST7789_CS", (int32_t) GPIO_ST7789_CS },
{ "ST7789_DC", (int32_t) GPIO_ST7789_DC },
{ "SWT1", (int32_t) GPIO_SWT1 },
{ "SWT1_NP", (int32_t) GPIO_SWT1_NP },
{ "SWT1_PD", (int32_t) GPIO_SWT1_PD },
{ "TASMOTACLIENT_RST", (int32_t) GPIO_TASMOTACLIENT_RST },
{ "TASMOTACLIENT_RST_INV", (int32_t) GPIO_TASMOTACLIENT_RST_INV },
{ "TASMOTACLIENT_RXD", (int32_t) GPIO_TASMOTACLIENT_RXD },
{ "TASMOTACLIENT_TXD", (int32_t) GPIO_TASMOTACLIENT_TXD },
{ "TCP_RX", (int32_t) GPIO_TCP_RX },
{ "TCP_TX", (int32_t) GPIO_TCP_TX },
{ "TELEINFO_ENABLE", (int32_t) GPIO_TELEINFO_ENABLE },
{ "TELEINFO_RX", (int32_t) GPIO_TELEINFO_RX },
{ "TFMINIPLUS_RX", (int32_t) GPIO_TFMINIPLUS_RX },
{ "TFMINIPLUS_TX", (int32_t) GPIO_TFMINIPLUS_TX },
{ "TM1637CLK", (int32_t) GPIO_TM1637CLK },
{ "TM1637DIO", (int32_t) GPIO_TM1637DIO },
{ "TM1638CLK", (int32_t) GPIO_TM1638CLK },
{ "TM1638DIO", (int32_t) GPIO_TM1638DIO },
{ "TM1638STB", (int32_t) GPIO_TM1638STB },
{ "TUYA_RX", (int32_t) GPIO_TUYA_RX },
{ "TUYA_TX", (int32_t) GPIO_TUYA_TX },
{ "TX2X_TXD_BLACK", (int32_t) GPIO_TX2X_TXD_BLACK },
{ "TXD", (int32_t) GPIO_TXD },
{ "VINDRIKTNING_RX", (int32_t) GPIO_VINDRIKTNING_RX },
{ "VL53L0X_XSHUT1", (int32_t) GPIO_VL53L0X_XSHUT1 },
{ "WE517_RX", (int32_t) GPIO_WE517_RX },
{ "WE517_TX", (int32_t) GPIO_WE517_TX },
{ "WEBCAM_DATA", (int32_t) GPIO_WEBCAM_DATA },
{ "WEBCAM_HREF", (int32_t) GPIO_WEBCAM_HREF },
{ "WEBCAM_HSD", (int32_t) GPIO_WEBCAM_HSD },
{ "WEBCAM_PCLK", (int32_t) GPIO_WEBCAM_PCLK },
{ "WEBCAM_PSCLK", (int32_t) GPIO_WEBCAM_PSCLK },
{ "WEBCAM_PSRCS", (int32_t) GPIO_WEBCAM_PSRCS },
{ "WEBCAM_PWDN", (int32_t) GPIO_WEBCAM_PWDN },
{ "WEBCAM_RESET", (int32_t) GPIO_WEBCAM_RESET },
{ "WEBCAM_SIOC", (int32_t) GPIO_WEBCAM_SIOC },
{ "WEBCAM_SIOD", (int32_t) GPIO_WEBCAM_SIOD },
{ "WEBCAM_VSYNC", (int32_t) GPIO_WEBCAM_VSYNC },
{ "WEBCAM_XCLK", (int32_t) GPIO_WEBCAM_XCLK },
{ "WIEGAND_D0", (int32_t) GPIO_WIEGAND_D0 },
{ "WIEGAND_D1", (int32_t) GPIO_WIEGAND_D1 },
{ "WINDMETER_SPEED", (int32_t) GPIO_WINDMETER_SPEED },
{ "WS2812", (int32_t) GPIO_WS2812 },
{ "XPT2046_CS", (int32_t) GPIO_XPT2046_CS },
{ "ZEROCROSS", (int32_t) GPIO_ZEROCROSS },
{ "ZIGBEE_RST", (int32_t) GPIO_ZIGBEE_RST },
{ "ZIGBEE_RX", (int32_t) GPIO_ZIGBEE_RX },
{ "ZIGBEE_TX", (int32_t) GPIO_ZIGBEE_TX },
};
const size_t lv_gpio_constants_size = sizeof(lv_gpio_constants)/sizeof(lv_gpio_constants[0]);
/********************************************************************/

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele. * Use online command Prefix to translate cmnd, stat and tele.
* *
* Updated until v9.5.0.9 * Updated until v10.0.0.1
\*********************************************************************/ \*********************************************************************/
//#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Herzschlag"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele. * Use online command Prefix to translate cmnd, stat and tele.
* *
* Updated until v9.5.0.9 - Last update 16.10.2021 * Updated until v9.5.0.9 - Last update 03.11.2021
\*********************************************************************/ \*********************************************************************/
#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 - RX" #define D_SENSOR_HRG15_RX "HRG15 - RX"
#define D_SENSOR_HRG15_TX "HRG15 - TX" #define D_SENSOR_HRG15_TX "HRG15 - TX"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Battito cardiaco"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "А" #define D_UNIT_AMPERE "А"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "А" #define D_UNIT_AMPERE "А"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx" #define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units // Units
#define D_UNIT_AMPERE "安培" #define D_UNIT_AMPERE "安培"

View File

@ -348,7 +348,6 @@
#define ZIGBEE_DISTINCT_TOPICS false // [SetOption89] Enable unique device topic based on Zigbee device ShortAddr #define ZIGBEE_DISTINCT_TOPICS false // [SetOption89] Enable unique device topic based on Zigbee device ShortAddr
#define ZIGBEE_RMV_ZBRECEIVED false // [SetOption100] Remove ZbReceived form JSON message #define ZIGBEE_RMV_ZBRECEIVED false // [SetOption100] Remove ZbReceived form JSON message
#define ZIGBEE_INDEX_EP false // [SetOption101] Add the source endpoint as suffix to attributes, ex `Power3` instead of `Power` if sent from endpoint 3 #define ZIGBEE_INDEX_EP false // [SetOption101] Add the source endpoint as suffix to attributes, ex `Power3` instead of `Power` if sent from endpoint 3
#define WATCHDOG_TASK_SECONDS 10 // [ESP32 only] Task Watchdog Timer (TWDT) time in seconds - detecting Tasmota running for a prolonged period of time without yielding with `esp_task_wdt_reset()`
/*********************************************************************************************\ /*********************************************************************************************\
* END OF SECTION 1 * END OF SECTION 1
@ -854,8 +853,8 @@
#define IR_RCV_WHILE_SENDING 0 // Turns on receiver while sending messages, i.e. receive your own. This is unreliable and can cause IR timing issues #define IR_RCV_WHILE_SENDING 0 // Turns on receiver while sending messages, i.e. receive your own. This is unreliable and can cause IR timing issues
// -- Zigbee interface ---------------------------- // -- Zigbee interface ----------------------------
//#define USE_ZIGBEE // Enable serial communication with Zigbee CC2530 flashed with ZNP (+49k code, +3k mem) //#define USE_ZIGBEE // Enable serial communication with Zigbee CC2530/CC2652 flashed with ZNP or EFR32 flashed with EZSP (+49k code, +3k mem)
#define USE_ZIGBEE_ZNP // Enable ZNP protocol, needed for CC2530 based devices #define USE_ZIGBEE_ZNP // Enable ZNP protocol, needed for CC2530/CC2652 based devices
// #define USE_ZIGBEE_EZSP // Enable EZSP protocol, needed for EFR32 EmberZNet based devices, like Sonoff Zigbee bridge // #define USE_ZIGBEE_EZSP // Enable EZSP protocol, needed for EFR32 EmberZNet based devices, like Sonoff Zigbee bridge
// Note: USE_ZIGBEE_ZNP and USE_ZIGBEE_EZSP are mutually incompatible, you must select exactly one // Note: USE_ZIGBEE_ZNP and USE_ZIGBEE_EZSP are mutually incompatible, you must select exactly one
// #define USE_ZIGBEE_EEPROM // Use the EEPROM from the Sonoff ZBBridge to save Zigbee configuration and data // #define USE_ZIGBEE_EEPROM // Use the EEPROM from the Sonoff ZBBridge to save Zigbee configuration and data
@ -1053,6 +1052,15 @@
//#define DEBUG_TASMOTA_SENSOR // Enable sensor debug messages //#define DEBUG_TASMOTA_SENSOR // Enable sensor debug messages
//#define USE_DEBUG_DRIVER // Use xdrv_99_debug.ino providing commands CpuChk, CfgXor, CfgDump, CfgPeek and CfgPoke //#define USE_DEBUG_DRIVER // Use xdrv_99_debug.ino providing commands CpuChk, CfgXor, CfgDump, CfgPeek and CfgPoke
/*********************************************************************************************\
* Profiling features
\*********************************************************************************************/
//#define USE_PROFILING // Enable profiling
//#define PROFILE_THRESHOLD 70 // Minimum duration in milliseconds to start logging
//#define USE_PROFILE_DRIVER // Enable driver profiling
//#define USE_PROFILE_FUNCTION // Enable driver function profiling
/*********************************************************************************************\ /*********************************************************************************************\
* Optional firmware configurations * Optional firmware configurations
* Select none or just one for optional features and sensors as configured in tasmota_configurations.h * Select none or just one for optional features and sensors as configured in tasmota_configurations.h

View File

@ -733,9 +733,10 @@ typedef struct {
uint8_t shd_leading_edge; // F5B uint8_t shd_leading_edge; // F5B
uint16_t shd_warmup_brightness; // F5C uint16_t shd_warmup_brightness; // F5C
uint8_t shd_warmup_time; // F5E uint8_t shd_warmup_time; // F5E
uint8_t light_step_pixels; // F5F uint8_t tcp_config; // F5F
uint8_t light_step_pixels; // F60
uint8_t free_f5f[60]; // F60 - Decrement if adding new Setting variables just above and below uint8_t free_f60[5f]; // F61 - Decrement if adding new Setting variables just above and below
// Only 32 bit boundary variables below // Only 32 bit boundary variables below

View File

@ -66,35 +66,6 @@ void OsWatchTicker(void)
} }
} }
#ifdef ESP32
#include "esp_task_wdt.h"
void TWDTInit(void) {
// enable Task Watchdog Timer
esp_task_wdt_init(WATCHDOG_TASK_SECONDS, true);
// if (ret != ESP_OK) { AddLog(LOG_LEVEL_ERROR, "HDW: cannot init Task WDT %i", ret); }
esp_task_wdt_add(nullptr);
// if (ret != ESP_OK) { AddLog(LOG_LEVEL_ERROR, "HDW: cannot start Task WDT %i", ret); }
}
void TWDTRestore(void) {
// restore default WDT values
esp_task_wdt_init(WATCHDOG_TASK_SECONDS, false);
}
void TWDTLoop(void) {
esp_task_wdt_reset();
}
// custom handler
extern "C" {
void __attribute__((weak)) esp_task_wdt_isr_user_handler(void)
{
Serial.printf(">>>>>----------\n");
}
}
#endif
void OsWatchInit(void) void OsWatchInit(void)
{ {
oswatch_blocked_loop = RtcSettings.oswatch_blocked_loop; oswatch_blocked_loop = RtcSettings.oswatch_blocked_loop;
@ -1818,7 +1789,7 @@ uint32_t JsonParsePath(JsonParserObject *jobj, const char *spath, char delim, fl
* Serial * Serial
\*********************************************************************************************/ \*********************************************************************************************/
String GetSerialConfig(void) { String GetSerialConfig(uint8_t serial_config) {
// Settings->serial_config layout // Settings->serial_config layout
// b000000xx - 5, 6, 7 or 8 data bits // b000000xx - 5, 6, 7 or 8 data bits
// b00000x00 - 1 or 2 stop bits // b00000x00 - 1 or 2 stop bits
@ -1827,26 +1798,63 @@ String GetSerialConfig(void) {
const static char kParity[] PROGMEM = "NEOI"; const static char kParity[] PROGMEM = "NEOI";
char config[4]; char config[4];
config[0] = '5' + (Settings->serial_config & 0x3); config[0] = '5' + (serial_config & 0x3);
config[1] = pgm_read_byte(&kParity[(Settings->serial_config >> 3) & 0x3]); config[1] = pgm_read_byte(&kParity[(serial_config >> 3) & 0x3]);
config[2] = '1' + ((Settings->serial_config >> 2) & 0x1); config[2] = '1' + ((serial_config >> 2) & 0x1);
config[3] = '\0'; config[3] = '\0';
return String(config); return String(config);
} }
#if defined(ESP32) && CONFIG_IDF_TARGET_ESP32C3 String GetSerialConfig(void) {
// temporary workaround, see https://github.com/espressif/arduino-esp32/issues/5287 return GetSerialConfig(Settings->serial_config);
#include <driver/uart.h>
uint32_t GetSerialBaudrate(void) {
uint32_t br;
uart_get_baudrate(0, &br);
return (br / 300) * 300; // Fix ESP32 strange results like 115201
} }
#else
int8_t ParseSerialConfig(const char *pstr)
{
if (strlen(pstr) < 3)
return -1;
int8_t serial_config = (uint8_t)atoi(pstr);
if (serial_config < 5 || serial_config > 8)
return -1;
serial_config -= 5;
char parity = (pstr[1] & 0xdf);
if ('E' == parity) {
serial_config += 0x08; // Even parity
}
else if ('O' == parity) {
serial_config += 0x10; // Odd parity
}
else if ('N' != parity) {
return -1;
}
if ('2' == pstr[2]) {
serial_config += 0x04; // Stop bits 2
}
else if ('1' != pstr[2]) {
return -1;
}
return serial_config;
}
// workaround disabled 05.11.2021 solved with https://github.com/espressif/arduino-esp32/pull/5549
//#if defined(ESP32) && CONFIG_IDF_TARGET_ESP32C3
// temporary workaround, see https://github.com/espressif/arduino-esp32/issues/5287
//#include <driver/uart.h>
//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) { uint32_t GetSerialBaudrate(void) {
return (Serial.baudRate() / 300) * 300; // Fix ESP32 strange results like 115201 return (Serial.baudRate() / 300) * 300; // Fix ESP32 strange results like 115201
} }
#endif //#endif
#ifdef ESP8266 #ifdef ESP8266
void SetSerialSwap(void) { void SetSerialSwap(void) {

View File

@ -93,6 +93,10 @@ void ResponseCmndFloat(float value, uint32_t decimals) {
Response_P(PSTR("{\"%s\":%*_f}"), XdrvMailbox.command, decimals, &value); // Return float value without quotes Response_P(PSTR("{\"%s\":%*_f}"), XdrvMailbox.command, decimals, &value); // Return float value without quotes
} }
void ResponseCmndIdxFloat(float value, uint32_t decimals) {
Response_P(PSTR("{\"%s%d\":%*_f}"), XdrvMailbox.command, XdrvMailbox.index, decimals, &value); // Return float value without quotes
}
void ResponseCmndIdxNumber(int value) { void ResponseCmndIdxNumber(int value) {
Response_P(S_JSON_COMMAND_INDEX_NVALUE, XdrvMailbox.command, XdrvMailbox.index, value); Response_P(S_JSON_COMMAND_INDEX_NVALUE, XdrvMailbox.command, XdrvMailbox.index, value);
} }
@ -1521,28 +1525,8 @@ void CmndSerialConfig(void)
} }
} }
else if ((XdrvMailbox.payload >= 5) && (XdrvMailbox.payload <= 8)) { else if ((XdrvMailbox.payload >= 5) && (XdrvMailbox.payload <= 8)) {
uint8_t serial_config = XdrvMailbox.payload -5; // Data bits 5, 6, 7 or 8, No parity and 1 stop bit int8_t serial_config = ParseSerialConfig(XdrvMailbox.data);
if (serial_config >= 0) {
bool valid = true;
char parity = (XdrvMailbox.data[1] & 0xdf);
if ('E' == parity) {
serial_config += 0x08; // Even parity
}
else if ('O' == parity) {
serial_config += 0x10; // Odd parity
}
else if ('N' != parity) {
valid = false;
}
if ('2' == XdrvMailbox.data[2]) {
serial_config += 0x04; // Stop bits 2
}
else if ('1' != XdrvMailbox.data[2]) {
valid = false;
}
if (valid) {
SetSerialConfig(serial_config); SetSerialConfig(serial_config);
} }
} }

View File

@ -17,16 +17,18 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
//#define USE_PROFILING
#define PROFILE_THRESHOLD 70 // Minimum duration in milliseconds to start logging
//#define USE_PROFILE_DRIVER
#define USE_PROFILE_FUNCTION
/*********************************************************************************************\ /*********************************************************************************************\
* Profiling features * Profiling features
\*********************************************************************************************/ \*********************************************************************************************/
// Moved to my_user_config.h (and user_config_override.h)
//#define USE_PROFILING // Enable profiling
//#define PROFILE_THRESHOLD 70 // Minimum duration in milliseconds to start logging
//#define USE_PROFILE_DRIVER // Enable driver profiling
//#define USE_PROFILE_FUNCTION // Enable driver function profiling
/*
// Moved to tasmota_globals.h fixing compile warnings
#ifndef USE_PROFILING #ifndef USE_PROFILING
#undef USE_PROFILE_DRIVER #undef USE_PROFILE_DRIVER
#undef USE_PROFILE_FUNCTION #undef USE_PROFILE_FUNCTION
@ -43,13 +45,17 @@
#else #else
#define PROFILE_FUNCTION(DRIVER, INDEX, FUNCTION, START) #define PROFILE_FUNCTION(DRIVER, INDEX, FUNCTION, START)
#endif // USE_PROFILE_DRIVER #endif // USE_PROFILE_DRIVER
*/
/*********************************************************************************************\ /*********************************************************************************************\
* Profiling services * Profiling services
\*********************************************************************************************/ \*********************************************************************************************/
#ifdef USE_PROFILING #ifdef USE_PROFILING
#ifndef PROFILE_THRESHOLD
#define PROFILE_THRESHOLD 70 // Minimum duration in milliseconds to start logging
#endif
// Below needs to be inline with enum XsnsFunctions // Below needs to be inline with enum XsnsFunctions
const char kXSnsFunctions[] PROGMEM = "SETTINGS_OVERRIDE|PIN_STATE|MODULE_INIT|PRE_INIT|INIT|" const char kXSnsFunctions[] PROGMEM = "SETTINGS_OVERRIDE|PIN_STATE|MODULE_INIT|PRE_INIT|INIT|"
"LOOP|EVERY_50_MSECOND|EVERY_100_MSECOND|EVERY_200_MSECOND|EVERY_250_MSECOND|EVERY_SECOND|" "LOOP|EVERY_50_MSECOND|EVERY_100_MSECOND|EVERY_200_MSECOND|EVERY_250_MSECOND|EVERY_SECOND|"

View File

@ -377,6 +377,12 @@ void RtcSecond(void)
static uint32_t last_sync = 0; static uint32_t last_sync = 0;
static bool mutex = false; static bool mutex = false;
if ((TasmotaGlobal.init_state >= INIT_GPIOS) && PinUsed(GPIO_HEARTBEAT)) {
digitalWrite(Pin(GPIO_HEARTBEAT), ~TasmotaGlobal.heartbeat_inverted &1);
delayMicroseconds(50);
digitalWrite(Pin(GPIO_HEARTBEAT), TasmotaGlobal.heartbeat_inverted);
}
if (mutex) { return; } if (mutex) { return; }
if (Rtc.time_synced) { if (Rtc.time_synced) {

View File

@ -1766,6 +1766,10 @@ void GpioInit(void)
TasmotaGlobal.ledlnk_inverted = 1; TasmotaGlobal.ledlnk_inverted = 1;
mpin -= (AGPIO(GPIO_LEDLNK_INV) - AGPIO(GPIO_LEDLNK)); mpin -= (AGPIO(GPIO_LEDLNK_INV) - AGPIO(GPIO_LEDLNK));
} }
else if (mpin == AGPIO(GPIO_HEARTBEAT_INV)) {
TasmotaGlobal.heartbeat_inverted = 1;
mpin -= (AGPIO(GPIO_HEARTBEAT_INV) - AGPIO(GPIO_HEARTBEAT));
}
else if ((mpin >= AGPIO(GPIO_PWM1_INV)) && (mpin < (AGPIO(GPIO_PWM1_INV) + MAX_PWMS))) { else if ((mpin >= AGPIO(GPIO_PWM1_INV)) && (mpin < (AGPIO(GPIO_PWM1_INV) + MAX_PWMS))) {
bitSet(TasmotaGlobal.pwm_inverted, mpin - AGPIO(GPIO_PWM1_INV)); bitSet(TasmotaGlobal.pwm_inverted, mpin - AGPIO(GPIO_PWM1_INV));
mpin -= (AGPIO(GPIO_PWM1_INV) - AGPIO(GPIO_PWM1)); mpin -= (AGPIO(GPIO_PWM1_INV) - AGPIO(GPIO_PWM1));
@ -1891,6 +1895,11 @@ void GpioInit(void)
#endif // ESP8266 #endif // ESP8266
} }
if (PinUsed(GPIO_HEARTBEAT)) {
pinMode(Pin(GPIO_HEARTBEAT), OUTPUT);
digitalWrite(Pin(GPIO_HEARTBEAT), TasmotaGlobal.heartbeat_inverted);
}
// Digital input // Digital input
for (uint32_t i = 0; i < MAX_SWITCHES; i++) { for (uint32_t i = 0; i < MAX_SWITCHES; i++) {
if (PinUsed(GPIO_INPUT, i)) { if (PinUsed(GPIO_INPUT, i)) {

View File

@ -73,7 +73,6 @@ const uint8_t MAX_XDRV_DRIVERS = 96; // Max number of allowed driver driv
const uint8_t MAX_XSNS_DRIVERS = 128; // Max number of allowed sensor drivers const uint8_t MAX_XSNS_DRIVERS = 128; // Max number of allowed sensor drivers
const uint8_t MAX_I2C_DRIVERS = 96; // Max number of allowed i2c drivers const uint8_t MAX_I2C_DRIVERS = 96; // Max number of allowed i2c drivers
const uint8_t MAX_SHUTTERS = 4; // Max number of shutters const uint8_t MAX_SHUTTERS = 4; // Max number of shutters
const uint8_t MAX_SHUTTER_RELAYS = 8; // Max number of shutter relays
const uint8_t MAX_SHUTTER_KEYS = 4; // Max number of shutter keys or buttons const uint8_t MAX_SHUTTER_KEYS = 4; // Max number of shutter keys or buttons
const uint8_t MAX_PCF8574 = 4; // Max number of PCF8574 devices const uint8_t MAX_PCF8574 = 4; // Max number of PCF8574 devices
const uint8_t MAX_RULE_SETS = 3; // Max number of rule sets of size 512 characters const uint8_t MAX_RULE_SETS = 3; // Max number of rule sets of size 512 characters
@ -278,6 +277,8 @@ enum GetDateAndTimeOptions { DT_LOCAL, DT_UTC, DT_LOCALNOTZ, DT_DST, DT_STD, DT_
enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE}; enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE};
enum InitStates {INIT_NONE, INIT_GPIOS, INIT_DONE};
enum WifiConfigOptions {WIFI_RESTART, EX_WIFI_SMARTCONFIG, WIFI_MANAGER, EX_WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT, WIFI_SERIAL, WIFI_MANAGER_RESET_ONLY, MAX_WIFI_OPTION}; enum WifiConfigOptions {WIFI_RESTART, EX_WIFI_SMARTCONFIG, WIFI_MANAGER, EX_WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT, WIFI_SERIAL, WIFI_MANAGER_RESET_ONLY, MAX_WIFI_OPTION};
enum SwitchModeOptions {TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON, PUSHBUTTON_INV, PUSHBUTTONHOLD, PUSHBUTTONHOLD_INV, PUSHBUTTON_TOGGLE, TOGGLEMULTI, enum SwitchModeOptions {TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON, PUSHBUTTON_INV, PUSHBUTTONHOLD, PUSHBUTTONHOLD_INV, PUSHBUTTON_TOGGLE, TOGGLEMULTI,

View File

@ -38,6 +38,7 @@
#include <StreamString.h> // Webserver, Updater #include <StreamString.h> // Webserver, Updater
#include <ext_printf.h> #include <ext_printf.h>
#include <SBuffer.hpp> #include <SBuffer.hpp>
#include <LList.h>
#include <JsonParser.h> #include <JsonParser.h>
#include <JsonGenerator.h> #include <JsonGenerator.h>
#ifdef USE_ARDUINO_OTA #ifdef USE_ARDUINO_OTA
@ -148,6 +149,8 @@ struct TasmotaGlobal_t {
bool enable_logging; // Enable logging bool enable_logging; // Enable logging
StateBitfield global_state; // Global states (currently Wifi and Mqtt) (8 bits) StateBitfield global_state; // Global states (currently Wifi and Mqtt) (8 bits)
uint8_t init_state; // Tasmota init state
uint8_t heartbeat_inverted; // Heartbeat pulse inverted flag
uint8_t spi_enabled; // SPI configured uint8_t spi_enabled; // SPI configured
uint8_t soft_spi_enabled; // Software SPI configured uint8_t soft_spi_enabled; // Software SPI configured
uint8_t blinks; // Number of LED blinks uint8_t blinks; // Number of LED blinks
@ -317,9 +320,6 @@ void setup(void) {
SettingsLoad(); SettingsLoad();
SettingsDelta(); SettingsDelta();
#ifdef ESP32
// TWDTInit(); // Start Task WDT for ESP32 - FreeRTOS only
#endif
OsWatchInit(); OsWatchInit();
TasmotaGlobal.seriallog_level = Settings->seriallog_level; TasmotaGlobal.seriallog_level = Settings->seriallog_level;
@ -430,6 +430,8 @@ void setup(void) {
XdrvCall(FUNC_PRE_INIT); XdrvCall(FUNC_PRE_INIT);
XsnsCall(FUNC_PRE_INIT); XsnsCall(FUNC_PRE_INIT);
TasmotaGlobal.init_state = INIT_GPIOS;
SetPowerOnState(); SetPowerOnState();
WifiConnect(); WifiConnect();
@ -512,9 +514,6 @@ void Scheduler(void) {
#endif // USE_DISCOVERY #endif // USE_DISCOVERY
#endif // ESP8266 #endif // ESP8266
#ifdef ESP32
// TWDTLoop();
#endif
OsWatchLoop(); OsWatchLoop();
ButtonLoop(); ButtonLoop();
SwitchLoop(); SwitchLoop();

View File

@ -495,6 +495,23 @@ bool first_device_group_is_local = true;
#define SHOW_FREE_MEM(WHERE) #define SHOW_FREE_MEM(WHERE)
#endif #endif
#ifndef USE_PROFILING
#undef USE_PROFILE_DRIVER
#undef USE_PROFILE_FUNCTION
#endif
#ifdef USE_PROFILE_DRIVER
#define PROFILE_DRIVER(DRIVER, FUNCTION, START) AddLogDriver(DRIVER, FUNCTION, START)
#else
#define PROFILE_DRIVER(DRIVER, FUNCTION, START)
#endif // USE_PROFILE_DRIVER
#ifdef USE_PROFILE_FUNCTION
#define PROFILE_FUNCTION(DRIVER, INDEX, FUNCTION, START) AddLogFunction(DRIVER, INDEX, FUNCTION, START)
#else
#define PROFILE_FUNCTION(DRIVER, INDEX, FUNCTION, START)
#endif // USE_PROFILE_DRIVER
/*********************************************************************************************\ /*********************************************************************************************\
* Macro for SetOption synonyms * Macro for SetOption synonyms
* *

View File

@ -175,6 +175,7 @@ enum UserSelectablePins {
GPIO_BL0939_RX, // BL0939 Serial interface (Dual R3 v2) GPIO_BL0939_RX, // BL0939 Serial interface (Dual R3 v2)
GPIO_BL0942_RX, // BL0942 Serial interface GPIO_BL0942_RX, // BL0942 Serial interface
GPIO_HM330X_SET, // HM330X SET pin (sleep when low) GPIO_HM330X_SET, // HM330X SET pin (sleep when low)
GPIO_HEARTBEAT, GPIO_HEARTBEAT_INV,
GPIO_SENSOR_END }; GPIO_SENSOR_END };
enum ProgramSelectablePins { enum ProgramSelectablePins {
@ -369,7 +370,8 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_VINDRIKTNING_RX "|" D_SENSOR_VINDRIKTNING_RX "|"
D_SENSOR_BL0939_RX "|" D_SENSOR_BL0939_RX "|"
D_SENSOR_BL0942_RX "|" D_SENSOR_BL0942_RX "|"
D_SENSOR_HM330X_SET D_SENSOR_HM330X_SET "|"
D_SENSOR_HEARTBEAT "|" D_SENSOR_HEARTBEAT "_i|"
; ;
const char kSensorNamesFixed[] PROGMEM = const char kSensorNamesFixed[] PROGMEM =
@ -428,6 +430,8 @@ const uint16_t kGpioNiceList[] PROGMEM = {
#endif #endif
AGPIO(GPIO_OUTPUT_HI), // Fixed output high AGPIO(GPIO_OUTPUT_HI), // Fixed output high
AGPIO(GPIO_OUTPUT_LO), // Fixed output low AGPIO(GPIO_OUTPUT_LO), // Fixed output low
AGPIO(GPIO_HEARTBEAT), // Every second pulsed high
AGPIO(GPIO_HEARTBEAT_INV), // Every second pulsed low
#ifdef USE_FTC532 #ifdef USE_FTC532
AGPIO(GPIO_FTC532), // FTC532 touch input AGPIO(GPIO_FTC532), // FTC532 touch input
#endif #endif

View File

@ -2794,9 +2794,6 @@ void HandleUploadLoop(void) {
Web.upload_error = 2; // Not enough space Web.upload_error = 2; // Not enough space
return; return;
} }
#ifdef ESP32
// TWDTLoop();
#endif
if (upload.totalSize && !(upload.totalSize % 102400)) { if (upload.totalSize && !(upload.totalSize % 102400)) {
AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_UPLOAD "Progress %d kB"), upload.totalSize / 1024); AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_UPLOAD "Progress %d kB"), upload.totalSize / 1024);
} }

View File

@ -1941,6 +1941,7 @@ void ExecuteCommandBlock(const char * commands, int len)
//Going to insert the command into backlog //Going to insert the command into backlog
String sCurrentCommand = oneCommand; String sCurrentCommand = oneCommand;
sCurrentCommand.trim(); sCurrentCommand.trim();
/*
if (sCurrentCommand.length() > 0 if (sCurrentCommand.length() > 0
&& backlog.size() < MAX_BACKLOG && !TasmotaGlobal.backlog_mutex) && backlog.size() < MAX_BACKLOG && !TasmotaGlobal.backlog_mutex)
{ {
@ -1950,6 +1951,12 @@ void ExecuteCommandBlock(const char * commands, int len)
TasmotaGlobal.backlog_mutex = false; TasmotaGlobal.backlog_mutex = false;
insertPosition++; insertPosition++;
} }
*/
if ((sCurrentCommand.length() > 0) && (backlog.size() < MAX_BACKLOG)) {
//Insert into backlog
backlog.add(insertPosition, sCurrentCommand);
insertPosition++;
}
} }
return; return;
} }

View File

@ -106,12 +106,11 @@ void TasDiscoverMessage(void) {
#ifdef USE_SHUTTER #ifdef USE_SHUTTER
if (Settings->flag3.shutter_mode) { if (Settings->flag3.shutter_mode) {
for (uint32_t k = 0; k < MAX_SHUTTERS; k++) { for (uint32_t k = 0; k < MAX_SHUTTERS; k++) {
if (0 == Settings->shutter_startrelay[k]) { if (Settings->shutter_startrelay[k] > 0) {
break; Shutter[Settings->shutter_startrelay[k]-1] = Shutter[Settings->shutter_startrelay[k]] = 1;
} else { } else {
if (Settings->shutter_startrelay[k] > 0 && Settings->shutter_startrelay[k] <= MAX_SHUTTER_RELAYS) { // terminate loop at first INVALID Settings->shutter_startrelay[i].
Shutter[Settings->shutter_startrelay[k]-1] = Shutter[Settings->shutter_startrelay[k]] = 1; break;
}
} }
} }
} }

View File

@ -1,18 +1,14 @@
/* /*
xdrv_12_home_assistant.ino - home assistant support for Tasmota xdrv_12_home_assistant.ino - home assistant support for Tasmota
Copyright (C) 2021 Erik Montnemery, Federico Leoni and Theo Arends Copyright (C) 2021 Erik Montnemery, Federico Leoni and Theo Arends
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
@ -259,12 +255,11 @@ void HassDiscoverMessage(void) {
#ifdef USE_SHUTTER #ifdef USE_SHUTTER
if (Settings->flag3.shutter_mode) { if (Settings->flag3.shutter_mode) {
for (uint32_t k = 0; k < MAX_SHUTTERS; k++) { for (uint32_t k = 0; k < MAX_SHUTTERS; k++) {
if (0 == Settings->shutter_startrelay[k]) { if (Settings->shutter_startrelay[k] > 0) {
break; Shutter[Settings->shutter_startrelay[k]-1] = Shutter[Settings->shutter_startrelay[k]] = 1;
} else { } else {
if (Settings->shutter_startrelay[k] > 0 && Settings->shutter_startrelay[k] <= MAX_SHUTTER_RELAYS) { // terminate loop at first INVALID Settings->shutter_startrelay[i].
Shutter[Settings->shutter_startrelay[k]-1] = Shutter[Settings->shutter_startrelay[k]] = 1; break;
}
} }
} }
} }
@ -441,7 +436,7 @@ void HAssAnnounceRelayLight(void)
uint8_t TuyaRel = 0; uint8_t TuyaRel = 0;
uint8_t TuyaRelInv = 0; uint8_t TuyaRelInv = 0;
uint8_t TuyaDim = 0; uint8_t TuyaDim = 0;
uint8_t shutter_mask = 0; power_t shutter_mask = 0;
#ifdef ESP8266 #ifdef ESP8266
if (PWM_DIMMER == TasmotaGlobal.module_type ) { PwmMod = true; } // if (PWM_DIMMER == TasmotaGlobal.module_type ) { PwmMod = true; } //
@ -463,9 +458,12 @@ void HAssAnnounceRelayLight(void)
#ifdef USE_SHUTTER #ifdef USE_SHUTTER
if (Settings->flag3.shutter_mode) { if (Settings->flag3.shutter_mode) {
for (uint32_t i = 0; i < MAX_SHUTTERS; i++) { for (uint32_t i = 0; i < MAX_SHUTTERS; i++) {
if (Settings->shutter_startrelay[i] > 0 && Settings->shutter_startrelay[i] <= MAX_SHUTTER_RELAYS) { if (Settings->shutter_startrelay[i] > 0 ) {
bitSet(shutter_mask, Settings->shutter_startrelay[i] -1); bitSet(shutter_mask, Settings->shutter_startrelay[i] -1);
bitSet(shutter_mask, Settings->shutter_startrelay[i]); bitSet(shutter_mask, Settings->shutter_startrelay[i]);
} else {
// terminate loop at first INVALID Settings->shutter_startrelay[i].
break;
} }
} }
} }
@ -1003,7 +1001,7 @@ void HAssAnnounceShutters(void)
snprintf_P(unique_id, sizeof(unique_id), PSTR("%06X_SHT_%d"), ESP_getChipId(), i + 1); snprintf_P(unique_id, sizeof(unique_id), PSTR("%06X_SHT_%d"), ESP_getChipId(), i + 1);
snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/cover/%s/config"), unique_id); snprintf_P(stopic, sizeof(stopic), PSTR(HOME_ASSISTANT_DISCOVERY_PREFIX "/cover/%s/config"), unique_id);
if (Settings->flag.hass_discovery && Settings->flag3.shutter_mode && Settings->shutter_startrelay[i] > 0 && Settings->shutter_startrelay[i] <= MAX_SHUTTER_RELAYS) { if (Settings->flag.hass_discovery && Settings->flag3.shutter_mode && Settings->shutter_startrelay[i] > 0) {
ShowTopic = 0; // Show the new generated topic ShowTopic = 0; // Show the new generated topic
if (i > MAX_FRIENDLYNAMES) { if (i > MAX_FRIENDLYNAMES) {
snprintf_P(stemp1, sizeof(stemp1), PSTR("%s Shutter %d"), SettingsText(SET_DEVICENAME), i + 1); snprintf_P(stemp1, sizeof(stemp1), PSTR("%s Shutter %d"), SettingsText(SET_DEVICENAME), i + 1);
@ -1025,6 +1023,9 @@ void HAssAnnounceShutters(void)
TryResponseAppend_P(HASS_DISCOVER_DEVICE_INFO_SHORT, unique_id, ESP_getChipId()); TryResponseAppend_P(HASS_DISCOVER_DEVICE_INFO_SHORT, unique_id, ESP_getChipId());
TryResponseAppend_P(PSTR("}")); TryResponseAppend_P(PSTR("}"));
} else {
// terminate loop at first INVALID Settings->shutter_startrelay[i].
break;
} }
TasmotaGlobal.masterlog_level = ShowTopic; TasmotaGlobal.masterlog_level = ShowTopic;

View File

@ -1861,6 +1861,10 @@ void DisplaySetPower(void)
XdspCall(FUNC_DISPLAY_POWER); XdspCall(FUNC_DISPLAY_POWER);
} else { } else {
renderer->DisplayOnff(disp_power); renderer->DisplayOnff(disp_power);
#ifdef USE_BERRY
// still call Berry virtual display in case it is not managed entirely by renderer
Xdsp18(FUNC_DISPLAY_POWER);
#endif // USE_BERRY
} }
} }
} }
@ -1961,6 +1965,10 @@ void ApplyDisplayDimmer(void) {
} }
if (renderer) { if (renderer) {
renderer->dim8(dimmer8, dimmer8_gamma); // provide 8 bits and gamma corrected dimmer in 8 bits renderer->dim8(dimmer8, dimmer8_gamma); // provide 8 bits and gamma corrected dimmer in 8 bits
#ifdef USE_BERRY
// still call Berry virtual display in case it is not managed entirely by renderer
Xdsp18(FUNC_DISPLAY_DIM);
#endif // USE_BERRY
} else { } else {
XdspCall(FUNC_DISPLAY_DIM); XdspCall(FUNC_DISPLAY_DIM);
} }

View File

@ -95,6 +95,8 @@ protected:
uint8_t _reserved; // power state if the type supports it uint8_t _reserved; // power state if the type supports it
}; };
Z_Data z_data_unk; // dummy object to mark that data is unknown
Z_Data_Type Z_Data::CharToDataType(char c) { Z_Data_Type Z_Data::CharToDataType(char c) {
if (c) { if (c) {
if (c == '_') { if (c == '_') {
@ -676,7 +678,7 @@ const M & Z_Data_Set::find(uint8_t ep) const {
// Output: if reference is null, instantiate object and add it at the end of the list // Output: if reference is null, instantiate object and add it at the end of the list
template <class M> template <class M>
M & Z_Data_Set::addIfNull(M & cur, uint8_t ep) { M & Z_Data_Set::addIfNull(M & cur, uint8_t ep) {
if (nullptr == &cur) { if (&z_data_unk == &cur) {
LList_elt<M> * elt = new LList_elt<M>(); LList_elt<M> * elt = new LList_elt<M>();
elt->val()._endpoint = ep; elt->val()._endpoint = ep;
this->addToLast((LList_elt<Z_Data>*)elt); this->addToLast((LList_elt<Z_Data>*)elt);
@ -697,7 +699,7 @@ const Z_Data & Z_Data_Set::find(Z_Data_Type type, uint8_t ep) const {
} }
} }
} }
return *(Z_Data*)nullptr; return z_data_unk; // mark as unknown
} }
/*********************************************************************************************\ /*********************************************************************************************\

View File

@ -796,7 +796,7 @@ String Z_Devices::dumpCoordinator(void) const {
String Z_Devices::dumpDevice(uint32_t dump_mode, const Z_Device & device) const { String Z_Devices::dumpDevice(uint32_t dump_mode, const Z_Device & device) const {
JsonGeneratorArray json_arr; JsonGeneratorArray json_arr;
if (&device == nullptr) { if (&device == &device_unk) {
if (dump_mode < 2) { if (dump_mode < 2) {
// dump light mode for all devices // dump light mode for all devices
for (const auto & device2 : _devices) { for (const auto & device2 : _devices) {

View File

@ -152,21 +152,22 @@ void ZigbeeHueGroups(String * lights) {
} }
void ZigbeeSendHue(uint16_t shortaddr, uint16_t cluster, uint8_t cmd, const SBuffer & s) { void ZigbeeSendHue(uint16_t shortaddr, uint16_t cluster, uint8_t cmd, const SBuffer & s) {
ZCLMessage zcl(&s ? s.len() : 0); ZCLMessage zcl(s.len());
zcl.shortaddr = shortaddr; zcl.shortaddr = shortaddr;
zcl.cluster = cluster; zcl.cluster = cluster;
zcl.cmd = cmd; zcl.cmd = cmd;
zcl.clusterSpecific = true; zcl.clusterSpecific = true;
zcl.needResponse = true; zcl.needResponse = true;
zcl.direct = false; // discover route zcl.direct = false; // discover route
if (&s) { zcl.buf.replace(s); } zcl.buf.replace(s);
zigbeeZCLSendCmd(zcl); zigbeeZCLSendCmd(zcl);
} }
// Send commands // Send commands
// Power On/Off // Power On/Off
void ZigbeeHuePower(uint16_t shortaddr, bool power) { void ZigbeeHuePower(uint16_t shortaddr, bool power) {
ZigbeeSendHue(shortaddr, 0x0006, power ? 1 : 0, *(SBuffer*)nullptr); SBuffer s(0);
ZigbeeSendHue(shortaddr, 0x0006, power ? 1 : 0, s);
zigbee_devices.getShortAddr(shortaddr).setPower(power, 0); zigbee_devices.getShortAddr(shortaddr).setPower(power, 0);
} }

View File

@ -281,7 +281,6 @@ void ZigbeeInputLoop(void) {
// Initialize internal structures // Initialize internal structures
void ZigbeeInitSerial(void) void ZigbeeInitSerial(void)
{ {
// AddLog(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem1 = %d"), ESP_getFreeHeap());
zigbee.active = false; zigbee.active = false;
if (PinUsed(GPIO_ZIGBEE_RX) && PinUsed(GPIO_ZIGBEE_TX)) { if (PinUsed(GPIO_ZIGBEE_RX) && PinUsed(GPIO_ZIGBEE_TX)) {
AddLog(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "GPIOs Rx:%d Tx:%d"), Pin(GPIO_ZIGBEE_RX), Pin(GPIO_ZIGBEE_TX)); AddLog(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "GPIOs Rx:%d Tx:%d"), Pin(GPIO_ZIGBEE_RX), Pin(GPIO_ZIGBEE_TX));
@ -293,9 +292,7 @@ void ZigbeeInitSerial(void)
uint32_t aligned_buffer = ((uint32_t)TasmotaGlobal.serial_in_buffer + 3) & ~3; uint32_t aligned_buffer = ((uint32_t)TasmotaGlobal.serial_in_buffer + 3) & ~3;
zigbee_buffer = new PreAllocatedSBuffer(sizeof(TasmotaGlobal.serial_in_buffer) - 3, (char*) aligned_buffer); zigbee_buffer = new PreAllocatedSBuffer(sizeof(TasmotaGlobal.serial_in_buffer) - 3, (char*) aligned_buffer);
} else { } else {
// AddLog(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem2 = %d"), ESP_getFreeHeap());
zigbee_buffer = new SBuffer(ZIGBEE_BUFFER_SIZE); zigbee_buffer = new SBuffer(ZIGBEE_BUFFER_SIZE);
// AddLog(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem3 = %d"), ESP_getFreeHeap());
} }
if (PinUsed(GPIO_ZIGBEE_RST)) { if (PinUsed(GPIO_ZIGBEE_RST)) {
@ -312,7 +309,6 @@ void ZigbeeInitSerial(void)
zigbee.state_machine = true; // start the state machine zigbee.state_machine = true; // start the state machine
ZigbeeSerial->flush(); ZigbeeSerial->flush();
} }
// AddLog(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem9 = %d"), ESP_getFreeHeap());
} }
#ifdef USE_ZIGBEE_ZNP #ifdef USE_ZIGBEE_ZNP

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