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
*.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-zigbee
- tasmota32
- tasmota32-webcam
- tasmota32-bluetooth
- tasmota32-core2
- tasmota32-display

View File

@ -7,7 +7,6 @@ image:
vscode:
extensions:
- eamodio.gitlens
- Atishay-Jain.All-Autocomplete
- CoenraadS.bracket-pair-colorizer
- 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]
### Added
- Berry add module ``python_compat`` to be closer to Python syntax (#13428)
- 1 second heartbeat GPIO
- Command ``TcpConfig`` for TCPBridge protocol configuration (#13565)
### Changed
- File editor no-wrap (#13427)
- 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
- Initial reset RTC memory based variables like EnergyToday and EnergyTotal
- ESP32 Telegram compile error (#13435)
- SML compile error (#13441)
- 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]

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
### 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)
- Command ``TcpConfig`` for TCPBridge protocol configuration [#13565](https://github.com/arendst/Tasmota/issues/13565)
### Breaking Changed
### Changed
- 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
- 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
- Initial reset RTC memory based variables like EnergyToday and EnergyTotal
- ESP32 Telegram compile error [#13435](https://github.com/arendst/Tasmota/issues/13435)
- 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)
- 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
@ -17,6 +17,11 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __LLIST__
#define __LLIST__
#include <cstddef>
/*********************************************************************************************\
*
* private class for Linked List element
@ -206,3 +211,5 @@ T & LList<T>::addToLast(LList_elt<T> * elt) {
elt->_next = nullptr;
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
// 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_OTHER_CODE = 0x0000; // not used
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_LEN = 10;
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 BACK_FROM_UNI_CODE = 0xFE00;
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_LEN = 9;
static const uint16_t TAB_CODE = 0x2400;
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_LEN = 8;
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 BIN_CODE_TASMOTA = 0x8000;
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
@ -467,9 +446,9 @@ void Unishox::decodeRepeat(void) {
uint32_t dict_len = readCount() + NICE_LEN;
uint32_t dist = readCount() + NICE_LEN - 1;
if (ol + dict_len <= len_out) {
memcpy(out + ol, out + ol - dist, dict_len);
ol += dict_len;
}
memcpy(out + ol, out + ol - dist, 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) {
@ -485,10 +464,10 @@ int32_t Unishox::unishox_decompress(const char *p_in, size_t p_len, char *p_out,
dstate = SHX_SET1;
is_all_upper = 0;
out[ol] = 0;
if (out) out[ol] = 0;
// while ((byte_no << 3) + bit_no - 8 < len) {
while (!in_eof) {
if (ol >= len_out) {
if (out && ol >= len_out) {
break;
}
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 (is_upper) {
out[ol++] = 255 - readCount(); // binary
if (out) out[ol] = 255 - readCount(); // binary
ol++;
} else {
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) {
// was Unicode, will do Binary instead
out[ol++] = 255 - readCount(); // binary
if (out) out[ol] = 255 - readCount(); // binary
ol++;
continue;
}
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
if (h == SHX_SET1B) {
if (8 == v) { // was LF or RPT, now only LF
out[ol++] = '\n';
if (out) out[ol] = '\n';
ol++;
continue;
}
if (9 == v) { // was CRLF, now RPT
uint32_t count = readCount() + 4;
if (ol + count >= len_out) {
if (out && ol + count >= len_out) {
return -1; // overflow
}
char rpt_c = out[ol - 1];
while (count--)
out[ol++] = rpt_c;
if (out) {
char rpt_c = out[ol - 1];
while (count--)
out[ol++] = rpt_c;
} else {
ol += count;
}
continue;
}
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);
out[ol++] = c;
if (out) out[ol] = c;
ol++;
}
if (ol > len_out) {
if (out && ol > len_out) {
return -1; // overflow
} else {
return ol;

View File

@ -197,6 +197,9 @@ void directWriteHigh(IO_REG_TYPE pin)
static inline __attribute__((always_inline))
void directModeInput(IO_REG_TYPE pin)
{
#if CONFIG_IDF_TARGET_ESP32C3
GPIO.enable_w1tc.val = ((uint32_t)1 << (pin));
#else
if ( digitalPinIsValid(pin) )
{
#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);
}
#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);
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);
}
#endif
#endif
#if CONFIG_IDF_TARGET_ESP32C3
GPIO.enable_w1tc.val = ((uint32_t)1 << (pin - 32));
#else // plain ESP32
if ( pin < 32 )
GPIO.enable_w1tc = ((uint32_t)1 << pin);
else
GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32));
#endif
uint32_t pinFunction((uint32_t)2 << FUN_DRV_S); // what are the drivers?
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;
}
#endif
}
static inline __attribute__((always_inline))
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 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);
}
#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);
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);
}
#endif
#endif
#if CONFIG_IDF_TARGET_ESP32C3
GPIO.enable_w1ts.val = ((uint32_t)1 << (pin - 32));
#else // plain ESP32
if ( pin < 32 )
GPIO.enable_w1ts = ((uint32_t)1 << pin);
else // already validated to pins <= 33
GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32));
#endif
uint32_t pinFunction((uint32_t)2 << FUN_DRV_S); // what are the drivers?
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;
}
#endif
}
#define DIRECT_READ(base, pin) directRead(pin)

View File

@ -20,8 +20,8 @@ be_local_closure(init, /* name */
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
(be_nested_const_str("init", 380752755, 4)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_init),
((bstring*) &be_const_str_input),
( &(const binstruction[ 1]) { /* code */
0x80000000, // 0000 RET 0
})
@ -47,7 +47,7 @@ be_local_closure(get_tasmota, /* name */
/* K0 */ be_nested_string("tasmota", 424643812, 7),
}),
(be_nested_const_str("get_tasmota", 334356779, 11)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 2]) { /* code */
0xB8060000, // 0000 GETNGBL R1 K0
0x80040200, // 0001 RET 1 R1
@ -83,7 +83,7 @@ be_local_closure(add_cmd, /* name */
0, /* has constants */
NULL, /* no const */
(be_nested_const_str("<lambda>", 607256038, 8)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 8]) { /* code */
0x68100000, // 0000 GETUPV R4 U0
0x68140001, // 0001 GETUPV R5 U1
@ -102,7 +102,7 @@ be_local_closure(add_cmd, /* name */
/* K1 */ be_nested_string("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 */
0xB80E0000, // 0000 GETNGBL R3 K0
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),
/* K3 */ be_nested_string("_ptr", 306235816, 4),
}),
(be_nested_const_str("init", 380752755, 4)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_init),
((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0xB80A0400, // 0001 GETNGBL R2 K2
@ -86,7 +86,7 @@ be_local_closure(read, /* name */
/* K1 */ be_nested_string("tomap", 612167626, 5),
}),
(be_nested_const_str("<anonymous>", 1160973142, 11)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 4]) { /* code */
0xB8020000, // 0000 GETNGBL R0 K0
0x8C000101, // 0001 GETMET R0 R0 K1
@ -114,7 +114,7 @@ be_local_closure(member, /* name */
/* K0 */ be_nested_string("_energy", 535372070, 7),
}),
(be_nested_const_str("member", 719708611, 6)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 3]) { /* code */
0xB8060000, // 0000 GETNGBL R1 K0
0x88040200, // 0001 GETMBR R1 R1 R0
@ -142,7 +142,7 @@ be_local_closure(setmember, /* name */
/* K0 */ be_nested_string("_energy", 535372070, 7),
}),
(be_nested_const_str("setmember", 1432909441, 9)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 3]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0
0x90080001, // 0001 SETMBR R2 R0 R1

View File

@ -9,6 +9,7 @@
// Tasmota specific
extern int gp_member(bvm *vm);
extern int gp_pin_mode(bvm *vm);
extern int gp_digital_write(bvm *vm);
extern int gp_digital_read(bvm *vm);
@ -19,275 +20,7 @@ extern int gp_pin(bvm *vm);
/* @const_object_info_begin
module gpio (scope: global) {
LOW, int(0)
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)
member, func(gp_member)
pin_mode, func(gp_pin_mode)
digital_write, func(gp_digital_write)

View File

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

View File

@ -34,7 +34,7 @@ be_local_closure(read32, /* name */
/* K6 */ be_const_int(3),
}),
(be_nested_const_str("read32", 1741276240, 6)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[20]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1
@ -82,7 +82,7 @@ be_local_closure(write8, /* name */
/* K3 */ be_const_int(1),
}),
(be_nested_const_str("write8", -1160975764, 6)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 8]) { /* code */
0x880C0100, // 0000 GETMBR R3 R0 K0
0x8C0C0701, // 0001 GETMET R3 R3 K1
@ -120,7 +120,7 @@ be_local_closure(read12, /* name */
/* K5 */ be_const_int(1),
}),
(be_nested_const_str("read12", -3890326, 6)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[12]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1
@ -160,7 +160,7 @@ be_local_closure(write_bit, /* name */
/* K3 */ be_nested_string("read8", -1492179129, 5),
}),
(be_nested_const_str("write_bit", -1633976860, 9)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[26]) { /* code */
0x14100500, // 0000 LT R4 R2 K0
0x74120002, // 0001 JMPT R4 #0005
@ -217,7 +217,7 @@ be_local_closure(read24, /* name */
/* K6 */ be_const_int(2),
}),
(be_nested_const_str("read24", 1808533811, 6)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[16]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1
@ -261,7 +261,7 @@ be_local_closure(read8, /* name */
/* K3 */ be_const_int(1),
}),
(be_nested_const_str("read8", -1492179129, 5)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 7]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1
@ -301,8 +301,8 @@ be_local_closure(init, /* name */
/* K8 */ be_nested_string("detected on bus", 1432002650, 15),
/* K9 */ be_nested_string("bus", 1607822841, 3),
}),
(be_nested_const_str("init", 380752755, 4)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_init),
((bstring*) &be_const_str_input),
( &(const binstruction[44]) { /* code */
0x8C100100, // 0000 GETMET R4 R0 K0
0x7C100200, // 0001 CALL R4 1
@ -376,7 +376,7 @@ be_local_closure(read13, /* name */
/* K5 */ be_const_int(1),
}),
(be_nested_const_str("read13", 12887293, 6)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[12]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
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),
}),
(be_nested_const_str("set_time", 900236405, 8)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[27]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0
0x88140101, // 0001 GETMBR R5 R0 K1
@ -93,7 +93,7 @@ be_local_closure(every_second, /* name */
/* K8 */ be_nested_string("sec", -1155074638, 3),
}),
(be_nested_const_str("every_second", 2075451465, 12)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[17]) { /* code */
0xB8060000, // 0000 GETNGBL R1 K0
0x8C040301, // 0001 GETMET R1 R1 K1
@ -155,8 +155,8 @@ be_local_closure(init, /* name */
/* K20 */ be_nested_string("tasmota", 424643812, 7),
/* K21 */ be_nested_string("add_driver", 1654458371, 10),
}),
(be_nested_const_str("init", 380752755, 4)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_init),
((bstring*) &be_const_str_input),
( &(const binstruction[82]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
@ -265,7 +265,7 @@ be_local_closure(del, /* name */
/* K2 */ be_nested_string("remove_driver", 1030243768, 13),
}),
(be_nested_const_str("del", -816214454, 3)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[10]) { /* code */
0x60040003, // 0000 GETGBL R1 G3
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),
}),
(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 */
0x88080100, // 0000 GETMBR R2 R0 K0
0x4C0C0000, // 0001 LDNIL R3
@ -68,7 +68,7 @@ be_local_closure(widget_event_impl, /* name */
/* K8 */ be_nested_string("widget_event", 1951408186, 12),
}),
(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 */
0xA40E0000, // 0000 IMPORT R3 K0
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),
}),
(be_nested_const_str("lvgl_event_dispatch", 2104396622, 19)),
(be_nested_const_str("input", -103256197, 5)),
( &(const binstruction[18]) { /* code */
((bstring*) &be_const_str_input),
( &(const binstruction[20]) { /* code */
0xA40A0000, // 0000 IMPORT R2 K0
0xB80E0200, // 0001 GETNGBL R3 K1
0x8C0C0702, // 0002 GETMET R3 R3 K2
@ -138,17 +138,19 @@ be_local_closure(lvgl_event_dispatch, /* name */
0x5C1C0200, // 0004 MOVE R7 R1
0x7C140400, // 0005 CALL R5 2
0x7C0C0400, // 0006 CALL R3 2
0x88100704, // 0007 GETMBR R4 R3 K4
0x88140105, // 0008 GETMBR R5 R0 K5
0x94140A04, // 0009 GETIDX R5 R5 R4
0x8C180106, // 000A GETMET R6 R0 K6
0x5C200800, // 000B MOVE R8 R4
0x7C180400, // 000C CALL R6 2
0x5C1C0A00, // 000D MOVE R7 R5
0x5C200C00, // 000E MOVE R8 R6
0x5C240600, // 000F MOVE R9 R3
0x7C1C0400, // 0010 CALL R7 2
0x80000000, // 0011 RET 0
0x60100009, // 0007 GETGBL R4 G9
0x88140704, // 0008 GETMBR R5 R3 K4
0x7C100200, // 0009 CALL R4 1
0x88140105, // 000A GETMBR R5 R0 K5
0x94140A04, // 000B GETIDX R5 R5 R4
0x8C180106, // 000C GETMET R6 R0 K6
0x5C200800, // 000D MOVE R8 R4
0x7C180400, // 000E CALL R6 2
0x5C1C0A00, // 000F MOVE R7 R5
0x5C200C00, // 0010 MOVE R8 R6
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),
}),
(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 */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
@ -226,7 +228,7 @@ be_local_closure(register_obj, /* name */
/* K1 */ be_nested_string("_p", 1594591802, 2),
}),
(be_nested_const_str("register_obj", -312352526, 12)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[13]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x4C0C0000, // 0001 LDNIL R3
@ -274,7 +276,7 @@ be_local_closure(gen_cb, /* name */
/* K0 */ be_nested_string("lvgl_event_dispatch", 2104396622, 19),
}),
(be_nested_const_str("<lambda>", 607256038, 8)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 5]) { /* code */
0x68040000, // 0000 GETUPV R1 U0
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),
}),
(be_nested_const_str("gen_cb", -1049739745, 6)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[41]) { /* code */
0x1C140300, // 0000 EQ R5 R1 K0
0x78160018, // 0001 JMPF R5 #001B
@ -364,7 +366,7 @@ be_local_closure(deregister_obj, /* name */
/* K2 */ be_nested_string("cb_event_closure", -466699971, 16),
}),
(be_nested_const_str("deregister_obj", -385000303, 14)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[17]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x4C0C0000, // 0001 LDNIL R3
@ -416,7 +418,7 @@ be_local_closure(widget_cb, /* name */
/* K0 */ be_nested_string("widget_ctor_impl", 194252479, 16),
}),
(be_nested_const_str("<lambda>", 607256038, 8)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */
0x68080000, // 0000 GETUPV R2 U0
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),
}),
(be_nested_const_str("<lambda>", 607256038, 8)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */
0x68080000, // 0000 GETUPV R2 U0
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),
}),
(be_nested_const_str("<lambda>", 607256038, 8)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */
0x68080000, // 0000 GETUPV R2 U0
0x8C080500, // 0001 GETMET R2 R2 K0
@ -496,7 +498,7 @@ be_local_closure(widget_cb, /* name */
/* K14 */ be_nested_string("event_cb", -1166269279, 8),
}),
(be_nested_const_str("widget_cb", -1531384241, 9)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[56]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x4C080000, // 0001 LDNIL R2
@ -577,7 +579,7 @@ be_local_closure(_anonymous_, /* name */
/* K0 */ be_nested_string("LVG: call to unsupported callback", 504176819, 33),
}),
(be_nested_const_str("_anonymous_", 1957281476, 11)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 4]) { /* code */
0x60000001, // 0000 GETGBL R0 G1
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),
}),
(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 */
0xA40E0000, // 0000 IMPORT R3 K0
0x6010000F, // 0001 GETGBL R4 G15
@ -751,7 +753,7 @@ be_local_closure(widget_ctor_impl, /* name */
/* K8 */ be_nested_string("widget_constructor", -1751181362, 18),
}),
(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 */
0xA40E0000, // 0000 IMPORT R3 K0
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_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_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_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^" },

View File

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

View File

@ -26,7 +26,7 @@ be_local_closure(set_percentage, /* name */
/* K2 */ be_nested_string("invalidate", -1645232368, 10),
}),
(be_nested_const_str("set_percentage", -1342944572, 14)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[18]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x540E0013, // 0001 LDINT R3 20
@ -77,8 +77,8 @@ be_local_closure(init, /* name */
/* K8 */ be_nested_string("line_dsc", -200476318, 8),
/* K9 */ be_nested_string("draw_line_dsc", -74291093, 13),
}),
(be_nested_const_str("init", 380752755, 4)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_init),
((bstring*) &be_const_str_input),
( &(const binstruction[24]) { /* code */
0xB80A0000, // 0000 GETNGBL R2 K0
0x8C080501, // 0001 GETMET R2 R2 K1
@ -135,7 +135,7 @@ be_local_closure(widget_event, /* name */
/* K0 */ be_const_int(1),
}),
(be_nested_const_str("atleast1", 1956331672, 8)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 6]) { /* code */
0x28040100, // 0000 GE R1 R0 K0
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),
}),
(be_nested_const_str("widget_event", 1951408186, 12)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[138]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0
0x8C0C0701, // 0001 GETMET R3 R3 K1
@ -350,7 +350,7 @@ be_local_closure(get_percentage, /* name */
/* K0 */ be_nested_string("percentage", -1756136011, 10),
}),
(be_nested_const_str("get_percentage", -1414483304, 14)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[ 2]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
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),
/* K17 */ be_const_int(1),
}),
(be_nested_const_str("init", 380752755, 4)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_init),
((bstring*) &be_const_str_input),
( &(const binstruction[67]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0

View File

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

View File

@ -30,7 +30,7 @@ be_local_closure(every_second, /* name */
/* K6 */ be_const_int(0),
}),
(be_nested_const_str("every_second", 2075451465, 12)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[23]) { /* code */
0xB8060000, // 0000 GETNGBL R1 K0
0x8C040301, // 0001 GETMET R1 R1 K1
@ -81,8 +81,8 @@ be_local_closure(init, /* name */
/* K3 */ be_nested_string("set_percentage", -1342944572, 14),
/* K4 */ be_const_int(0),
}),
(be_nested_const_str("init", 380752755, 4)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_init),
((bstring*) &be_const_str_input),
( &(const binstruction[14]) { /* code */
0x60080003, // 0000 GETGBL R2 G3
0x5C0C0000, // 0001 MOVE R3 R0
@ -123,7 +123,7 @@ be_local_closure(del, /* name */
/* K2 */ be_nested_string("remove_driver", 1030243768, 13),
}),
(be_nested_const_str("del", -816214454, 3)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[10]) { /* code */
0x60040003, // 0000 GETGBL R1 G3
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(flash);
be_extern_native_module(path);
be_extern_native_module(unishox);
#ifdef USE_LVGL
be_extern_native_module(lv);
#endif // USE_LVGL
@ -89,6 +90,10 @@ BERRY_LOCAL const bntvmodule* const be_module_table[] = {
&be_native_module(light),
#endif
#ifdef USE_UNISHOX_COMPRESSION
&be_native_module(unishox),
#endif // USE_UNISHOX_COMPRESSION
#ifdef USE_LVGL
&be_native_module(lv),
#endif // USE_LVGL

View File

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

View File

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

View File

@ -27,7 +27,7 @@ be_local_closure(tostring, /* name */
/* K5 */ be_nested_string("id", 926444256, 2),
}),
(be_nested_const_str("tostring", -1995258651, 8)),
(be_nested_const_str("Tasmota.be", 825809411, 10)),
((bstring*) &be_const_str_input),
( &(const binstruction[19]) { /* code */
0xA4060000, // 0000 IMPORT R1 K0
0x8C080301, // 0001 GETMET R2 R1 K1
@ -72,8 +72,8 @@ be_local_closure(init, /* name */
/* K1 */ be_nested_string("f", -485742695, 1),
/* K2 */ be_nested_string("id", 926444256, 2),
}),
(be_nested_const_str("init", 380752755, 4)),
(be_nested_const_str("Tasmota.be", 825809411, 10)),
((bstring*) &be_const_str_init),
((bstring*) &be_const_str_input),
( &(const binstruction[ 4]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
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_validread(bvm *vm);
extern int b_wire_detect(bvm *vm);
extern int b_wire_enabled(bvm *vm);
/********************************************************************
** Solidified function: write_bytes
@ -43,7 +44,7 @@ be_local_closure(write_bytes, /* name */
/* K2 */ be_nested_string("_end_transmission", -1057486896, 17),
}),
(be_nested_const_str("write_bytes", 1227543792, 11)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[12]) { /* code */
0x8C100100, // 0000 GETMET R4 R0 K0
0x5C180200, // 0001 MOVE R6 R1
@ -85,7 +86,7 @@ be_local_closure(read_bytes, /* name */
/* K5 */ be_nested_string("_read", 346717030, 5),
}),
(be_nested_const_str("read_bytes", -718234123, 10)),
(be_nested_const_str("input", -103256197, 5)),
((bstring*) &be_const_str_input),
( &(const binstruction[24]) { /* code */
0x8C100100, // 0000 GETMET R4 R0 K0
0x5C180200, // 0001 MOVE R6 R1
@ -140,6 +141,7 @@ class be_class_tasmota_wire (scope: global, name: Wire) {
write, func(b_wire_validwrite)
read, func(b_wire_validread)
detect, func(b_wire_detect)
enabled, func(b_wire_enabled)
read_bytes, closure(read_bytes_closure)
write_bytes, closure(write_bytes_closure)

View File

@ -38,6 +38,20 @@ class Tasmota
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``
# looks for any char in c, and return the position of the first char
# or -1 if not found
@ -98,10 +112,10 @@ class Tasmota
# Rules
def add_rule(pat,f)
if !self._rules
self._rules={}
self._rules=[]
end
if type(f) == 'function'
self._rules[pat] = f
self._rules.push(self.kv(pat, f))
else
raise 'value_error', 'the second argument is not a function'
end
@ -109,7 +123,14 @@ class Tasmota
def remove_rule(pat)
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
@ -170,10 +191,11 @@ class Tasmota
end
# try all rule handlers
if self._rules
try
ret = self._rules.reduce( /k,v,r-> self.try_rule(ev,k,v) || r, nil, false)
except "stop_iteration"
# silence stop_iteration which means that the map was resized during iteration
var i = 0
while i < size(self._rules)
var kv = self._rules[i]
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
return ret
@ -193,10 +215,12 @@ class Tasmota
end
# insert tele prefix
ev = { "Tele": ev }
try
ret = self._rules.reduce( /k,v,r-> self.try_rule(ev,k,v) || r, nil, false)
except "stop_iteration"
# silence stop_iteration which means that the map was resized during iteration
var i = 0
while i < size(self._rules)
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
return ret
end
@ -285,8 +309,8 @@ class Tasmota
def wire_scan(addr,idx)
# skip if the I2C index is disabled
if idx != nil && !self.i2c_enabled(idx) return nil end
if self.wire1.detect(addr) return self.wire1 end
if self.wire2.detect(addr) return self.wire2 end
if self.wire1.enabled() && self.wire1.detect(addr) return self.wire1 end
if self.wire2.enabled() && self.wire2.detect(addr) return self.wire2 end
return nil
end

View File

@ -38,7 +38,7 @@ class LVGL_glob
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 obj = self.get_object_from_ptr(target)
#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_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_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_target_search;
extern const bcstring be_const_str_var;
extern const bcstring be_const_str_IRRECV;
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_remove;
extern const bcstring be_const_str_SERIAL_6E1;
extern const bcstring be_const_str_SERIAL_8O1;
extern const bcstring be_const_str_cosh;
extern const bcstring be_const_str_HPMA_TX;
extern const bcstring be_const_str_ctypes_bytes;
extern const bcstring be_const_str_loop;
extern const bcstring be_const_str_setitem;
extern const bcstring be_const_str_TASMOTACLIENT_RXD;
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_global;
extern const bcstring be_const_str_last_modified;
extern const bcstring be_const_str_public_key;
extern const bcstring be_const_str_dac_voltage;
extern const bcstring be_const_str_set_power;
extern const bcstring be_const_str_url_encode;
extern const bcstring be_const_str_CC1101_GDO2;
extern const bcstring be_const_str_TASMOTACLIENT_RST_INV;
extern const bcstring be_const_str_WEBCAM_HSD;
extern const bcstring be_const_str_AudioFileSource;
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_SERIAL_7N2;
extern const bcstring be_const_str_content_button;
extern const bcstring be_const_str__cb;
extern const bcstring be_const_str_atan;
extern const bcstring be_const_str_dot_p2;
extern const bcstring be_const_str_continue;
extern const bcstring be_const_str_SERIAL_6E2;
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_iter;
extern const bcstring be_const_str_remove_timer;
extern const bcstring be_const_str_select;
extern const bcstring be_const_str_ADC_PH;
extern const bcstring be_const_str_tanh;
extern const bcstring be_const_str_false;
extern const bcstring be_const_str_SWT1;
extern const bcstring be_const_str_setmember;
extern const bcstring be_const_str_top;
extern const bcstring be_const_str_decrypt;
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_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_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_except;
extern const bcstring be_const_str_DHT22;
extern const bcstring be_const_str_compile;
extern const bcstring be_const_str_get_switch;
extern const bcstring be_const_str_KEY1_INV;
extern const bcstring be_const_str__timers;
extern const bcstring be_const_str_wire2;
extern const bcstring be_const_str_hex;
extern const bcstring be_const_str_set_light;
extern const bcstring be_const_str_SERIAL_5E2;
extern const bcstring be_const_str_seti;
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_atan2;
extern const bcstring be_const_str_FTC532;
extern const bcstring be_const_str__buffer;
extern const bcstring be_const_str_flush;
extern const bcstring be_const_str_encrypt;
extern const bcstring be_const_str_exec_rules;
extern const bcstring be_const_str_fromb64;
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"
static be_define_const_map_slots(be_class_map_map) {
{ be_const_key(tostring, -1), be_const_func(m_tostring) },
{ be_const_key(size, -1), be_const_func(m_size) },
{ 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(setitem, -1), be_const_func(m_setitem) },
{ be_const_key(remove, 8), be_const_func(m_remove) },
{ be_const_key(insert, -1), be_const_func(m_insert) },
{ be_const_key(dot_p, -1), be_const_var(0) },
{ be_const_key(find, 1), be_const_func(m_find) },
{ be_const_key(tostring, 4), be_const_func(m_tostring) },
{ 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(
be_class_map_map,
13
14
);
BE_EXPORT_VARIABLE be_define_const_class(

View File

@ -1,84 +1,85 @@
#include "be_constobj.h"
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(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(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(memory, -1), be_const_func(l_memory) },
{ be_const_key(save, 9), be_const_func(l_save) },
{ be_const_key(_settings_ptr, 26), be_const_comptr(&Settings) },
{ be_const_key(wire2, -1), be_const_var(8) },
{ be_const_key(_cmd, -1), be_const_func(l_cmd) },
{ be_const_key(set_timer, -1), be_const_closure(set_timer_closure) },
{ be_const_key(_drivers, 1), be_const_var(9) },
{ be_const_key(chars_in_string, -1), be_const_closure(chars_in_string_closure) },
{ be_const_key(rtc, -1), be_const_func(l_rtc) },
{ be_const_key(set_timer, 42), be_const_closure(set_timer_closure) },
{ be_const_key(_settings_ptr, -1), be_const_comptr(&Settings) },
{ be_const_key(set_power, -1), be_const_func(l_setpower) },
{ be_const_key(remove_driver, -1), be_const_closure(remove_driver_closure) },
{ be_const_key(try_rule, -1), be_const_closure(try_rule_closure) },
{ be_const_key(find_op, 58), be_const_closure(find_op_closure) },
{ be_const_key(resp_cmnd_str, -1), be_const_func(l_respCmndStr) },
{ be_const_key(find_key_i, -1), be_const_closure(find_key_i_closure) },
{ 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(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(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(_global_def, 37), be_const_comptr(&be_tasmota_global_struct) },
{ be_const_key(resp_cmnd_failed, 39), be_const_func(l_respCmndFailed) },
{ be_const_key(time_reached, -1), be_const_func(l_timereached) },
{ 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(
be_class_tasmota_map,
73
74
);
BE_EXPORT_VARIABLE be_define_const_class(

View File

@ -1,25 +1,26 @@
#include "be_constobj.h"
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(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(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(_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(
be_class_tasmota_wire_map,
14
15
);
BE_EXPORT_VARIABLE be_define_const_class(

View File

@ -1,281 +1,18 @@
#include "be_constobj.h"
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(HRE_CLOCK, -1), be_const_int(106) },
{ be_const_key(DHT11, -1), be_const_int(37) },
{ be_const_key(PWM1_INV, 109), be_const_int(14) },
{ be_const_key(A4988_MS1, 94), be_const_int(119) },
{ be_const_key(SBR_RX, -1), be_const_int(57) },
{ be_const_key(SWT1_PD, -1), be_const_int(242) },
{ be_const_key(FALLING, 5), be_const_int(2) },
{ be_const_key(PULLUP, -1), be_const_int(4) },
{ be_const_key(TELEINFO_RX, -1), be_const_int(176) },
{ be_const_key(MCP39F5_RX, -1), be_const_int(87) },
{ be_const_key(ETH_PHY_MDIO, -1), be_const_int(175) },
{ be_const_key(BL0940_RX, -1), be_const_int(170) },
{ be_const_key(NEOPOOL_TX, 248), be_const_int(218) },
{ be_const_key(VL53L0X_XSHUT1, -1), be_const_int(230) },
{ be_const_key(MCP39F5_RST, 203), be_const_int(88) },
{ be_const_key(HLW_CF, 231), be_const_int(84) },
{ be_const_key(WEBCAM_PSRCS, -1), be_const_int(165) },
{ be_const_key(SSD1331_DC, -1), be_const_int(209) },
{ be_const_key(ST7789_CS, -1), be_const_int(206) },
{ be_const_key(SDM72_RX, 66), be_const_int(221) },
{ be_const_key(SSD1351_DC, -1), be_const_int(226) },
{ be_const_key(SSPI_SCLK, -1), be_const_int(28) },
{ be_const_key(I2S_IN_CLK, -1), be_const_int(247) },
{ be_const_key(SM16716_DAT, -1), be_const_int(92) },
{ be_const_key(I2C_SDA, -1), be_const_int(20) },
{ be_const_key(PZEM004_RX, -1), be_const_int(47) },
{ be_const_key(TCP_TX, -1), be_const_int(171) },
{ be_const_key(SDM630_RX, -1), be_const_int(63) },
{ be_const_key(SWT1, -1), be_const_int(5) },
{ be_const_key(ROT1B, -1), be_const_int(103) },
{ be_const_key(I2C_SCL, -1), be_const_int(19) },
{ be_const_key(RXD, -1), be_const_int(101) },
{ be_const_key(DSB, 261), be_const_int(41) },
{ be_const_key(MCP39F5_TX, 252), be_const_int(86) },
{ be_const_key(HIGH, 266), be_const_int(1) },
{ be_const_key(RC522_RST, -1), be_const_int(191) },
{ be_const_key(SSPI_DC, -1), be_const_int(30) },
{ be_const_key(LOW, -1), be_const_int(0) },
{ be_const_key(BUZZER_INV, -1), be_const_int(16) },
{ be_const_key(XPT2046_CS, -1), be_const_int(227) },
{ be_const_key(WEBCAM_HSD, -1), be_const_int(164) },
{ be_const_key(TM1638STB, -1), be_const_int(66) },
{ be_const_key(PMS5003_RX, -1), be_const_int(53) },
{ be_const_key(SPI_DC, -1), be_const_int(25) },
{ be_const_key(MHZ_RXD, -1), be_const_int(45) },
{ be_const_key(ILI9488_CS, 119), be_const_int(201) },
{ be_const_key(HX711_SCK, 57), be_const_int(68) },
{ be_const_key(SDM630_TX, 227), be_const_int(62) },
{ be_const_key(SHELLY_DIMMER_BOOT0, -1), be_const_int(189) },
{ be_const_key(EPD_DATA, -1), be_const_int(238) },
{ be_const_key(WE517_TX, -1), be_const_int(185) },
{ be_const_key(TXD, 234), be_const_int(100) },
{ be_const_key(OUTPUT, -1), be_const_int(2) },
{ be_const_key(SSPI_MAX31865_CS1, -1), be_const_int(105) },
{ be_const_key(WEBCAM_PSCLK, -1), be_const_int(163) },
{ be_const_key(WEBCAM_SIOD, -1), be_const_int(157) },
{ be_const_key(MGC3130_RESET, -1), be_const_int(74) },
{ be_const_key(KEY1, -1), be_const_int(1) },
{ be_const_key(MGC3130_XFER, -1), be_const_int(73) },
{ be_const_key(ST7789_DC, 245), be_const_int(207) },
{ be_const_key(GPS_TX, 123), be_const_int(137) },
{ be_const_key(ADC_CT_POWER, 58), be_const_int(153) },
{ be_const_key(member, -1), be_const_func(gp_member) },
{ be_const_key(digital_write, -1), be_const_func(gp_digital_write) },
{ be_const_key(pin_mode, 1), be_const_func(gp_pin_mode) },
{ be_const_key(pin_used, -1), be_const_func(gp_pin_used) },
{ be_const_key(dac_voltage, -1), be_const_func(gp_dac_voltage) },
{ be_const_key(digital_read, 3), be_const_func(gp_digital_read) },
};
static be_define_const_map(
m_libgpio_map,
270
7
);
static be_define_const_module(

View File

@ -1125,15 +1125,20 @@ static int m_buffer(bvm *vm)
/*
* 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);
buf_impl attr = m_read_attributes(vm, -1);
if ((int32_t)len > attr.size) { len = attr.size; } /* double check if the buffer allocated was smaller */
memmove((void*)attr.bufptr, bytes, len);
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;
m_write_attributes(vm, -1, &attr); /* update instance */
/* 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)

View File

@ -15,6 +15,7 @@ extern "C" {
#include "be_object.h"
#include "be_gc.h"
#include "be_map.h"
#include "be_list.h"
#include "be_class.h"
#include "be_string.h"
#include "be_module.h"
@ -92,6 +93,21 @@ extern "C" {
.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) \
const bmapnode _name##_slots[] =
@ -164,6 +180,26 @@ const bntvmodule be_native_module(_module) = { \
.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) \
& (const bmap) { \
be_const_header(BE_MAP), \
@ -173,6 +209,14 @@ const bntvmodule be_native_module(_module) = { \
.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) \
{ \
{ .s=(be_nested_const_str(_str, _hash, _len )) \
@ -284,16 +328,19 @@ const bvector _name = { \
(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) = { \
#_module, \
0, 0, \
(bmodule*)&(m_lib##_module), \
_init \
(bmodule*)&(m_lib##_module) \
}
#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
}
#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)) {
int ret = be_execprotected(vm, &m_findmember_protected, (void*) be_tostring(vm, 2));
if (ret == BE_OK) {
// be_getmember(vm, 1, be_tostring(vm, 2));
be_return(vm);
}
}

View File

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

View File

@ -10,6 +10,7 @@
#include "be_string.h"
#include "be_vector.h"
#include "be_class.h"
#include "be_list.h"
#include "be_debug.h"
#include "be_map.h"
#include "be_vm.h"
@ -17,6 +18,9 @@
#include <string.h>
#include <stdio.h>
extern const bclass be_class_list;
extern const bclass be_class_map;
#if BE_USE_SOLIDIFY_MODULE
#include <inttypes.h>
@ -33,6 +37,50 @@
be_writestring(__lbuf); \
} 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
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:
logfmt("be_const_func(be_ntv_%s_%s)", classname ? classname : "unknown", key ? key : "unknown");
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:
{
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, "", 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);
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) {
logfmt(" be_nested_map(%i,\n", cl->members->count);
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");
m_solidify_map(vm, cl->members, class_name);
logfmt(",\n");
} else {
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)
{
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 */
if (ml->table) {
@ -323,33 +384,14 @@ static void m_solidify_module(bvm *vm, bmodule *ml, int builtins)
logfmt(" \"%s\",\n", module_name);
if (ml->table) {
logfmt(" be_nested_map(%i,\n", ml->table->count);
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");
m_solidify_map(vm, ml->table, module_name);
logfmt("\n");
} else {
logfmt(" NULL,\n");
}
logfmt(");\n");
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));
} else if (var_ismodule(v)) {
m_solidify_module(vm, var_toobj(v), be_builtin_count(vm));
} else {
be_raise(vm, "value_error", "unsupported type");
}
}
be_return_nil(vm);

View File

@ -821,7 +821,6 @@ newframe: /* a new call frame */
vm->counter_get++;
#endif
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();
if (var_isinstance(b) && var_isstr(c)) {
obj_attribute(vm, b, var_tostr(c), &a_temp);
@ -834,6 +833,7 @@ newframe: /* a new call frame */
reg = vm->reg;
} else {
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();
*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);
/* 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);
/* registry operation */

View File

@ -1,6 +1,6 @@
#include "epd_driver.h"
#include "waveforms/ED047TC2.h"
#include "waveforms/epdiy_ED047TC1.h"
#include "waveforms/epdiy_ED060SC4.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_ED097OC4;
extern const EpdWaveform epdiy_ED047TC1;
@ -96,7 +96,8 @@ extern const EpdWaveform epdiy_ED060SCT;
extern const EpdWaveform epdiy_ED133UT2;
#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)
#define EPD_BUILTIN_WAVEFORM &epdiy_ED060SC4
#elif defined(CONFIG_EPD_DISPLAY_TYPE_ED060XC3)
@ -143,5 +144,3 @@ typedef struct {
#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]
; *** 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_packages = ${core32.platform_packages}
; framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.1rc1/framework-arduinoespressif32-release_IDF4.4.tar.gz
;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 = ${esp32_defaults.build_unflags}
build_flags = ${esp32_defaults.build_flags}

View File

@ -28,7 +28,18 @@ build_flags = ${esp_defaults.build_flags}
[core32]
platform = espressif32 @ 3.3.1
platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.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
build_unflags = ${esp32_defaults.build_unflags}
build_flags = ${esp32_defaults.build_flags}

View File

@ -1,11 +1,26 @@
; *** Tasmota32 development core version ESP32 IDF4.4
[env:tasmota32-dev]
extends = env:tasmota32idf4
platform_packages = ${core32.platform_packages}
framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/511/framework-arduinoespressif32-release_v4.4-432c3c78c.tar.gz
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/516/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}
-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]
build_flags = ${env.build_flags}
-D FIRMWARE_RANGE_EXTENDER
@ -13,24 +28,6 @@ build_flags = ${env.build_flags}
-D USE_WIFI_RANGE_EXTENDER
-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]
extends = env:tasmota32idf4
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_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
[env:tasmota-debug]
build_type = debug
@ -93,8 +64,7 @@ build_flags = ${env:tasmota32_base.build_flags}
[env:tasmota32solo1-ocd]
;build_type = debug
extends = env:tasmota32_base
platform_packages = ${core32.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
platform_packages = ${core32solo1.platform_packages}
board = esp32_solo1_4M
debug_tool = 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)
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]
extends = env:tasmota32_base
@ -50,8 +64,7 @@ build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32
[env:tasmota32solo1]
extends = env:tasmota32_base
platform_packages = ${core32.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
platform_packages = ${core32solo1.platform_packages}
build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32
[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
[env:tasmota32c3]
extends = env:tasmota32_base
board = esp32c3
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
-mtarget-align
-DNDEBUG
build_flags = ${env:tasmota32_base.build_flags}
-Wno-switch-unreachable
-Wno-stringop-overflow
extends = env:tasmota32idf4
board = esp32c3
platform = ${env:tasmota32idf4.platform}
platform_packages = ${env:tasmota32idf4.platform_packages}
build_unflags = ${env:tasmota32idf4.build_unflags}
-mtarget-align
-DNDEBUG
build_flags = ${env:tasmota32idf4.build_flags}
; *** Comment next two lines to disable BLE
; -DUSE_BLE_ESP32
; -DUSE_MI_ESP32
;-DESP32_STAGE=true
lib_extra_dirs = lib/libesp32
lib/libesp32_div
lib/libesp32_lvgl
lib/lib_basic
lib/lib_i2c
lib/lib_ssl
lib/lib_display
lib_ignore =
TTGO TWatch Library
ESP32-HomeKit
Micro-RTSP
; -DUSE_BLE_ESP32
; -DUSE_MI_ESP32
;-DESP32_STAGE=true
lib_extra_dirs = lib/libesp32
lib/libesp32_div
lib/libesp32_lvgl
lib/lib_basic
lib/lib_i2c
lib/lib_ssl
lib/lib_display
lib_ignore =
TTGO TWatch Library
ESP32-HomeKit
Micro-RTSP
[env:tasmota32-AF]
extends = env:tasmota32_base

View File

@ -3,7 +3,7 @@
-------------------------------------------------------------#
class AXP192_M5Stack_Core2 : AXP192
def init()
super(self, AXP192).init()
super(self).init()
if self.wire
# 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
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
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_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units
#define D_UNIT_AMPERE "A"

View File

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

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units
#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 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)
@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Herzschlag"
// Units
#define D_UNIT_AMPERE "A"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units
#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 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)
@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 - RX"
#define D_SENSOR_HRG15_TX "HRG15 - TX"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Battito cardiaco"
// Units
#define D_UNIT_AMPERE "A"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -842,6 +842,7 @@
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"
#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING"
#define D_SENSOR_HEARTBEAT "Heartbeat"
// Units
#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_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 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
@ -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
// -- Zigbee interface ----------------------------
//#define USE_ZIGBEE // Enable serial communication with Zigbee CC2530 flashed with ZNP (+49k code, +3k mem)
#define USE_ZIGBEE_ZNP // Enable ZNP protocol, needed for CC2530 based devices
//#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/CC2652 based devices
// #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
// #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 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
* 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
uint16_t shd_warmup_brightness; // F5C
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

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)
{
oswatch_blocked_loop = RtcSettings.oswatch_blocked_loop;
@ -1818,7 +1789,7 @@ uint32_t JsonParsePath(JsonParserObject *jobj, const char *spath, char delim, fl
* Serial
\*********************************************************************************************/
String GetSerialConfig(void) {
String GetSerialConfig(uint8_t serial_config) {
// Settings->serial_config layout
// b000000xx - 5, 6, 7 or 8 data bits
// b00000x00 - 1 or 2 stop bits
@ -1827,26 +1798,63 @@ String GetSerialConfig(void) {
const static char kParity[] PROGMEM = "NEOI";
char config[4];
config[0] = '5' + (Settings->serial_config & 0x3);
config[1] = pgm_read_byte(&kParity[(Settings->serial_config >> 3) & 0x3]);
config[2] = '1' + ((Settings->serial_config >> 2) & 0x1);
config[0] = '5' + (serial_config & 0x3);
config[1] = pgm_read_byte(&kParity[(serial_config >> 3) & 0x3]);
config[2] = '1' + ((serial_config >> 2) & 0x1);
config[3] = '\0';
return String(config);
}
#if defined(ESP32) && CONFIG_IDF_TARGET_ESP32C3
// temporary workaround, see https://github.com/espressif/arduino-esp32/issues/5287
#include <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
String GetSerialConfig(void) {
return GetSerialConfig(Settings->serial_config);
}
#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) {
return (Serial.baudRate() / 300) * 300; // Fix ESP32 strange results like 115201
}
#endif
//#endif
#ifdef ESP8266
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
}
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) {
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)) {
uint8_t serial_config = XdrvMailbox.payload -5; // Data bits 5, 6, 7 or 8, No parity and 1 stop bit
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) {
int8_t serial_config = ParseSerialConfig(XdrvMailbox.data);
if (serial_config >= 0) {
SetSerialConfig(serial_config);
}
}

View File

@ -17,16 +17,18 @@
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
\*********************************************************************************************/
// 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
#undef USE_PROFILE_DRIVER
#undef USE_PROFILE_FUNCTION
@ -43,13 +45,17 @@
#else
#define PROFILE_FUNCTION(DRIVER, INDEX, FUNCTION, START)
#endif // USE_PROFILE_DRIVER
*/
/*********************************************************************************************\
* Profiling services
\*********************************************************************************************/
#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
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|"

View File

@ -377,6 +377,12 @@ void RtcSecond(void)
static uint32_t last_sync = 0;
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 (Rtc.time_synced) {

View File

@ -1766,6 +1766,10 @@ void GpioInit(void)
TasmotaGlobal.ledlnk_inverted = 1;
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))) {
bitSet(TasmotaGlobal.pwm_inverted, mpin - AGPIO(GPIO_PWM1_INV));
mpin -= (AGPIO(GPIO_PWM1_INV) - AGPIO(GPIO_PWM1));
@ -1891,6 +1895,11 @@ void GpioInit(void)
#endif // ESP8266
}
if (PinUsed(GPIO_HEARTBEAT)) {
pinMode(Pin(GPIO_HEARTBEAT), OUTPUT);
digitalWrite(Pin(GPIO_HEARTBEAT), TasmotaGlobal.heartbeat_inverted);
}
// Digital input
for (uint32_t i = 0; i < MAX_SWITCHES; 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_I2C_DRIVERS = 96; // Max number of allowed i2c drivers
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_PCF8574 = 4; // Max number of PCF8574 devices
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 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 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 <ext_printf.h>
#include <SBuffer.hpp>
#include <LList.h>
#include <JsonParser.h>
#include <JsonGenerator.h>
#ifdef USE_ARDUINO_OTA
@ -148,6 +149,8 @@ struct TasmotaGlobal_t {
bool enable_logging; // Enable logging
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 soft_spi_enabled; // Software SPI configured
uint8_t blinks; // Number of LED blinks
@ -317,9 +320,6 @@ void setup(void) {
SettingsLoad();
SettingsDelta();
#ifdef ESP32
// TWDTInit(); // Start Task WDT for ESP32 - FreeRTOS only
#endif
OsWatchInit();
TasmotaGlobal.seriallog_level = Settings->seriallog_level;
@ -430,6 +430,8 @@ void setup(void) {
XdrvCall(FUNC_PRE_INIT);
XsnsCall(FUNC_PRE_INIT);
TasmotaGlobal.init_state = INIT_GPIOS;
SetPowerOnState();
WifiConnect();
@ -512,9 +514,6 @@ void Scheduler(void) {
#endif // USE_DISCOVERY
#endif // ESP8266
#ifdef ESP32
// TWDTLoop();
#endif
OsWatchLoop();
ButtonLoop();
SwitchLoop();

View File

@ -495,6 +495,23 @@ bool first_device_group_is_local = true;
#define SHOW_FREE_MEM(WHERE)
#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
*

View File

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

View File

@ -2794,9 +2794,6 @@ void HandleUploadLoop(void) {
Web.upload_error = 2; // Not enough space
return;
}
#ifdef ESP32
// TWDTLoop();
#endif
if (upload.totalSize && !(upload.totalSize % 102400)) {
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
String sCurrentCommand = oneCommand;
sCurrentCommand.trim();
/*
if (sCurrentCommand.length() > 0
&& backlog.size() < MAX_BACKLOG && !TasmotaGlobal.backlog_mutex)
{
@ -1950,6 +1951,12 @@ void ExecuteCommandBlock(const char * commands, int len)
TasmotaGlobal.backlog_mutex = false;
insertPosition++;
}
*/
if ((sCurrentCommand.length() > 0) && (backlog.size() < MAX_BACKLOG)) {
//Insert into backlog
backlog.add(insertPosition, sCurrentCommand);
insertPosition++;
}
}
return;
}

View File

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

View File

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

View File

@ -1861,6 +1861,10 @@ void DisplaySetPower(void)
XdspCall(FUNC_DISPLAY_POWER);
} else {
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) {
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 {
XdspCall(FUNC_DISPLAY_DIM);
}

View File

@ -95,6 +95,8 @@ protected:
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) {
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
template <class M>
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>();
elt->val()._endpoint = ep;
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 {
JsonGeneratorArray json_arr;
if (&device == nullptr) {
if (&device == &device_unk) {
if (dump_mode < 2) {
// dump light mode for all 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) {
ZCLMessage zcl(&s ? s.len() : 0);
ZCLMessage zcl(s.len());
zcl.shortaddr = shortaddr;
zcl.cluster = cluster;
zcl.cmd = cmd;
zcl.clusterSpecific = true;
zcl.needResponse = true;
zcl.direct = false; // discover route
if (&s) { zcl.buf.replace(s); }
zcl.buf.replace(s);
zigbeeZCLSendCmd(zcl);
}
// Send commands
// Power On/Off
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);
}

View File

@ -281,7 +281,6 @@ void ZigbeeInputLoop(void) {
// Initialize internal structures
void ZigbeeInitSerial(void)
{
// AddLog(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem1 = %d"), ESP_getFreeHeap());
zigbee.active = false;
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));
@ -293,9 +292,7 @@ void ZigbeeInitSerial(void)
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);
} else {
// AddLog(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem2 = %d"), ESP_getFreeHeap());
zigbee_buffer = new SBuffer(ZIGBEE_BUFFER_SIZE);
// AddLog(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem3 = %d"), ESP_getFreeHeap());
}
if (PinUsed(GPIO_ZIGBEE_RST)) {
@ -312,7 +309,6 @@ void ZigbeeInitSerial(void)
zigbee.state_machine = true; // start the state machine
ZigbeeSerial->flush();
}
// AddLog(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem9 = %d"), ESP_getFreeHeap());
}
#ifdef USE_ZIGBEE_ZNP

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