From 2938c2c01158e863aedc52f6b4ece9a3c8ab9e20 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Wed, 21 Apr 2021 17:11:19 +0200 Subject: [PATCH 01/97] ili9488 udisp version --- tasmota/xdrv_13_display.ino | 4 +- tasmota/xdsp_08_ILI9488.ino | 142 ++++++++------------------- tasmota/xdsp_08_ILI9488_org.ino | 169 ++++++++++++++++++++++++++++++++ tasmota/xdsp_17_universal.ino | 31 ++++-- 4 files changed, 234 insertions(+), 112 deletions(-) create mode 100644 tasmota/xdsp_08_ILI9488_org.ino diff --git a/tasmota/xdrv_13_display.ino b/tasmota/xdrv_13_display.ino index 429f09967..166d38bc0 100755 --- a/tasmota/xdrv_13_display.ino +++ b/tasmota/xdrv_13_display.ino @@ -60,7 +60,7 @@ struct MULTI_DISP { uint8_t auto_draw; } displays[3]; uint8_t cur_display; -Renderer *Init_uDisplay(const char *desc); +Renderer *Init_uDisplay(const char *desc, int8_t cs); void Set_display(uint8_t index) { displays[index].display = renderer; @@ -585,7 +585,7 @@ void DisplayText(void) fp.read((uint8_t*)fdesc, size); fp.close(); Get_display(temp); - renderer = Init_uDisplay(fdesc); + renderer = Init_uDisplay(fdesc, -1); Set_display(temp); AddLog(LOG_LEVEL_INFO, PSTR("DSP: File descriptor loaded %x"),renderer); } diff --git a/tasmota/xdsp_08_ILI9488.ino b/tasmota/xdsp_08_ILI9488.ino index cfc161ec3..307bf4ffd 100644 --- a/tasmota/xdsp_08_ILI9488.ino +++ b/tasmota/xdsp_08_ILI9488.ino @@ -22,118 +22,60 @@ #ifdef USE_DISPLAY_ILI9488 #define XDSP_08 8 -#define XI2C_38 38 // See I2CDEVICES.md -#define COLORED 1 -#define UNCOLORED 0 - -// using font 8 is opional (num=3) -// very badly readable, but may be useful for graphs -#define USE_TINY_FONT - - -#include -uint8_t ili9488_ctouch_counter = 0; bool ili9488_init_done = false; -// currently fixed -#define BACKPLANE_PIN 2 - -extern uint8_t color_type; -ILI9488 *ili9488; -extern const uint16_t picture[]; +Renderer *Init_uDisplay(const char *desc, int8_t cs); +void udisp_CheckTouch(void); /*********************************************************************************************/ +const char ILI9488_DESC[] PROGMEM = +":H,ILI9488,480,320,16,SPI,1,*,*,*,*,*,*,*,10\n" +":S,2,1,1,0,40,20\n" +":I\n" +"E0,0F,00,03,09,08,16,0A,3F,78,4C,09,0A,08,16,1A,0F\n" +"E1,0F,00,16,19,03,0F,05,32,45,46,04,0E,0D,35,37,0F\n" +"C0,2,17,15\n" +"C1,1,41\n" +"C5,3,00,12,80\n" +"36,1,48\n" +"3A,1,66\n" +"B0,1,80\n" +"B1,1,A0\n" +"B4,1,02\n" +"B6,2,02,02\n" +"E9,1,00\n" +"F7,4,A9,51,2C,82\n" +"11,80\n" +"29,0\n" +":o,28\n" +":O,29\n" +":A,2A,2B,2C,16\n" +":R,36\n" +";:0,48,00,00,00\n" +":0,28,00,00,01\n" +":1,28,00,00,00\n" +":2,E8,00,00,03\n" +":3,88,00,00,02\n" +":P,18\n" +":i,20,21\n" +":TI1,38,*,*\n" +"#\n"; + void ILI9488_InitDriver(void) { if (PinUsed(GPIO_ILI9488_CS) && (TasmotaGlobal.spi_enabled & SPI_MOSI)) { + renderer = Init_uDisplay(ILI9488_DESC, Pin(GPIO_ILI9488_CS)); + + if (!renderer) return; + Settings.display_model = XDSP_08; - if (Settings.display_width != ILI9488_TFTWIDTH) { - Settings.display_width = ILI9488_TFTWIDTH; - } - if (Settings.display_height != ILI9488_TFTHEIGHT) { - Settings.display_height = ILI9488_TFTHEIGHT; - } - - // default colors - fg_color = ILI9488_WHITE; - bg_color = ILI9488_BLACK; - - int8_t bppin = BACKPLANE_PIN; - if (PinUsed(GPIO_BACKLIGHT)) { - bppin = Pin(GPIO_BACKLIGHT); - } - - // init renderer, must use hardware spi - ili9488 = new ILI9488(Pin(GPIO_ILI9488_CS), Pin(GPIO_SPI_MOSI), Pin(GPIO_SPI_CLK), bppin); - - ili9488->begin(); - renderer = ili9488; - renderer->DisplayInit(DISPLAY_INIT_MODE,Settings.display_size,Settings.display_rotate,Settings.display_font); - renderer->dim(Settings.display_dimmer); - -#ifdef SHOW_SPLASH - // Welcome text - renderer->setTextFont(2); - renderer->setTextColor(ILI9488_WHITE,ILI9488_BLACK); - renderer->DrawStringAt(50, 50, "ILI9488 TFT Display!", ILI9488_WHITE,0); - delay(1000); - - //renderer->drawRGBBitmap(100,100, picture,51,34); -#endif - - color_type = COLOR_COLOR; - // start digitizer -#ifdef USE_FT5206 - FT5206_Touch_Init(Wire); -#endif - ili9488_init_done = true; - AddLog(LOG_LEVEL_INFO, PSTR("DSP: ILI9488")); } } -#ifdef USE_FT5206 -#ifdef USE_TOUCH_BUTTONS - -void ILI9488_RotConvert(int16_t *x, int16_t *y) { -int16_t temp; - if (renderer) { - uint8_t rot=renderer->getRotation(); - switch (rot) { - case 0: - temp=*y; - *y=renderer->height()-*x; - *x=temp; - break; - case 1: - break; - case 2: - break; - case 3: - temp=*y; - *y=*x; - *x=renderer->width()-temp; - break; - } - } -} - -// check digitizer hit -void ILI9488_CheckTouch(void) { - ili9488_ctouch_counter++; - if (2 == ili9488_ctouch_counter) { - // every 100 ms should be enough - ili9488_ctouch_counter = 0; - Touch_Check(ILI9488_RotConvert); - } -} -#endif // USE_TOUCH_BUTTONS -#endif // USE_FT5206 - - /*********************************************************************************************/ /*********************************************************************************************\ * Interface @@ -151,11 +93,9 @@ bool Xdsp08(uint8_t function) result = true; break; case FUNC_DISPLAY_EVERY_50_MSECOND: -#ifdef USE_TOUCH_BUTTONS - if (FT5206_found) { - ILI9488_CheckTouch(); + if (FT5206_found || XPT2046_found) { + udisp_CheckTouch(); } -#endif break; } } diff --git a/tasmota/xdsp_08_ILI9488_org.ino b/tasmota/xdsp_08_ILI9488_org.ino new file mode 100644 index 000000000..3c7833ab4 --- /dev/null +++ b/tasmota/xdsp_08_ILI9488_org.ino @@ -0,0 +1,169 @@ +/* + xdsp_08_ILI9488.ino - Display ILI9488 support for Tasmota + + Copyright (C) 2021 Theo Arends, Gerhard Mutz + + 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 . +*/ + +#if 0 +#ifdef USE_SPI +#ifdef USE_DISPLAY +#ifdef USE_DISPLAY_ILI9488 + +#define XDSP_08 8 +#define XI2C_38 38 // See I2CDEVICES.md + +#define COLORED 1 +#define UNCOLORED 0 + +// using font 8 is opional (num=3) +// very badly readable, but may be useful for graphs +#define USE_TINY_FONT + + +#include +uint8_t ili9488_ctouch_counter = 0; +bool ili9488_init_done = false; + +// currently fixed +#define BACKPLANE_PIN 2 + +extern uint8_t color_type; +ILI9488 *ili9488; +extern const uint16_t picture[]; + +/*********************************************************************************************/ + +void ILI9488_InitDriver(void) { + if (PinUsed(GPIO_ILI9488_CS) && (TasmotaGlobal.spi_enabled & SPI_MOSI)) { + + Settings.display_model = XDSP_08; + + if (Settings.display_width != ILI9488_TFTWIDTH) { + Settings.display_width = ILI9488_TFTWIDTH; + } + if (Settings.display_height != ILI9488_TFTHEIGHT) { + Settings.display_height = ILI9488_TFTHEIGHT; + } + + // default colors + fg_color = ILI9488_WHITE; + bg_color = ILI9488_BLACK; + + int8_t bppin = BACKPLANE_PIN; + if (PinUsed(GPIO_BACKLIGHT)) { + bppin = Pin(GPIO_BACKLIGHT); + } + + // init renderer, must use hardware spi + ili9488 = new ILI9488(Pin(GPIO_ILI9488_CS), Pin(GPIO_SPI_MOSI), Pin(GPIO_SPI_CLK), bppin); + + ili9488->begin(); + renderer = ili9488; + renderer->DisplayInit(DISPLAY_INIT_MODE,Settings.display_size,Settings.display_rotate,Settings.display_font); + renderer->dim(Settings.display_dimmer); + +#ifdef SHOW_SPLASH + // Welcome text + renderer->setTextFont(2); + renderer->setTextColor(ILI9488_WHITE,ILI9488_BLACK); + renderer->DrawStringAt(50, 50, "ILI9488 TFT Display!", ILI9488_WHITE,0); + delay(1000); + + //renderer->drawRGBBitmap(100,100, picture,51,34); +#endif + + color_type = COLOR_COLOR; + // start digitizer +#ifdef USE_FT5206 + FT5206_Touch_Init(Wire); +#endif + + ili9488_init_done = true; + AddLog(LOG_LEVEL_INFO, PSTR("DSP: ILI9488")); + } +} + +#ifdef USE_FT5206 +#ifdef USE_TOUCH_BUTTONS + +void ILI9488_RotConvert(int16_t *x, int16_t *y) { +int16_t temp; + if (renderer) { + uint8_t rot=renderer->getRotation(); + switch (rot) { + case 0: + temp=*y; + *y=renderer->height()-*x; + *x=temp; + break; + case 1: + break; + case 2: + break; + case 3: + temp=*y; + *y=*x; + *x=renderer->width()-temp; + break; + } + } +} + +// check digitizer hit +void ILI9488_CheckTouch(void) { + ili9488_ctouch_counter++; + if (2 == ili9488_ctouch_counter) { + // every 100 ms should be enough + ili9488_ctouch_counter = 0; + Touch_Check(ILI9488_RotConvert); + } +} +#endif // USE_TOUCH_BUTTONS +#endif // USE_FT5206 + + +/*********************************************************************************************/ +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ +bool Xdsp08(uint8_t function) +{ + bool result = false; + + if (FUNC_DISPLAY_INIT_DRIVER == function) { + ILI9488_InitDriver(); + } + else if (ili9488_init_done && (XDSP_08 == Settings.display_model)) { + switch (function) { + case FUNC_DISPLAY_MODEL: + result = true; + break; + case FUNC_DISPLAY_EVERY_50_MSECOND: +#ifdef USE_TOUCH_BUTTONS + if (FT5206_found) { + ILI9488_CheckTouch(); + } +#endif + break; + } + } + return result; +} + +#endif // USE_DISPLAY_ILI9488 +#endif // USE_DISPLAY +#endif // USE_SPI +#endif diff --git a/tasmota/xdsp_17_universal.ino b/tasmota/xdsp_17_universal.ino index 3bf8710b2..cad9c7933 100644 --- a/tasmota/xdsp_17_universal.ino +++ b/tasmota/xdsp_17_universal.ino @@ -40,8 +40,7 @@ extern FS *ffsp; //#define DSP_ROM_DESC /*********************************************************************************************/ -//#ifdef DSP_ROM_DESC -#if 1 +#ifdef DSP_ROM_DESC /* sample descriptor */ const char DSP_SAMPLE_DESC[] PROGMEM = ":H,SH1106,128,64,1,I2C,3c,*,*,*\n" @@ -71,19 +70,20 @@ const char DSP_SAMPLE_DESC[] PROGMEM = #endif // DSP_ROM_DESC /*********************************************************************************************/ -Renderer *Init_uDisplay(const char *desc) { +Renderer *Init_uDisplay(const char *desc, int8_t cs) { char *ddesc = 0; char *fbuff; uDisplay *udisp; - if (TasmotaGlobal.gpio_optiona.udisplay_driver) { + if (TasmotaGlobal.gpio_optiona.udisplay_driver || desc) { + Settings.display_model = XDSP_17; fbuff = (char*)calloc(DISPDESC_SIZE, 1); if (!fbuff) return 0; if (desc) { - memcpy(fbuff, desc, DISPDESC_SIZE - 1); + memcpy_P(fbuff, desc, DISPDESC_SIZE - 1); ddesc = fbuff; AddLog(LOG_LEVEL_INFO, PSTR("DSP: const char descriptor used")); } @@ -192,9 +192,22 @@ uDisplay *udisp; cp += 4; //; 7 params nr,cs,sclk,mosi,dc,bl,reset,miso //SPI,*,*,*,*,*,*,* + if (cs < 0) { + switch (*cp) { + case 1: + cs = Pin(GPIO_SPI_CS); + break; + case 2: + cs = Pin(GPIO_SPI_CS, 1); + break; + default: + cs = Pin(GPIO_SSPI_CS); + break; + } + } if (*cp == '1') { cp+=2; - replacepin(&cp, Pin(GPIO_SPI_CS)); + replacepin(&cp, cs); replacepin(&cp, Pin(GPIO_SPI_CLK)); replacepin(&cp, Pin(GPIO_SPI_MOSI)); replacepin(&cp, Pin(GPIO_SPI_DC)); @@ -203,7 +216,7 @@ uDisplay *udisp; replacepin(&cp, Pin(GPIO_SPI_MISO)); } else if (*cp == '2') { cp+=2; - replacepin(&cp, Pin(GPIO_SPI_CS, 1)); + replacepin(&cp, cs); replacepin(&cp, Pin(GPIO_SPI_CLK, 1)); replacepin(&cp, Pin(GPIO_SPI_MOSI, 1)); replacepin(&cp, Pin(GPIO_SPI_DC, 1)); @@ -213,7 +226,7 @@ uDisplay *udisp; } else { // soft spi pins cp+=2; - replacepin(&cp, Pin(GPIO_SSPI_CS)); + replacepin(&cp, cs); replacepin(&cp, Pin(GPIO_SSPI_SCLK)); replacepin(&cp, Pin(GPIO_SSPI_MOSI)); replacepin(&cp, Pin(GPIO_SSPI_DC)); @@ -443,7 +456,7 @@ bool Xdsp17(uint8_t function) bool result = false; if (FUNC_DISPLAY_INIT_DRIVER == function) { - Init_uDisplay(0); + Init_uDisplay(0, -1); } else if (udisp_init_done && (XDSP_17 == Settings.display_model)) { switch (function) { From 27c46d30a2c7616827535b7983063a828bc6d151 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Wed, 21 Apr 2021 17:33:59 +0200 Subject: [PATCH 02/97] Update xdsp_08_ILI9488.ino --- tasmota/xdsp_08_ILI9488.ino | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tasmota/xdsp_08_ILI9488.ino b/tasmota/xdsp_08_ILI9488.ino index 307bf4ffd..9c47ac7bd 100644 --- a/tasmota/xdsp_08_ILI9488.ino +++ b/tasmota/xdsp_08_ILI9488.ino @@ -93,9 +93,11 @@ bool Xdsp08(uint8_t function) result = true; break; case FUNC_DISPLAY_EVERY_50_MSECOND: - if (FT5206_found || XPT2046_found) { +#ifdef USE_FT5206 + if (FT5206_found) { udisp_CheckTouch(); } +#endif break; } } From 73585ae26d762064b941d3f2d65e91306f0e7646 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Wed, 21 Apr 2021 17:45:50 +0200 Subject: [PATCH 03/97] Update xdsp_08_ILI9488.ino --- tasmota/xdsp_08_ILI9488.ino | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/xdsp_08_ILI9488.ino b/tasmota/xdsp_08_ILI9488.ino index 9c47ac7bd..40f6a5fe9 100644 --- a/tasmota/xdsp_08_ILI9488.ino +++ b/tasmota/xdsp_08_ILI9488.ino @@ -20,6 +20,7 @@ #ifdef USE_SPI #ifdef USE_DISPLAY #ifdef USE_DISPLAY_ILI9488 +#ifdef USE_UNIVERSAL_DISPLAY #define XDSP_08 8 @@ -104,6 +105,7 @@ bool Xdsp08(uint8_t function) return result; } +#endif // USE_UNIVERSAL_DISPLAY #endif // USE_DISPLAY_ILI9488 #endif // USE_DISPLAY #endif // USE_SPI From 58a555d40ea09c20abe08b1c031137081813c9e6 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Thu, 22 Apr 2021 06:25:54 +0200 Subject: [PATCH 04/97] rename files --- tasmota/xdsp_08_ILI9488.ino | 142 +++++++++++++++++++-------- tasmota/xdsp_08_ILI9488_UD.ino | 111 +++++++++++++++++++++ tasmota/xdsp_08_ILI9488_org.ino | 169 -------------------------------- 3 files changed, 210 insertions(+), 212 deletions(-) create mode 100644 tasmota/xdsp_08_ILI9488_UD.ino delete mode 100644 tasmota/xdsp_08_ILI9488_org.ino diff --git a/tasmota/xdsp_08_ILI9488.ino b/tasmota/xdsp_08_ILI9488.ino index 40f6a5fe9..cfc161ec3 100644 --- a/tasmota/xdsp_08_ILI9488.ino +++ b/tasmota/xdsp_08_ILI9488.ino @@ -20,63 +20,120 @@ #ifdef USE_SPI #ifdef USE_DISPLAY #ifdef USE_DISPLAY_ILI9488 -#ifdef USE_UNIVERSAL_DISPLAY #define XDSP_08 8 +#define XI2C_38 38 // See I2CDEVICES.md +#define COLORED 1 +#define UNCOLORED 0 + +// using font 8 is opional (num=3) +// very badly readable, but may be useful for graphs +#define USE_TINY_FONT + + +#include +uint8_t ili9488_ctouch_counter = 0; bool ili9488_init_done = false; -Renderer *Init_uDisplay(const char *desc, int8_t cs); -void udisp_CheckTouch(void); +// currently fixed +#define BACKPLANE_PIN 2 + +extern uint8_t color_type; +ILI9488 *ili9488; +extern const uint16_t picture[]; /*********************************************************************************************/ -const char ILI9488_DESC[] PROGMEM = -":H,ILI9488,480,320,16,SPI,1,*,*,*,*,*,*,*,10\n" -":S,2,1,1,0,40,20\n" -":I\n" -"E0,0F,00,03,09,08,16,0A,3F,78,4C,09,0A,08,16,1A,0F\n" -"E1,0F,00,16,19,03,0F,05,32,45,46,04,0E,0D,35,37,0F\n" -"C0,2,17,15\n" -"C1,1,41\n" -"C5,3,00,12,80\n" -"36,1,48\n" -"3A,1,66\n" -"B0,1,80\n" -"B1,1,A0\n" -"B4,1,02\n" -"B6,2,02,02\n" -"E9,1,00\n" -"F7,4,A9,51,2C,82\n" -"11,80\n" -"29,0\n" -":o,28\n" -":O,29\n" -":A,2A,2B,2C,16\n" -":R,36\n" -";:0,48,00,00,00\n" -":0,28,00,00,01\n" -":1,28,00,00,00\n" -":2,E8,00,00,03\n" -":3,88,00,00,02\n" -":P,18\n" -":i,20,21\n" -":TI1,38,*,*\n" -"#\n"; - void ILI9488_InitDriver(void) { if (PinUsed(GPIO_ILI9488_CS) && (TasmotaGlobal.spi_enabled & SPI_MOSI)) { - renderer = Init_uDisplay(ILI9488_DESC, Pin(GPIO_ILI9488_CS)); - - if (!renderer) return; - Settings.display_model = XDSP_08; + if (Settings.display_width != ILI9488_TFTWIDTH) { + Settings.display_width = ILI9488_TFTWIDTH; + } + if (Settings.display_height != ILI9488_TFTHEIGHT) { + Settings.display_height = ILI9488_TFTHEIGHT; + } + + // default colors + fg_color = ILI9488_WHITE; + bg_color = ILI9488_BLACK; + + int8_t bppin = BACKPLANE_PIN; + if (PinUsed(GPIO_BACKLIGHT)) { + bppin = Pin(GPIO_BACKLIGHT); + } + + // init renderer, must use hardware spi + ili9488 = new ILI9488(Pin(GPIO_ILI9488_CS), Pin(GPIO_SPI_MOSI), Pin(GPIO_SPI_CLK), bppin); + + ili9488->begin(); + renderer = ili9488; + renderer->DisplayInit(DISPLAY_INIT_MODE,Settings.display_size,Settings.display_rotate,Settings.display_font); + renderer->dim(Settings.display_dimmer); + +#ifdef SHOW_SPLASH + // Welcome text + renderer->setTextFont(2); + renderer->setTextColor(ILI9488_WHITE,ILI9488_BLACK); + renderer->DrawStringAt(50, 50, "ILI9488 TFT Display!", ILI9488_WHITE,0); + delay(1000); + + //renderer->drawRGBBitmap(100,100, picture,51,34); +#endif + + color_type = COLOR_COLOR; + // start digitizer +#ifdef USE_FT5206 + FT5206_Touch_Init(Wire); +#endif + ili9488_init_done = true; + AddLog(LOG_LEVEL_INFO, PSTR("DSP: ILI9488")); } } +#ifdef USE_FT5206 +#ifdef USE_TOUCH_BUTTONS + +void ILI9488_RotConvert(int16_t *x, int16_t *y) { +int16_t temp; + if (renderer) { + uint8_t rot=renderer->getRotation(); + switch (rot) { + case 0: + temp=*y; + *y=renderer->height()-*x; + *x=temp; + break; + case 1: + break; + case 2: + break; + case 3: + temp=*y; + *y=*x; + *x=renderer->width()-temp; + break; + } + } +} + +// check digitizer hit +void ILI9488_CheckTouch(void) { + ili9488_ctouch_counter++; + if (2 == ili9488_ctouch_counter) { + // every 100 ms should be enough + ili9488_ctouch_counter = 0; + Touch_Check(ILI9488_RotConvert); + } +} +#endif // USE_TOUCH_BUTTONS +#endif // USE_FT5206 + + /*********************************************************************************************/ /*********************************************************************************************\ * Interface @@ -94,9 +151,9 @@ bool Xdsp08(uint8_t function) result = true; break; case FUNC_DISPLAY_EVERY_50_MSECOND: -#ifdef USE_FT5206 +#ifdef USE_TOUCH_BUTTONS if (FT5206_found) { - udisp_CheckTouch(); + ILI9488_CheckTouch(); } #endif break; @@ -105,7 +162,6 @@ bool Xdsp08(uint8_t function) return result; } -#endif // USE_UNIVERSAL_DISPLAY #endif // USE_DISPLAY_ILI9488 #endif // USE_DISPLAY #endif // USE_SPI diff --git a/tasmota/xdsp_08_ILI9488_UD.ino b/tasmota/xdsp_08_ILI9488_UD.ino new file mode 100644 index 000000000..743b59a9a --- /dev/null +++ b/tasmota/xdsp_08_ILI9488_UD.ino @@ -0,0 +1,111 @@ +/* + xdsp_08_ILI9488.ino - Display ILI9488 support for Tasmota + + Copyright (C) 2021 Theo Arends, Gerhard Mutz + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_SPI +#ifdef USE_DISPLAY +#ifdef USE_DISPLAY_ILI9488_UD +#ifdef USE_UNIVERSAL_DISPLAY + +#define XDSP_08 8 + +bool ili9488_init_done = false; + +Renderer *Init_uDisplay(const char *desc, int8_t cs); +void udisp_CheckTouch(void); + +/*********************************************************************************************/ + +const char ILI9488_DESC[] PROGMEM = +":H,ILI9488,480,320,16,SPI,1,*,*,*,*,*,*,*,10\n" +":S,2,1,1,0,40,20\n" +":I\n" +"E0,0F,00,03,09,08,16,0A,3F,78,4C,09,0A,08,16,1A,0F\n" +"E1,0F,00,16,19,03,0F,05,32,45,46,04,0E,0D,35,37,0F\n" +"C0,2,17,15\n" +"C1,1,41\n" +"C5,3,00,12,80\n" +"36,1,48\n" +"3A,1,66\n" +"B0,1,80\n" +"B1,1,A0\n" +"B4,1,02\n" +"B6,2,02,02\n" +"E9,1,00\n" +"F7,4,A9,51,2C,82\n" +"11,80\n" +"29,0\n" +":o,28\n" +":O,29\n" +":A,2A,2B,2C,16\n" +":R,36\n" +";:0,48,00,00,00\n" +":0,28,00,00,01\n" +":1,28,00,00,00\n" +":2,E8,00,00,03\n" +":3,88,00,00,02\n" +":P,18\n" +":i,20,21\n" +":TI1,38,*,*\n" +"#\n"; + +void ILI9488_InitDriver(void) { + if (PinUsed(GPIO_ILI9488_CS) && (TasmotaGlobal.spi_enabled & SPI_MOSI)) { + + renderer = Init_uDisplay(ILI9488_DESC, Pin(GPIO_ILI9488_CS)); + + if (!renderer) return; + + Settings.display_model = XDSP_08; + + ili9488_init_done = true; + } +} + +/*********************************************************************************************/ +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ +bool Xdsp08(uint8_t function) +{ + bool result = false; + + if (FUNC_DISPLAY_INIT_DRIVER == function) { + ILI9488_InitDriver(); + } + else if (ili9488_init_done && (XDSP_08 == Settings.display_model)) { + switch (function) { + case FUNC_DISPLAY_MODEL: + result = true; + break; + case FUNC_DISPLAY_EVERY_50_MSECOND: +#ifdef USE_FT5206 + if (FT5206_found) { + udisp_CheckTouch(); + } +#endif + break; + } + } + return result; +} + +#endif // USE_UNIVERSAL_DISPLAY +#endif // USE_DISPLAY_ILI9488 +#endif // USE_DISPLAY +#endif // USE_SPI diff --git a/tasmota/xdsp_08_ILI9488_org.ino b/tasmota/xdsp_08_ILI9488_org.ino deleted file mode 100644 index 3c7833ab4..000000000 --- a/tasmota/xdsp_08_ILI9488_org.ino +++ /dev/null @@ -1,169 +0,0 @@ -/* - xdsp_08_ILI9488.ino - Display ILI9488 support for Tasmota - - Copyright (C) 2021 Theo Arends, Gerhard Mutz - - 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 . -*/ - -#if 0 -#ifdef USE_SPI -#ifdef USE_DISPLAY -#ifdef USE_DISPLAY_ILI9488 - -#define XDSP_08 8 -#define XI2C_38 38 // See I2CDEVICES.md - -#define COLORED 1 -#define UNCOLORED 0 - -// using font 8 is opional (num=3) -// very badly readable, but may be useful for graphs -#define USE_TINY_FONT - - -#include -uint8_t ili9488_ctouch_counter = 0; -bool ili9488_init_done = false; - -// currently fixed -#define BACKPLANE_PIN 2 - -extern uint8_t color_type; -ILI9488 *ili9488; -extern const uint16_t picture[]; - -/*********************************************************************************************/ - -void ILI9488_InitDriver(void) { - if (PinUsed(GPIO_ILI9488_CS) && (TasmotaGlobal.spi_enabled & SPI_MOSI)) { - - Settings.display_model = XDSP_08; - - if (Settings.display_width != ILI9488_TFTWIDTH) { - Settings.display_width = ILI9488_TFTWIDTH; - } - if (Settings.display_height != ILI9488_TFTHEIGHT) { - Settings.display_height = ILI9488_TFTHEIGHT; - } - - // default colors - fg_color = ILI9488_WHITE; - bg_color = ILI9488_BLACK; - - int8_t bppin = BACKPLANE_PIN; - if (PinUsed(GPIO_BACKLIGHT)) { - bppin = Pin(GPIO_BACKLIGHT); - } - - // init renderer, must use hardware spi - ili9488 = new ILI9488(Pin(GPIO_ILI9488_CS), Pin(GPIO_SPI_MOSI), Pin(GPIO_SPI_CLK), bppin); - - ili9488->begin(); - renderer = ili9488; - renderer->DisplayInit(DISPLAY_INIT_MODE,Settings.display_size,Settings.display_rotate,Settings.display_font); - renderer->dim(Settings.display_dimmer); - -#ifdef SHOW_SPLASH - // Welcome text - renderer->setTextFont(2); - renderer->setTextColor(ILI9488_WHITE,ILI9488_BLACK); - renderer->DrawStringAt(50, 50, "ILI9488 TFT Display!", ILI9488_WHITE,0); - delay(1000); - - //renderer->drawRGBBitmap(100,100, picture,51,34); -#endif - - color_type = COLOR_COLOR; - // start digitizer -#ifdef USE_FT5206 - FT5206_Touch_Init(Wire); -#endif - - ili9488_init_done = true; - AddLog(LOG_LEVEL_INFO, PSTR("DSP: ILI9488")); - } -} - -#ifdef USE_FT5206 -#ifdef USE_TOUCH_BUTTONS - -void ILI9488_RotConvert(int16_t *x, int16_t *y) { -int16_t temp; - if (renderer) { - uint8_t rot=renderer->getRotation(); - switch (rot) { - case 0: - temp=*y; - *y=renderer->height()-*x; - *x=temp; - break; - case 1: - break; - case 2: - break; - case 3: - temp=*y; - *y=*x; - *x=renderer->width()-temp; - break; - } - } -} - -// check digitizer hit -void ILI9488_CheckTouch(void) { - ili9488_ctouch_counter++; - if (2 == ili9488_ctouch_counter) { - // every 100 ms should be enough - ili9488_ctouch_counter = 0; - Touch_Check(ILI9488_RotConvert); - } -} -#endif // USE_TOUCH_BUTTONS -#endif // USE_FT5206 - - -/*********************************************************************************************/ -/*********************************************************************************************\ - * Interface -\*********************************************************************************************/ -bool Xdsp08(uint8_t function) -{ - bool result = false; - - if (FUNC_DISPLAY_INIT_DRIVER == function) { - ILI9488_InitDriver(); - } - else if (ili9488_init_done && (XDSP_08 == Settings.display_model)) { - switch (function) { - case FUNC_DISPLAY_MODEL: - result = true; - break; - case FUNC_DISPLAY_EVERY_50_MSECOND: -#ifdef USE_TOUCH_BUTTONS - if (FT5206_found) { - ILI9488_CheckTouch(); - } -#endif - break; - } - } - return result; -} - -#endif // USE_DISPLAY_ILI9488 -#endif // USE_DISPLAY -#endif // USE_SPI -#endif From ed01748b6d8178fed652831ffb14d7c215042a3b Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 22 Apr 2021 14:49:38 +0200 Subject: [PATCH 05/97] Zigbee refactored storage for devices and data --- tasmota/my_user_config.h | 1 + tasmota/tasmota_configurations.h | 1 + tasmota/tasmota_globals.h | 3 +- tasmota/xdrv_23_zigbee_1_headers.ino | 12 +- tasmota/xdrv_23_zigbee_4_persistence.ino | 449 ---------------- tasmota/xdrv_23_zigbee_4a_nano_fs.ino | 256 ++++++++- ..._eeprom.ino => xdrv_23_zigbee_4b_data.ino} | 266 ++++------ tasmota/xdrv_23_zigbee_4c_devices.ino | 497 ++++++++++++++++++ tasmota/xdrv_23_zigbee_7_0_statemachine.ino | 10 +- tasmota/xdrv_23_zigbee_8_parsers.ino | 12 +- tasmota/xdrv_23_zigbee_A_impl.ino | 12 +- 11 files changed, 891 insertions(+), 628 deletions(-) delete mode 100644 tasmota/xdrv_23_zigbee_4_persistence.ino rename tasmota/{xdrv_23_zigbee_4b_eeprom.ino => xdrv_23_zigbee_4b_data.ino} (53%) create mode 100644 tasmota/xdrv_23_zigbee_4c_devices.ino diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index e046703dd..b7147058b 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -784,6 +784,7 @@ #define USE_ZIGBEE_ZNP // Enable ZNP protocol, needed for CC2530 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 #define USE_ZIGBEE_CHANNEL 11 // Zigbee Channel (11-26) #define USE_ZIGBEE_TXRADIO_DBM 20 // Tx Radio power in dBm (only for EZSP, EFR32 can go up to 20 dBm) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 0ee06c35d..54c953c80 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -607,6 +607,7 @@ #define USE_ZIGBEE #undef USE_ZIGBEE_ZNP #define USE_ZIGBEE_EZSP +#define USE_ZIGBEE_EEPROM // EEPROM of Sonoff ZBBridge via I2C #define USE_TCP_BRIDGE #define USE_ZIGBEE_CHANNEL 11 // Zigbee Channel (11-26) #define USE_ZIGBEE_COALESCE_ATTR_TIMER 350 // timer to coalesce attribute values (in ms) diff --git a/tasmota/tasmota_globals.h b/tasmota/tasmota_globals.h index 2eb37309d..bc0f9cd74 100644 --- a/tasmota/tasmota_globals.h +++ b/tasmota/tasmota_globals.h @@ -261,7 +261,8 @@ const uint16_t LOG_BUFFER_SIZE = 4000; // Max number of characters in lo #define TASM_FILE_DRIVER "/.drvset%03d" #define TASM_FILE_SENSOR "/.snsset%03d" #define TASM_FILE_TLSKEY "/tlskey" // TLS private key -#define TASM_FILE_ZIGBEE "/zb" // Zigbee settings blob as used by CC2530 on ESP32 +#define TASM_FILE_ZIGBEE "/zb" // Zigbee devices information blob +#define TASM_FILE_ZIGBEE_DATA "/zbdata" // Zigbee last known values of devices #define TASM_FILE_AUTOEXEC "/autoexec.bat" // Commands executed after restart #define TASM_FILE_CONFIG "/config.sys" // Settings executed after restart diff --git a/tasmota/xdrv_23_zigbee_1_headers.ino b/tasmota/xdrv_23_zigbee_1_headers.ino index ba01ded30..3e541aa7d 100644 --- a/tasmota/xdrv_23_zigbee_1_headers.ino +++ b/tasmota/xdrv_23_zigbee_1_headers.ino @@ -19,9 +19,9 @@ #ifdef USE_ZIGBEE -#ifdef USE_ZIGBEE_EZSP +#ifdef USE_ZIGBEE_EEPROM #include "Eeprom24C512.h" -#endif // USE_ZIGBEE_EZSP +#endif // USE_ZIGBEE_EEPROM // channels numbers for Zigbee radio energy scan #define USE_ZIGBEE_CHANNEL_MIN 11 @@ -100,9 +100,9 @@ const uint8_t ZIGBEE_LABEL_UNSUPPORTED_VERSION = 98; // Unsupported ZNP versio class ZigbeeStatus { public: ZigbeeStatus() -#ifdef USE_ZIGBEE_EZSP +#ifdef USE_ZIGBEE_EEPROM : eeprom(USE_ZIGBEE_ZBBRIDGE_EEPROM) -#endif // USE_ZIGBEE_EZSP +#endif // USE_ZIGBEE_EEPROM {} bool active = true; // is Zigbee active for this device, i.e. GPIOs configured @@ -142,9 +142,9 @@ public: uint16_t ezsp_version = 0; #endif -#ifdef USE_ZIGBEE_EZSP +#ifdef USE_ZIGBEE_EEPROM Eeprom24C512 eeprom; // takes only 1 bytes of RAM -#endif // USE_ZIGBEE_EZSP +#endif // USE_ZIGBEE_EEPROM }; struct ZigbeeStatus zigbee; SBuffer *zigbee_buffer = nullptr; diff --git a/tasmota/xdrv_23_zigbee_4_persistence.ino b/tasmota/xdrv_23_zigbee_4_persistence.ino deleted file mode 100644 index 8e29cc61c..000000000 --- a/tasmota/xdrv_23_zigbee_4_persistence.ino +++ /dev/null @@ -1,449 +0,0 @@ -/* - xdrv_23_zigbee.ino - zigbee support for Tasmota - - Copyright (C) 2021 Theo Arends and Stephan Hadinger - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifdef USE_ZIGBEE - -// Ensure persistence of devices into Flash -// -// Structure: -// (from file info): -// uint16 - start address in Flash (offset) -// uint16 - length in bytes (makes sure parsing stops) -// -// First byte: -// 0x00 - Empty or V3 format -// 0x01-0xFE - Legacy format -// 0xFF - invalid -// -// -// V1 Legacy -// ========= -// File structure: -// uint8 - number of devices, 0=none, 0xFF=invalid entry (probably Flash was erased) -// -// [Array of devices] -// [Offset = 2] -// uint8 - length of device record -// uint16 - short address -// uint64 - long IEEE address -// uint8 - number of endpoints -// [Array of endpoints] -// uint8 - endpoint number -// uint16 - profileID of the endpoint -// Array of uint8 - clusters In codes, 0xFF end marker -// Array of uint8 - clusters Out codes, 0xFF end marker -// -// str - ModelID (null terminated C string, 32 chars max) -// str - Manuf (null terminated C string, 32 chars max) -// str - FriendlyName (null terminated C string, 32 chars max) -// reserved for extensions -// -- V2 -- -// int8_t - zigbee profile of the device -// -// ======================= -// v3 with version number -// File structure: -// -// uint8 - number of devices, 0=none, 0xFF=invalid entry (probably Flash was erased) -// -// [Array of devices] -// [Offset = 2] -// uint8 - length of device record -// uint16 - short address -// uint64 - long IEEE address -// -// str - ModelID (null terminated C string, 32 chars max) -// str - Manuf (null terminated C string, 32 chars max) -// str - FriendlyName (null terminated C string, 32 chars max) -// -// [Array of endpoints] -// uint8 - endpoint number, 0xFF marks the end of endpoints -// uint8[] - list of configuration bytes, 0xFF marks the end -// i.e. 0xFF-0xFF marks the end of the array of endpoints -// - - -// Memory footprint -#ifdef ESP8266 -const static uint16_t z_spi_start_sector = 0xFF; // Force last bank of first MB -const static uint8_t* z_spi_start = (uint8_t*) 0x402FF000; // 0x402FF000 -const static uint8_t* z_dev_start = z_spi_start + 0x0800; // 0x402FF800 - 2KB -const static size_t z_spi_len = 0x1000; // 4kb blocks -const static size_t z_block_offset = 0x0800; -const static size_t z_block_len = 0x0800; // 2kb -#endif // ESP8266 -#ifdef ESP32 -uint8_t* z_dev_start; -const static size_t z_spi_len = 0x1000; // 4kb blocks -const static size_t z_block_offset = 0x0000; // No offset needed -const static size_t z_block_len = 0x1000; // 4kb -#endif // ESP32 - -// Each entry consumes 8 bytes -class Z_Flashentry { -public: - uint32_t name; // simple 4 letters name. Currently 'zig1', 'zig2'. 0xFFFFFFFF if not entry - uint16_t len; // len of object in bytes, 0xFFFF if no entry - uint16_t start; // address of start, 0xFFFF if empty, must be aligned on 128 bytes boundaries -}; - -class Z_Flashdirectory { -public: - // 8 bytes header - uint32_t magic; // magic value 'Tsmt' to check that the block is initialized - uint32_t clock; // clock vector to discard entries that are made before this one. This should be incremented by 1 for each new entry (future anti-weavering) - // entries, 14*8 = 112 bytes - Z_Flashentry entries[14]; - uint32_t name; // simple 4 letters name. Currently 'skey', 'crt ', 'crt1', 'crt2' - uint16_t len; // len of object - uint16_t reserved; // align on 4 bytes boundary - // link to next entry, none for now, but may be used for anti-weavering - uint16_t next_dir; // 0xFFFF if none - uint16_t reserved1; // must be 0xFFFF - uint32_t reserved2; // must be 0xFFFFFFFF -}; - - -const static uint32_t ZIGB_NAME1 = 0x3167697A; // 'zig1' little endian -const static uint32_t ZIGB_NAME2 = 0x3267697A; // 'zig2' little endian, v2 -const static uint32_t ZIGB_DATA2 = 0x32746164; // 'dat2' little endian, v2 -const static size_t Z_MAX_FLASH = z_block_len - sizeof(Z_Flashentry); // 2040 - -bool hibernateDeviceConfiguration(SBuffer & buf, const class Z_Data_Set & data, uint8_t endpoint) { - bool found = false; - for (auto & elt : data) { - if (endpoint == elt.getEndpoint()) { - buf.add8(elt.getConfigByte()); - found = true; - } - } - return found; -} - -SBuffer hibernateDevicev2(const struct Z_Device &device) { - SBuffer buf(128); - - buf.add8(0x00); // overall length, will be updated later - buf.add16(device.shortaddr); - buf.add64(device.longaddr); - - char *names[3] = { device.modelId, device.manufacturerId, device.friendlyName }; - - for (uint32_t i=0; i 32) { len = 32; } // max 32 chars - buf.addBuffer(p, len); - } - buf.add8(0x00); // end of string marker - } - - // check if we need to write fake endpoint 0x00 - buf.add8(0x00); - if (hibernateDeviceConfiguration(buf, device.data, 0)) { - buf.add8(0xFF); // end of configuration - } else { - buf.setLen(buf.len()-1); // remove 1 byte header - } - // scan endpoints - for (uint32_t i=0; i 48) { devices_size = 48; } // arbitrarily limit to 48 devices on ESP32, we will go beyond when we remove the limit of 2kb buffer -#else - if (devices_size > 32) { devices_size = 32; } // arbitrarily limit to 32 devices, for now -#endif - buf.add8(devices_size); // number of devices - - for (uint32_t i = 0; i < devices_size; i++) { - const Z_Device & device = zigbee_devices.devicesAt(i); - const SBuffer buf_device = hibernateDevicev2(device); - buf.addBuffer(buf_device); - } - - return buf; -} - -// parse a single string from the saved data -// if something wrong happens, returns nullptr to ignore the string -// Index d is incremented to just after the string -const char * hydrateSingleString(const SBuffer & buf, uint32_t *d) { - size_t s_len = buf.strlen(*d); - const char * ptr = s_len ? buf.charptr(*d) : ""; - *d += s_len + 1; - return ptr; -} - -void hydrateSingleDevice(const SBuffer & buf_d, uint32_t version = 2) { - uint32_t d = 1; // index in device buffer - uint16_t shortaddr = buf_d.get16(d); d += 2; - uint64_t longaddr = buf_d.get64(d); d += 8; - size_t buf_len = buf_d.len(); - Z_Device & device = zigbee_devices.updateDevice(shortaddr, longaddr); // update device's addresses - - if (1 == version) { - uint32_t endpoints = buf_d.get8(d++); - for (uint32_t j = 0; j < endpoints; j++) { - uint8_t ep = buf_d.get8(d++); - // uint16_t ep_profile = buf_d.get16(d); d += 2; - device.addEndpoint(ep); - - // in clusters - while (d < buf_len) { // safe guard against overflow - uint8_t ep_cluster = buf_d.get8(d++); - if (0xFF == ep_cluster) { break; } // end of block - // ignore - } - // out clusters - while (d < buf_len) { // safe guard against overflow - uint8_t ep_cluster = buf_d.get8(d++); - if (0xFF == ep_cluster) { break; } // end of block - // ignore - } - } - } - - // ModelId - device.setModelId(hydrateSingleString(buf_d, &d)); - - // ManufID - device.setManufId(hydrateSingleString(buf_d, &d)); - - // FriendlyName - device.setFriendlyName(hydrateSingleString(buf_d, &d)); - - if (d >= buf_len) { return; } - - // Hue bulbtype - if present - if (1 == version) { - device.setLightChannels(buf_d.get8(d)); - d++; - } else if (2 == version) { - // v2 parser - while (d < buf_len) { - uint8_t ep = buf_d.get8(d++); - if (0xFF == ep) { break; } // ep 0xFF marks the end of the endpoints - if (ep > 240) { ep = 0xFF; } // ep == 0xFF means ignore - device.addEndpoint(ep); // it will ignore invalid endpoints - while (d < buf_len) { - uint8_t config_type = buf_d.get8(d++); - if (0xFF == config_type) { break; } // 0xFF marks the end of congiguration - uint8_t config = config_type & 0x0F; - Z_Data_Type type = (Z_Data_Type) (config_type >> 4); - // set the configuration - if (ep != 0xFF) { - Z_Data & z_data = device.data.getByType(type, ep); - if (&z_data != nullptr) { - z_data.setConfig(config); - Z_Data_Set::updateData(z_data); - } - } - } - } - } -} - -void hydrateDevices(const SBuffer &buf, uint32_t version) { - uint32_t buf_len = buf.len(); - if (buf_len <= 10) { return; } - - uint32_t k = 0; // byte index in global buffer - uint32_t num_devices = buf.get8(k++); - for (uint32_t i = 0; (i < num_devices) && (k < buf_len); i++) { - uint32_t dev_record_len = buf.get8(k); - - SBuffer buf_d = buf.subBuffer(k, dev_record_len); - hydrateSingleDevice(buf_d, version); - - // next iteration - k += dev_record_len; - } -} - -// dump = true, only dump to logs, don't actually load -void loadZigbeeDevices(bool dump_only = false) { -#ifdef USE_ZIGBEE_EZSP - if (loadZigbeeDevicesFromEEPROM()) { - return; // we succesfully loaded from EEPROM, skip the read from Flash - } -#endif -#ifdef ESP32 - // first copy SPI buffer into ram - uint8_t *spi_buffer = (uint8_t*) malloc(z_spi_len); - if (!spi_buffer) { - AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Cannot allocate 4KB buffer")); - return; - } -#ifdef USE_UFILESYS - TfsLoadFile(TASM_FILE_ZIGBEE, spi_buffer, z_spi_len); -#endif - z_dev_start = spi_buffer; -#endif // ESP32 - Z_Flashentry flashdata; - memcpy_P(&flashdata, z_dev_start, sizeof(Z_Flashentry)); -// AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Memory %d"), ESP_getFreeHeap()); - // AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Zigbee signature in Flash: %08X - %d"), flashdata.name, flashdata.len); - - // Check the signature - if ( ((flashdata.name == ZIGB_NAME1) || (flashdata.name == ZIGB_NAME2)) - && (flashdata.len > 0)) { - uint16_t buf_len = flashdata.len; - uint32_t version = (flashdata.name == ZIGB_NAME2) ? 2 : 1; - // parse what seems to be a valid entry - SBuffer buf(buf_len); - buf.addBuffer(z_dev_start + sizeof(Z_Flashentry), buf_len); - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee device information in %s (%d bytes)"), PSTR("Flash"), buf_len); - - if (dump_only) { - size_t buf_len = buf.len(); - if (buf_len > 192) { buf_len = 192; } - AddLogBuffer(LOG_LEVEL_INFO, buf.getBuffer(), buf_len); - // Serial.printf(">> Buffer="); - // for (uint32_t i=0; i 2040) { - AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Buffer too big to fit in Flash (%d bytes)"), buf_len); - return; - } - - // first copy SPI buffer into ram - uint8_t *spi_buffer = (uint8_t*) malloc(z_spi_len); - if (!spi_buffer) { - AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Cannot allocate 4KB buffer")); - return; - } - // copy the flash into RAM to make local change, and write back the whole buffer -#ifdef ESP8266 - ESP.flashRead(z_spi_start_sector * SPI_FLASH_SEC_SIZE, (uint32_t*) spi_buffer, SPI_FLASH_SEC_SIZE); -#endif // ESP8266 -#ifdef ESP32 -#ifdef USE_UFILESYS - TfsLoadFile(TASM_FILE_ZIGBEE, spi_buffer, z_spi_len); -#endif -#endif // ESP32 - - Z_Flashentry *flashdata = (Z_Flashentry*)(spi_buffer + z_block_offset); - flashdata->name = ZIGB_NAME2; // v2 - flashdata->len = buf_len; - flashdata->start = 0; - - memcpy(spi_buffer + z_block_offset + sizeof(Z_Flashentry), buf.getBuffer(), buf_len); - - // buffer is now ready, write it back -#ifdef ESP8266 - if (ESP.flashEraseSector(z_spi_start_sector)) { - ESP.flashWrite(z_spi_start_sector * SPI_FLASH_SEC_SIZE, (uint32_t*) spi_buffer, SPI_FLASH_SEC_SIZE); - } - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data store in Flash (0x%08X - %d bytes)"), z_dev_start, buf_len); -#endif // ESP8266 -#ifdef ESP32 -#ifdef USE_UFILESYS - TfsSaveFile(TASM_FILE_ZIGBEE, spi_buffer, z_spi_len); -#endif - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data saved in %s (%d bytes)"), PSTR("Flash"), buf_len); -#endif // ESP32 - free(spi_buffer); -} - -// Erase the flash area containing the ZigbeeData -void eraseZigbeeDevices(void) { - zigbee_devices.clean(); // avoid writing data to flash after erase -#ifdef USE_ZIGBEE_EZSP - ZFS_Erase(); -#endif // USE_ZIGBEE_EZSP -#ifdef ESP8266 - // first copy SPI buffer into ram - uint8_t *spi_buffer = (uint8_t*) malloc(z_spi_len); - if (!spi_buffer) { - AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Cannot allocate 4KB buffer")); - return; - } - // copy the flash into RAM to make local change, and write back the whole buffer - ESP.flashRead(z_spi_start_sector * SPI_FLASH_SEC_SIZE, (uint32_t*) spi_buffer, SPI_FLASH_SEC_SIZE); - - // Fill the Zigbee area with 0xFF - memset(spi_buffer + z_block_offset, 0xFF, z_block_len); - - // buffer is now ready, write it back - if (ESP.flashEraseSector(z_spi_start_sector)) { - ESP.flashWrite(z_spi_start_sector * SPI_FLASH_SEC_SIZE, (uint32_t*) spi_buffer, SPI_FLASH_SEC_SIZE); - } - - free(spi_buffer); - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data erased in %s"), PSTR("Flash")); -#endif // ESP8266 -#ifdef ESP32 -#ifdef USE_UFILESYS - TfsInitFile(TASM_FILE_ZIGBEE, z_block_len, 0xFF); -#endif - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data erased (%d bytes)"), z_block_len); -#endif // ESP32 -} - -void restoreDumpAllDevices(void) { - for (const auto & device : zigbee_devices.getDevices()) { - const SBuffer buf = hibernateDevicev2(device); - if (buf.len() > 0) { - Response_P(PSTR("{\"" D_PRFX_ZB D_CMND_ZIGBEE_RESTORE "\":\"ZbRestore %_B\"}"), &buf); - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_PRFX_ZB D_CMND_ZIGBEE_DATA)); - } - } -} - -#endif // USE_ZIGBEE diff --git a/tasmota/xdrv_23_zigbee_4a_nano_fs.ino b/tasmota/xdrv_23_zigbee_4a_nano_fs.ino index 54cbb3b54..488ba2fca 100644 --- a/tasmota/xdrv_23_zigbee_4a_nano_fs.ino +++ b/tasmota/xdrv_23_zigbee_4a_nano_fs.ino @@ -18,10 +18,23 @@ */ #ifdef USE_ZIGBEE -#ifdef USE_ZIGBEE_EZSP // #define Z_EEPROM_DEBUG + +const static uint32_t ZIGB_NAME1 = 0x3167697A; // 'zig1' little endian +const static uint32_t ZIGB_NAME2 = 0x3267697A; // 'zig2' little endian, v2 +const static uint32_t ZIGB_DATA2 = 0x32746164; // 'dat2' little endian, v2 +extern FS *dfsp; +extern "C" uint32_t _FS_end; +// Is it ok to write to bank 0x402FF000 +bool flash_valid(void) { + return (_FS_end > 0x40280000) && (_FS_end < 0x402FF000); +} + +void hydrateSingleDevice(const SBuffer & buf_d); + +#ifdef USE_ZIGBEE_EEPROM // The EEPROM is 64KB in size with individually writable bytes. // They are conveniently organized in pages of 128 bytes to accelerate // data transfer, but unlike flash memory, you don't need to erase an entire page. @@ -243,7 +256,11 @@ public: uint8_t blk_start; // if 0x00 then file does not exist uint8_t entry_idx; // entry number in the directory - ZFS_Write_File(uint32_t _name) : name(_name), cursor(0), length(0), blk_start(0) { findOrCreate(); } + ZFS_Write_File(void) : name(0), cursor(0), length(0), blk_start(0) {} + void init(uint32_t _name) { + name = _name; + findOrCreate(); + } inline bool valid(void) const { return blk_start != 0; } // does the file exist? @@ -453,5 +470,238 @@ int32_t ZFS_Write_File::close(void) { return length; } -#endif // USE_ZIGBEE_EZSP + +#endif // USE_ZIGBEE_EEPROM + + +/*********************************************************************************************\ + * + * Generic for Reading a file + * + * Can work in 3 modes: + * - if passed a filename, use the ZFS for EEPROM nano-fs + * - if passed a File* object, use this object + * - if passed a buffer, read from a binary buffer in RAM +\*********************************************************************************************/ + +class Univ_Read_File { +public: + // file info + uint16_t len = 0; + uint16_t cursor = 0; + bool is_valid = false; + + Univ_Read_File(void) {} + + // == EEPROM ================================================ +#ifdef USE_ZIGBEE_EEPROM + uint32_t eeprom_name = 0; + ZFS_File_Entry entry; + // uint16_t length; + // uint8_t blk_start; // if 0x00 then file does not exist + uint8_t entry_idx; // entry number in the directory + + void init(uint32_t _name) { + eeprom_name = _name; + if (ZFS::findFileEntry(eeprom_name, entry, &entry_idx)) { + len = ZFS::getLength(eeprom_name); + is_valid = (len > 0); + } + } +#endif // USE_ZIGBEE_EEPROM + + // == File ================================================ +#ifdef USE_UFILESYS + File * file = nullptr; + + void init(File * _file) { + file = _file; + is_valid = (bool) *file; + len = file->size(); + } +#endif + +#ifdef ESP8266 + // == Buffer ================================================ + // binary buffer + const uint8_t * buffer = nullptr; + void init(const uint8_t * buf, size_t buflen) { + buffer = buf; + len = buflen; + is_valid = (buffer != nullptr) && (len > 0); + } +#endif // ESP8266 + + + // ================================================== + inline bool valid(void) const { return is_valid; } // does the file exist? + + int32_t readBytes(uint8_t* buf, size_t buflen); + void close(void); +}; + +void Univ_Read_File::close(void) { +#ifdef USE_UFILESYS + if (file != nullptr) { + file->close(); + } +#endif // USE_UFILESYS + // don't do anything for ZFS read of buffer +} + +int32_t Univ_Read_File::readBytes(uint8_t* buf, size_t btr) { + if (!is_valid) { return -1; } +#ifdef USE_UFILESYS + if (file != nullptr) { + return file->read(buf, btr); + } +#endif // USE_UFILESYS +#ifdef USE_ZIGBEE_EEPROM + if (eeprom_name != 0) { + int32_t bytes_read = ZFS::readBytes(eeprom_name, buf, btr, cursor, btr); + if (bytes_read < 0) { return -1; } + cursor += bytes_read; + return bytes_read; + } +#endif // USE_ZIGBEE_EEPROM + +#ifdef ESP8266 + // binary buffer + if (buffer != nullptr) { + if (btr > len - cursor) { btr = len - cursor; } + memcpy_P(buf, buffer + cursor, btr); + cursor += btr; + return btr; + } +#endif // ESP8266 + + return -1; +} + + +/*********************************************************************************************\ + * + * Generic for Writing a file + * + * Can work in 3 modes: + * - if passed a filename, use the ZFS for EEPROM nano-fs + * - if passed a File* object, use this object + * - if passed a buffer, write to a binary buffer in RAM +\*********************************************************************************************/ + +class Univ_Write_File { +public: + // file info + bool is_valid = false; + + Univ_Write_File(void) {} + + // == EEPROM ================================================ +#ifdef USE_ZIGBEE_EEPROM + ZFS_Write_File eeprom_file; + + void init(uint32_t _name) { + eeprom_file.init(_name); + is_valid = eeprom_file.valid(); + } +#endif // USE_ZIGBEE_EEPROM + + // == File ================================================ +#ifdef USE_UFILESYS + File * file = nullptr; + + void init(File * _file) { + file = _file; + is_valid = (bool) *file; + } +#endif + +#ifdef ESP8266 + // == Buffer ================================================ + // binary buffer + size_t buflen = 0; + uint8_t * buffer = nullptr; + uint16_t cursor = 0; + void init(uint8_t * buf, size_t _buflen) { + buffer = buf; + buflen = _buflen; + is_valid = (buffer != nullptr) && (buflen > 0); + } +#endif // ESP8266 + + // ================================================== + inline bool valid(void) const { return is_valid; } // does the file exist? + + int32_t writeBytes(uint8_t* buf, size_t buflen); + int32_t getCursor(void); + void close(void); +}; + +void Univ_Write_File::close(void) { +#ifdef USE_UFILESYS + if (file != nullptr) { + file->close(); + } +#endif // USE_UFILESYS +#ifdef USE_ZIGBEE_EEPROM + if (eeprom_file.valid()) { + eeprom_file.close(); + } +#endif // USE_ZIGBEE_EEPROM + // binary buffer doesn't need a close +} + +int32_t Univ_Write_File::getCursor(void) { + if (!is_valid) { return -1; } + +#ifdef USE_UFILESYS + if (file != nullptr) { + return file->position(); + } +#endif // USE_UFILESYS +#ifdef USE_ZIGBEE_EEPROM + if (eeprom_file.valid()) { + return eeprom_file.length; + } +#endif // USE_ZIGBEE_EEPROM + +#ifdef ESP8266 + if (buffer != nullptr) { + return cursor; + } +#endif // ESP8266 + + return -1; +} + +int32_t Univ_Write_File::writeBytes(uint8_t* buf, size_t btw) { + if (!is_valid) { return -1; } + +#ifdef USE_UFILESYS + if (file != nullptr) { + return file->write(buf, btw); + } +#endif // USE_UFILESYS +#ifdef USE_ZIGBEE_EEPROM + if (eeprom_file.valid()) { + uint16_t length_before = eeprom_file.length; + eeprom_file.addBytes(buf, btw); + return eeprom_file.length - length_before; // compute the increase in size + } +#endif // USE_ZIGBEE_EEPROM + +#ifdef ESP8266 + if (buffer != nullptr) { + // binary buffer + if (btw > buflen - cursor) { btw = buflen - cursor; } + memcpy_P(buffer + cursor, buf, btw); + cursor += btw; + return btw; + } +#endif // ESP8266 + + return -1; +} + + #endif // USE_ZIGBEE diff --git a/tasmota/xdrv_23_zigbee_4b_eeprom.ino b/tasmota/xdrv_23_zigbee_4b_data.ino similarity index 53% rename from tasmota/xdrv_23_zigbee_4b_eeprom.ino rename to tasmota/xdrv_23_zigbee_4b_data.ino index b42b26a75..080afe8a2 100644 --- a/tasmota/xdrv_23_zigbee_4b_eeprom.ino +++ b/tasmota/xdrv_23_zigbee_4b_data.ino @@ -74,14 +74,14 @@ bool hydrateDeviceData(class Z_Device & device, const SBuffer & buf, size_t star // negative means error // positive is the segment length -int32_t hydrateSingleDevice(const SBuffer & buf, size_t start, size_t len) { - uint8_t segment_len = buf.get8(start); - if ((segment_len < 4) || (start + segment_len > len)) { +int32_t hydrateSingleDeviceData(const SBuffer & buf) { + uint8_t segment_len = buf.len(); + if (segment_len < 4) { AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "invalid segment_len=%d"), segment_len); return -1; } // read shortaddr - uint16_t shortaddr = buf.get16(start + 1); + uint16_t shortaddr = buf.get16(0); if (shortaddr >= 0xFFF0) { AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "invalid shortaddr=0x%04X"), shortaddr); return -1; @@ -89,7 +89,7 @@ int32_t hydrateSingleDevice(const SBuffer & buf, size_t start, size_t len) { #ifdef Z_EEPROM_DEBUG { if (segment_len > 3) { - AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "ZbData 0x%04X,%*_H"), shortaddr, segment_len+1-3, buf.buf(start+3)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "ZbData 0x%04X,%*_H"), shortaddr, buf.buf(2), buf.len() - 2); } } #endif @@ -98,62 +98,14 @@ int32_t hydrateSingleDevice(const SBuffer & buf, size_t start, size_t len) { if (&device != nullptr) { // parse the rest - bool ret = hydrateDeviceData(device, buf, start + 3, segment_len - 3); + bool ret = hydrateDeviceData(device, buf, 2, segment_len - 2); if (!ret) { return -1; } } - return segment_len + 1; + return segment_len; } -/*********************************************************************************************\ - * - * Hydrate data from the EEPROM - * -\*********************************************************************************************/ -// Parse the entire blob -// return true if ok -bool hydrateDevicesDataFromEEPROM(void) { -#ifdef USE_ZIGBEE_EZSP - if (!zigbee.eeprom_ready) { return false; } - int32_t file_length = ZFS::getLength(ZIGB_DATA2); - if (file_length > 0) { - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee device data in EEPROM (%d bytes)"), file_length); - } else { - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "No Zigbee device data in EEPROM")); - return false; - } - - const uint16_t READ_BUFFER = 192; - uint16_t cursor = 0x0000; // cursor in the file - bool read_more = true; - - SBuffer buf(READ_BUFFER); - while (read_more) { - buf.setLen(buf.size()); // set to max size and fill with zeros - int32_t bytes_read = ZFS::readBytes(ZIGB_DATA2, buf.getBuffer(), buf.size(), cursor, READ_BUFFER); -// #ifdef Z_EEPROM_DEBUG -// AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "readBytes buffer_len=%d, read_start=%d, read_len=%d, actual_read=%d"), buf.size(), cursor, length, bytes_read); -// #endif - if (bytes_read > 0) { - buf.setLen(bytes_read); // adjust to actual size - int32_t segment_len = hydrateSingleDevice(buf, 0, buf.len()); -// #ifdef Z_EEPROM_DEBUG -// AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "hydrateSingleDevice segment_len=%d"), segment_len); -// #endif - if (segment_len <= 0) { return false; } - - cursor += segment_len; - } else { - read_more = false; - } - } - return true; -#else // USE_ZIGBEE_EZSP - return false; -#endif // USE_ZIGBEE_EZSP -} - -SBuffer hibernateDeviceData(const struct Z_Device & device, bool mqtt = false) { +SBuffer hibernateDeviceData(const struct Z_Device & device) { SBuffer buf(192); // If we have zero information about the device, just skip ir @@ -183,45 +135,128 @@ SBuffer hibernateDeviceData(const struct Z_Device & device, bool mqtt = false) { { // skip first 3 bytes size_t buf_len = buf.len() - 3; - - if (mqtt) { - Response_P(PSTR("{\"" D_PRFX_ZB D_CMND_ZIGBEE_DATA "\":\"ZbData 0x%04X,%*_H\"}"), device.shortaddr, buf_len, buf.buf(3)); - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_PRFX_ZB D_CMND_ZIGBEE_DATA)); - } else { - AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "ZbData 0x%04X,%*_H"), device.shortaddr, buf_len, buf.buf(3)); - } + Response_P(PSTR("{\"" D_PRFX_ZB D_CMND_ZIGBEE_DATA "\":\"ZbData 0x%04X,%*_H\"}"), device.shortaddr, buf_len, buf.buf(3)); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_PRFX_ZB D_CMND_ZIGBEE_DATA)); } } return buf; } +/*********************************************************************************************\ + * + * Hydrate data from the EEPROM + * +\*********************************************************************************************/ +// Parse the entire blob +// return true if ok +bool hydrateDevicesData(void) { + Univ_Read_File f; // universal reader + const char * storage_class = PSTR(""); +#ifdef USE_ZIGBEE_EEPROM + if (zigbee.eeprom_ready) { + f.init(ZIGB_DATA2); + storage_class = PSTR("EEPROM"); + } +#endif // USE_ZIGBEE_EEPROM + +#ifdef USE_UFILESYS + File file; + if (!f.valid() && dfsp) { + file = dfsp->open(TASM_FILE_ZIGBEE_DATA, "r"); + if (file) { + f.init(&file); + storage_class = PSTR("File System"); + } + } +#endif // USE_UFILESYS + + if (!f.valid() || f.len <= 0) { + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "No Zigbee device data")); + return false; + } + + uint32_t file_len = f.len; + + if (file_len > 0) { + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee device data in %s (%d bytes)"), storage_class, file_len); + } else { + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "No Zigbee device data in %s"), storage_class); + f.close(); + return false; + } + + while (1) { + uint8_t dev_record_len = 0; + int32_t ret = f.readBytes(&dev_record_len, sizeof(dev_record_len)); + if (ret <= 0) { + break; // finished + } + + SBuffer buf(dev_record_len); + buf.setLen(dev_record_len); + + ret = f.readBytes(buf.getBuffer(), dev_record_len); + if (ret != dev_record_len) { + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Invalid device data information, aborting")); + f.close(); + return false; + } + int32_t segment_len = hydrateSingleDeviceData(buf); + if (segment_len <= 0) { + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Invalid device data information, aborting")); + f.close(); + return false; + } + } + f.close(); + return true; +} + /*********************************************************************************************\ * * Hibernate data to the EEPROM * \*********************************************************************************************/ void hibernateAllData(void) { -#ifdef USE_ZIGBEE_EZSP if (Rtc.utc_time < START_VALID_TIME) { return; } - if (!zigbee.eeprom_ready) { return; } + Univ_Write_File f; + const char * storage_class = PSTR(""); - ZFS_Write_File write_data(ZIGB_DATA2); - // first prefix is number of devices - uint8_t device_num = zigbee_devices.devicesSize(); +#ifdef USE_ZIGBEE_EEPROM + if (!f.valid() && zigbee.eeprom_ready) { + f.init(ZIGB_DATA2); + storage_class = PSTR("EEPROM"); + } +#endif - for (const auto & device : zigbee_devices.getDevices()) { - // allocte a buffer for a single device - SBuffer buf = hibernateDeviceData(device, false); // simple log, no mqtt - if (buf.len() > 0) { - write_data.addBytes(buf.getBuffer(), buf.len()); +#ifdef USE_UFILESYS + File file; + if (!f.valid() && dfsp) { + file = dfsp->open(TASM_FILE_ZIGBEE_DATA, "w"); + if (file) { + f.init(&file); + storage_class = PSTR("File System"); } } - int32_t ret = write_data.close(); -#ifdef Z_EEPROM_DEBUG - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "ZbData - %d bytes written to EEPROM"), ret); #endif -#endif // USE_ZIGBEE_EZSP + + if (f.valid()) { + // first prefix is number of devices + uint8_t device_num = zigbee_devices.devicesSize(); + + for (const auto & device : zigbee_devices.getDevices()) { + // allocte a buffer for a single device + SBuffer buf = hibernateDeviceData(device); + if (buf.len() > 0) { + f.writeBytes(buf.getBuffer(), buf.len()); + } + } + size_t buf_len = f.getCursor(); + f.close(); + + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "ZbData - %d bytes written to %s"), buf_len, storage_class); + } } /*********************************************************************************************\ @@ -232,86 +267,17 @@ const uint32_t Z_SAVE_DATA_TIMER = 60 * 60 * 1000; // save data every 60 m // // Callback for setting the timer to save Zigbee Data in x seconds // -int32_t Z_Set_Save_Data_Timer_EEPROM(uint8_t value) { +int32_t Z_Set_Save_Data_Timer(uint8_t value) { zigbee_devices.setTimer(0x0000, 0, Z_SAVE_DATA_TIMER, 0, 0, Z_CAT_ALWAYS, 0 /* value */, &Z_SaveDataTimer); return 0; // continue } void Z_SaveDataTimer(uint16_t shortaddr, uint16_t groupaddr, uint16_t cluster, uint8_t endpoint, uint32_t value) { hibernateAllData(); - Z_Set_Save_Data_Timer_EEPROM(0); // set a new timer -} - -#ifdef USE_ZIGBEE_EZSP -/*********************************************************************************************\ - * Write Devices in EEPROM -\*********************************************************************************************/ -// EEPROM variant that writes one item at a time and is not limited to 2KB -bool hibernateDevicesInEEPROM(void) { - if (Rtc.utc_time < START_VALID_TIME) { return false; } - if (!zigbee.eeprom_ready) { return false; } - - ZFS_Write_File write_data(ZIGB_NAME2); - - // first prefix is number of devices - uint8_t devices_size = zigbee_devices.devicesSize(); - if (devices_size > 64) { devices_size = 64; } // arbitrarily limit to 64 devices in EEPROM instead of 32 in Flash - write_data.addBytes(&devices_size, sizeof(devices_size)); - - for (const auto & device : zigbee_devices.getDevices()) { - const SBuffer buf = hibernateDevicev2(device); - if (buf.len() > 0) { - write_data.addBytes(buf.getBuffer(), buf.len()); - } - } - int32_t ret = write_data.close(); - - if (ret < 0) { - AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Error writing Devices to EEPROM")); - return false; - } else { - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data saved in %s (%d bytes)"), PSTR("EEPROM"), ret); - } - return true; -} - - -// dump = true, only dump to logs, don't actually load -bool loadZigbeeDevicesFromEEPROM(void) { - if (!zigbee.eeprom_ready) { return false; } - uint16_t file_len = ZFS::getLength(ZIGB_NAME2); - - uint8_t num_devices = 0; - ZFS::readBytes(ZIGB_NAME2, &num_devices, sizeof(num_devices), 0, sizeof(num_devices)); - - if ((file_len < 10) || (num_devices == 0x00) || (num_devices == 0xFF)) { // No data - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "No Zigbee device information in %s"), PSTR("EEPROM")); - return false; - } - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee device information in %s (%d bytes)"), PSTR("EEPROM"), file_len); - - uint32_t k = 1; // byte index in global buffer - for (uint32_t i = 0; (i < num_devices) && (k < file_len); i++) { - uint8_t dev_record_len = 0; - int32_t ret = ZFS::readBytes(ZIGB_NAME2, &dev_record_len, 1, k, 1); - SBuffer buf(dev_record_len); - buf.setLen(dev_record_len); - ret = ZFS::readBytes(ZIGB_NAME2, buf.getBuffer(), dev_record_len, k, dev_record_len); - if (ret != dev_record_len) { - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "File too short when reading EEPROM")); - return false; - } - - hydrateSingleDevice(buf, 2); - - // next iteration - k += dev_record_len; - } - - zigbee_devices.clean(); // don't write back to Flash what we just loaded - return true; + Z_Set_Save_Data_Timer(0); // set a new timer } +#ifdef USE_ZIGBEE_EEPROM void ZFS_Erase(void) { if (zigbee.eeprom_present) { ZFS::erase(); @@ -319,6 +285,6 @@ void ZFS_Erase(void) { } } -#endif // USE_ZIGBEE_EZSP +#endif // USE_ZIGBEE_EEPROM #endif // USE_ZIGBEE diff --git a/tasmota/xdrv_23_zigbee_4c_devices.ino b/tasmota/xdrv_23_zigbee_4c_devices.ino new file mode 100644 index 000000000..b87f4e0e1 --- /dev/null +++ b/tasmota/xdrv_23_zigbee_4c_devices.ino @@ -0,0 +1,497 @@ +/* + xdrv_23_zigbee.ino - zigbee support for Tasmota + + Copyright (C) 2021 Theo Arends and Stephan Hadinger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_ZIGBEE + +// Ensure persistence of devices into Flash +// +// Structure: +// (from file info): +// uint16 - start address in Flash (offset) +// uint16 - length in bytes (makes sure parsing stops) +// +// First byte: +// 0x00 - Empty or V3 format +// 0x01-0xFE - Legacy format +// 0xFF - invalid +// +// +// V1 Legacy +// ========= +// File structure: +// uint8 - number of devices, 0=none, 0xFF=invalid entry (probably Flash was erased) +// +// [Array of devices] +// [Offset = 2] +// uint8 - length of device record +// uint16 - short address +// uint64 - long IEEE address +// uint8 - number of endpoints +// [Array of endpoints] +// uint8 - endpoint number +// uint16 - profileID of the endpoint +// Array of uint8 - clusters In codes, 0xFF end marker +// Array of uint8 - clusters Out codes, 0xFF end marker +// +// str - ModelID (null terminated C string, 32 chars max) +// str - Manuf (null terminated C string, 32 chars max) +// str - FriendlyName (null terminated C string, 32 chars max) +// reserved for extensions +// -- V2 -- +// int8_t - zigbee profile of the device +// +// ======================= +// v3 with version number +// File structure: +// +// uint8 - number of devices, 0=none, 0xFF=invalid entry (probably Flash was erased) +// +// [Array of devices] +// [Offset = 2] +// uint8 - length of device record +// uint16 - short address +// uint64 - long IEEE address +// +// str - ModelID (null terminated C string, 32 chars max) +// str - Manuf (null terminated C string, 32 chars max) +// str - FriendlyName (null terminated C string, 32 chars max) +// +// [Array of endpoints] +// uint8 - endpoint number, 0xFF marks the end of endpoints +// uint8[] - list of configuration bytes, 0xFF marks the end +// i.e. 0xFF-0xFF marks the end of the array of endpoints +// + + +// Memory footprint +#ifdef ESP8266 +const static uint16_t z_spi_start_sector = 0xFF; // Force last bank of first MB +const static uint8_t* z_spi_start = (uint8_t*) 0x402FF000; // 0x402FF000 +const static uint8_t* z_dev_start = z_spi_start + 0x0800; // 0x402FF800 - 2KB +const static size_t z_spi_len = 0x1000; // 4kb blocks +const static size_t z_block_offset = 0x0800; +const static size_t z_block_len = 0x0800; // 2kb +#endif // ESP8266 +#ifdef ESP32 +uint8_t* z_dev_start; +const static size_t z_spi_len = 0x1000; // 4kb blocks +const static size_t z_block_offset = 0x0000; // No offset needed +const static size_t z_block_len = 0x1000; // 4kb +#endif // ESP32 + +// Each entry consumes 8 bytes +class Z_Flashentry { +public: + uint32_t name; // simple 4 letters name. Currently 'zig1', 'zig2'. 0xFFFFFFFF if not entry + uint16_t len; // len of object in bytes, 0xFFFF if no entry + uint16_t start; // address of start, 0xFFFF if empty, must be aligned on 128 bytes boundaries +}; + +class Z_Flashdirectory { +public: + // 8 bytes header + uint32_t magic; // magic value 'Tsmt' to check that the block is initialized + uint32_t clock; // clock vector to discard entries that are made before this one. This should be incremented by 1 for each new entry (future anti-weavering) + // entries, 14*8 = 112 bytes + Z_Flashentry entries[14]; + uint32_t name; // simple 4 letters name. Currently 'skey', 'crt ', 'crt1', 'crt2' + uint16_t len; // len of object + uint16_t reserved; // align on 4 bytes boundary + // link to next entry, none for now, but may be used for anti-weavering + uint16_t next_dir; // 0xFFFF if none + uint16_t reserved1; // must be 0xFFFF + uint32_t reserved2; // must be 0xFFFFFFFF +}; + +const static size_t Z_MAX_FLASH = z_block_len - sizeof(Z_Flashentry); // 2040 + +bool hibernateDeviceConfiguration(SBuffer & buf, const class Z_Data_Set & data, uint8_t endpoint) { + bool found = false; + for (auto & elt : data) { + if (endpoint == elt.getEndpoint()) { + buf.add8(elt.getConfigByte()); + found = true; + } + } + return found; +} + +/*********************************************************************************************\ + * hibernateDevice + * + * Transforms a single device into a SBuffer binary representation. + * Only supports v2 (not the legacy old one long forgotten) +\*********************************************************************************************/ +SBuffer hibernateDevice(const struct Z_Device &device) { + SBuffer buf(128); + + buf.add8(0x00); // overall length, will be updated later + buf.add16(device.shortaddr); + buf.add64(device.longaddr); + + char *names[3] = { device.modelId, device.manufacturerId, device.friendlyName }; + + for (uint32_t i=0; i 32) { len = 32; } // max 32 chars + buf.addBuffer(p, len); + } + buf.add8(0x00); // end of string marker + } + + // check if we need to write fake endpoint 0x00 + buf.add8(0x00); + if (hibernateDeviceConfiguration(buf, device.data, 0)) { + buf.add8(0xFF); // end of configuration + } else { + buf.setLen(buf.len()-1); // remove 1 byte header + } + // scan endpoints + for (uint32_t i=0; i 250) { devices_size = 250; } // arbitrarily limit to 250 devices in EEPROM instead of 32 in Flash + write_data.writeBytes(&devices_size, sizeof(devices_size)); + + for (const auto & device : zigbee_devices.getDevices()) { + const SBuffer buf = hibernateDevice(device); + if (buf.len() > 0) { + int32_t ret = write_data.writeBytes(buf.getBuffer(), buf.len()); + if (ret != buf.len()) { + AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Error writing Devices, written = %d, expected = %d"), ret, buf.len()); + return false; + } + } + } + return true; +} + +// parse a single string from the saved data +// if something wrong happens, returns nullptr to ignore the string +// Index d is incremented to just after the string +const char * hydrateSingleString(const SBuffer & buf, uint32_t *d) { + size_t s_len = buf.strlen(*d); + const char * ptr = s_len ? buf.charptr(*d) : ""; + *d += s_len + 1; + return ptr; +} + +/*********************************************************************************************\ + * hydrateSingleDevice + * + * Transforms a binary representation to a Zigbee device + * Supports only v2 +\*********************************************************************************************/ +void hydrateSingleDevice(const SBuffer & buf_d) { + uint32_t d = 1; // index in device buffer + uint16_t shortaddr = buf_d.get16(d); d += 2; + uint64_t longaddr = buf_d.get64(d); d += 8; + size_t buf_len = buf_d.len(); + Z_Device & device = zigbee_devices.updateDevice(shortaddr, longaddr); // update device's addresses + + // ModelId + device.setModelId(hydrateSingleString(buf_d, &d)); + + // ManufID + device.setManufId(hydrateSingleString(buf_d, &d)); + + // FriendlyName + device.setFriendlyName(hydrateSingleString(buf_d, &d)); + + if (d >= buf_len) { return; } + + // Hue bulbtype - if present + while (d < buf_len) { + uint8_t ep = buf_d.get8(d++); + if (0xFF == ep) { break; } // ep 0xFF marks the end of the endpoints + if (ep > 240) { ep = 0xFF; } // ep == 0xFF means ignore + device.addEndpoint(ep); // it will ignore invalid endpoints + while (d < buf_len) { + uint8_t config_type = buf_d.get8(d++); + if (0xFF == config_type) { break; } // 0xFF marks the end of congiguration + uint8_t config = config_type & 0x0F; + Z_Data_Type type = (Z_Data_Type) (config_type >> 4); + // set the configuration + if (ep != 0xFF) { + Z_Data & z_data = device.data.getByType(type, ep); + if (&z_data != nullptr) { + z_data.setConfig(config); + Z_Data_Set::updateData(z_data); + } + } + } + } +} + +/*********************************************************************************************\ + * loadZigbeeDevices + * + * Load device configuration from storage. + * Order of storage for loading is: 1/ EEPROM 2/ File system 3/ Flash (ESP8266 only) +\*********************************************************************************************/ +// dump = true, only dump to logs, don't actually load +bool loadZigbeeDevices(void) { + Univ_Read_File f; // universal reader + const char * storage_class = PSTR(""); + +#ifdef USE_ZIGBEE_EEPROM + if (zigbee.eeprom_ready) { + f.init(ZIGB_NAME2); + storage_class = PSTR("EEPROM"); + } +#endif // USE_ZIGBEE_EEPROM + +#ifdef USE_UFILESYS + File file; + if (!f.valid() && dfsp) { + file = dfsp->open(TASM_FILE_ZIGBEE, "r"); + if (file) { + f.init(&file); + storage_class = PSTR("File System"); + } + } +#endif // USE_UFILESYS + +#ifdef ESP8266 + if (!f.valid() && flash_valid()) { + // Read binary data from Flash + + Z_Flashentry flashdata; + memcpy_P(&flashdata, z_dev_start, sizeof(Z_Flashentry)); + // AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "z_dev_start %p"), z_dev_start); + AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Zigbee signature in Flash: %08X - %d"), flashdata.name, flashdata.len); + + // Check the signature + if ( ((flashdata.name == ZIGB_NAME1) || (flashdata.name == ZIGB_NAME2)) + && (flashdata.len > 0)) { + uint16_t buf_len = flashdata.len; + // uint32_t version = (flashdata.name == ZIGB_NAME2) ? 2 : 1; + f.init(z_dev_start + sizeof(Z_Flashentry), buf_len); + storage_class = PSTR("Flash"); + } + } +#endif // ESP8266 + + uint32_t file_len = 0; + uint8_t num_devices = 0; + if (f.valid()) { + file_len = f.len; + f.readBytes(&num_devices, sizeof(num_devices)); + } + if ((file_len < 10) || (num_devices == 0x00) || (num_devices == 0xFF)) { // No data + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "No Zigbee device information")); + return false; + } + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee device information found in %s (%d devices - %d bytes)"), storage_class, num_devices, file_len); + + uint32_t k = 1; // byte index in global buffer + for (uint32_t i = 0; (i < num_devices) && (k < file_len); i++) { + uint8_t dev_record_len = 0; + f.readBytes(&dev_record_len, sizeof(dev_record_len)); + // int32_t ret = ZFS::readBytes(ZIGB_NAME2, &dev_record_len, 1, k, 1); + if (dev_record_len == 0) { + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Invalid device information, aborting")); + zigbee_devices.clean(); // don't write back to Flash what we just loaded + return false; + } + SBuffer buf(dev_record_len); + buf.setLen(dev_record_len); + buf.set8(0, dev_record_len); // push the first byte (len including this first byte) + int32_t ret = f.readBytes(buf.buf(1), dev_record_len - 1); + // ret = ZFS::readBytes(ZIGB_NAME2, buf.getBuffer(), dev_record_len, k, dev_record_len); + if (ret != dev_record_len - 1) { + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Invalid device information, aborting")); + zigbee_devices.clean(); // don't write back to Flash what we just loaded + return false; + } + + hydrateSingleDevice(buf); + + // next iteration + k += dev_record_len; + } + + zigbee_devices.clean(); // don't write back to Flash what we just loaded + return true; +} + +/*********************************************************************************************\ + * saveZigbeeDevices + * + * Save device configuration from storage. + * Order of storage for saving is: 1/ EEPROM 2/ File system 3/ Flash (ESP8266 only) +\*********************************************************************************************/ +void saveZigbeeDevices(void) { + Univ_Write_File f; + const char * storage_class = PSTR(""); + +#ifdef USE_ZIGBEE_EEPROM + if (!f.valid() && zigbee.eeprom_ready) { + f.init(ZIGB_NAME2); + storage_class = PSTR("EEPROM"); + } +#endif + +#ifdef USE_UFILESYS + File file; + if (!f.valid() && dfsp) { + file = dfsp->open(TASM_FILE_ZIGBEE, "w"); + if (file) { + f.init(&file); + storage_class = PSTR("File System"); + } + } +#endif + +#if defined(ESP8266) + uint8_t *sbuffer = nullptr; + static const size_t max_flash_size = 2040; + if (!f.valid() && flash_valid()) { + sbuffer = (uint8_t*) malloc(max_flash_size); + f.init(sbuffer, max_flash_size); + storage_class = PSTR("Flash"); + } +#endif // defined(ESP8266) + + bool written = false; + size_t buf_len = 0; + if (f.valid()) { + written = hibernateDevices(f); + + buf_len = f.getCursor(); + f.close(); + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data saved in %s (%d bytes)"), storage_class, buf_len); + } + +#if defined(ESP8266) + if (written && sbuffer != nullptr) { + // first copy SPI buffer into ram + uint8_t *spi_buffer = (uint8_t*) malloc(z_spi_len); + if (!spi_buffer) { + AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Cannot allocate 4KB buffer")); + free(sbuffer); + return; + } + ESP.flashRead(z_spi_start_sector * SPI_FLASH_SEC_SIZE, (uint32_t*) spi_buffer, SPI_FLASH_SEC_SIZE); + + Z_Flashentry *flashdata = (Z_Flashentry*)(spi_buffer + z_block_offset); + flashdata->name = ZIGB_NAME2; // v2 + flashdata->len = buf_len; + flashdata->start = 0; + + memcpy(spi_buffer + z_block_offset + sizeof(Z_Flashentry), sbuffer, buf_len); + + // buffer is now ready, write it back + if (ESP.flashEraseSector(z_spi_start_sector)) { + ESP.flashWrite(z_spi_start_sector * SPI_FLASH_SEC_SIZE, (uint32_t*) spi_buffer, SPI_FLASH_SEC_SIZE); + } + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data store in Flash (0x%08X - %d bytes)"), z_dev_start, buf_len); + free(spi_buffer); + free(sbuffer); + } +#endif // defined(ESP8266) + +} + + +/*********************************************************************************************\ + * eraseZigbeeDevices + * + * Erase all storage locations: 1/ EEPROM, 2/ File system 3/ Flash (ESP8266 only if no filesystem) +\*********************************************************************************************/ +// Erase the flash area containing the ZigbeeData +void eraseZigbeeDevices(void) { + zigbee_devices.clean(); // avoid writing data to flash after erase +#ifdef USE_ZIGBEE_EEPROM + ZFS_Erase(); +#endif // USE_ZIGBEE_EEPROM + +#if defined(ESP8266) && !defined(USE_UFILESYS) + // first copy SPI buffer into ram + uint8_t *spi_buffer = (uint8_t*) malloc(z_spi_len); + if (!spi_buffer) { + AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Cannot allocate 4KB buffer")); + return; + } + // copy the flash into RAM to make local change, and write back the whole buffer + ESP.flashRead(z_spi_start_sector * SPI_FLASH_SEC_SIZE, (uint32_t*) spi_buffer, SPI_FLASH_SEC_SIZE); + + // Fill the Zigbee area with 0xFF + memset(spi_buffer + z_block_offset, 0xFF, z_block_len); + + // buffer is now ready, write it back + if (ESP.flashEraseSector(z_spi_start_sector)) { + ESP.flashWrite(z_spi_start_sector * SPI_FLASH_SEC_SIZE, (uint32_t*) spi_buffer, SPI_FLASH_SEC_SIZE); + } + + free(spi_buffer); + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data erased in %s"), PSTR("Flash")); +#endif // defined(ESP8266) && !defined(USE_UFILESYS) + +#ifdef USE_UFILESYS + if (TfsDeleteFile(TASM_FILE_ZIGBEE)) { + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data erased")); + } +#endif // USE_UFILESYS +} + +/*********************************************************************************************\ + * restoreDumpAllDevices + * + * Dump all devices in `ZbRestore ` format ready to copy/paste +\*********************************************************************************************/ +void restoreDumpAllDevices(void) { + for (const auto & device : zigbee_devices.getDevices()) { + const SBuffer buf = hibernateDevice(device); + if (buf.len() > 0) { + Response_P(PSTR("{\"" D_PRFX_ZB D_CMND_ZIGBEE_RESTORE "\":\"ZbRestore %_B\"}"), &buf); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_PRFX_ZB D_CMND_ZIGBEE_DATA)); + } + } +} + +#endif // USE_ZIGBEE diff --git a/tasmota/xdrv_23_zigbee_7_0_statemachine.ino b/tasmota/xdrv_23_zigbee_7_0_statemachine.ino index a9afb9764..89bff56dd 100644 --- a/tasmota/xdrv_23_zigbee_7_0_statemachine.ino +++ b/tasmota/xdrv_23_zigbee_7_0_statemachine.ino @@ -481,8 +481,12 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = { ZI_MQTT_STATE(ZIGBEE_STATUS_OK, kStarted) ZI_LOG(LOG_LEVEL_INFO, kZigbeeStarted) ZI_CALL(&Z_State_Ready, 1) // Now accept incoming messages + ZI_CALL(&Z_Prepare_Storage, 0) ZI_CALL(&Z_Load_Devices, 0) + ZI_CALL(&Z_Load_Data, 0) + ZI_CALL(&Z_Set_Save_Data_Timer, 0) ZI_CALL(&Z_Query_Bulbs, 0) + ZI_LABEL(ZIGBEE_LABEL_MAIN_LOOP) ZI_WAIT_FOREVER() ZI_GOTO(ZIGBEE_LABEL_READY) @@ -907,10 +911,10 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = { ZI_MQTT_STATE(ZIGBEE_STATUS_OK, kStarted) ZI_LOG(LOG_LEVEL_INFO, kZigbeeStarted) ZI_CALL(&Z_State_Ready, 1) // Now accept incoming messages - ZI_CALL(&Z_Prepare_EEPROM, 0) + ZI_CALL(&Z_Prepare_Storage, 0) ZI_CALL(&Z_Load_Devices, 0) - ZI_CALL(&Z_Load_Data_EEPROM, 0) - ZI_CALL(&Z_Set_Save_Data_Timer_EEPROM, 0) + ZI_CALL(&Z_Load_Data, 0) + ZI_CALL(&Z_Set_Save_Data_Timer, 0) ZI_CALL(&Z_Query_Bulbs, 0) ZI_LABEL(ZIGBEE_LABEL_MAIN_LOOP) diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index b6206a0f7..a738d5dc4 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -2017,15 +2017,15 @@ int32_t ZNP_Recv_Default(int32_t res, const SBuffer &buf) { // // Callback for loading preparing EEPROM, called by the state machine // -#ifdef USE_ZIGBEE_EZSP -int32_t Z_Prepare_EEPROM(uint8_t value) { +int32_t Z_Prepare_Storage(uint8_t value) { +#ifdef USE_ZIGBEE_EEPROM ZFS::initOrFormat(); +#endif return 0; // continue } -#endif // USE_ZIGBEE_EZSP // -// Callback for loading Zigbee configuration from Flash, called by the state machine +// Callback for loading Zigbee configuration, called by the state machine // int32_t Z_Load_Devices(uint8_t value) { // try to hidrate from known devices @@ -2036,8 +2036,8 @@ int32_t Z_Load_Devices(uint8_t value) { // // Callback for loading Zigbee data from EEPROM, called by the state machine // -int32_t Z_Load_Data_EEPROM(uint8_t value) { - hydrateDevicesDataFromEEPROM(); +int32_t Z_Load_Data(uint8_t value) { + hydrateDevicesData(); return 0; // continue } diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index 00309085b..d1eb6d8bc 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -1291,12 +1291,6 @@ void CmndZbSave(void) { case 2: // save only data hibernateAllData(); break; - case -1: // dump configuration - loadZigbeeDevices(true); // dump only - break; - case -2: - hydrateDevicesDataFromEEPROM(); - break; #ifdef Z_EEPROM_DEBUG case -10: { // reinit EEPROM @@ -1569,7 +1563,7 @@ void CmndZbData(void) { if (strlen(XdrvMailbox.data) == 0) { // if empty, log values for all devices for (const auto & device : zigbee_devices.getDevices()) { - hibernateDeviceData(device, true); // simple log, no mqtt + hibernateDeviceData(device); } } else { // check if parameters contain a comma ',' @@ -1588,7 +1582,7 @@ void CmndZbData(void) { // non-JSON, export current data // ZbData 0x1234 // ZbData Device_Name - hibernateDeviceData(device, true); // mqtt + hibernateDeviceData(device); } } @@ -2183,9 +2177,7 @@ bool Xdrv23(uint8_t function) result = DecodeCommand(kZbCommands, ZigbeeCommand, kZbSynonyms); break; case FUNC_SAVE_BEFORE_RESTART: -#ifdef USE_ZIGBEE_EZSP hibernateAllData(); -#endif // USE_ZIGBEE_EZSP restoreDumpAllDevices(); break; } From 2fc3b93e9daf85558bde241460ff9c57e45a6d98 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 22 Apr 2021 15:03:56 +0200 Subject: [PATCH 06/97] Change command ``Power`` should not reset pulsetime Change command ``Power`` should not reset pulsetime (#11805) --- CHANGELOG.md | 4 +-- RELEASENOTES.md | 64 ++----------------------------------- tasmota/support_tasmota.ino | 4 ++- 3 files changed, 7 insertions(+), 65 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f87f575a..8e57777b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,8 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development ## [9.4.0.1] - - +### Changed +- Command ``Power`` should not reset pulsetime (#11805) ## [Released] diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 63474515a..f9552dd50 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -76,75 +76,15 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v9.4.0 Leslie +## Changelog v9.4.0.1 ### Added -- Command ``Sensor80 1 <0..7>`` to control MFRC522 RFID antenna gain from 18dB (0) to 48dB (7) [#11073](https://github.com/arendst/Tasmota/issues/11073) -- Command ``SerialBuffer 256..520`` to change hardware serial receive buffer size from default (256) to max local buffer size (520) [#11448](https://github.com/arendst/Tasmota/issues/11448) -- Command ``SetOption126 1`` to enable DS18x20 arithmetic mean over teleperiod for JSON temperature based on [#11472](https://github.com/arendst/Tasmota/issues/11472) -- Command ``Backlog0`` to allow execution of following commands without delay -- Command ``TuyaTempSetRes 0..3`` to control Tuya Temperature Set Resolution [#11781](https://github.com/arendst/Tasmota/issues/11781) -- Commands ``MqttKeepAlive 1..100`` to set Mqtt Keep Alive timer (default 30) and ``MqttTimeout 1..100`` to set Mqtt Socket Timeout (default 4) [#5341](https://github.com/arendst/Tasmota/issues/5341) -- Commands ``DisplayType`` to select sub-modules where implemented and ``DisplayInvert`` to select inverted display where implemented -- Support for SML VBUS [#11125](https://github.com/arendst/Tasmota/issues/11125) -- Support for NEC and OPTOMA LCD/DLP Projector serial power control by Jan Bubík [#11145](https://github.com/arendst/Tasmota/issues/11145) -- Support for XPT2046 touch screen digitizer on ILI9341 display by nonix [#11159](https://github.com/arendst/Tasmota/issues/11159) -- Support for zigbee lumi.sensor_wleak [#11200](https://github.com/arendst/Tasmota/issues/11200) -- Support for dummy energy monitor using user values set by commands ``VoltageSet``, ``CurrentSet``, ``PowerSet`` and ``FrequencySet``. Enable by selecting any GPIO as ``Option A2`` [#10640](https://github.com/arendst/Tasmota/issues/10640) -- Support for CSE7761 energy monitor as used in ESP32 based Sonoff Dual R3 Pow [#10793](https://github.com/arendst/Tasmota/issues/10793) -- Support for Frequency monitoring and zero-cross detection on CSE7761 (Sonoff Dual R3) -- Support for TM1638 seven segment display by Ajith Vasudevan [#11031](https://github.com/arendst/Tasmota/issues/11031) -- Support for MAX7219 seven segment display by Ajith Vasudevan [#11387](https://github.com/arendst/Tasmota/issues/11387) -- Support for MPU6886 on primary or secondary I2C bus -- Support for multiple CCS811 sensors with baseline control (USE_CCS811_V2) by clanganke [#10858](https://github.com/arendst/Tasmota/issues/10858) -- Allow MCP230xx pinmode from output to input [#11104](https://github.com/arendst/Tasmota/issues/11104) -- Berry improvements [#11163](https://github.com/arendst/Tasmota/issues/11163) -- Extent compile time SetOptions support [#11204](https://github.com/arendst/Tasmota/issues/11204) -- Tasmota discovery as alternative to Home Assistant discovery using define ``USE_TASMOTA_DISCOVERY`` -- Optional GUI file editor enabled with define ``GUI_EDIT_FILE`` by barbudor [#11668](https://github.com/arendst/Tasmota/issues/11668) -- Initial support for universal display driver UDisplay by Gerhard Mutz. Enable by selecting any GPIO as ``Option A3`` [#11665](https://github.com/arendst/Tasmota/issues/11665) -- ESP32 Extent BLE [#11212](https://github.com/arendst/Tasmota/issues/11212) -- ESP32 support for WS2812 hardware driver via RMT or I2S -- ESP32 support for secondary I2C controller -- ESP32 support for internal Hall Effect sensor connected to both GPIO36 and GPIO39 only -- ESP32 support for LVGL 7.11 with Berry binding by Stephan Hadinger [#11789](https://github.com/arendst/Tasmota/issues/11789) ### Breaking Changed -- ESP32 partition layout changed to accomodate more file space on most and more code space on core2 and odroid-go [#11746](https://github.com/arendst/Tasmota/issues/11746) ### Changed -- TasmotaSerial library from v3.2.0 to v3.3.0 -- PubSubClient library from EspEasy v2.7.12 to Tasmota v2.8.12 -- IRremoteESP8266 library from v2.7.15 to v2.7.16 -- ESP32 core library from v1.0.5-rc6 to v1.0.6 -- TuyaMcu dimmer timeout [#11121](https://github.com/arendst/Tasmota/issues/11121) -- Rename epaper 42 commands [#11222](https://github.com/arendst/Tasmota/issues/11222) -- DeepSleep announcement topic [#11223](https://github.com/arendst/Tasmota/issues/11223) -- Limit number of relay/button columns in GUI to 8 [#11546](https://github.com/arendst/Tasmota/issues/11546) -- ADC range result from int to float using command ``FreqRes`` for decimal resolution selection [#11545](https://github.com/arendst/Tasmota/issues/11545) -- Removed overtemp detection on external energy monitoring devices [#11628](https://github.com/arendst/Tasmota/issues/11628) -- Redesigned initial GUI wifi configuration by Adrian Scillato [#11693](https://github.com/arendst/Tasmota/issues/11693) -- Redesigned GUI by moving non-configuration buttons from ``Configuration`` to new submenu ``Consoles`` -- In tasmota-sensors.bin enabled support for VL53L0X and disabled TSL2561 [#11711](https://github.com/arendst/Tasmota/issues/11711) -- Add HLW8012/BL0937 average pulse calculation by Alex Lovett [#11722](https://github.com/arendst/Tasmota/issues/11722) -- ESP32 **tasmota32-knx**, **tasmota32-sensors** and **tasmota32-lite** binaries consolidated in **tasmota32.bin** binary +- Command ``Power`` should not reset pulsetime [#11805](https://github.com/arendst/Tasmota/issues/11805) ### Fixed -- PN532 on ESP32 Serial flush both Tx and Rx buffers [#10910](https://github.com/arendst/Tasmota/issues/10910) -- Light scheme related color changes [#11041](https://github.com/arendst/Tasmota/issues/11041) -- Refactor acceleration function for shutter stepper and servo [#11088](https://github.com/arendst/Tasmota/issues/11088) -- LM75AD detection on different addresses [#11096](https://github.com/arendst/Tasmota/issues/11096) -- Timer loop when console is scrolled up regression from v9.3.0 [#11108](https://github.com/arendst/Tasmota/issues/11108) -- Display exception when no file system is present [#11125](https://github.com/arendst/Tasmota/issues/11125) -- Scripter and SML fixes [#11150](https://github.com/arendst/Tasmota/issues/11150) -- Zigbee exception when bad frame is received [#11192](https://github.com/arendst/Tasmota/issues/11192) -- ESP32 flash script for Odroid and Core2 [#11227](https://github.com/arendst/Tasmota/issues/11227) -- ESP32 WS2812 bitbang support [#11248](https://github.com/arendst/Tasmota/issues/11248) -- DS18x20 driver timing issue [#11270](https://github.com/arendst/Tasmota/issues/11270) -- Alexa discovery in hue emulation [#11415](https://github.com/arendst/Tasmota/issues/11415) -- HC-SR04 on ESP32 release serial interface if not used [#11507](https://github.com/arendst/Tasmota/issues/11507) -- Alexa discovery for ZBBridge [#11576](https://github.com/arendst/Tasmota/issues/11576) -- Telegram chat id incorrect size [#11660](https://github.com/arendst/Tasmota/issues/11660) -- KNX energy yesterday [#11718](https://github.com/arendst/Tasmota/issues/11718) ### Noted - ESP32 single core **tasmota32solo1.bin** binary can only be uploaded using the GUI as OTA upload will trigger the watchdog timer \ No newline at end of file diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index bccf37f7f..85af5b586 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -599,7 +599,9 @@ void ExecuteCommandPower(uint32_t device, uint32_t state, uint32_t source) } TasmotaGlobal.active_device = device; - SetPulseTimer((device -1) % MAX_PULSETIMERS, 0); + if (state != POWER_SHOW_STATE) { + SetPulseTimer((device -1) % MAX_PULSETIMERS, 0); + } static bool interlock_mutex = false; // Interlock power command pending power_t mask = 1 << (device -1); // Device to control From 98fcc271a7f8a03d460ac1d46cf44eab3e27b6fb Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 22 Apr 2021 15:51:50 +0200 Subject: [PATCH 07/97] Disable logging in GetDeviceHardware() --- tasmota/support_esp.ino | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/tasmota/support_esp.ino b/tasmota/support_esp.ino index 08c49807c..e03d1bdf2 100644 --- a/tasmota/support_esp.ino +++ b/tasmota/support_esp.ino @@ -79,24 +79,16 @@ void *special_realloc(void *ptr, size_t size) { } String GetDeviceHardware(void) { - char buff[10]; // esptool.py get_efuses uint32_t efuse1 = *(uint32_t*)(0x3FF00050); uint32_t efuse2 = *(uint32_t*)(0x3FF00054); // uint32_t efuse3 = *(uint32_t*)(0x3FF00058); // uint32_t efuse4 = *(uint32_t*)(0x3FF0005C); - bool is_8285 = ( (efuse1 & (1 << 4)) || (efuse2 & (1 << 16)) ); - if (is_8285 && (ESP.getFlashChipRealSize() > 1048576)) { - is_8285 = false; // ESP8285 can only have 1M flash + if (((efuse1 & (1 << 4)) || (efuse2 & (1 << 16))) && (ESP.getFlashChipRealSize() < 1048577)) { // ESP8285 can only have 1M flash + return F("ESP8285"); } - if (is_8285) { - strcpy_P(buff, PSTR("ESP8285")); - } else { - strcpy_P(buff, PSTR("ESP8266EX")); - } - - return String(buff); + return F("ESP8266EX"); } #endif @@ -561,7 +553,7 @@ typedef struct { uint32_t chip_ver = REG_GET_FIELD(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_PKG); uint32_t pkg_version = chip_ver & 0x7; - AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HDW: ESP32 Model %d, Revision %d, Core %d, Package %d"), chip_info.model, chip_revision, chip_info.cores, chip_ver); +// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HDW: ESP32 Model %d, Revision %d, Core %d, Package %d"), chip_info.model, chip_revision, chip_info.cores, chip_ver); switch (pkg_version) { case 0: @@ -599,7 +591,7 @@ typedef struct { uint32_t pkg_version = chip_ver & 0x7; // uint32_t pkg_version = esp_efuse_get_pkg_ver(); - AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HDW: ESP32 Model %d, Revision %d, Core %d, Package %d"), chip_info.model, chip_revision, chip_info.cores, chip_ver); +// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HDW: ESP32 Model %d, Revision %d, Core %d, Package %d"), chip_info.model, chip_revision, chip_info.cores, chip_ver); switch (pkg_version) { case 0: return F("ESP32-S2"); // Max 240MHz, Single core, QFN 7*7, ESP32-S2-WROOM, ESP32-S2-WROVER, ESP32-S2-Saola-1, ESP32-S2-Kaluga-1 @@ -627,7 +619,7 @@ typedef struct { uint32_t pkg_version = chip_ver & 0x7; // uint32_t pkg_version = esp_efuse_get_pkg_ver(); - AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HDW: ESP32 Model %d, Revision %d, Core %d, Package %d"), chip_info.model, chip_revision, chip_info.cores, chip_ver); +// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HDW: ESP32 Model %d, Revision %d, Core %d, Package %d"), chip_info.model, chip_revision, chip_info.cores, chip_ver); switch (pkg_version) { case 0: return F("ESP32-C3"); // Max 160MHz, Single core, QFN 5*5, ESP32-C3-WROOM-02, ESP32-C3-DevKitC-02 @@ -653,7 +645,7 @@ typedef struct { uint32_t pkg_version = chip_ver & 0x7; // uint32_t pkg_version = esp_efuse_get_pkg_ver(); - AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HDW: ESP32 Model %d, Revision %d, Core %d, Package %d"), chip_info.model, chip_revision, chip_info.cores, chip_ver); +// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HDW: ESP32 Model %d, Revision %d, Core %d, Package %d"), chip_info.model, chip_revision, chip_info.cores, chip_ver); switch (pkg_version) { case 0: return F("ESP32-C6"); From 2398056fa5e74b40fe073a472b51d18de823fbd7 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 22 Apr 2021 15:55:13 +0200 Subject: [PATCH 08/97] Update changelog and version to 9.4.0.1 --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/tasmota_version.h | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e57777b9..89d12071c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ## [9.4.0.1] ### Changed - Command ``Power`` should not reset pulsetime (#11805) +- Zigbee refactored storage for device configuration and device last known data (#11838) ## [Released] diff --git a/RELEASENOTES.md b/RELEASENOTES.md index f9552dd50..4a83c79bb 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -83,6 +83,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ### Changed - Command ``Power`` should not reset pulsetime [#11805](https://github.com/arendst/Tasmota/issues/11805) +- Zigbee refactored storage for device configuration and device last known data [#11838](https://github.com/arendst/Tasmota/issues/11838) ### Fixed diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index 0f79cf4d9..c8df3b7fe 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,6 +20,6 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x09040000; +const uint32_t VERSION = 0x09040001; #endif // _TASMOTA_VERSION_H_ From 85f742d903cd414d86244d75a10f3c0d95fa76c0 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 22 Apr 2021 16:51:11 +0200 Subject: [PATCH 09/97] Zigbee Fix loading previous file --- tasmota/xdrv_23_zigbee_4c_devices.ino | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tasmota/xdrv_23_zigbee_4c_devices.ino b/tasmota/xdrv_23_zigbee_4c_devices.ino index b87f4e0e1..70bfc53c4 100644 --- a/tasmota/xdrv_23_zigbee_4c_devices.ino +++ b/tasmota/xdrv_23_zigbee_4c_devices.ino @@ -290,6 +290,14 @@ bool loadZigbeeDevices(void) { if (!f.valid() && dfsp) { file = dfsp->open(TASM_FILE_ZIGBEE, "r"); if (file) { + uint32_t signature = 0x0000; + file.read((uint8_t*)&signature, 4); + if (signature == ZIGB_NAME2) { + // skip another 4 bytes + file.read((uint8_t*)&signature, 4); + } else { + file.seek(0); // seek back to beginning of file + } f.init(&file); storage_class = PSTR("File System"); } From 147440fd996751592347f59c798fac65b2f29889 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 22 Apr 2021 18:10:26 +0200 Subject: [PATCH 10/97] Add command ``Wifi 0/1`` for ESP8266 Add command ``Wifi 0/1`` for ESP8266 to turn wifi Off and On. When wifi is Off it is always returned On after a restart except for a wake-up from deepsleep (#11839) --- CHANGELOG.md | 3 +++ RELEASENOTES.md | 1 + tasmota/support_command.ino | 26 +++++++++++++------------- tasmota/support_tasmota.ino | 4 +++- tasmota/support_wifi.ino | 12 ++++++++++++ tasmota/tasmota.ino | 11 +++++++++++ 6 files changed, 43 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89d12071c..6fc431ed5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development ## [9.4.0.1] +### Added +- Command ``Wifi 0/1`` for ESP8266 to turn wifi Off and On. When wifi is Off it is always returned On after a restart except for a wake-up from deepsleep (#11839) + ### Changed - Command ``Power`` should not reset pulsetime (#11805) - Zigbee refactored storage for device configuration and device last known data (#11838) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 4a83c79bb..f67447224 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -78,6 +78,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.4.0.1 ### Added +- Command ``Wifi 0/1`` for ESP8266 to turn wifi Off and On. When wifi is Off it is always returned On after a restart except for a wake-up from deepsleep [#11839](https://github.com/arendst/Tasmota/issues/11839) ### Breaking Changed diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index a701203de..4cdfcdf6a 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -25,7 +25,7 @@ const char kTasmotaCommands[] PROGMEM = "|" // No prefix D_CMND_MODULE "|" D_CMND_MODULES "|" D_CMND_GPIO "|" D_CMND_GPIOS "|" D_CMND_TEMPLATE "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|" D_CMND_BUTTONDEBOUNCE "|" D_CMND_SWITCHDEBOUNCE "|" D_CMND_SYSLOG "|" D_CMND_LOGHOST "|" D_CMND_LOGPORT "|" D_CMND_SERIALBUFFER "|" D_CMND_SERIALSEND "|" D_CMND_BAUDRATE "|" D_CMND_SERIALCONFIG "|" D_CMND_SERIALDELIMITER "|" - D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|" D_CMND_WIFICONFIG "|" + D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|" D_CMND_WIFICONFIG "|" D_CMND_WIFI "|" D_CMND_DEVICENAME "|" D_CMND_FN "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_INTERLOCK "|" D_CMND_TELEPERIOD "|" D_CMND_RESET "|" D_CMND_TIME "|" D_CMND_TIMEZONE "|" D_CMND_TIMESTD "|" D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|" D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|" D_CMND_LEDMASK "|" D_CMND_LEDPWM_ON "|" D_CMND_LEDPWM_OFF "|" D_CMND_LEDPWM_MODE "|" D_CMND_WIFIPOWER "|" D_CMND_TEMPOFFSET "|" D_CMND_HUMOFFSET "|" D_CMND_SPEEDUNIT "|" D_CMND_GLOBAL_TEMP "|" D_CMND_GLOBAL_HUM"|" D_CMND_SWITCHTEXT "|" @@ -41,7 +41,7 @@ const char kTasmotaCommands[] PROGMEM = "|" // No prefix #endif // USE_DEVICE_GROUPS D_CMND_SENSOR "|" D_CMND_DRIVER #ifdef ESP32 - "|Info|" D_CMND_TOUCH_CAL "|" D_CMND_TOUCH_THRES "|" D_CMND_TOUCH_NUM "|" D_CMND_CPU_FREQUENCY "|" D_CMND_WIFI + "|Info|" D_CMND_TOUCH_CAL "|" D_CMND_TOUCH_THRES "|" D_CMND_TOUCH_NUM "|" D_CMND_CPU_FREQUENCY #endif // ESP32 ; @@ -53,7 +53,7 @@ void (* const TasmotaCommand[])(void) PROGMEM = { &CmndModule, &CmndModules, &CmndGpio, &CmndGpios, &CmndTemplate, &CmndPwm, &CmndPwmfrequency, &CmndPwmrange, &CmndButtonDebounce, &CmndSwitchDebounce, &CmndSyslog, &CmndLoghost, &CmndLogport, &CmndSerialBuffer, &CmndSerialSend, &CmndBaudrate, &CmndSerialConfig, &CmndSerialDelimiter, - &CmndIpAddress, &CmndNtpServer, &CmndAp, &CmndSsid, &CmndPassword, &CmndHostname, &CmndWifiConfig, + &CmndIpAddress, &CmndNtpServer, &CmndAp, &CmndSsid, &CmndPassword, &CmndHostname, &CmndWifiConfig, &CmndWifi, &CmndDevicename, &CmndFriendlyname, &CmndFriendlyname, &CmndSwitchMode, &CmndInterlock, &CmndTeleperiod, &CmndReset, &CmndTime, &CmndTimezone, &CmndTimeStd, &CmndTimeDst, &CmndAltitude, &CmndLedPower, &CmndLedState, &CmndLedMask, &CmndLedPwmOn, &CmndLedPwmOff, &CmndLedPwmMode, &CmndWifiPower, &CmndTempOffset, &CmndHumOffset, &CmndSpeedUnit, &CmndGlobalTemp, &CmndGlobalHum, &CmndSwitchText, @@ -69,7 +69,7 @@ void (* const TasmotaCommand[])(void) PROGMEM = { #endif // USE_DEVICE_GROUPS &CmndSensor, &CmndDriver #ifdef ESP32 - , &CmndInfo, &CmndTouchCal, &CmndTouchThres, &CmndTouchNum, &CmndCpuFrequency, &CmndWifi + , &CmndInfo, &CmndTouchCal, &CmndTouchThres, &CmndTouchNum, &CmndCpuFrequency #endif // ESP32 }; @@ -2114,6 +2114,15 @@ void CmndWifiPower(void) ResponseCmndChar(WifiGetOutputPower().c_str()); } +void CmndWifi(void) +{ + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 1)) { + Settings.flag4.network_wifi = XdrvMailbox.payload; + if (Settings.flag4.network_wifi) { WifiEnable(); } + } + ResponseCmndStateText(Settings.flag4.network_wifi); +} + #ifdef USE_I2C void CmndI2cScan(void) { @@ -2217,15 +2226,6 @@ void CmndInfo(void) { ResponseCmndDone(); } -void CmndWifi(void) -{ - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 1)) { - Settings.flag4.network_wifi = XdrvMailbox.payload; - TasmotaGlobal.restart_flag = 2; - } - ResponseCmndStateText(Settings.flag4.network_wifi); -} - void CmndCpuFrequency(void) { if ((80 == XdrvMailbox.payload) || (160 == XdrvMailbox.payload) || (240 == XdrvMailbox.payload)) { setCpuFrequencyMhz(XdrvMailbox.payload); diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 85af5b586..07501638a 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1288,6 +1288,8 @@ void Every250mSeconds(void) if (Settings.flag4.network_wifi) { WifiCheck(TasmotaGlobal.wifi_state_flag); TasmotaGlobal.wifi_state_flag = WIFI_RESTART; + } else { + WifiDisable(); } break; case 3: // Every x.75 second @@ -1326,7 +1328,7 @@ void Every250mSeconds(void) StopWebserver(); } #ifdef USE_EMULATION - if (Settings.flag2.emulation) { UdpConnect(); } + if (Settings.flag2.emulation) { UdpConnect(); } #endif // USE_EMULATION #endif // USE_WEBSERVER diff --git a/tasmota/support_wifi.ino b/tasmota/support_wifi.ino index e85374eda..3f4b96ef8 100644 --- a/tasmota/support_wifi.ino +++ b/tasmota/support_wifi.ino @@ -567,6 +567,10 @@ RF_PRE_INIT() } #endif // WIFI_RF_PRE_INIT +void WifiEnable(void) { + Wifi.counter = 1; +} + void WifiConnect(void) { if (!Settings.flag4.network_wifi) { return; } @@ -623,6 +627,14 @@ void WifiShutdown(bool option = false) delay(100); // Flush anything in the network buffers. } +void WifiDisable(void) { + if (!TasmotaGlobal.global_state.wifi_down) { + WifiShutdown(); + WifiSetMode(WIFI_OFF); + } + TasmotaGlobal.global_state.wifi_down = 1; +} + void EspRestart(void) { ResetPwm(); diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index 02aef4f39..c8713eaea 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -288,6 +288,17 @@ void setup(void) { UpdateQuickPowerCycle(true); } + if (ResetReason() != REASON_DEEP_SLEEP_AWAKE) { +#ifdef ESP8266 + Settings.flag4.network_wifi = 1; // Make sure we're in control +#endif +#ifdef ESP32 + if (!Settings.flag4.network_ethernet) { + Settings.flag4.network_wifi = 1; // Make sure we're in control + } +#endif + } + TasmotaGlobal.stop_flash_rotate = Settings.flag.stop_flash_rotate; // SetOption12 - Switch between dynamic or fixed slot flash save location TasmotaGlobal.save_data_counter = Settings.save_data; TasmotaGlobal.sleep = Settings.sleep; From 8da3c913a65f5dca2a388da25b5b281fdb549dce Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 22 Apr 2021 18:29:57 +0200 Subject: [PATCH 11/97] Enable all ESP32 libs in platformio_override_sample.ini more user friendly. This does not raise the compile time for the automated builds since at this time no platformio_override.ini exists. --- platformio_override_sample.ini | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index d1897880a..681144edc 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -119,12 +119,12 @@ upload_port = COM4 lib_extra_dirs = ${library.lib_extra_dirs} ; *** ESP32 lib. ALWAYS needed for ESP32 !!! lib/libesp32 -; *** uncomment the following line if you want to use LVGL in a Tasmota32 build -; lib/libesp32_lvgl -; *** uncomment the following line if you want to use Bluetooth or Apple Homekit in a Tasmota32 build -; lib/libesp32_div -; *** uncomment the following line if you want to use Epaper driver epidy in your Tasmota32 build -; lib/libesp32_epdiy +; *** comment the following line if you dont use LVGL in a Tasmota32 build. Reduces compile time + lib/libesp32_lvgl +; *** comment the following line if you dont use Bluetooth or Apple Homekit in a Tasmota32 build. Reduces compile time + lib/libesp32_div +; *** uncomment the following line if you dont use Epaper driver epidy in your Tasmota32 build. Reduces compile time + lib/libesp32_epdiy [core32] ; Activate Stage Core32 by removing ";" in next 3 lines, if you want to override the standard core32 From 674509a56e6226b7450acf5cb2c13a666c4ef7c4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 23 Apr 2021 10:59:33 +0200 Subject: [PATCH 12/97] Fix teleperiod rule handling regression Fix teleperiod rule handling regression from v9.3.1.2 (#11851) --- CHANGELOG.md | 5 ++++- RELEASENOTES.md | 3 ++- tasmota/tasmota.h | 2 +- tasmota/tasmota.ino | 1 - tasmota/xdrv_10_rules.ino | 12 +++++++++--- tasmota/xdrv_10_scripter.ino | 15 ++++++++------- tasmota/xdrv_interface.ino | 4 +--- 7 files changed, 25 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fc431ed5..c710b9342 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,12 @@ All notable changes to this project will be documented in this file. - Command ``Wifi 0/1`` for ESP8266 to turn wifi Off and On. When wifi is Off it is always returned On after a restart except for a wake-up from deepsleep (#11839) ### Changed -- Command ``Power`` should not reset pulsetime (#11805) - Zigbee refactored storage for device configuration and device last known data (#11838) +### Fixed +- Command ``Power`` should not reset pulsetime (#11805) +- Teleperiod rule handling regression from v9.3.1.2 (#11851) + ## [Released] ## [9.4.0] 20210422 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index f67447224..aaabcbdf5 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -83,10 +83,11 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ### Breaking Changed ### Changed -- Command ``Power`` should not reset pulsetime [#11805](https://github.com/arendst/Tasmota/issues/11805) - Zigbee refactored storage for device configuration and device last known data [#11838](https://github.com/arendst/Tasmota/issues/11838) ### Fixed +- Command ``Power`` should not reset pulsetime [#11805](https://github.com/arendst/Tasmota/issues/11805) +- Teleperiod rule handling regression from v9.3.1.2 [#11851](https://github.com/arendst/Tasmota/issues/11851) ### Noted - ESP32 single core **tasmota32solo1.bin** binary can only be uploaded using the GUI as OTA upload will trigger the watchdog timer \ No newline at end of file diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index e0ad51e8e..39df38727 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -311,7 +311,7 @@ enum XsnsFunctions {FUNC_SETTINGS_OVERRIDE, FUNC_PIN_STATE, FUNC_MODULE_INIT, FU FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SET_DEVICE_POWER, FUNC_SHOW_SENSOR, FUNC_ANY_KEY, FUNC_ENERGY_EVERY_SECOND, FUNC_ENERGY_RESET, - FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM, FUNC_BUTTON_PRESSED, + FUNC_RULES_PROCESS, FUNC_TELEPERIOD_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM, FUNC_BUTTON_PRESSED, FUNC_WEB_ADD_BUTTON, FUNC_WEB_ADD_CONSOLE_BUTTON, FUNC_WEB_ADD_MANAGEMENT_BUTTON, FUNC_WEB_ADD_MAIN_BUTTON, FUNC_WEB_ADD_HANDLER, FUNC_SET_CHANNELS, FUNC_SET_SCHEME, FUNC_HOTPLUG_SCAN, FUNC_DEVICE_GROUP_ITEM }; diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index c8713eaea..b56b89a22 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -140,7 +140,6 @@ struct { int16_t save_data_counter; // Counter and flag for config save to Flash RulesBitfield rules_flag; // Rule state flags (16 bits) - bool rule_teleperiod; // Process rule based on teleperiod data using prefix TELE- bool serial_local; // Handle serial locally bool fallback_topic_flag; // Use Topic or FallbackTopic bool backlog_nodelay; // Execute all backlog commands with no delay diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index d4ac6a66e..b2692f6b0 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -174,6 +174,7 @@ struct RULES { uint16_t last_minute = 60; uint16_t vars_event = 0; // Bitmask supporting MAX_RULE_VARS bits uint16_t mems_event = 0; // Bitmask supporting MAX_RULE_MEMS bits + bool teleperiod = false; bool busy = false; bool no_execute = false; // Don't actually execute rule commands @@ -420,7 +421,7 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule, bool stop_all // Step1: Analyse rule String rule_expr = rule; // "TELE-INA219#CURRENT>0.100" - if (TasmotaGlobal.rule_teleperiod) { + if (Rules.teleperiod) { int ppos = rule_expr.indexOf(F("TELE-")); // "TELE-INA219#CURRENT>0.100" or "INA219#CURRENT>0.100" if (ppos == -1) { return false; } // No pre-amble in rule rule_expr = rule.substring(5); // "INA219#CURRENT>0.100" or "SYSTEM#BOOT" @@ -433,7 +434,7 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule, bool stop_all // rule_param = "0.100" or "%VAR1%" #ifdef DEBUG_RULES -// AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL-RM1: expr %s, name %s, param %s"), rule_expr.c_str(), rule_name.c_str(), rule_param.c_str()); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL-RM1: Teleperiod %d, Expr %s, Name %s, Param %s"), Rules.teleperiod, rule_expr.c_str(), rule_name.c_str(), rule_param.c_str()); #endif char rule_svalue[80] = { 0 }; @@ -852,7 +853,7 @@ void RulesInit(void) bitWrite(Settings.rule_once, i, 0); } } - TasmotaGlobal.rule_teleperiod = false; + Rules.teleperiod = false; } void RulesEvery50ms(void) @@ -2339,6 +2340,11 @@ bool Xdrv10(uint8_t function) case FUNC_RULES_PROCESS: result = RulesProcess(); break; + case FUNC_TELEPERIOD_RULES_PROCESS: + Rules.teleperiod = true; + result = RulesProcess(); + Rules.teleperiod = false; + break; case FUNC_SAVE_BEFORE_RESTART: RulesSaveBeforeRestart(); break; diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index 307b6f53d..e7c83435f 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -7886,13 +7886,14 @@ bool Xdrv10(uint8_t function) break; case FUNC_RULES_PROCESS: if (bitRead(Settings.rule_enabled, 0)) { - if (TasmotaGlobal.rule_teleperiod) { // Signal teleperiod event - if (TasmotaGlobal.mqtt_data[0]) { - Run_Scripter(">T", 2, TasmotaGlobal.mqtt_data); - } - } else { - Run_Scripter(">E", 2, TasmotaGlobal.mqtt_data); - result = glob_script_mem.event_handeled; + Run_Scripter(">E", 2, TasmotaGlobal.mqtt_data); + result = glob_script_mem.event_handeled; + } + break; + case FUNC_TELEPERIOD_RULES_PROCESS: + if (bitRead(Settings.rule_enabled, 0)) { + if (TasmotaGlobal.mqtt_data[0]) { + Run_Scripter(">T", 2, TasmotaGlobal.mqtt_data); } } break; diff --git a/tasmota/xdrv_interface.ino b/tasmota/xdrv_interface.ino index 6dfab4f36..f508fd588 100644 --- a/tasmota/xdrv_interface.ino +++ b/tasmota/xdrv_interface.ino @@ -1080,14 +1080,12 @@ void XsnsDriverState(void) /*********************************************************************************************/ bool XdrvRulesProcess(bool teleperiod) { - TasmotaGlobal.rule_teleperiod = teleperiod; // Signal teleperiod event - bool rule_handled = XdrvCallDriver(10, FUNC_RULES_PROCESS); + bool rule_handled = XdrvCallDriver(10, (teleperiod) ? FUNC_TELEPERIOD_RULES_PROCESS : FUNC_RULES_PROCESS); #ifdef USE_BERRY // events are passed to both Rules engine AND Berry engine bool berry_handled = XdrvCallDriver(52, FUNC_RULES_PROCESS); rule_handled |= berry_handled; #endif - TasmotaGlobal.rule_teleperiod = false; return rule_handled; } From a29c0287af0579f96d2c779e9ee3cd723f038d7b Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 23 Apr 2021 11:03:21 +0200 Subject: [PATCH 13/97] Hue enable long logging --- tasmota/xdrv_20_hue.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xdrv_20_hue.ino b/tasmota/xdrv_20_hue.ino index e41233b9c..c93ccbb75 100644 --- a/tasmota/xdrv_20_hue.ino +++ b/tasmota/xdrv_20_hue.ino @@ -992,7 +992,7 @@ void HueLights(String *path) code = 406; } exit: - AddLog(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " Result (%s)"), response.c_str()); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " Result (%s)"), response.c_str()); WSSend(code, CT_APP_JSON, response); } From b1ed8f8e0dde45dbf4329fe68a7ce5835b2ffa35 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 23 Apr 2021 15:21:16 +0200 Subject: [PATCH 14/97] Fix Hue for ESP32 --- tasmota/xdrv_20_hue.ino | 5 ++++- tasmota/xdrv_23_zigbee_3_hue.ino | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/tasmota/xdrv_20_hue.ino b/tasmota/xdrv_20_hue.ino index c93ccbb75..4b742bf65 100644 --- a/tasmota/xdrv_20_hue.ino +++ b/tasmota/xdrv_20_hue.ino @@ -200,21 +200,24 @@ void HueRespondToMSearch(void) if (PortUdp.beginPacket(udp_remote_ip, udp_remote_port)) { UnishoxStrings msg(HUE_RESP_MSG); char response[320]; - snprintf_P(response, sizeof(response), msg[HUE_RESP_RESPONSE], WiFi.localIP().toString().c_str(), HueBridgeId().c_str()); + snprintf_P(response, sizeof(response), msg[HUE_RESP_RESPONSE], NetworkAddress().toString().c_str(), HueBridgeId().c_str()); int len = strlen(response); String uuid = HueUuid(); snprintf_P(response + len, sizeof(response) - len, msg[HUE_RESP_ST1], uuid.c_str()); PortUdp.write(response); PortUdp.endPacket(); + // AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_UPNP "UDP resp=%s"), response); snprintf_P(response + len, sizeof(response) - len, msg[HUE_RESP_ST2], uuid.c_str(), uuid.c_str()); PortUdp.write(response); PortUdp.endPacket(); + // AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_UPNP "UDP resp=%s"), response); snprintf_P(response + len, sizeof(response) - len, msg[HUE_RESP_ST3], uuid.c_str()); PortUdp.write(response); PortUdp.endPacket(); + // AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_UPNP "UDP resp=%s"), response); snprintf_P(message, sizeof(message), PSTR(D_3_RESPONSE_PACKETS_SENT)); } else { diff --git a/tasmota/xdrv_23_zigbee_3_hue.ino b/tasmota/xdrv_23_zigbee_3_hue.ino index 9204285ae..d6347b9b4 100644 --- a/tasmota/xdrv_23_zigbee_3_hue.ino +++ b/tasmota/xdrv_23_zigbee_3_hue.ino @@ -239,7 +239,12 @@ void ZigbeeHandleHue(uint16_t shortaddr, uint32_t device_id, String &response) { if (Webserver->args()) { response = "["; +#ifdef ESP82666 // ESP8266 memory is limited, avoid copying and modify in place JsonParser parser((char*) Webserver->arg((Webserver->args())-1).c_str()); +#else // does not work on ESP32, we need to get a fresh copy of the string + String request_arg = Webserver->arg((Webserver->args())-1); + JsonParser parser((char*) request_arg.c_str()); +#endif JsonParserObject root = parser.getRootObject(); JsonParserToken hue_on = root[PSTR("on")]; From 5cc13af700bbb05891c29eef5d1baa90ce9398b1 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 23 Apr 2021 15:32:41 +0200 Subject: [PATCH 15/97] Update platformio_override_sample.ini --- platformio_override_sample.ini | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 681144edc..b09b51e99 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -84,9 +84,10 @@ lib_extra_dirs = ${library.lib_extra_dirs} ;build_unflags = ${tasmota_stage.build_unflags} ;build_flags = ${tasmota_stage.build_flags} -;platform_packages = ${core_stage.platform_packages} -;build_unflags = ${core_stage.build_unflags} -;build_flags = ${core_stage.build_flags} +; +platform_packages = ${core_stage.platform_packages} +build_unflags = ${core_stage.build_unflags} +build_flags = ${core_stage.build_flags} [tasmota_stage] @@ -102,7 +103,7 @@ build_flags = ${esp82xx_defaults.build_flags} ; *** Esp8266 core for Arduino version stage platform_packages = framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git ; *** Use Xtensa build chain 10.2. GNU13 from https://github.com/earlephilhower/esp-quick-toolchain - mcspr/toolchain-xtensa @ 5.100200.201223 + tasmota/toolchain-xtensa @ 5.100200.210303 build_unflags = ${esp_defaults.build_unflags} -Wswitch-unreachable build_flags = ${esp82xx_defaults.build_flags} From dc68844ef3701852dac0d381e6798339a07215bd Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 23 Apr 2021 17:35:16 +0200 Subject: [PATCH 16/97] Fix conflicts with uDisplay --- .../LVGL_drivers/src/uDisplay_lvgl.cpp | 152 +++++++++--------- tasmota/xdrv_54_lvgl.ino | 7 +- 2 files changed, 80 insertions(+), 79 deletions(-) diff --git a/lib/libesp32_lvgl/LVGL_drivers/src/uDisplay_lvgl.cpp b/lib/libesp32_lvgl/LVGL_drivers/src/uDisplay_lvgl.cpp index a4ab860a2..1bd99747f 100644 --- a/lib/libesp32_lvgl/LVGL_drivers/src/uDisplay_lvgl.cpp +++ b/lib/libesp32_lvgl/LVGL_drivers/src/uDisplay_lvgl.cpp @@ -50,8 +50,8 @@ uint16_t uDisplay_lvgl::GetColorFromIndex(uint8_t index) { return udisp_colors[index]; } -extern uint8_t *buffer; -extern uint8_t color_type; +extern uint8_t *buffer_lvgl; +extern uint8_t color_type_lvgl; uDisplay_lvgl::uDisplay_lvgl(char *lp) { // analyse decriptor @@ -103,9 +103,9 @@ uDisplay_lvgl::uDisplay_lvgl(char *lp) { gys = next_val(&lp1); bpp = next_val(&lp1); if (bpp == 1) { - color_type = uCOLOR_BW; + color_type_lvgl = uCOLOR_BW; } else { - color_type = uCOLOR_COLOR; + color_type_lvgl = uCOLOR_COLOR; } str2c(&lp1, ibuff, sizeof(ibuff)); if (!strncmp(ibuff, "I2C", 3)) { @@ -350,14 +350,14 @@ void uDisplay_lvgl::Init(void) { wire = &Wire; wire->begin(i2c_sda, i2c_scl); if (bpp < 16) { - if (buffer) free(buffer); + if (buffer_lvgl) free(buffer_lvgl); #ifdef ESP8266 - buffer = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1); + buffer_lvgl = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1); #else if (psramFound()) { - buffer = (uint8_t*)heap_caps_malloc((gxs * gys * bpp) / 8, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); + buffer_lvgl = (uint8_t*)heap_caps_malloc((gxs * gys * bpp) / 8, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); } else { - buffer = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1); + buffer_lvgl = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1); } #endif } @@ -377,12 +377,12 @@ void uDisplay_lvgl::Init(void) { if (ep_mode) { #ifdef ESP8266 - buffer = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1); + buffer_lvgl = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1); #else if (psramFound()) { - buffer = (uint8_t*)heap_caps_malloc((gxs * gys * bpp) / 8, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); + buffer_lvgl = (uint8_t*)heap_caps_malloc((gxs * gys * bpp) / 8, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); } else { - buffer = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1); + buffer_lvgl = (uint8_t*)calloc((gxs * gys * bpp) / 8, 1); } #endif } @@ -609,70 +609,70 @@ void uDisplay_lvgl::i2c_command(uint8_t val) { void uDisplay_lvgl::Updateframe(void) { - if (ep_mode) { - Updateframe_EPD(); - return; - } +// if (ep_mode) { +// Updateframe_EPD(); +// return; +// } - if (interface == _UDSP_I2C) { +// if (interface == _UDSP_I2C) { - #if 0 - i2c_command(saw_1); - i2c_command(i2c_page_start); - i2c_command(i2c_page_end); - i2c_command(saw_2); - i2c_command(i2c_col_start); - i2c_command(i2c_col_end); +// #if 0 +// i2c_command(saw_1); +// i2c_command(i2c_page_start); +// i2c_command(i2c_page_end); +// i2c_command(saw_2); +// i2c_command(i2c_col_start); +// i2c_command(i2c_col_end); - uint16_t count = gxs * ((gys + 7) / 8); - uint8_t *ptr = buffer; - wire->beginTransmission(i2caddr); - i2c_command(saw_3); - uint8_t bytesOut = 1; - while (count--) { - if (bytesOut >= WIRE_MAX) { - wire->endTransmission(); - wire->beginTransmission(i2caddr); - i2c_command(saw_3); - bytesOut = 1; - } - i2c_command(*ptr++); - bytesOut++; - } - wire->endTransmission(); -#else +// uint16_t count = gxs * ((gys + 7) / 8); +// uint8_t *ptr = buffer_lvgl; +// wire->beginTransmission(i2caddr); +// i2c_command(saw_3); +// uint8_t bytesOut = 1; +// while (count--) { +// if (bytesOut >= WIRE_MAX) { +// wire->endTransmission(); +// wire->beginTransmission(i2caddr); +// i2c_command(saw_3); +// bytesOut = 1; +// } +// i2c_command(*ptr++); +// bytesOut++; +// } +// wire->endTransmission(); +// #else - i2c_command(saw_1 | 0x0); // set low col = 0, 0x00 - i2c_command(i2c_page_start | 0x0); // set hi col = 0, 0x10 - i2c_command(i2c_page_end | 0x0); // set startline line #0, 0x40 +// i2c_command(saw_1 | 0x0); // set low col = 0, 0x00 +// i2c_command(i2c_page_start | 0x0); // set hi col = 0, 0x10 +// i2c_command(i2c_page_end | 0x0); // set startline line #0, 0x40 - uint8_t ys = gys >> 3; - uint8_t xs = gxs >> 3; - //uint8_t xs = 132 >> 3; - uint8_t m_row = saw_2; - uint8_t m_col = i2c_col_start; +// uint8_t ys = gys >> 3; +// uint8_t xs = gxs >> 3; +// //uint8_t xs = 132 >> 3; +// uint8_t m_row = saw_2; +// uint8_t m_col = i2c_col_start; - uint16_t p = 0; +// uint16_t p = 0; - uint8_t i, j, k = 0; +// uint8_t i, j, k = 0; - for ( i = 0; i < ys; i++) { - // send a bunch of data in one xmission - i2c_command(0xB0 + i + m_row); //set page address - i2c_command(m_col & 0xf); //set lower column address - i2c_command(0x10 | (m_col >> 4)); //set higher column address +// for ( i = 0; i < ys; i++) { +// // send a bunch of data in one xmission +// i2c_command(0xB0 + i + m_row); //set page address +// i2c_command(m_col & 0xf); //set lower column address +// i2c_command(0x10 | (m_col >> 4)); //set higher column address - for ( j = 0; j < 8; j++) { - wire->beginTransmission(i2caddr); - wire->write(0x40); - for ( k = 0; k < xs; k++, p++) { - wire->write(buffer[p]); - } - wire->endTransmission(); - } - } -#endif - } +// for ( j = 0; j < 8; j++) { +// wire->beginTransmission(i2caddr); +// wire->write(0x40); +// for ( k = 0; k < xs; k++, p++) { +// wire->write(buffer_lvgl[p]); +// } +// wire->endTransmission(); +// } +// } +// #endif +// } } @@ -884,7 +884,7 @@ void uDisplay_lvgl::setRotation(uint8_t rotation) { } -void udisp_bpwr(uint8_t on); +void udisp_bpwr_lvgl(uint8_t on); void uDisplay_lvgl::DisplayOnff(int8_t on) { @@ -892,7 +892,7 @@ void uDisplay_lvgl::DisplayOnff(int8_t on) { return; } - udisp_bpwr(on); + udisp_bpwr_lvgl(on); if (interface == _UDSP_I2C) { if (on) { @@ -946,7 +946,7 @@ void uDisplay_lvgl::invertDisplay(bool i) { } } -void udisp_dimm(uint8_t dim); +void udisp_dimm_lvgl(uint8_t dim); void uDisplay_lvgl::dim(uint8_t dim) { dimmer = dim; @@ -962,7 +962,7 @@ void uDisplay_lvgl::dim(uint8_t dim) { if (bpanel >= 0) { ledcWrite(ESP32_PWM_CHANNEL, dimmer); } else { - udisp_dimm(dim); + udisp_dimm_lvgl(dim); } #endif @@ -1224,7 +1224,7 @@ void uDisplay_lvgl::SetLut(const unsigned char* lut) { } void uDisplay_lvgl::Updateframe_EPD(void) { - SetFrameMemory(buffer, 0, 0, gxs, gys); + SetFrameMemory(buffer_lvgl, 0, 0, gxs, gys); DisplayFrame(); } @@ -1333,21 +1333,21 @@ void uDisplay_lvgl::DrawAbsolutePixel(int x, int y, int16_t color) { } if (IF_INVERT_COLOR) { if (color) { - buffer[(x + y * w) / 8] |= 0x80 >> (x % 8); + buffer_lvgl[(x + y * w) / 8] |= 0x80 >> (x % 8); } else { - buffer[(x + y * w) / 8] &= ~(0x80 >> (x % 8)); + buffer_lvgl[(x + y * w) / 8] &= ~(0x80 >> (x % 8)); } } else { if (color) { - buffer[(x + y * w) / 8] &= ~(0x80 >> (x % 8)); + buffer_lvgl[(x + y * w) / 8] &= ~(0x80 >> (x % 8)); } else { - buffer[(x + y * w) / 8] |= 0x80 >> (x % 8); + buffer_lvgl[(x + y * w) / 8] |= 0x80 >> (x % 8); } } } void uDisplay_lvgl::drawPixel_EPD(int16_t x, int16_t y, uint16_t color) { - if (!buffer) return; + if (!buffer_lvgl) return; if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) return; diff --git a/tasmota/xdrv_54_lvgl.ino b/tasmota/xdrv_54_lvgl.ino index a73fc629a..4bc89ec40 100644 --- a/tasmota/xdrv_54_lvgl.ino +++ b/tasmota/xdrv_54_lvgl.ino @@ -40,9 +40,10 @@ SemaphoreHandle_t xGuiSemaphore; uDisplay_lvgl * udisp = nullptr; // necessary for compilation -uint8_t color_type = 0; -void udisp_dimm(uint8_t dim) {} -void udisp_bpwr(uint8_t on) {} +uint8_t color_type_lvgl = 0; +uint8_t * buffer_lvgl = nullptr; +void udisp_dimm_lvgl(uint8_t dim) {} +void udisp_bpwr_lvgl(uint8_t on) {} extern "C" { From 48fd8857597c170418cac86c4c9ecf5f577543ae Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 23 Apr 2021 23:34:38 +0200 Subject: [PATCH 17/97] Zigbee fix CC2652P2 --- tasmota/xdrv_23_zigbee_7_0_statemachine.ino | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tasmota/xdrv_23_zigbee_7_0_statemachine.ino b/tasmota/xdrv_23_zigbee_7_0_statemachine.ino index 89bff56dd..79ef79424 100644 --- a/tasmota/xdrv_23_zigbee_7_0_statemachine.ino +++ b/tasmota/xdrv_23_zigbee_7_0_statemachine.ino @@ -466,6 +466,10 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = { ZI_WAIT_RECV(1000, ZBR_AF_REGISTER) ZI_SEND(ZBS_AF_REGISTER0B) // Z_AF register for endpoint 0B, profile 0x0104 Home Automation ZI_WAIT_RECV(1000, ZBR_AF_REGISTER) + // Write again channels, see https://github.com/Koenkk/zigbee-herdsman/blob/37bea20ba04ee5d4938abc21a7569b43f831de32/src/adapter/z-stack/adapter/startZnp.ts#L244-L245 + ZI_SEND(ZBS_W_CHANN) // write CHANNEL + ZI_WAIT_RECV(1000, ZBR_WNV_OK) + // redo Z_ZDO:activeEpReq to check that Ep are available ZI_SEND(ZBS_ZDO_ACTIVEEPREQ) // Z_ZDO:activeEpReq ZI_WAIT_RECV(1000, ZBR_ZDO_ACTIVEEPREQ) From 329fa2492824a491508bc7ca69bac94b2fa07db5 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 24 Apr 2021 12:11:06 +0200 Subject: [PATCH 18/97] Berry conditional compile for modules --- lib/libesp32/Berry/default/be_energylib.c | 4 ++++ lib/libesp32/Berry/default/be_gpio_lib.c | 2 +- lib/libesp32/Berry/default/be_light_lib.c | 4 +++- lib/libesp32/Berry/default/be_modtab.c | 10 +++++++-- lib/libesp32/Berry/default/be_wirelib.c | 4 ++++ lib/libesp32/Berry/default/berry_conf.h | 6 ----- tasmota/xdrv_52_3_berry_energy.ino | 14 ++++++------ tasmota/xdrv_52_3_berry_light.ino | 14 +++++------- tasmota/xdrv_52_3_berry_wire.ino | 27 +++++++---------------- tasmota/xdrv_52_7_berry_embedded.ino | 2 ++ 10 files changed, 43 insertions(+), 44 deletions(-) diff --git a/lib/libesp32/Berry/default/be_energylib.c b/lib/libesp32/Berry/default/be_energylib.c index 020766460..24400e85e 100644 --- a/lib/libesp32/Berry/default/be_energylib.c +++ b/lib/libesp32/Berry/default/be_energylib.c @@ -7,6 +7,8 @@ *******************************************************************/ #include "be_object.h" +#ifdef USE_ENERGY_SENSOR + extern int b_nrg_read(bvm *vm); // #if !BE_USE_PRECOMPILED_OBJECT @@ -24,3 +26,5 @@ module tasmota (scope: global, depend: 1) { @const_object_info_end */ #include "../generate/be_fixed_tasmota.h" #endif + +#endif // USE_ENERGY_SENSOR \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_gpio_lib.c b/lib/libesp32/Berry/default/be_gpio_lib.c index 1aa4cc771..e52a50cdd 100644 --- a/lib/libesp32/Berry/default/be_gpio_lib.c +++ b/lib/libesp32/Berry/default/be_gpio_lib.c @@ -290,7 +290,7 @@ be_native_module_attr_table(gpio) { be_define_native_module(gpio, NULL); #else /* @const_object_info_begin -module gpio (scope: global, depend: BE_USE_TASMOTA) { +module gpio (scope: global) { LOW, int(0) HIGH, int(1) diff --git a/lib/libesp32/Berry/default/be_light_lib.c b/lib/libesp32/Berry/default/be_light_lib.c index 95f6baf13..28e95e6cc 100644 --- a/lib/libesp32/Berry/default/be_light_lib.c +++ b/lib/libesp32/Berry/default/be_light_lib.c @@ -7,7 +7,7 @@ #include "be_string.h" #include "be_gc.h" - +#ifdef USE_LIGHT extern int l_getlight(bvm *vm); extern int l_setlight(bvm *vm); @@ -39,3 +39,5 @@ module tasmota (scope: global, depend: 1) { @const_object_info_end */ #include "../generate/be_fixed_tasmota.h" #endif + +#endif // USE_LIGHT \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index 0ae689955..3f9af58ad 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -63,15 +63,19 @@ BERRY_LOCAL const bntvmodule* const be_module_table[] = { &be_native_module(solidify), #endif /* user-defined modules register start */ -#if BE_USE_TASMOTA + &be_native_module(gpio), +#ifdef USE_LIGHT &be_native_module(light), +#endif #ifdef USE_LVGL &be_native_module(lvgl), #endif // USE_LVGL +#ifdef USE_ENERGY_SENSOR &be_native_module(energy), -#endif +#endif // USE_ENERGY_SENSOR + /* user-defined modules register end */ NULL /* do not remove */ @@ -98,7 +102,9 @@ BERRY_API void be_load_custom_libs(bvm *vm) /* be_load_xxxlib(vm); */ #endif be_load_tasmota_ntvlib(vm); +#ifdef USE_I2C be_load_wirelib(vm); +#endif // USE_I2C be_load_driverlib(vm); #ifdef USE_LVGL // LVGL diff --git a/lib/libesp32/Berry/default/be_wirelib.c b/lib/libesp32/Berry/default/be_wirelib.c index 1ac65dd82..ee75d6a54 100644 --- a/lib/libesp32/Berry/default/be_wirelib.c +++ b/lib/libesp32/Berry/default/be_wirelib.c @@ -9,6 +9,8 @@ #include "be_string.h" #include "be_gc.h" +#ifdef USE_I2C + extern int b_wire_init(bvm *vm); extern int b_wire_begintransmission(bvm *vm); @@ -241,3 +243,5 @@ module tasmota (scope: global, depend: 1) { @const_object_info_end */ #include "../generate/be_fixed_tasmota.h" #endif + +#endif // USE_I2C \ No newline at end of file diff --git a/lib/libesp32/Berry/default/berry_conf.h b/lib/libesp32/Berry/default/berry_conf.h index 9f61edd70..1136d0a5c 100644 --- a/lib/libesp32/Berry/default/berry_conf.h +++ b/lib/libesp32/Berry/default/berry_conf.h @@ -158,12 +158,6 @@ #define BE_USE_GC_MODULE 1 #define BE_USE_SOLIDIFY_MODULE 1 -// #ifdef ESP32 -#define BE_USE_TASMOTA 1 -// #else -// #define BE_USE_TASMOTA 0 -// #endif - /* Macro: BE_EXPLICIT_XXX * If these macros are defined, the corresponding function will * use the version defined by these macros. These macro definitions diff --git a/tasmota/xdrv_52_3_berry_energy.ino b/tasmota/xdrv_52_3_berry_energy.ino index 75ae27245..e39cd8967 100644 --- a/tasmota/xdrv_52_3_berry_energy.ino +++ b/tasmota/xdrv_52_3_berry_energy.ino @@ -20,6 +20,8 @@ #ifdef USE_BERRY +#ifdef USE_ENERGY_SENSOR + #include @@ -32,7 +34,6 @@ * \*********************************************************************************************/ extern "C" { -#ifdef USE_ENERGY_SENSOR // Berry: `begintransmission(address:int) -> nil` int32_t b_nrg_read(struct bvm *vm); int32_t b_nrg_read(struct bvm *vm) { @@ -53,18 +54,17 @@ extern "C" { be_pop(vm, 1); be_return(vm); // Return } -#else // USE_ENERGY_SENSOR +} + +#endif // USE_ENERGY_SENSOR + +extern "C" { // int32_t b_wire_energymissing(struct bvm *vm); int32_t b_wire_energymissing(struct bvm *vm) { be_raise(vm, "feature_error", "Energy sensor is not enabled, use '#define USE_ENERGY_SENSOR'"); } - // define weak aliases - int32_t b_nrg_read(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_energymissing"))); -#endif // USE_ENERGY_SENSOR } - - #endif // USE_BERRY diff --git a/tasmota/xdrv_52_3_berry_light.ino b/tasmota/xdrv_52_3_berry_light.ino index aadeea032..44c383866 100644 --- a/tasmota/xdrv_52_3_berry_light.ino +++ b/tasmota/xdrv_52_3_berry_light.ino @@ -20,6 +20,8 @@ #ifdef USE_BERRY +#ifdef USE_LIGHT + #include #include @@ -29,7 +31,6 @@ \*********************************************************************************************/ extern "C" { -#ifdef USE_LIGHT // push the light status object on the vm stack void push_getlight(bvm *vm, uint32_t light_num) { bool data_present = false; // do we have relevant data @@ -295,18 +296,15 @@ extern "C" { } be_raise(vm, kTypeError, nullptr); } +} -#else // #ifdef USE_LIGHT +#endif // USE_LIGHT +extern "C" { int32_t b_light_missing(struct bvm *vm) { be_raise(vm, "feature_error", "LIGHT is not enabled, use '#define USE_LIGHT'"); } - int32_t l_getlight(struct bvm *vm) __attribute__ ((weak, alias ("b_light_missing"))); - int32_t l_setlight(struct bvm *vm) __attribute__ ((weak, alias ("b_light_missing"))); - int32_t l_gamma8(struct bvm *vm) __attribute__ ((weak, alias ("b_light_missing"))); - int32_t l_gamma10(struct bvm *vm) __attribute__ ((weak, alias ("b_light_missing"))); - int32_t l_rev_gamma10(struct bvm *vm) __attribute__ ((weak, alias ("b_light_missing"))); -#endif // #ifdef USE_LIGHT + } #endif // USE_BERRY diff --git a/tasmota/xdrv_52_3_berry_wire.ino b/tasmota/xdrv_52_3_berry_wire.ino index f288d188a..8aa404222 100644 --- a/tasmota/xdrv_52_3_berry_wire.ino +++ b/tasmota/xdrv_52_3_berry_wire.ino @@ -20,6 +20,8 @@ #ifdef USE_BERRY +#ifdef USE_I2C + #include #include @@ -52,7 +54,6 @@ int32_t getBus(bvm *vm) { * \*********************************************************************************************/ extern "C" { -#ifdef USE_I2C // Berry: `init([bus:int = 0]) -> nil int32_t b_wire_init(struct bvm *vm); int32_t b_wire_init(struct bvm *vm) { @@ -241,28 +242,16 @@ extern "C" { } be_raise(vm, kTypeError, nullptr); } -#else // USE_I2C - // +} + +#endif // USE_I2C + +extern "C" { + // Handle methods that require I2C to be enabled int32_t b_wire_i2cmissing(struct bvm *vm); int32_t b_wire_i2cmissing(struct bvm *vm) { be_raise(vm, "feature_error", "I2C is not enabled, use '#define USE_I2C'"); } - - // define weak aliases - int32_t b_wire_init(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); - int32_t b_wire_begintransmission(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); - int32_t b_wire_endtransmission(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); - int32_t b_wire_requestfrom(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); - int32_t b_wire_available(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); - int32_t b_wire_write(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); - int32_t b_wire_read(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); - int32_t b_wire_scan(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); - int32_t b_wire_validwrite(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); - int32_t b_wire_validread(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); - int32_t b_wire_readbytes(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); - int32_t b_wire_writebytes(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); - int32_t b_wire_detect(struct bvm *vm) __attribute__ ((weak, alias ("b_wire_i2cmissing"))); -#endif // USE_I2C } #endif // USE_BERRY diff --git a/tasmota/xdrv_52_7_berry_embedded.ino b/tasmota/xdrv_52_7_berry_embedded.ino index 8f4375281..cc0a3a320 100644 --- a/tasmota/xdrv_52_7_berry_embedded.ino +++ b/tasmota/xdrv_52_7_berry_embedded.ino @@ -32,7 +32,9 @@ const char berry_prog[] = // auto-import modules // // import alias +#ifdef USE_ENERGY_SENSOR "import energy " +#endif // Phase 1 "class Tasmota: Tasmota_ntv " From 7b83e5d1e6ea229d9268a2cd6849f22de40e1cc9 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sat, 24 Apr 2021 12:29:05 +0200 Subject: [PATCH 19/97] lvgl update 1 --- lib/lib_display/UDisplay/uDisplay.cpp | 26 ++++++++++++++++--- lib/lib_display/UDisplay/uDisplay.h | 8 +++--- .../Adafruit_LvGL_Glue.cpp | 14 +++++----- .../Adafruit_LvGL_Glue.h | 8 +++--- 4 files changed, 38 insertions(+), 18 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index a0403e927..9a9a3c5fb 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -31,6 +31,17 @@ uint16_t uDisplay::GetColorFromIndex(uint8_t index) { return udisp_colors[index]; } +uint16_t uDisplay::fgcol(void) { + return fg_col; +} +uint16_t uDisplay::bgcol(void) { + return bg_col; +} + +int8_t uDisplay::color_type(void) { + return col_type; +} + uDisplay::~uDisplay(void) { if (framebuffer) { @@ -40,6 +51,8 @@ uDisplay::~uDisplay(void) { uDisplay::uDisplay(char *lp) : Renderer(800, 600) { // analyse decriptor + pwr_cbp = 0; + dim_cbp = 0; framebuffer = 0; col_mode = 16; sa_mode = 16; @@ -915,8 +928,8 @@ void uDisplay::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) SPI_CS_HIGH SPI_END_TRANSACTION } else { - SPI_CS_LOW SPI_BEGIN_TRANSACTION + SPI_CS_LOW setAddrWindow_int(x0, y0, x1 - x0, y1 - y0 ); } } @@ -1092,7 +1105,11 @@ void uDisplay::DisplayOnff(int8_t on) { return; } - udisp_bpwr(on); + if (pwr_cbp) { + pwr_cbp(on); + } + +// udisp_bpwr(on); if (interface == _UDSP_I2C) { if (on) { @@ -1162,7 +1179,10 @@ void uDisplay::dim(uint8_t dim) { if (bpanel >= 0) { ledcWrite(ESP32_PWM_CHANNEL, dimmer); } else { - udisp_dimm(dim); + //udisp_dimm(dim); + if (dim_cbp) { + dim_cbp(dim); + } } #endif diff --git a/lib/lib_display/UDisplay/uDisplay.h b/lib/lib_display/UDisplay/uDisplay.h index 8cf0aff7f..bb54d948c 100755 --- a/lib/lib_display/UDisplay/uDisplay.h +++ b/lib/lib_display/UDisplay/uDisplay.h @@ -79,9 +79,9 @@ class uDisplay : public Renderer { void DisplayOnff(int8_t on); void Splash(void); char *devname(void); - uint16_t fgcol(void) const { return fg_col; }; - uint16_t bgcol(void) const { return bg_col; }; - int8_t color_type(void) const { return col_type; }; + uint16_t fgcol(void); + uint16_t bgcol(void); + int8_t color_type(void); void dim(uint8_t dim); uint16_t GetColorFromIndex(uint8_t index); void setRotation(uint8_t m); @@ -90,6 +90,8 @@ class uDisplay : public Renderer { void pushColors(uint16_t *data, uint16_t len, boolean first); void TS_RotConvert(int16_t *x, int16_t *y); void invertDisplay(boolean i); + void SetPwrCB(pwr_cb cb) { pwr_cbp = cb; }; + void SetDimCB(dim_cb cb) { dim_cbp = cb; }; private: void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp index 8f9e62570..6f40e4f59 100644 --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp @@ -165,7 +165,7 @@ static void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_col return; // ok } - uDisplay_lvgl *display = glue->display; + Renderer *display = glue->display; if (!glue->first_frame) { //display->dmaWait(); // Wait for prior DMA transfer to complete @@ -174,11 +174,9 @@ static void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_col glue->first_frame = false; } - // display->startWrite(); - // display->setAddrWindow(area->x1, area->y1, width, height); - display->writePixels(area->x1, area->y1, width, height, - (uint16_t *)color_p, width * height); - // display->pushColors((uint16_t *)color_p, width * height, false); + display->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height); + display->pushColors((uint16_t *)color_p, width * height, true); + display->setAddrWindow(0,0,0,0); lv_disp_flush_ready(disp); } @@ -286,11 +284,11 @@ Adafruit_LvGL_Glue::~Adafruit_LvGL_Glue(void) { * * LVGL_ERR_TIMER : Failure to set up timers * * LVGL_ERR_ALLOC : Failure to allocate memory */ -LvGLStatus Adafruit_LvGL_Glue::begin(uDisplay_lvgl *tft, bool debug) { +LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, bool debug) { return begin(tft, (void *)NULL, debug); } -LvGLStatus Adafruit_LvGL_Glue::begin(uDisplay_lvgl *tft, void *touch, bool debug) { +LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) { lv_init(); // #if (LV_USE_LOG) diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h index f60f86d41..9a9c36e97 100644 --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h @@ -2,7 +2,7 @@ #define _ADAFRUIT_LVGL_GLUE_H_ #include // LittlevGL core lib -#include +#include #include // ESP32-specific timer lib #include @@ -27,10 +27,10 @@ public: // bool debug = false); // LvGLStatus begin(uDisplay_lvgl *tft, TouchScreen *touch, // bool debug = false); - LvGLStatus begin(uDisplay_lvgl *tft, bool debug = false); + LvGLStatus begin(Renderer *tft, bool debug = false); // These items need to be public for some internal callbacks, // but should be avoided by user code please! - uDisplay_lvgl *display; ///< Pointer to the SPITFT display instance + Renderer *display; ///< Pointer to the SPITFT display instance void *touchscreen; ///< Pointer to the touchscreen object to use bool is_adc_touch; ///< determines if the touchscreen controlelr is ADC based bool first_frame; ///< Tracks if a call to `lv_flush_callback` needs to wait @@ -40,7 +40,7 @@ public: void stopScreenshot(void) { screenshot = nullptr; } private: - LvGLStatus begin(uDisplay_lvgl *tft, void *touch, bool debug); + LvGLStatus begin(Renderer *tft, void *touch, bool debug); lv_disp_drv_t lv_disp_drv; lv_disp_buf_t lv_disp_buf; lv_color_t *lv_pixel_buf; From 0f7ec3cb77d91d81298ad07fac580bbe9cde0596 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sat, 24 Apr 2021 12:31:14 +0200 Subject: [PATCH 20/97] update lvgl 2 --- .../src/renderer.cpp | 46 +++++- .../Display_Renderer-gemu-1.0/src/renderer.h | 11 ++ tasmota/xdrv_10_scripter.ino | 140 ++++++++++++++++++ tasmota/xdrv_13_display.ino | 49 +++--- tasmota/xdrv_54_lvgl.ino | 31 ++-- 5 files changed, 236 insertions(+), 41 deletions(-) diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp index f605d2728..2f0fecdde 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp @@ -153,6 +153,13 @@ void Renderer::DrawStringAt(int16_t x, int16_t y, const char* text, uint16_t col int refcolumn = x; sFONT *xfont = selected_font; +/* + if (font == 5 && !drawmode) { + // clear bckground + int16_t x1,y1; + uint16_t w,h; + Adafruit_GFX::getTextBounds(text, 0, 0, &x1, &y1, &w, &h); + }*/ #ifndef USE_EPD_FONTS font=0; #endif @@ -297,13 +304,15 @@ void Renderer::setTextFont(uint8_t f) { void Renderer::SetRamfont(uint8_t *font) { + ramfont = (GFXfont*)font; - uint32_t bitmap_offset = (uint32_t)ramfont->bitmap; - uint32_t glyph_offset = (uint32_t)ramfont->glyph; - - ramfont->bitmap = (uint8_t*)((uint32_t)font + bitmap_offset); - ramfont->glyph = (GFXglyph*)((uint32_t)font + glyph_offset); + if (font) { + uint32_t bitmap_offset = (uint32_t)ramfont->bitmap; + uint32_t glyph_offset = (uint32_t)ramfont->glyph; + ramfont->bitmap = (uint8_t*)((uint32_t)font + bitmap_offset); + ramfont->glyph = (GFXglyph*)((uint32_t)font + glyph_offset); + } setFont(ramfont); } @@ -588,6 +597,33 @@ void Renderer::scrollTo(uint16_t y) { } +void Renderer::SetPwrCB(pwr_cb cb) { + +} +void Renderer::SetDimCB(dim_cb cb) { + +} + +uint16_t Renderer::fgcol(void) { + return 0; +} +uint16_t Renderer::bgcol(void) { + return 0; +} +int8_t Renderer::color_type(void) { + return 0; +} + +void Renderer::Splash(void) { + +} + +const char dname[1] = {0}; + +char *Renderer::devname(void) { + return (char*)dname; +} + void VButton::xdrawButton(bool inverted) { wr_redir=1; drawButton(inverted); diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h index c0e244c6c..29d62f53b 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h @@ -16,6 +16,8 @@ // a. in class GFX setCursor,setTextSize => virtual // b. textcolor,textbgcolor => public; +typedef void (*pwr_cb)(uint8_t); +typedef void (*dim_cb)(uint8_t); class Renderer : public Adafruit_GFX { //Paint(unsigned char* image, int width, int height); @@ -42,12 +44,21 @@ public: virtual void setScrollMargins(uint16_t top, uint16_t bottom); virtual void scrollTo(uint16_t y); virtual void TS_RotConvert(int16_t *x, int16_t *y); + virtual void SetPwrCB(pwr_cb cb); + virtual void SetDimCB(dim_cb cb); + virtual uint16_t fgcol(void); + virtual uint16_t bgcol(void); + virtual int8_t color_type(void); + virtual void Splash(void); + virtual char *devname(void); void setDrawMode(uint8_t mode); uint8_t drawmode; virtual void FastString(uint16_t x,uint16_t y,uint16_t tcolor, const char* str); void setTextSize(uint8_t s); virtual uint8_t *allocate_framebuffer(uint32_t size); + pwr_cb pwr_cbp = 0; + dim_cb dim_cbp = 0; private: void DrawCharAt(int16_t x, int16_t y, char ascii_char,int16_t colored); inline void drawFastVLineInternal(int16_t x, int16_t y, int16_t h, uint16_t color) __attribute__((always_inline)); diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index e7c83435f..6d0102ac3 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -2621,6 +2621,15 @@ chknext: tind->bits.is_string = 0; return lp + len; } +#ifdef USE_LVGL + if (!strncmp(vname, "lvgl(", 5)) { + lp = GetNumericArgument(lp + 5, OPER_EQU, &fvar, gv); + fvar = lvgl_test(fvar); + lp++; + len = 0; + goto exit; + } +#endif break; case 'm': if (!strncmp(vname, "med(", 4)) { @@ -7704,6 +7713,137 @@ void cpy2lf(char *dst, uint32_t dstlen, char *src) { } } +#ifdef USE_LVGL +#include +#include "lvgl.h" + + +const char ili9342[] PROGMEM = +":H,ILI9342,320,240,16,SPI,1,*,*,*,*,*,*,*,40\n" +":S,2,1,3,0,100,100\n" +":I\n" +"EF,3,03,80,02\n" +"CF,3,00,C1,30\n" +"ED,4,64,03,12,81\n" +"E8,3,85,00,78\n" +"CB,5,39,2C,00,34,02\n" +"F7,1,20\n" +"EA,2,00,00\n" +"C0,1,23\n" +"C1,1,10\n" +"C5,2,3e,28\n" +"C7,1,86\n" +"36,1,48\n" +"37,1,00\n" +"3A,1,55\n" +"B1,2,00,18\n" +"B6,3,08,82,27\n" +"F2,1,00\n" +"26,1,01\n" +"E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00\n" +"E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F\n" +"21,80\n" +"11,80\n" +"29,80\n" +":o,28\n" +":O,29\n" +":A,2A,2B,2C,16\n" +":R,36\n" +":0,08,00,00,00\n" +":1,A8,00,00,01\n" +":2,C8,00,00,02\n" +":3,68,00,00,03\n" +":i,21,20\n" +":TI2,38,22,21\n" +"#\n"; + + +void start_lvgl(const char * uconfig); + +int32_t lvgl_test(int32_t p) { + start_lvgl(ili9342); + lv_obj_clean(lv_scr_act()); + + lv_obj_t *label1 = lv_label_create(lv_scr_act(), NULL); + + /*Modify the Label's text*/ + lv_label_set_text(label1, "Hello world!"); + + /* Align the Label to the center + * NULL means align on parent (which is the screen now) + * 0, 0 at the end means an x, y offset after alignment*/ + lv_obj_align(label1, NULL, LV_ALIGN_CENTER, 0, 0); + + + /*Add a button*/ + lv_obj_t *btn1 = lv_btn_create(lv_scr_act(), NULL); /*Add to the active screen*/ + lv_obj_set_pos(btn1, 2, 2); /*Adjust the position*/ + lv_obj_set_size(btn1, 96, 30); /* set size of button */ +// lv_btn_set_action(btn1, LV_BTN_ACTION_CLICK, my_click_action); /*Assign a callback for clicking*/ + + /*Add text*/ + lv_obj_t *label = lv_label_create(btn1, NULL); /*Put on 'btn1'*/ + lv_label_set_text(label, "Click"); + + + return 0; +} + +/* + +lv_obj_t * myButton; +lv_obj_t * myButtonLabel; +lv_obj_t * myLabel; + +lv_style_t myButtonStyleREL; //relesed style +lv_style_t myButtonStylePR; //pressed style + +static lv_res_t btn_click_action(lv_obj_t * btn) { + uint8_t id = lv_obj_get_free_num(btn); //id usefull when there are multiple buttons + + if(id == 0) + { + char buffer[100]; + sprintf(buffer, "button was clicked %i milliseconds from start", pros::millis()); + lv_label_set_text(myLabel, buffer); + } + + return LV_RES_OK; +} + +#define LV_COLOR_MAKE lv_color_make + +void initialize() { + lv_style_copy(&myButtonStyleREL, &lv_style_plain); + myButtonStyleREL.body.main_color = LV_COLOR_MAKE(150, 0, 0); + myButtonStyleREL.body.grad_color = LV_COLOR_MAKE(0, 0, 150); + myButtonStyleREL.body.radius = 0; + myButtonStyleREL.text.color = LV_COLOR_MAKE(255, 255, 255); + + lv_style_copy(&myButtonStylePR, &lv_style_plain); + myButtonStylePR.body.main_color = LV_COLOR_MAKE(255, 0, 0); + myButtonStylePR.body.grad_color = LV_COLOR_MAKE(0, 0, 255); + myButtonStylePR.body.radius = 0; + myButtonStylePR.text.color = LV_COLOR_MAKE(255, 255, 255); + + myButton = lv_btn_create(lv_scr_act(), NULL); //create button, lv_scr_act() is deafult screen object + lv_obj_set_free_num(myButton, 0); //set button is to 0 + lv_btn_set_action(myButton, LV_BTN_ACTION_CLICK, btn_click_action); //set function to be called on button click + lv_btn_set_style(myButton, LV_BTN_STYLE_REL, &myButtonStyleREL); //set the relesed style + lv_btn_set_style(myButton, LV_BTN_STYLE_PR, &myButtonStylePR); //set the pressed style + lv_obj_set_size(myButton, 200, 50); //set the button size + lv_obj_align(myButton, NULL, LV_ALIGN_IN_TOP_LEFT, 10, 10); //set the position to top mid + + myButtonLabel = lv_label_create(myButton, NULL); //create label and puts it inside of the button + lv_label_set_text(myButtonLabel, "Click the Button"); //sets label text + + myLabel = lv_label_create(lv_scr_act(), NULL); //create label and puts it on the screen + lv_label_set_text(myLabel, "Button has not been clicked yet"); //sets label text + lv_obj_align(myLabel, NULL, LV_ALIGN_LEFT_MID, 10, 0); //set the position to center +} +*/ + +#endif /*********************************************************************************************\ * Interface diff --git a/tasmota/xdrv_13_display.ino b/tasmota/xdrv_13_display.ino index 166d38bc0..1736e6a2c 100755 --- a/tasmota/xdrv_13_display.ino +++ b/tasmota/xdrv_13_display.ino @@ -824,27 +824,36 @@ extern FS *ffsp; char fname[32]; *ep = 0; ep++; - if (*cp != '/') { - fname[0] = '/'; - fname[1] = 0; + if (*cp == '-' && *(cp + 1) == 0) { + if (ram_font) { + free (ram_font); + ram_font = 0; + if (renderer) renderer->SetRamfont(0); + } + cp = ep; } else { - fname[0] = 0; - } - strlcat(fname, cp, sizeof(fname)); - if (!strstr(cp, ".fnt")) { - strlcat(fname, ".fnt", sizeof(fname)); - } - if (ffsp) { - File fp; - fp = ffsp->open(fname, "r"); - if (fp > 0) { - uint32_t size = fp.size(); - if (ram_font) free (ram_font); - ram_font = (uint8_t*)special_malloc(size + 4); - fp.read((uint8_t*)ram_font, size); - fp.close(); - if (renderer) renderer->SetRamfont(ram_font); - //Serial.printf("Font loaded: %s\n",fname ); + if (*cp != '/') { + fname[0] = '/'; + fname[1] = 0; + } else { + fname[0] = 0; + } + strlcat(fname, cp, sizeof(fname)); + if (!strstr(cp, ".fnt")) { + strlcat(fname, ".fnt", sizeof(fname)); + } + if (ffsp) { + File fp; + fp = ffsp->open(fname, "r"); + if (fp > 0) { + uint32_t size = fp.size(); + if (ram_font) free (ram_font); + ram_font = (uint8_t*)special_malloc(size + 4); + fp.read((uint8_t*)ram_font, size); + fp.close(); + if (renderer) renderer->SetRamfont(ram_font); + //Serial.printf("Font loaded: %s\n",fname ); + } } } cp = ep; diff --git a/tasmota/xdrv_54_lvgl.ino b/tasmota/xdrv_54_lvgl.ino index 4bc89ec40..83fb7696b 100644 --- a/tasmota/xdrv_54_lvgl.ino +++ b/tasmota/xdrv_54_lvgl.ino @@ -20,7 +20,7 @@ #ifdef USE_LVGL -#include +#include #include "lvgl.h" #define XDRV_54 54 @@ -37,7 +37,7 @@ * you should lock on the very same semaphore! */ SemaphoreHandle_t xGuiSemaphore; -uDisplay_lvgl * udisp = nullptr; +//uDisplay * udisp = nullptr; // necessary for compilation uint8_t color_type_lvgl = 0; @@ -121,7 +121,7 @@ static void guiTask(void *pvParameter) { /************************************************************ * Callbacks for file system access from LVGL - * + * * Useful to load fonts or images from file system ************************************************************/ @@ -217,7 +217,7 @@ static lv_fs_res_t lvbe_fs_seek(lv_fs_drv_t * drv, void * file_p, uint32_t pos) return LV_FS_RES_OK; } else { return LV_FS_RES_UNKNOWN; - } + } } static lv_fs_res_t lvbe_fs_size(lv_fs_drv_t * drv, void * file_p, uint32_t * size_p); @@ -238,11 +238,13 @@ static lv_fs_res_t lvbe_fs_remove(lv_fs_drv_t * drv, const char *path) { /************************************************************ * Initialize the display / touchscreen drivers then launch lvgl - * + * * We use Adafruit_LvGL_Glue to leverage the Adafruit * display ecosystem. ************************************************************/ + Renderer *Init_uDisplay(const char *desc, int8_t cs); + void start_lvgl(const char * uconfig); void start_lvgl(const char * uconfig) { @@ -251,25 +253,18 @@ void start_lvgl(const char * uconfig) { return; } - if (udisp == nullptr) { - udisp = new uDisplay_lvgl((char*)uconfig); + if (uconfig && !renderer) { + renderer = Init_uDisplay((char*)uconfig, -1); + if (!renderer) return; } - udisp->Init(); - - // Settings.display_width = udisp->width(); - // Settings.display_height = udisp->height(); - - udisp->DisplayInit(0 /* DISPLAY_INIT_MODE */, Settings.display_size, Settings.display_rotate, Settings.display_font); - udisp->dim(Settings.display_dimmer); - // ************************************************** // Initialize the glue between Adafruit and LVGL // ************************************************** glue = new Adafruit_LvGL_Glue(); // Initialize glue, passing in address of display & touchscreen - LvGLStatus status = glue->begin(udisp); + LvGLStatus status = glue->begin(renderer); if (status != LVGL_OK) { AddLog(LOG_LEVEL_ERROR, PSTR("Glue error %d"), status); return; @@ -277,8 +272,10 @@ void start_lvgl(const char * uconfig) { // Set the default background color of the display // This is normally overriden by an opaque screen on top +#ifdef USE_BERRY lv_obj_set_style_local_bg_color(lv_scr_act(), LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, lv_color_from_uint32(USE_LVGL_BG_DEFAULT)); lv_obj_set_style_local_bg_opa(lv_scr_act(), LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_COVER); +#endif #if LV_USE_LOG lv_log_register_print_cb(lvbe_debug); @@ -319,6 +316,8 @@ void start_lvgl(const char * uconfig) { * Otherwise there can be problem such as memory corruption and so on. * NOTE: When not using Wi-Fi nor Bluetooth you can pin the guiTask to core 0 */ xTaskCreatePinnedToCore(guiTask, "gui", 4096*2, NULL, 0, NULL, 1); + + AddLog(LOG_LEVEL_INFO, PSTR("LVGL initialized")); } /*********************************************************************************************\ From 2b899afcf16e329ac73f87ded16f26a8dac96a11 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Fri, 23 Apr 2021 19:34:12 +0200 Subject: [PATCH 21/97] Update renderer.cpp From 9e27eb394e01bf390306a1cb81e2cd85c6028d2d Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sat, 24 Apr 2021 13:16:30 +0200 Subject: [PATCH 22/97] Update xdrv_54_lvgl.ino --- tasmota/xdrv_54_lvgl.ino | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tasmota/xdrv_54_lvgl.ino b/tasmota/xdrv_54_lvgl.ino index 83fb7696b..b2500840e 100644 --- a/tasmota/xdrv_54_lvgl.ino +++ b/tasmota/xdrv_54_lvgl.ino @@ -254,8 +254,12 @@ void start_lvgl(const char * uconfig) { } if (uconfig && !renderer) { +#ifdef USE_UNIVERSAL_DISPLAY renderer = Init_uDisplay((char*)uconfig, -1); if (!renderer) return; +#else + return; +#endif } // ************************************************** From 9d6699b4a0e9c48207ec5eff5de1e2f4681aa611 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 24 Apr 2021 15:36:21 +0200 Subject: [PATCH 23/97] Update platformio_override_sample.ini --- platformio_override_sample.ini | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index b09b51e99..b69ed2470 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -84,10 +84,9 @@ lib_extra_dirs = ${library.lib_extra_dirs} ;build_unflags = ${tasmota_stage.build_unflags} ;build_flags = ${tasmota_stage.build_flags} -; -platform_packages = ${core_stage.platform_packages} -build_unflags = ${core_stage.build_unflags} -build_flags = ${core_stage.build_flags} +;platform_packages = ${core_stage.platform_packages} +;build_unflags = ${core_stage.build_unflags} +;build_flags = ${core_stage.build_flags} [tasmota_stage] From cc749f518e0a840e1a2ee9f141b0a730e19e6a04 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 24 Apr 2021 15:39:26 +0200 Subject: [PATCH 24/97] Update platformio_override_sample.ini --- platformio_override_sample.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index b69ed2470..ef42c9580 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -101,7 +101,7 @@ build_flags = ${esp82xx_defaults.build_flags} [core_stage] ; *** Esp8266 core for Arduino version stage platform_packages = framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git -; *** Use Xtensa build chain 10.2. GNU13 from https://github.com/earlephilhower/esp-quick-toolchain +; *** Use Xtensa build chain 10.2. GNU23 from https://github.com/earlephilhower/esp-quick-toolchain tasmota/toolchain-xtensa @ 5.100200.210303 build_unflags = ${esp_defaults.build_unflags} -Wswitch-unreachable From 70c2290c9d56d7e081131c83a975856ddd6ef197 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sat, 24 Apr 2021 16:20:39 +0200 Subject: [PATCH 25/97] lvgl touch added --- .../Adafruit_LvGL_Glue.cpp | 108 +----------- .../Adafruit_LvGL_Glue.h | 2 +- tasmota/xdrv_10_scripter.ino | 157 ++++++++++++------ tasmota/xdrv_54_lvgl.ino | 5 +- 4 files changed, 121 insertions(+), 151 deletions(-) diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp index 6f40e4f59..cbe6b5e1c 100644 --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp @@ -22,107 +22,15 @@ static void lv_tick_handler(void) { lv_tick_inc(lv_tick_interval_ms); } #define ADC_YMIN 240 #define ADC_YMAX 840 + +uint32_t Touch_Status(uint32_t sel); + static bool touchscreen_read(struct _lv_indev_drv_t *indev_drv, lv_indev_data_t *data) { -// static lv_coord_t last_x = 0, last_y = 0; -// static uint8_t release_count = 0; - -// // Get pointer to glue object from indev user data -// Adafruit_LvGL_Glue *glue = (Adafruit_LvGL_Glue *)indev_drv->user_data; -// uDisplay_lvgl *disp = glue->display; - -// if (glue->is_adc_touch) { -// TouchScreen *touch = (TouchScreen *)glue->touchscreen; -// TSPoint p = touch->getPoint(); -// // Serial.printf("%d %d %d\r\n", p.x, p.y, p.z); -// // Having an issue with spurious z=0 results from TouchScreen lib. -// // Since touch is polled periodically, workaround is to watch for -// // several successive z=0 results, and only then regard it as -// // a release event (otherwise still touched). -// if (p.z < touch->pressureThreshhold) { // A zero-ish value -// release_count += (release_count < 255); -// if (release_count >= 4) { -// data->state = LV_INDEV_STATE_REL; // Is REALLY RELEASED -// } else { -// data->state = LV_INDEV_STATE_PR; // Is STILL PRESSED -// } -// } else { -// release_count = 0; // Reset release counter -// data->state = LV_INDEV_STATE_PR; // Is PRESSED -// switch (glue->display->getRotation()) { -// case 0: -// last_x = map(p.x, ADC_XMIN, ADC_XMAX, 0, disp->width() - 1); -// last_y = map(p.y, ADC_YMAX, ADC_YMIN, 0, disp->height() - 1); -// break; -// case 1: -// last_x = map(p.y, ADC_YMAX, ADC_YMIN, 0, disp->width() - 1); -// last_y = map(p.x, ADC_XMAX, ADC_XMIN, 0, disp->height() - 1); -// break; -// case 2: -// last_x = map(p.x, ADC_XMAX, ADC_XMIN, 0, disp->width() - 1); -// last_y = map(p.y, ADC_YMIN, ADC_YMAX, 0, disp->height() - 1); -// break; -// case 3: -// last_x = map(p.y, ADC_YMIN, ADC_YMAX, 0, disp->width() - 1); -// last_y = map(p.x, ADC_XMIN, ADC_XMAX, 0, disp->height() - 1); -// break; -// } -// } -// data->point.x = last_x; // Last-pressed coordinates -// data->point.y = last_y; -// return false; // No buffering of ADC touch data -// } else { -// uint8_t fifo; // Number of points in touchscreen FIFO -// bool moar = false; -// Adafruit_STMPE610 *touch = (Adafruit_STMPE610 *)glue->touchscreen; -// // Before accessing SPI touchscreen, wait on any in-progress -// // DMA screen transfer to finish (shared bus). -// //disp->dmaWait(); -// // disp->endWrite(); -// if ((fifo = touch->bufferSize())) { // 1 or more points await -// data->state = LV_INDEV_STATE_PR; // Is PRESSED -// TS_Point p = touch->getPoint(); -// // Serial.printf("%d %d %d\r\n", p.x, p.y, p.z); -// // On big TFT FeatherWing, raw X axis is flipped?? -// if ((glue->display->width() == 480) || (glue->display->height() == 480)) { -// p.x = (TS_MINX + TS_MAXX) - p.x; -// } -// switch (glue->display->getRotation()) { -// case 0: -// last_x = map(p.x, TS_MAXX, TS_MINX, 0, disp->width() - 1); -// last_y = map(p.y, TS_MINY, TS_MAXY, 0, disp->height() - 1); -// break; -// case 1: -// last_x = map(p.y, TS_MINY, TS_MAXY, 0, disp->width() - 1); -// last_y = map(p.x, TS_MINX, TS_MAXX, 0, disp->height() - 1); -// break; -// case 2: -// last_x = map(p.x, TS_MINX, TS_MAXX, 0, disp->width() - 1); -// last_y = map(p.y, TS_MAXY, TS_MINY, 0, disp->height() - 1); -// break; -// case 3: -// last_x = map(p.y, TS_MAXY, TS_MINY, 0, disp->width() - 1); -// last_y = map(p.x, TS_MAXX, TS_MINX, 0, disp->height() - 1); -// break; -// } -// moar = (fifo > 1); // true if more in FIFO, false if last point -// #if defined(NRF52_SERIES) -// // Not sure what's up here, but nRF doesn't seem to always poll -// // the FIFO size correctly, causing false release events. If it -// // looks like we've read the last point from the FIFO, pause -// // briefly to allow any more FIFO events to pile up. This -// // doesn't seem to be necessary on SAMD or ESP32. ??? -// if (!moar) { -// delay(50); -// } -// #endif -// } else { // FIFO empty -// data->state = LV_INDEV_STATE_REL; // Is RELEASED -// } - -// data->point.x = last_x; // Last-pressed coordinates -// data->point.y = last_y; -// return moar; -// } + //lv_coord_t last_x = 0, last_y = 0; + //static uint8_t release_count = 0; + data->point.x = Touch_Status(1); // Last-pressed coordinates + data->point.y = Touch_Status(2); + data->state = Touch_Status(0); return false; /*No buffering now so no more data read*/ } diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h index 9a9c36e97..2a5c3e81b 100644 --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h @@ -28,6 +28,7 @@ public: // LvGLStatus begin(uDisplay_lvgl *tft, TouchScreen *touch, // bool debug = false); LvGLStatus begin(Renderer *tft, bool debug = false); + LvGLStatus begin(Renderer *tft, void *touch, bool debug); // These items need to be public for some internal callbacks, // but should be avoided by user code please! Renderer *display; ///< Pointer to the SPITFT display instance @@ -40,7 +41,6 @@ public: void stopScreenshot(void) { screenshot = nullptr; } private: - LvGLStatus begin(Renderer *tft, void *touch, bool debug); lv_disp_drv_t lv_disp_drv; lv_disp_buf_t lv_disp_buf; lv_color_t *lv_pixel_buf; diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index 6d0102ac3..ff71dd4c8 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -7757,9 +7757,17 @@ const char ili9342[] PROGMEM = ":TI2,38,22,21\n" "#\n"; - void start_lvgl(const char * uconfig); +void btn_event_cb(lv_obj_t * btn, lv_event_t event); +void btn_event_cb(lv_obj_t * btn, lv_event_t event) { + if (event == LV_EVENT_CLICKED) { + AddLog_P(LOG_LEVEL_INFO,PSTR(">>> clicked")); + } + AddLog_P(LOG_LEVEL_INFO,PSTR(">>> clicked")); +} + + int32_t lvgl_test(int32_t p) { start_lvgl(ili9342); lv_obj_clean(lv_scr_act()); @@ -7775,73 +7783,120 @@ int32_t lvgl_test(int32_t p) { lv_obj_align(label1, NULL, LV_ALIGN_CENTER, 0, 0); + lvgl_setup(); + /*Add a button*/ lv_obj_t *btn1 = lv_btn_create(lv_scr_act(), NULL); /*Add to the active screen*/ lv_obj_set_pos(btn1, 2, 2); /*Adjust the position*/ lv_obj_set_size(btn1, 96, 30); /* set size of button */ -// lv_btn_set_action(btn1, LV_BTN_ACTION_CLICK, my_click_action); /*Assign a callback for clicking*/ + lv_obj_set_event_cb(btn1, btn_event_cb); /*Add text*/ lv_obj_t *label = lv_label_create(btn1, NULL); /*Put on 'btn1'*/ lv_label_set_text(label, "Click"); + return 0; } -/* +lv_obj_t *tabview, // LittlevGL tabview object + *gauge, // Gauge object (on first of three tabs) + *chart, // Chart object (second tab) + *canvas; // Canvas object (third tab) +uint8_t active_tab = 0, // Index of currently-active tab (0-2) + prev_tab = 0; // Index of previously-active tab +lv_chart_series_t *series; // 'Series' data for the bar chart +lv_draw_line_dsc_t draw_dsc; // Drawing style (for canvas) is similarly global -lv_obj_t * myButton; -lv_obj_t * myButtonLabel; -lv_obj_t * myLabel; +#define CANVAS_WIDTH 200 // Dimensions in pixels +#define CANVAS_HEIGHT 150 -lv_style_t myButtonStyleREL; //relesed style -lv_style_t myButtonStylePR; //pressed style +void lvgl_setup(void) { + // Create a tabview object, by default this covers the full display. + tabview = lv_tabview_create(lv_disp_get_scr_act(NULL), NULL); + // The CLUE display has a lot of pixels and can't refresh very fast. + // To show off the tabview animation, let's slow it down to 1 second. + lv_tabview_set_anim_time(tabview, 1000); -static lv_res_t btn_click_action(lv_obj_t * btn) { - uint8_t id = lv_obj_get_free_num(btn); //id usefull when there are multiple buttons + // Because they're referenced any time an object is drawn, styles need + // to be permanent in scope; either declared globally (outside all + // functions), or static. The styles used on tabs are never modified after + // they're used here, so let's use static on those... + static lv_style_t tab_style, tab_background_style, indicator_style; - if(id == 0) - { - char buffer[100]; - sprintf(buffer, "button was clicked %i milliseconds from start", pros::millis()); - lv_label_set_text(myLabel, buffer); - } + // This is the background style "behind" the tabs. This is what shows + // through for "off" (inactive) tabs -- a vertical green gradient, + // minimal padding around edges (zero at bottom). + lv_style_init(&tab_background_style); + lv_style_set_bg_color(&tab_background_style, LV_STATE_DEFAULT, lv_color_hex(0x408040)); + lv_style_set_bg_grad_color(&tab_background_style, LV_STATE_DEFAULT, lv_color_hex(0x304030)); + lv_style_set_bg_grad_dir(&tab_background_style, LV_STATE_DEFAULT, LV_GRAD_DIR_VER); + lv_style_set_pad_top(&tab_background_style, LV_STATE_DEFAULT, 2); + lv_style_set_pad_left(&tab_background_style, LV_STATE_DEFAULT, 2); + lv_style_set_pad_right(&tab_background_style, LV_STATE_DEFAULT, 2); + lv_style_set_pad_bottom(&tab_background_style, LV_STATE_DEFAULT, 0); + lv_obj_add_style(tabview, LV_TABVIEW_PART_TAB_BG, &tab_background_style); - return LV_RES_OK; + // Style for tabs. Active tab is white with opaque background, inactive + // tabs are transparent so the background shows through (only the white + // text is seen). A little top & bottom padding reduces scrunchyness. + lv_style_init(&tab_style); + lv_style_set_pad_top(&tab_style, LV_STATE_DEFAULT, 3); + lv_style_set_pad_bottom(&tab_style, LV_STATE_DEFAULT, 10); + lv_style_set_bg_color(&tab_style, LV_STATE_CHECKED, LV_COLOR_WHITE); + lv_style_set_bg_opa(&tab_style, LV_STATE_CHECKED, LV_OPA_100); + lv_style_set_text_color(&tab_style, LV_STATE_CHECKED, LV_COLOR_GRAY); + lv_style_set_bg_opa(&tab_style, LV_STATE_DEFAULT, LV_OPA_TRANSP); + lv_style_set_text_color(&tab_style, LV_STATE_DEFAULT, LV_COLOR_WHITE); + lv_obj_add_style(tabview, LV_TABVIEW_PART_TAB_BTN, &tab_style); + + // Style for the small indicator bar that appears below the active tab. + lv_style_init(&indicator_style); + lv_style_set_bg_color(&indicator_style, LV_STATE_DEFAULT, LV_COLOR_RED); + lv_style_set_size(&indicator_style, LV_STATE_DEFAULT, 5); + lv_obj_add_style(tabview, LV_TABVIEW_PART_INDIC, &indicator_style); + + // Back to creating widgets... + + // Add three tabs to the tabview + lv_obj_t *tab1 = lv_tabview_add_tab(tabview, "Gauge"); + lv_obj_t *tab2 = lv_tabview_add_tab(tabview, "Chart"); + lv_obj_t *tab3 = lv_tabview_add_tab(tabview, "Canvas"); + + // And then add stuff in each tab... + + // The first tab holds a gauge. To keep the demo simple, let's just use + // the default style and range (0-100). See LittlevGL docs for options. + gauge = lv_gauge_create(tab1, NULL); + lv_obj_set_size(gauge, 186, 186); + lv_obj_align(gauge, NULL, LV_ALIGN_CENTER, 0, 0); + + // Second tab, make a chart... + chart = lv_chart_create(tab2, NULL); + lv_obj_set_size(chart, 200, 180); + lv_obj_align(chart, NULL, LV_ALIGN_CENTER, 0, 0); + lv_chart_set_type(chart, LV_CHART_TYPE_COLUMN); + // For simplicity, we'll stick with the chart's default 10 data points: + series = lv_chart_add_series(chart, LV_COLOR_RED); + lv_chart_init_points(chart, series, 0); + // Make each column shift left as new values enter on right: + lv_chart_set_update_mode(chart, LV_CHART_UPDATE_MODE_SHIFT); + + // Third tab is a canvas, which we'll fill with random colored lines. + // LittlevGL draw functions only work on TRUE_COLOR canvas. +/* canvas = lv_canvas_create(tab3, NULL); + lv_canvas_set_buffer(canvas, canvas_buffer, + CANVAS_WIDTH, CANVAS_HEIGHT, LV_IMG_CF_TRUE_COLOR); + lv_obj_align(canvas, NULL, LV_ALIGN_CENTER, 0, 0); + lv_canvas_fill_bg(canvas, LV_COLOR_WHITE, LV_OPA_100); + + // Set up canvas line-drawing style based on defaults. + // Later we'll change color settings when drawing each line. + lv_draw_line_dsc_init(&draw_dsc); + */ } -#define LV_COLOR_MAKE lv_color_make - -void initialize() { - lv_style_copy(&myButtonStyleREL, &lv_style_plain); - myButtonStyleREL.body.main_color = LV_COLOR_MAKE(150, 0, 0); - myButtonStyleREL.body.grad_color = LV_COLOR_MAKE(0, 0, 150); - myButtonStyleREL.body.radius = 0; - myButtonStyleREL.text.color = LV_COLOR_MAKE(255, 255, 255); - - lv_style_copy(&myButtonStylePR, &lv_style_plain); - myButtonStylePR.body.main_color = LV_COLOR_MAKE(255, 0, 0); - myButtonStylePR.body.grad_color = LV_COLOR_MAKE(0, 0, 255); - myButtonStylePR.body.radius = 0; - myButtonStylePR.text.color = LV_COLOR_MAKE(255, 255, 255); - - myButton = lv_btn_create(lv_scr_act(), NULL); //create button, lv_scr_act() is deafult screen object - lv_obj_set_free_num(myButton, 0); //set button is to 0 - lv_btn_set_action(myButton, LV_BTN_ACTION_CLICK, btn_click_action); //set function to be called on button click - lv_btn_set_style(myButton, LV_BTN_STYLE_REL, &myButtonStyleREL); //set the relesed style - lv_btn_set_style(myButton, LV_BTN_STYLE_PR, &myButtonStylePR); //set the pressed style - lv_obj_set_size(myButton, 200, 50); //set the button size - lv_obj_align(myButton, NULL, LV_ALIGN_IN_TOP_LEFT, 10, 10); //set the position to top mid - - myButtonLabel = lv_label_create(myButton, NULL); //create label and puts it inside of the button - lv_label_set_text(myButtonLabel, "Click the Button"); //sets label text - - myLabel = lv_label_create(lv_scr_act(), NULL); //create label and puts it on the screen - lv_label_set_text(myLabel, "Button has not been clicked yet"); //sets label text - lv_obj_align(myLabel, NULL, LV_ALIGN_LEFT_MID, 10, 0); //set the position to center -} -*/ #endif @@ -8008,6 +8063,12 @@ bool Xdrv10(uint8_t function) case FUNC_EVERY_100_MSECOND: ScripterEvery100ms(); break; +#ifdef USE_LVGL + case FUNC_EVERY_50_MSECOND: + lv_task_handler(); + break; +#endif // USE_LVGL + case FUNC_EVERY_SECOND: ScriptEverySecond(); break; diff --git a/tasmota/xdrv_54_lvgl.ino b/tasmota/xdrv_54_lvgl.ino index b2500840e..717d279e0 100644 --- a/tasmota/xdrv_54_lvgl.ino +++ b/tasmota/xdrv_54_lvgl.ino @@ -243,7 +243,8 @@ static lv_fs_res_t lvbe_fs_remove(lv_fs_drv_t * drv, const char *path) { * display ecosystem. ************************************************************/ - Renderer *Init_uDisplay(const char *desc, int8_t cs); +Renderer *Init_uDisplay(const char *desc, int8_t cs); + void start_lvgl(const char * uconfig); void start_lvgl(const char * uconfig) { @@ -268,7 +269,7 @@ void start_lvgl(const char * uconfig) { glue = new Adafruit_LvGL_Glue(); // Initialize glue, passing in address of display & touchscreen - LvGLStatus status = glue->begin(renderer); + LvGLStatus status = glue->begin(renderer, (void*)1, false); if (status != LVGL_OK) { AddLog(LOG_LEVEL_ERROR, PSTR("Glue error %d"), status); return; From 9cf47def14cb850b7a8389bb78fb5f2a75223ed2 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 24 Apr 2021 16:48:48 +0200 Subject: [PATCH 26/97] Update platformio_override_sample.ini --- platformio_override_sample.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 681144edc..b9d78e049 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -11,6 +11,7 @@ [platformio] ; For best Gitpod performance remove the ";" in the next line. Needed Platformio files are cached and installed at first run ;core_dir = .platformio +; Config examples -> platformio_tasmota_cenv_example.ini extra_configs = platformio_tasmota_cenv.ini ; *** Build/upload environment From 8dd2086dade4d98c1f53393c7292a59fa5554aa8 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 24 Apr 2021 16:50:52 +0200 Subject: [PATCH 27/97] Add files via upload --- platformio_tasmota_cenv.ini | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 platformio_tasmota_cenv.ini diff --git a/platformio_tasmota_cenv.ini b/platformio_tasmota_cenv.ini new file mode 100644 index 000000000..ae7366d65 --- /dev/null +++ b/platformio_tasmota_cenv.ini @@ -0,0 +1,5 @@ +[env:tasmota-bluetooth] +board = esp8266_4M2M +build_flags = ${common.build_flags} + -DUSE_ZIGBEE + -DUSE_UFILESYS \ No newline at end of file From 0ae6373c2b8d59ef14aaff221aff4be5930c8265 Mon Sep 17 00:00:00 2001 From: Jason2866 Date: Sat, 24 Apr 2021 15:16:45 +0000 Subject: [PATCH 28/97] whitespaces --- platformio_tasmota_cenv.ini | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/platformio_tasmota_cenv.ini b/platformio_tasmota_cenv.ini index ae7366d65..fa6ae8f8a 100644 --- a/platformio_tasmota_cenv.ini +++ b/platformio_tasmota_cenv.ini @@ -1,5 +1,6 @@ [env:tasmota-bluetooth] board = esp8266_4M2M -build_flags = ${common.build_flags} - -DUSE_ZIGBEE - -DUSE_UFILESYS \ No newline at end of file +build_flags = ${common.build_flags} + -DUSE_ZIGBEE + -DUSE_UFILESYS + From 6e9f2a3c15ec38317427c102f2ee4c71934ac8ae Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 24 Apr 2021 17:21:38 +0200 Subject: [PATCH 29/97] Update platformio_override_sample.ini --- platformio_override_sample.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index b9d78e049..2df4bd2c1 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -11,7 +11,7 @@ [platformio] ; For best Gitpod performance remove the ";" in the next line. Needed Platformio files are cached and installed at first run ;core_dir = .platformio -; Config examples -> platformio_tasmota_cenv_example.ini +; Custom config Bluetooth [env] -> platformio_tasmota_cenv_example.ini extra_configs = platformio_tasmota_cenv.ini ; *** Build/upload environment From fb90abe2b0f6c4eadc14ece1064194fee215a8ce Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 24 Apr 2021 17:22:24 +0200 Subject: [PATCH 30/97] Rename platformio_tasmota_cenv.ini to platformio_tasmota_cenv_sample.ini --- platformio_tasmota_cenv.ini => platformio_tasmota_cenv_sample.ini | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename platformio_tasmota_cenv.ini => platformio_tasmota_cenv_sample.ini (100%) diff --git a/platformio_tasmota_cenv.ini b/platformio_tasmota_cenv_sample.ini similarity index 100% rename from platformio_tasmota_cenv.ini rename to platformio_tasmota_cenv_sample.ini From 126026340fba615e7ddbedb99a6809f1f53de101 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 24 Apr 2021 18:31:25 +0200 Subject: [PATCH 31/97] Zigbee fix flash size detection --- tasmota/xdrv_23_zigbee_4a_nano_fs.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xdrv_23_zigbee_4a_nano_fs.ino b/tasmota/xdrv_23_zigbee_4a_nano_fs.ino index 488ba2fca..8ed8b82eb 100644 --- a/tasmota/xdrv_23_zigbee_4a_nano_fs.ino +++ b/tasmota/xdrv_23_zigbee_4a_nano_fs.ino @@ -29,7 +29,7 @@ extern FS *dfsp; extern "C" uint32_t _FS_end; // Is it ok to write to bank 0x402FF000 bool flash_valid(void) { - return (_FS_end > 0x40280000) && (_FS_end < 0x402FF000); + return (((uint32_t)&_FS_end) > 0x40280000) && (((uint32_t)&_FS_end) < 0x402FF000); } void hydrateSingleDevice(const SBuffer & buf_d); From 8e6ce5127b79c0b78d8248b39c2b02565febb4e5 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 24 Apr 2021 19:56:44 +0200 Subject: [PATCH 32/97] Remove [env] --- platformio_override_sample.ini | 60 ---------------------------------- 1 file changed, 60 deletions(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 2df4bd2c1..56c71ddf2 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -162,63 +162,3 @@ lib_extra_dirs = lib/lib_rf ; *** Mostly not used functions. Recommended to disable lib/lib_div - - -; *** EXPERIMENTAL Tasmota version for ESP32-S2 -[env:tasmota32s2] -extends = env:tasmota32_base -board = esp32s2 -board_build.flash_mode = qio -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz - platformio/tool-mklittlefs @ ~1.203.200522 - platformio/tool-esptoolpy @ ~1.30000.0 -build_unflags = ${esp32_defaults.build_unflags} -build_flags = ${common32.build_flags} -DFIRMWARE_LITE -lib_extra_dirs = lib/libesp32 -lib_ignore = - NimBLE-Arduino - Micro-RTSP - ESP32-HomeKit - - -; *** EXPERIMENTAL Tasmota version for ESP32-C3 -[env:tasmota32c3] -extends = env:tasmota32_base -board = esp32c3 -platform = https://github.com/Jason2866/platform-espressif32.git#feature/arduino-c3 -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz - tasmota/toolchain-riscv32 - platformio/tool-mklittlefs @ ~1.203.200522 -build_unflags = ${esp32_defaults.build_unflags} -mtarget-align -build_flags = ${esp32_defaults.build_flags} -DFIRMWARE_LITE - -I$PROJECT_DIR/include - -include "fix_esp32c3.h" - ;-DESP32_STAGE=true -lib_extra_dirs = lib/libesp32 -lib_ignore = - NimBLE-Arduino - Micro-RTSP - -; *** EXPERIMENTAL Tasmota version for ESP32 IDF4.4. -[env:tasmota32idf4] -extends = env:tasmota32_base -platform = https://github.com/Jason2866/platform-espressif32.git#feature/arduino-idf-v4.4 -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz - platformio/tool-mklittlefs @ ~1.203.200522 -build_unflags = ${esp32_defaults.build_unflags} -build_flags = ${esp32_defaults.build_flags} - ;-DESP32_STAGE=true - -; *** Debug version used for PlatformIO Home Project Inspection -[env:tasmota-debug] -build_type = debug -build_unflags = ${esp_defaults.build_unflags} -build_flags = ${esp82xx_defaults.build_flags} -; -Wstack-usage=300 - -[env:tasmota32-debug] -extends = env:tasmota32_base -build_type = debug -build_unflags = ${esp32_defaults.build_unflags} -build_flags = ${esp32_defaults.build_flags} -; -Wstack-usage=300 From e0773680de2ae5171cf634fc0c642738c96286a7 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 24 Apr 2021 19:59:44 +0200 Subject: [PATCH 33/97] Testing / special env in platformio_tasmota_cenv.ini --- platformio_tasmota_cenv_sample.ini | 57 ++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index fa6ae8f8a..ca0b8a619 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -4,3 +4,60 @@ build_flags = ${common.build_flags} -DUSE_ZIGBEE -DUSE_UFILESYS +; *** EXPERIMENTAL Tasmota version for ESP32-S2 +[env:tasmota32s2] +extends = env:tasmota32_base +board = esp32s2 +board_build.flash_mode = qio +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz + platformio/tool-mklittlefs @ ~1.203.200522 + platformio/tool-esptoolpy @ ~1.30000.0 +build_unflags = ${esp32_defaults.build_unflags} +build_flags = ${common32.build_flags} -DFIRMWARE_LITE +lib_extra_dirs = lib/libesp32 +lib_ignore = + NimBLE-Arduino + Micro-RTSP + ESP32-HomeKit + +; *** EXPERIMENTAL Tasmota version for ESP32-C3 +[env:tasmota32c3] +extends = env:tasmota32_base +board = esp32c3 +platform = https://github.com/Jason2866/platform-espressif32.git#feature/arduino-c3 +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz + tasmota/toolchain-riscv32 + platformio/tool-mklittlefs @ ~1.203.200522 +build_unflags = ${esp32_defaults.build_unflags} -mtarget-align +build_flags = ${esp32_defaults.build_flags} -DFIRMWARE_LITE + -I$PROJECT_DIR/include + -include "fix_esp32c3.h" + ;-DESP32_STAGE=true +lib_extra_dirs = lib/libesp32 +lib_ignore = + NimBLE-Arduino + Micro-RTSP + +; *** EXPERIMENTAL Tasmota version for ESP32 IDF4.4. +[env:tasmota32idf4] +extends = env:tasmota32_base +platform = https://github.com/Jason2866/platform-espressif32.git#feature/arduino-idf-v4.4 +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/v.2.0.0.pre/framework-arduinoespressif32-master-cf457d412.tar.gz + platformio/tool-mklittlefs @ ~1.203.200522 +build_unflags = ${esp32_defaults.build_unflags} +build_flags = ${esp32_defaults.build_flags} + ;-DESP32_STAGE=true + +; *** Debug version used for PlatformIO Home Project Inspection +[env:tasmota-debug] +build_type = debug +build_unflags = ${esp_defaults.build_unflags} +build_flags = ${esp82xx_defaults.build_flags} +; -Wstack-usage=300 + +[env:tasmota32-debug] +extends = env:tasmota32_base +build_type = debug +build_unflags = ${esp32_defaults.build_unflags} +build_flags = ${esp32_defaults.build_flags} +; -Wstack-usage=300 From 7e862adf9a76bd1b215ef0fa87e6873a3ec587d3 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 24 Apr 2021 20:06:29 +0200 Subject: [PATCH 34/97] Autocopy platformio_tasmota_cenv_sample to platformio_tasmota_cenv.ini when not existing --- pio-tools/override_copy.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pio-tools/override_copy.py b/pio-tools/override_copy.py index 5318f9169..137da4171 100644 --- a/pio-tools/override_copy.py +++ b/pio-tools/override_copy.py @@ -13,3 +13,9 @@ if os.path.isfile("platformio_override.ini"): print ("*** use provided platformio_override.ini as planned ***") else: shutil.copy("platformio_override_sample.ini", "platformio_override.ini") + +# copy platformio_tasmota_cenv_sample.ini to platformio_tasmota_cenv.ini +if os.path.isfile("platformio_tasmota_cenv.ini"): + print ("*** use provided platformio_tasmota_cenv.ini as planned ***") +else: + shutil.copy("platformio_tasmota_cenv_sample.ini", "platformio_tasmota_cenv.ini" From a15b6e8d730e55b47d4a53000f1ff2ef21524e23 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 24 Apr 2021 20:11:27 +0200 Subject: [PATCH 35/97] typo --- pio-tools/override_copy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pio-tools/override_copy.py b/pio-tools/override_copy.py index 137da4171..4f17079b2 100644 --- a/pio-tools/override_copy.py +++ b/pio-tools/override_copy.py @@ -18,4 +18,4 @@ else: if os.path.isfile("platformio_tasmota_cenv.ini"): print ("*** use provided platformio_tasmota_cenv.ini as planned ***") else: - shutil.copy("platformio_tasmota_cenv_sample.ini", "platformio_tasmota_cenv.ini" + shutil.copy("platformio_tasmota_cenv_sample.ini", "platformio_tasmota_cenv.ini") From 09020723e6f93ae620e930d299417849fd71e952 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 24 Apr 2021 20:52:48 +0200 Subject: [PATCH 36/97] Zigbee!!! --- platformio_override_sample.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 56c71ddf2..c03b24ba3 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -11,7 +11,7 @@ [platformio] ; For best Gitpod performance remove the ";" in the next line. Needed Platformio files are cached and installed at first run ;core_dir = .platformio -; Custom config Bluetooth [env] -> platformio_tasmota_cenv_example.ini +; Custom config Zigbee [env] -> platformio_tasmota_cenv_example.ini extra_configs = platformio_tasmota_cenv.ini ; *** Build/upload environment From 79a1fec6d17ef2d3cfff01e74c8cc66e95f4e5b8 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 24 Apr 2021 20:53:46 +0200 Subject: [PATCH 37/97] tasmota-zigbee --- platformio_tasmota_cenv_sample.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index ca0b8a619..6570d9e36 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -1,4 +1,4 @@ -[env:tasmota-bluetooth] +[env:tasmota-zigbee] board = esp8266_4M2M build_flags = ${common.build_flags} -DUSE_ZIGBEE From 7d0f7fe3db66eb4af36780eab63df22f6b4c863e Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sun, 25 Apr 2021 08:24:07 +0200 Subject: [PATCH 38/97] lvgl monochrome support --- lib/lib_display/UDisplay/uDisplay.cpp | 34 +++++++++++++++++++ lib/lib_display/UDisplay/uDisplay.h | 4 +++ .../Adafruit_LvGL_Glue.cpp | 21 +++++++++--- 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 9a9a3c5fb..73f993e48 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -924,6 +924,19 @@ void uDisplay::Splash(void) { void uDisplay::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { + if (bpp != 16) { + // just save params or update frame + if (!x0 && !y0 && !x1 && !y1) { + Updateframe(); + } else { + seta_xp1 = x0; + seta_xp2 = x1; + seta_yp1 = y0; + seta_yp2 = y1; + } + return; + } + if (!x0 && !y0 && !x1 && !y1) { SPI_CS_HIGH SPI_END_TRANSACTION @@ -984,9 +997,30 @@ void uDisplay::setAddrWindow_int(uint16_t x, uint16_t y, uint16_t w, uint16_t h) } +static inline uint8_t ulv_color_to1(uint16_t color) { + if (((color>>11) & 0x10) || ((color>>5) & 0x20) || (color & 0x10)) { + return 1; + } + else { + return 0; + } +} void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean first) { uint16_t color; + if (bpp != 16) { + // stupid monchrome version + for (uint32_t y = seta_yp1; y < seta_yp2; y++) { + for (uint32_t x = seta_xp1; x < seta_xp2; x++) { + uint16_t color = *data++; + drawPixel(x, y, ulv_color_to1(color)); + len--; + if (!len) return; + } + } + return; + } + while (len--) { color = *data++; WriteColor(color); diff --git a/lib/lib_display/UDisplay/uDisplay.h b/lib/lib_display/UDisplay/uDisplay.h index bb54d948c..33ccec74e 100755 --- a/lib/lib_display/UDisplay/uDisplay.h +++ b/lib/lib_display/UDisplay/uDisplay.h @@ -205,6 +205,10 @@ class uDisplay : public Renderer { uint8_t lut_array[LUTMAXSIZE][5]; uint8_t lut_cnt[5]; uint8_t lut_cmd[5]; + uint16_t seta_xp1; + uint16_t seta_xp2; + uint16_t seta_yp1; + uint16_t seta_yp2; }; diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp index cbe6b5e1c..758f80db3 100644 --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp @@ -23,6 +23,7 @@ static void lv_tick_handler(void) { lv_tick_inc(lv_tick_interval_ms); } #define ADC_YMAX 840 + uint32_t Touch_Status(uint32_t sel); static bool touchscreen_read(struct _lv_indev_drv_t *indev_drv, lv_indev_data_t *data) { @@ -76,10 +77,10 @@ static void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_col Renderer *display = glue->display; if (!glue->first_frame) { - //display->dmaWait(); // Wait for prior DMA transfer to complete - //display->endWrite(); // End transaction from any prior call + //display->dmaWait(); // Wait for prior DMA transfer to complete + //display->endWrite(); // End transaction from any prior call } else { - glue->first_frame = false; + glue->first_frame = false; } display->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height); @@ -87,6 +88,7 @@ static void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_col display->setAddrWindow(0,0,0,0); lv_disp_flush_ready(disp); + } #if (LV_USE_LOG) @@ -104,6 +106,7 @@ static void lv_debug(lv_log_level_t level, const char *file, uint32_t line, cons } #endif + // GLUE LIB FUNCTIONS ------------------------------------------------------ // Constructor @@ -198,6 +201,8 @@ LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, bool debug) { LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) { + + lv_init(); // #if (LV_USE_LOG) // if (debug) { @@ -208,7 +213,13 @@ LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) { // Allocate LvGL display buffer (x2 because DMA double buffering) LvGLStatus status = LVGL_ERR_ALLOC; // if ((lv_pixel_buf = new lv_color_t[LV_HOR_RES_MAX * LV_BUFFER_ROWS * 2])) { - if ((lv_pixel_buf = new lv_color_t[LV_HOR_RES_MAX * LV_BUFFER_ROWS])) { + + uint32_t lvgl_buffer_size; + //lvgl_buffer_size = LV_HOR_RES_MAX * LV_BUFFER_ROWS; + lvgl_buffer_size = tft->width() * LV_BUFFER_ROWS; + + + if ((lv_pixel_buf = new lv_color_t[lvgl_buffer_size])) { display = tft; touchscreen = (void *)touch; @@ -223,7 +234,7 @@ LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) { lv_disp_buf_init( &lv_disp_buf, lv_pixel_buf, // 1st half buf nullptr, // 2nd half buf - LV_HOR_RES_MAX * LV_BUFFER_ROWS); + lvgl_buffer_size); // Initialize LvGL display driver lv_disp_drv_init(&lv_disp_drv); From 075c124474724d3d1381257f1df651cf7610b6fb Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 25 Apr 2021 10:39:04 +0200 Subject: [PATCH 39/97] uDisplay LVGL auto-config of SPI --- lib/lib_display/UDisplay/uDisplay.cpp | 50 ++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 73f993e48..829e28111 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -20,6 +20,23 @@ #include #include "uDisplay.h" +#define GPIO_OLED_RESET 32 +#define GPIO_I2C_SCL 19 +#define GPIO_I2C_SDA 20 +#define GPIO_BACKLIGHT 31 +#define GPIO_SPI_CS 24 +#define GPIO_SPI_CLK 23 +#define GPIO_SPI_MOSI 22 +#define GPIO_SPI_DC 25 +#define GPIO_SPI_MISO 21 +#define GPIO_SSPI_CS 29 +#define GPIO_SSPI_SCLK 28 +#define GPIO_SSPI_MOSI 27 +#define GPIO_SSPI_DC 30 +#define GPIO_SSPI_MISO 26 + +extern int Pin(uint32_t gpio, uint32_t index = 0); + #define UDSP_DEBUG const uint16_t udisp_colors[]={UDISP_BLACK,UDISP_WHITE,UDISP_RED,UDISP_GREEN,UDISP_BLUE,UDISP_CYAN,UDISP_MAGENTA,\ @@ -86,6 +103,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { if (*lp1 == '#') break; if (*lp1 == '\n') lp1++; + if (*lp1 == ' ') lp1++; // Add space char while (*lp1 == ' ') lp1++; //Serial.printf(">> %s\n",lp1); if (*lp1 != ';') { @@ -108,7 +126,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { } if (*lp1 == ',') lp1++; } - if (*lp1 != ':' && *lp1 != '\n') { + if (*lp1 != ':' && *lp1 != '\n' && *lp1 != ' ') { // Add space char switch (section) { case 'H': // header line @@ -285,11 +303,16 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { } } } - if (*lp == '\n') { + if (*lp == '\n' || *lp == ' ') { // Add space char lp++; } else { lp = strchr(lp, '\n'); - if (!lp) break; + if (!lp) { + lp = strchr(lp, ' '); + if (!lp) { + break; + } + } lp++; } } @@ -361,6 +384,25 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { Renderer *uDisplay::Init(void) { + // Check pins against configuration + if (reset < 0) { reset = Pin(GPIO_OLED_RESET); } + if (i2c_scl < 0) { i2c_scl = Pin(GPIO_I2C_SCL); } + if (i2c_sda < 0) { i2c_scl = Pin(GPIO_I2C_SDA); } + if (bpanel < 0) { spi_cs = Pin(GPIO_BACKLIGHT); } + if ((spi_nr == 1) || (spi_nr == 2)) { //SPI0 + if (spi_cs < 0) { spi_cs = Pin(GPIO_SPI_CS, spi_nr - 1); } + if (spi_clk < 0) { spi_clk = Pin(GPIO_SPI_CLK, spi_nr - 1); } + if (spi_mosi < 0) { spi_mosi = Pin(GPIO_SPI_MOSI, spi_nr - 1); } + if (spi_dc < 0) { spi_dc = Pin(GPIO_SPI_DC, spi_nr - 1); } + if (spi_miso < 0) { spi_miso = Pin(GPIO_SPI_MISO, spi_nr - 1); } + } else { + if (spi_cs < 0) { spi_cs = Pin(GPIO_SSPI_CS); } + if (spi_clk < 0) { spi_clk = Pin(GPIO_SSPI_SCLK); } + if (spi_mosi < 0) { spi_mosi = Pin(GPIO_SSPI_MOSI); } + if (spi_dc < 0) { spi_dc = Pin(GPIO_SSPI_DC); } + if (spi_miso < 0) { spi_miso = Pin(GPIO_SSPI_MISO); } + } + if (reset >= 0) { pinMode(reset, OUTPUT); digitalWrite(reset, HIGH); @@ -1257,7 +1299,7 @@ void uDisplay::TS_RotConvert(int16_t *x, int16_t *y) { uint8_t uDisplay::strlen_ln(char *str) { for (uint32_t cnt = 0; cnt < 256; cnt++) { - if (!str[cnt] || str[cnt] == '\n') return cnt; + if (!str[cnt] || str[cnt] == '\n' || str[cnt] == ' ') return cnt; } return 0; } From 154ed011da011a23dfd34b95427db0d01c3d01a3 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 25 Apr 2021 11:19:02 +0200 Subject: [PATCH 40/97] Revert "uDisplay LVGL auto-config of SPI" --- lib/lib_display/UDisplay/uDisplay.cpp | 50 +++------------------------ 1 file changed, 4 insertions(+), 46 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 829e28111..73f993e48 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -20,23 +20,6 @@ #include #include "uDisplay.h" -#define GPIO_OLED_RESET 32 -#define GPIO_I2C_SCL 19 -#define GPIO_I2C_SDA 20 -#define GPIO_BACKLIGHT 31 -#define GPIO_SPI_CS 24 -#define GPIO_SPI_CLK 23 -#define GPIO_SPI_MOSI 22 -#define GPIO_SPI_DC 25 -#define GPIO_SPI_MISO 21 -#define GPIO_SSPI_CS 29 -#define GPIO_SSPI_SCLK 28 -#define GPIO_SSPI_MOSI 27 -#define GPIO_SSPI_DC 30 -#define GPIO_SSPI_MISO 26 - -extern int Pin(uint32_t gpio, uint32_t index = 0); - #define UDSP_DEBUG const uint16_t udisp_colors[]={UDISP_BLACK,UDISP_WHITE,UDISP_RED,UDISP_GREEN,UDISP_BLUE,UDISP_CYAN,UDISP_MAGENTA,\ @@ -103,7 +86,6 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { if (*lp1 == '#') break; if (*lp1 == '\n') lp1++; - if (*lp1 == ' ') lp1++; // Add space char while (*lp1 == ' ') lp1++; //Serial.printf(">> %s\n",lp1); if (*lp1 != ';') { @@ -126,7 +108,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { } if (*lp1 == ',') lp1++; } - if (*lp1 != ':' && *lp1 != '\n' && *lp1 != ' ') { // Add space char + if (*lp1 != ':' && *lp1 != '\n') { switch (section) { case 'H': // header line @@ -303,16 +285,11 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { } } } - if (*lp == '\n' || *lp == ' ') { // Add space char + if (*lp == '\n') { lp++; } else { lp = strchr(lp, '\n'); - if (!lp) { - lp = strchr(lp, ' '); - if (!lp) { - break; - } - } + if (!lp) break; lp++; } } @@ -384,25 +361,6 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { Renderer *uDisplay::Init(void) { - // Check pins against configuration - if (reset < 0) { reset = Pin(GPIO_OLED_RESET); } - if (i2c_scl < 0) { i2c_scl = Pin(GPIO_I2C_SCL); } - if (i2c_sda < 0) { i2c_scl = Pin(GPIO_I2C_SDA); } - if (bpanel < 0) { spi_cs = Pin(GPIO_BACKLIGHT); } - if ((spi_nr == 1) || (spi_nr == 2)) { //SPI0 - if (spi_cs < 0) { spi_cs = Pin(GPIO_SPI_CS, spi_nr - 1); } - if (spi_clk < 0) { spi_clk = Pin(GPIO_SPI_CLK, spi_nr - 1); } - if (spi_mosi < 0) { spi_mosi = Pin(GPIO_SPI_MOSI, spi_nr - 1); } - if (spi_dc < 0) { spi_dc = Pin(GPIO_SPI_DC, spi_nr - 1); } - if (spi_miso < 0) { spi_miso = Pin(GPIO_SPI_MISO, spi_nr - 1); } - } else { - if (spi_cs < 0) { spi_cs = Pin(GPIO_SSPI_CS); } - if (spi_clk < 0) { spi_clk = Pin(GPIO_SSPI_SCLK); } - if (spi_mosi < 0) { spi_mosi = Pin(GPIO_SSPI_MOSI); } - if (spi_dc < 0) { spi_dc = Pin(GPIO_SSPI_DC); } - if (spi_miso < 0) { spi_miso = Pin(GPIO_SSPI_MISO); } - } - if (reset >= 0) { pinMode(reset, OUTPUT); digitalWrite(reset, HIGH); @@ -1299,7 +1257,7 @@ void uDisplay::TS_RotConvert(int16_t *x, int16_t *y) { uint8_t uDisplay::strlen_ln(char *str) { for (uint32_t cnt = 0; cnt < 256; cnt++) { - if (!str[cnt] || str[cnt] == '\n' || str[cnt] == ' ') return cnt; + if (!str[cnt] || str[cnt] == '\n') return cnt; } return 0; } From 3727ba977a03cdde0096e5f32ef9b6d4a3867e26 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sun, 25 Apr 2021 15:14:50 +0200 Subject: [PATCH 41/97] epd47 lvgl support --- .../src/renderer.cpp | 4 ++ .../Display_Renderer-gemu-1.0/src/renderer.h | 2 + lib/lib_display/UDisplay/uDisplay.cpp | 7 ++- lib/libesp32_epdiy/src/epd4in7.cpp | 50 ++++++++++++------- lib/libesp32_epdiy/src/epd4in7.h | 4 ++ .../Adafruit_LvGL_Glue.cpp | 8 ++- tasmota/xdsp_17_universal.ino | 29 +++++++---- 7 files changed, 75 insertions(+), 29 deletions(-) diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp index 2f0fecdde..699c00763 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp @@ -624,6 +624,10 @@ char *Renderer::devname(void) { return (char*)dname; } +uint16_t Renderer::lvgl_pars(void) { + return lvgl_param; +} + void VButton::xdrawButton(bool inverted) { wr_redir=1; drawButton(inverted); diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h index 29d62f53b..e5f15671d 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h @@ -51,6 +51,7 @@ public: virtual int8_t color_type(void); virtual void Splash(void); virtual char *devname(void); + virtual uint16_t lvgl_pars(void); void setDrawMode(uint8_t mode); uint8_t drawmode; @@ -59,6 +60,7 @@ public: virtual uint8_t *allocate_framebuffer(uint32_t size); pwr_cb pwr_cbp = 0; dim_cb dim_cbp = 0; + uint16_t lvgl_param = 0; private: void DrawCharAt(int16_t x, int16_t y, char ascii_char,int16_t colored); inline void drawFastVLineInternal(int16_t x, int16_t y, int16_t h, uint16_t color) __attribute__((always_inline)); diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 73f993e48..d529de26d 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -282,6 +282,9 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { lutptime = next_val(&lp1); lut3time = next_val(&lp1); break; + case 'B': + lvgl_param = next_val(&lp1); + break; } } } @@ -927,7 +930,9 @@ void uDisplay::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) if (bpp != 16) { // just save params or update frame if (!x0 && !y0 && !x1 && !y1) { - Updateframe(); + if (!ep_mode) { + Updateframe(); + } } else { seta_xp1 = x0; seta_xp2 = x1; diff --git a/lib/libesp32_epdiy/src/epd4in7.cpp b/lib/libesp32_epdiy/src/epd4in7.cpp index 9f0e44e86..f16d2cf78 100644 --- a/lib/libesp32_epdiy/src/epd4in7.cpp +++ b/lib/libesp32_epdiy/src/epd4in7.cpp @@ -61,7 +61,7 @@ int32_t Epd47::Init(void) { epd_init(EPD_LUT_1K); hl = epd_hl_init(WAVEFORM); epd47_buffer = epd_hl_get_framebuffer(&hl); - + lvgl_param = 10; return 0; } @@ -157,26 +157,42 @@ void Epd47::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) { } void Epd47::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { - xp = x0; - yp = y0; - //setAddrWindow_int(x0,y0,x1-1,y1-1); + + // just save params or update frame + if (!x0 && !y0 && !x1 && !y1) { + //Updateframe(); + } else { + seta_xp1 = x0; + seta_xp2 = x1; + seta_yp1 = y0; + seta_yp2 = y1; + } + } void Epd47::pushColors(uint16_t *data, uint16_t len, boolean first) { - uint16_t color; - uint16_t cxp = xp; - while (len--) { - color = *data++; - uint8_t red = ((color >> 11) & 0x1f) << 3; - uint8_t green = ((color >> 5) & 0x3f) << 2; - uint8_t blue = (color & 0x1f) << 3; - color = (red + green + blue) / 3; - color >>= 4; - drawPixel(cxp, yp, color); - cxp++; - } - yp++; + // stupid bw version +uint16_t x1 = seta_xp1; +uint16_t x2 = seta_xp2; +uint16_t y1 = seta_yp1; +uint16_t y2 = seta_yp2; + for (uint32_t y = y1; y < y2; y++) { + for (uint32_t x = x1; x < x2; x++) { + uint16_t color = *data++; + uint8_t red = ((color >> 11) & 0x1f) << 3; + uint8_t green = ((color >> 5) & 0x3f) << 2; + uint8_t blue = (color & 0x1f) << 3; + color = (red + green + blue) / 3; + color >>= 4; + drawPixel(x, y, color); + len--; + if (!len) { + seta_yp1 = y + 1; + return; + } + } + } } /* END OF FILE */ diff --git a/lib/libesp32_epdiy/src/epd4in7.h b/lib/libesp32_epdiy/src/epd4in7.h index 79a3081bb..e8e19776f 100644 --- a/lib/libesp32_epdiy/src/epd4in7.h +++ b/lib/libesp32_epdiy/src/epd4in7.h @@ -57,6 +57,10 @@ private: uint16_t height; uint16_t xp; uint16_t yp; + uint16_t seta_xp1; + uint16_t seta_xp2; + uint16_t seta_yp1; + uint16_t seta_yp2; }; #endif /* EPD4IN7_H */ diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp index 758f80db3..52904487d 100644 --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp @@ -29,9 +29,11 @@ uint32_t Touch_Status(uint32_t sel); static bool touchscreen_read(struct _lv_indev_drv_t *indev_drv, lv_indev_data_t *data) { //lv_coord_t last_x = 0, last_y = 0; //static uint8_t release_count = 0; +#if defined(USE_FT5206) || defined(USE_XPT2046) data->point.x = Touch_Status(1); // Last-pressed coordinates data->point.y = Touch_Status(2); data->state = Touch_Status(0); +#endif return false; /*No buffering now so no more data read*/ } @@ -48,6 +50,7 @@ static bool touchscreen_read(struct _lv_indev_drv_t *indev_drv, lv_indev_data_t // Actual RAM usage will be 2X these figures, since using 2 DMA buffers... #define LV_BUFFER_ROWS 60 // Most others have a bit more space + // This is the flush function required for LittlevGL screen updates. // It receives a bounding rect and an array of pixel data (conveniently // already in 565 format, so the Earth was lucky there). @@ -216,8 +219,9 @@ LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) { uint32_t lvgl_buffer_size; //lvgl_buffer_size = LV_HOR_RES_MAX * LV_BUFFER_ROWS; - lvgl_buffer_size = tft->width() * LV_BUFFER_ROWS; - + uint8_t flushlines = tft->lvgl_pars(); + lvgl_buffer_size = tft->width() * flushlines ? flushlines:LV_BUFFER_ROWS; + if ((lv_pixel_buf = new lv_color_t[lvgl_buffer_size])) { diff --git a/tasmota/xdsp_17_universal.ino b/tasmota/xdsp_17_universal.ino index cad9c7933..b91dc9134 100644 --- a/tasmota/xdsp_17_universal.ino +++ b/tasmota/xdsp_17_universal.ino @@ -37,6 +37,10 @@ extern FS *ffsp; #define DISPDESC_SIZE 1000 + +void Core2DisplayPower(uint8_t on); +void Core2DisplayDim(uint8_t dim); + //#define DSP_ROM_DESC /*********************************************************************************************/ @@ -194,10 +198,10 @@ uDisplay *udisp; //SPI,*,*,*,*,*,*,* if (cs < 0) { switch (*cp) { - case 1: + case '1': cs = Pin(GPIO_SPI_CS); break; - case 2: + case '2': cs = Pin(GPIO_SPI_CS, 1); break; default: @@ -309,19 +313,25 @@ uDisplay *udisp; Settings.display_width = renderer->width(); Settings.display_height = renderer->height(); - fg_color = udisp->fgcol(); - bg_color = udisp->bgcol(); - color_type = udisp->color_type(); + fg_color = renderer->fgcol(); + bg_color = renderer->bgcol(); + color_type = renderer->color_type(); + +#ifdef USE_M5STACK_CORE2 + renderer->SetPwrCB(Core2DisplayPower); + renderer->SetDimCB(Core2DisplayDim); +#endif renderer->DisplayInit(DISPLAY_INIT_MODE, Settings.display_size, Settings.display_rotate, Settings.display_font); renderer->dim(Settings.display_dimmer); #ifdef SHOW_SPLASH - udisp->Splash(); + renderer->Splash(); #endif udisp_init_done = true; - AddLog(LOG_LEVEL_INFO, PSTR("DSP: %s!"), udisp->devname()); + AddLog(LOG_LEVEL_INFO, PSTR("DSP: %s!"), renderer->devname()); + return renderer; } return 0; @@ -330,8 +340,7 @@ uDisplay *udisp; /*********************************************************************************************/ -void Core2DisplayPower(uint8_t on); -void Core2DisplayDim(uint8_t dim); +/* void udisp_bpwr(uint8_t on) { #ifdef USE_M5STACK_CORE2 @@ -345,6 +354,8 @@ void udisp_dimm(uint8_t dim) { #endif } +*/ + void TS_RotConvert(int16_t *x, int16_t *y) { if (renderer) renderer->TS_RotConvert(x, y); } From a8ac5ed07caa216e0cc015118c61ecaba12fb2df Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sun, 25 Apr 2021 15:28:47 +0200 Subject: [PATCH 42/97] Update Adafruit_LvGL_Glue.cpp --- .../Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp index 52904487d..dfabf2efa 100644 --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp @@ -218,10 +218,11 @@ LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) { // if ((lv_pixel_buf = new lv_color_t[LV_HOR_RES_MAX * LV_BUFFER_ROWS * 2])) { uint32_t lvgl_buffer_size; + //lvgl_buffer_size = LV_HOR_RES_MAX * LV_BUFFER_ROWS; uint8_t flushlines = tft->lvgl_pars(); - lvgl_buffer_size = tft->width() * flushlines ? flushlines:LV_BUFFER_ROWS; - + lvgl_buffer_size = tft->width() * (flushlines ? flushlines:LV_BUFFER_ROWS); + //Serial.printf("%d\n", lvgl_buffer_size); if ((lv_pixel_buf = new lv_color_t[lvgl_buffer_size])) { From fef7f0bf657ff7702cb9a851d927e3d7972c6b4c Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 25 Apr 2021 16:21:37 +0200 Subject: [PATCH 43/97] uDisplay - allow space as delimiter --- lib/lib_display/UDisplay/uDisplay.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index d529de26d..cbe950d94 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -108,7 +108,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { } if (*lp1 == ',') lp1++; } - if (*lp1 != ':' && *lp1 != '\n') { + if (*lp1 != ':' && *lp1 != '\n' && *lp1 != ' ') { // Add space char switch (section) { case 'H': // header line @@ -288,11 +288,16 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { } } } - if (*lp == '\n') { + if (*lp == '\n' || *lp == ' ') { // Add space char lp++; } else { lp = strchr(lp, '\n'); - if (!lp) break; + if (!lp) { + lp = strchr(lp, ' '); + if (!lp) { + break; + } + } lp++; } } @@ -1262,7 +1267,7 @@ void uDisplay::TS_RotConvert(int16_t *x, int16_t *y) { uint8_t uDisplay::strlen_ln(char *str) { for (uint32_t cnt = 0; cnt < 256; cnt++) { - if (!str[cnt] || str[cnt] == '\n') return cnt; + if (!str[cnt] || str[cnt] == '\n' || str[cnt] == ' ') return cnt; } return 0; } From 37869e1d871cdfd77a1f83aa54b10b72db9f702a Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 25 Apr 2021 16:23:07 +0200 Subject: [PATCH 44/97] Update builtin templates accordingly --- tasmota/xdrv_52_7_berry_embedded.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tasmota/xdrv_52_7_berry_embedded.ino b/tasmota/xdrv_52_7_berry_embedded.ino index cc0a3a320..02311e521 100644 --- a/tasmota/xdrv_52_7_berry_embedded.ino +++ b/tasmota/xdrv_52_7_berry_embedded.ino @@ -378,10 +378,10 @@ const char berry_prog[] = // temporarily put udisplay descriptions here (will be solidified later) "udisplay = module('udisplay') " - "udisplay.ILI9341_M5Stack_Core = ':H,ILI9341,320,240,16,SPI,1,-1,-1,-1,-1,-1,-1,-1,40 :S,2,1,1,2,40,20 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C :R,36 :0,08,00,00,00 :1,68,00,00,01 :2,C8,00,00,02 :3,A8,00,00,03 #' " - "udisplay.ILI9341 = ':H,ILI9341,240,320,16,SPI,1,-1,-1,-1,-1,-1,-1,-1,40 :S,2,1,1,0,40,20 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C,16 :R,36 :0,48,00,00,00 :1,28,00,00,01 :2,88,00,00,02 :3,E8,00,00,03 :i,20,21 #' " - "udisplay.ILI9342 = ':H,ILI9342,320,240,16,SPI,1,-1,-1,-1,-1,-1,-1,-1,40 :S,2,1,3,0,100,100 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 21,80 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C,16 :R,36 :0,08,00,00,00 :1,A8,00,00,01 :2,C8,00,00,02 :3,68,00,00,03 :i,21,20 :TI2,38,22,21 #' " - "udisplay.ILI9488 = ':H,ILI9488,480,320,16,SPI,1,-1,-1,-1,-1,-1,-1,-1,10 :S,2,1,1,0,40,20 :I E0,0F,00,03,09,08,16,0A,3F,78,4C,09,0A,08,16,1A,0F E1,0F,00,16,19,03,0F,05,32,45,46,04,0E,0D,35,37,0F C0,2,17,15 C1,1,41 C5,3,00,12,80 36,1,48 3A,1,66 B0,1,80 B1,1,A0 B4,1,02 B6,2,02,02 E9,1,00 F7,4,A9,51,2C,82 11,80 29,0 :o,28 :O,29 :A,2A,2B,2C,16 :R,36 ;:0,48,00,00,00 :0,28,00,00,01 :1,28,00,00,00 :2,E8,00,00,03 :3,88,00,00,02 :P,18 :i,20,21 :TI1,38,*,* #' " + "udisplay.ILI9341_M5Stack_Core = ':H,ILI9341,320,240,16,SPI,1,*,*,*,*,*,*,*,40 :S,2,1,1,2,40,20 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C :R,36 :0,08,00,00,00 :1,68,00,00,01 :2,C8,00,00,02 :3,A8,00,00,03 #' " + "udisplay.ILI9341 = ':H,ILI9341,240,320,16,SPI,1,*,*,*,*,*,*,*,40 :S,2,1,1,0,40,20 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C,16 :R,36 :0,48,00,00,00 :1,28,00,00,01 :2,88,00,00,02 :3,E8,00,00,03 :i,20,21 #' " + "udisplay.ILI9342 = ':H,ILI9342,320,240,16,SPI,1,*,*,*,*,*,*,*,40 :S,2,1,3,0,100,100 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 21,80 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C,16 :R,36 :0,08,00,00,00 :1,A8,00,00,01 :2,C8,00,00,02 :3,68,00,00,03 :i,21,20 :TI2,38,22,21 #' " + "udisplay.ILI9488 = ':H,ILI9488,480,320,16,SPI,1,*,*,*,*,*,*,*,10 :S,2,1,1,0,40,20 :I E0,0F,00,03,09,08,16,0A,3F,78,4C,09,0A,08,16,1A,0F E1,0F,00,16,19,03,0F,05,32,45,46,04,0E,0D,35,37,0F C0,2,17,15 C1,1,41 C5,3,00,12,80 36,1,48 3A,1,66 B0,1,80 B1,1,A0 B4,1,02 B6,2,02,02 E9,1,00 F7,4,A9,51,2C,82 11,80 29,0 :o,28 :O,29 :A,2A,2B,2C,16 :R,36 ;:0,48,00,00,00 :0,28,00,00,01 :1,28,00,00,00 :2,E8,00,00,03 :3,88,00,00,02 :P,18 :i,20,21 :TI1,38,*,* #' " #endif // USE_LVGL From b44c16d86138f61e2d7b69b1e20dc9c002a97219 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 25 Apr 2021 16:51:18 +0200 Subject: [PATCH 45/97] Add initial support for optional for template specific commands Add initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` (#11788) --- CHANGELOG.md | 16 ++++++++++------ RELEASENOTES.md | 7 ++----- tasmota/i18n.h | 1 + tasmota/settings.ino | 10 +++++----- tasmota/support.ino | 24 ++++++++++++++++++++++++ tasmota/support_command.ino | 17 +++++++++++++---- tasmota/tasmota_version.h | 2 +- tasmota/xdrv_01_webserver.ino | 8 ++++---- 8 files changed, 60 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c710b9342..c087f80bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,16 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [9.4.0.1] +## [9.4.0.2] +### Added +- Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` (#11788) + +## [Released] + +## [9.4.0] 20210423 +- Release Leslie + +## [9.4.0.1] 20210423 ### Added - Command ``Wifi 0/1`` for ESP8266 to turn wifi Off and On. When wifi is Off it is always returned On after a restart except for a wake-up from deepsleep (#11839) @@ -14,11 +23,6 @@ All notable changes to this project will be documented in this file. - Command ``Power`` should not reset pulsetime (#11805) - Teleperiod rule handling regression from v9.3.1.2 (#11851) -## [Released] - -## [9.4.0] 20210422 -- Release Leslie - ## [9.3.1.4] 20210422 ### Added - Command ``TuyaTempSetRes 0..3`` to control Tuya Temperature Set Resolution (#11781) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index aaabcbdf5..574d5cc82 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -76,18 +76,15 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v9.4.0.1 +## Changelog v9.4.0.2 ### Added -- Command ``Wifi 0/1`` for ESP8266 to turn wifi Off and On. When wifi is Off it is always returned On after a restart except for a wake-up from deepsleep [#11839](https://github.com/arendst/Tasmota/issues/11839) +- Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` [#11788](https://github.com/arendst/Tasmota/issues/11788) ### Breaking Changed ### Changed -- Zigbee refactored storage for device configuration and device last known data [#11838](https://github.com/arendst/Tasmota/issues/11838) ### Fixed -- Command ``Power`` should not reset pulsetime [#11805](https://github.com/arendst/Tasmota/issues/11805) -- Teleperiod rule handling regression from v9.3.1.2 [#11851](https://github.com/arendst/Tasmota/issues/11851) ### Noted - ESP32 single core **tasmota32solo1.bin** binary can only be uploaded using the GUI as OTA upload will trigger the watchdog timer \ No newline at end of file diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 3fe877cb7..ce307c2cb 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -345,6 +345,7 @@ #define D_JSON_GPIO "GPIO" #define D_JSON_FLAG "FLAG" #define D_JSON_BASE "BASE" + #define D_JSON_CMND "CMND" #define D_CMND_TEMPOFFSET "TempOffset" #define D_CMND_HUMOFFSET "HumOffset" #define D_CMND_GLOBAL_TEMP "GlobalTemp" diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 3eb10d608..5691f20a0 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -1077,16 +1077,16 @@ void SettingsDefaultSet2(void) { flag4.mqtt_tls |= MQTT_TLS_ENABLED; flag4.mqtt_no_retain |= MQTT_NO_RETAIN; -#ifdef USER_TEMPLATE - String user_template = USER_TEMPLATE; - JsonTemplate((char*)user_template.c_str()); -#endif - Settings.flag = flag; Settings.flag2 = flag2; Settings.flag3 = flag3; Settings.flag4 = flag4; Settings.flag5 = flag5; + +#ifdef USER_TEMPLATE + String user_template = USER_TEMPLATE; + JsonTemplate((char*)user_template.c_str()); +#endif } /********************************************************************************************/ diff --git a/tasmota/support.ino b/tasmota/support.ino index f86cb1f16..1459810eb 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -515,6 +515,14 @@ char* UpperCase_P(char* dest, const char* source) return dest; } +char* StrStr_P(const char* source, const char* search) { + char case_source[strlen(source) +1]; + UpperCase_P(case_source, source); + char case_search[strlen(search) +1]; + UpperCase_P(case_search, search); + return strstr(case_source, case_search); +} + char* Trim(char* p) { if (*p != '\0') { @@ -1645,6 +1653,22 @@ bool JsonTemplate(char* dataBuf) Settings.user_template_base = base -1; // Default WEMOS } + val = root[PSTR(D_JSON_CMND)]; + if (val) { + if ((USER_MODULE == Settings.module) || (StrStr_P(val.getStr(), PSTR(D_CMND_MODULE " 0")))) { // Only execute if current module = USER_MODULE = this template + char* backup_data = XdrvMailbox.data; + XdrvMailbox.data = (char*)val.getStr(); // Backlog commands + uint32_t backup_data_len = XdrvMailbox.data_len; + XdrvMailbox.data_len = 1; // Any data + uint32_t backup_index = XdrvMailbox.index; + XdrvMailbox.index = 0; // Backlog0 - no delay + CmndBacklog(); + XdrvMailbox.index = backup_index; + XdrvMailbox.data_len = backup_data_len; + XdrvMailbox.data = backup_data; + } + } + // AddLog(LOG_LEVEL_DEBUG, PSTR("TPL: Converted")); // AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t*)&Settings.user_template, sizeof(Settings.user_template) / 2, 2); diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 4cdfcdf6a..f49b78762 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -326,20 +326,27 @@ void CmndBacklog(void) { TasmotaGlobal.backlog_nodelay = true; } -#ifdef SUPPORT_IF_STATEMENT char *blcommand = strtok(XdrvMailbox.data, ";"); +#ifdef SUPPORT_IF_STATEMENT while ((blcommand != nullptr) && (backlog.size() < MAX_BACKLOG)) #else uint32_t bl_pointer = (!TasmotaGlobal.backlog_pointer) ? MAX_BACKLOG -1 : TasmotaGlobal.backlog_pointer; bl_pointer--; - char *blcommand = strtok(XdrvMailbox.data, ";"); while ((blcommand != nullptr) && (TasmotaGlobal.backlog_index != bl_pointer)) #endif { + // Ignore ; within double quotes (") but find ; after first even quote + char *next = strchr(blcommand, '\0') +1; // Prepare for next ; + while ((next != nullptr) && (ChrCount(blcommand, "\"") % 2)) { // Check for even quote count + next--; // Select end of line + *next = ';'; // Restore ; removed by strtok() + next = strtok(nullptr, ";"); // Point to begin of next string up to next ; or nullptr + } + // Skip unnecessary command Backlog at start of blcommand while(true) { blcommand = Trim(blcommand); if (!strncasecmp_P(blcommand, PSTR(D_CMND_BACKLOG), strlen(D_CMND_BACKLOG))) { - blcommand += strlen(D_CMND_BACKLOG); // Skip unnecessary command Backlog + blcommand += strlen(D_CMND_BACKLOG); } else { break; } @@ -352,7 +359,9 @@ void CmndBacklog(void) { #else TasmotaGlobal.backlog[TasmotaGlobal.backlog_index] = blcommand; TasmotaGlobal.backlog_index++; - if (TasmotaGlobal.backlog_index >= MAX_BACKLOG) TasmotaGlobal.backlog_index = 0; + if (TasmotaGlobal.backlog_index >= MAX_BACKLOG) { + TasmotaGlobal.backlog_index = 0; + } #endif } blcommand = strtok(nullptr, ";"); diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index c8df3b7fe..ed8d5d0f2 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,6 +20,6 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x09040001; +const uint32_t VERSION = 0x09040002; #endif // _TASMOTA_VERSION_H_ diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 1e1dece40..c96b80470 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -2130,11 +2130,11 @@ void HandleOtherConfiguration(void) { } void OtherSaveSettings(void) { - char tmp1[300]; // Needs to hold complete ESP32 template of minimal 230 chars + char tmp1[400]; // Needs to hold complete ESP32 template of minimal 230 chars WebGetArg(PSTR("dn"), tmp1, sizeof(tmp1)); // Device name char tmp2[TOPSZ]; WebGetArg(PSTR("wp"), tmp2, sizeof(tmp2)); // Web password - char command[500]; + char command[600]; snprintf_P(command, sizeof(command), PSTR(D_CMND_BACKLOG "0 " D_CMND_WEBPASSWORD "2 %s;" D_CMND_SO "3 %d;" D_CMND_DEVICENAME " %s"), (!strlen(tmp2)) ? "\"" : (strlen(tmp2) < 5) ? "" : tmp2, Webserver->hasArg(F("b1")), // SetOption3 - Enable MQTT @@ -2155,8 +2155,8 @@ void OtherSaveSettings(void) { #endif // USE_EMULATION WebGetArg(PSTR("t1"), tmp1, sizeof(tmp1)); // Template - if (strlen(tmp1)) { // {"NAME":"12345678901234","GPIO":[255,255,255,255,255,255,255,255,255,255,255,255,255],"FLAG":255,"BASE":255} - snprintf_P(command, sizeof(command), PSTR("%s;" D_CMND_TEMPLATE " %s%s"), command, tmp1, (Webserver->hasArg(F("t2"))) ? PSTR("; " D_CMND_MODULE " 0") : ""); + if (strlen(tmp1)) { // {"NAME":"12345678901234","GPIO":[255,255,255,255,255,255,255,255,255,255,255,255,255],"FLAG":255,"BASE":255,"CMND":"SO123 1;SO99 0"} + snprintf_P(command, sizeof(command), PSTR("%s;%s" D_CMND_TEMPLATE " %s"), command, (Webserver->hasArg(F("t2"))) ? PSTR(D_CMND_MODULE " 0;") : "", tmp1); } ExecuteWebCommand(command); } From 2bf681dbe2b2f570e1bfdbca0b4c8cffa3278d5a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 25 Apr 2021 17:03:11 +0200 Subject: [PATCH 46/97] Revert "Add initial support for optional for template specific commands" This reverts commit b44c16d86138f61e2d7b69b1e20dc9c002a97219. --- CHANGELOG.md | 16 ++++++---------- RELEASENOTES.md | 7 +++++-- tasmota/i18n.h | 1 - tasmota/settings.ino | 10 +++++----- tasmota/support.ino | 24 ------------------------ tasmota/support_command.ino | 17 ++++------------- tasmota/tasmota_version.h | 2 +- tasmota/xdrv_01_webserver.ino | 8 ++++---- 8 files changed, 25 insertions(+), 60 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c087f80bb..c710b9342 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,16 +3,7 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [9.4.0.2] -### Added -- Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` (#11788) - -## [Released] - -## [9.4.0] 20210423 -- Release Leslie - -## [9.4.0.1] 20210423 +## [9.4.0.1] ### Added - Command ``Wifi 0/1`` for ESP8266 to turn wifi Off and On. When wifi is Off it is always returned On after a restart except for a wake-up from deepsleep (#11839) @@ -23,6 +14,11 @@ All notable changes to this project will be documented in this file. - Command ``Power`` should not reset pulsetime (#11805) - Teleperiod rule handling regression from v9.3.1.2 (#11851) +## [Released] + +## [9.4.0] 20210422 +- Release Leslie + ## [9.3.1.4] 20210422 ### Added - Command ``TuyaTempSetRes 0..3`` to control Tuya Temperature Set Resolution (#11781) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 574d5cc82..aaabcbdf5 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -76,15 +76,18 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v9.4.0.2 +## Changelog v9.4.0.1 ### Added -- Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` [#11788](https://github.com/arendst/Tasmota/issues/11788) +- Command ``Wifi 0/1`` for ESP8266 to turn wifi Off and On. When wifi is Off it is always returned On after a restart except for a wake-up from deepsleep [#11839](https://github.com/arendst/Tasmota/issues/11839) ### Breaking Changed ### Changed +- Zigbee refactored storage for device configuration and device last known data [#11838](https://github.com/arendst/Tasmota/issues/11838) ### Fixed +- Command ``Power`` should not reset pulsetime [#11805](https://github.com/arendst/Tasmota/issues/11805) +- Teleperiod rule handling regression from v9.3.1.2 [#11851](https://github.com/arendst/Tasmota/issues/11851) ### Noted - ESP32 single core **tasmota32solo1.bin** binary can only be uploaded using the GUI as OTA upload will trigger the watchdog timer \ No newline at end of file diff --git a/tasmota/i18n.h b/tasmota/i18n.h index ce307c2cb..3fe877cb7 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -345,7 +345,6 @@ #define D_JSON_GPIO "GPIO" #define D_JSON_FLAG "FLAG" #define D_JSON_BASE "BASE" - #define D_JSON_CMND "CMND" #define D_CMND_TEMPOFFSET "TempOffset" #define D_CMND_HUMOFFSET "HumOffset" #define D_CMND_GLOBAL_TEMP "GlobalTemp" diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 5691f20a0..3eb10d608 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -1077,16 +1077,16 @@ void SettingsDefaultSet2(void) { flag4.mqtt_tls |= MQTT_TLS_ENABLED; flag4.mqtt_no_retain |= MQTT_NO_RETAIN; +#ifdef USER_TEMPLATE + String user_template = USER_TEMPLATE; + JsonTemplate((char*)user_template.c_str()); +#endif + Settings.flag = flag; Settings.flag2 = flag2; Settings.flag3 = flag3; Settings.flag4 = flag4; Settings.flag5 = flag5; - -#ifdef USER_TEMPLATE - String user_template = USER_TEMPLATE; - JsonTemplate((char*)user_template.c_str()); -#endif } /********************************************************************************************/ diff --git a/tasmota/support.ino b/tasmota/support.ino index 1459810eb..f86cb1f16 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -515,14 +515,6 @@ char* UpperCase_P(char* dest, const char* source) return dest; } -char* StrStr_P(const char* source, const char* search) { - char case_source[strlen(source) +1]; - UpperCase_P(case_source, source); - char case_search[strlen(search) +1]; - UpperCase_P(case_search, search); - return strstr(case_source, case_search); -} - char* Trim(char* p) { if (*p != '\0') { @@ -1653,22 +1645,6 @@ bool JsonTemplate(char* dataBuf) Settings.user_template_base = base -1; // Default WEMOS } - val = root[PSTR(D_JSON_CMND)]; - if (val) { - if ((USER_MODULE == Settings.module) || (StrStr_P(val.getStr(), PSTR(D_CMND_MODULE " 0")))) { // Only execute if current module = USER_MODULE = this template - char* backup_data = XdrvMailbox.data; - XdrvMailbox.data = (char*)val.getStr(); // Backlog commands - uint32_t backup_data_len = XdrvMailbox.data_len; - XdrvMailbox.data_len = 1; // Any data - uint32_t backup_index = XdrvMailbox.index; - XdrvMailbox.index = 0; // Backlog0 - no delay - CmndBacklog(); - XdrvMailbox.index = backup_index; - XdrvMailbox.data_len = backup_data_len; - XdrvMailbox.data = backup_data; - } - } - // AddLog(LOG_LEVEL_DEBUG, PSTR("TPL: Converted")); // AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t*)&Settings.user_template, sizeof(Settings.user_template) / 2, 2); diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index f49b78762..4cdfcdf6a 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -326,27 +326,20 @@ void CmndBacklog(void) { TasmotaGlobal.backlog_nodelay = true; } - char *blcommand = strtok(XdrvMailbox.data, ";"); #ifdef SUPPORT_IF_STATEMENT + char *blcommand = strtok(XdrvMailbox.data, ";"); while ((blcommand != nullptr) && (backlog.size() < MAX_BACKLOG)) #else uint32_t bl_pointer = (!TasmotaGlobal.backlog_pointer) ? MAX_BACKLOG -1 : TasmotaGlobal.backlog_pointer; bl_pointer--; + char *blcommand = strtok(XdrvMailbox.data, ";"); while ((blcommand != nullptr) && (TasmotaGlobal.backlog_index != bl_pointer)) #endif { - // Ignore ; within double quotes (") but find ; after first even quote - char *next = strchr(blcommand, '\0') +1; // Prepare for next ; - while ((next != nullptr) && (ChrCount(blcommand, "\"") % 2)) { // Check for even quote count - next--; // Select end of line - *next = ';'; // Restore ; removed by strtok() - next = strtok(nullptr, ";"); // Point to begin of next string up to next ; or nullptr - } - // Skip unnecessary command Backlog at start of blcommand while(true) { blcommand = Trim(blcommand); if (!strncasecmp_P(blcommand, PSTR(D_CMND_BACKLOG), strlen(D_CMND_BACKLOG))) { - blcommand += strlen(D_CMND_BACKLOG); + blcommand += strlen(D_CMND_BACKLOG); // Skip unnecessary command Backlog } else { break; } @@ -359,9 +352,7 @@ void CmndBacklog(void) { #else TasmotaGlobal.backlog[TasmotaGlobal.backlog_index] = blcommand; TasmotaGlobal.backlog_index++; - if (TasmotaGlobal.backlog_index >= MAX_BACKLOG) { - TasmotaGlobal.backlog_index = 0; - } + if (TasmotaGlobal.backlog_index >= MAX_BACKLOG) TasmotaGlobal.backlog_index = 0; #endif } blcommand = strtok(nullptr, ";"); diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index ed8d5d0f2..c8df3b7fe 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,6 +20,6 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x09040002; +const uint32_t VERSION = 0x09040001; #endif // _TASMOTA_VERSION_H_ diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index c96b80470..1e1dece40 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -2130,11 +2130,11 @@ void HandleOtherConfiguration(void) { } void OtherSaveSettings(void) { - char tmp1[400]; // Needs to hold complete ESP32 template of minimal 230 chars + char tmp1[300]; // Needs to hold complete ESP32 template of minimal 230 chars WebGetArg(PSTR("dn"), tmp1, sizeof(tmp1)); // Device name char tmp2[TOPSZ]; WebGetArg(PSTR("wp"), tmp2, sizeof(tmp2)); // Web password - char command[600]; + char command[500]; snprintf_P(command, sizeof(command), PSTR(D_CMND_BACKLOG "0 " D_CMND_WEBPASSWORD "2 %s;" D_CMND_SO "3 %d;" D_CMND_DEVICENAME " %s"), (!strlen(tmp2)) ? "\"" : (strlen(tmp2) < 5) ? "" : tmp2, Webserver->hasArg(F("b1")), // SetOption3 - Enable MQTT @@ -2155,8 +2155,8 @@ void OtherSaveSettings(void) { #endif // USE_EMULATION WebGetArg(PSTR("t1"), tmp1, sizeof(tmp1)); // Template - if (strlen(tmp1)) { // {"NAME":"12345678901234","GPIO":[255,255,255,255,255,255,255,255,255,255,255,255,255],"FLAG":255,"BASE":255,"CMND":"SO123 1;SO99 0"} - snprintf_P(command, sizeof(command), PSTR("%s;%s" D_CMND_TEMPLATE " %s"), command, (Webserver->hasArg(F("t2"))) ? PSTR(D_CMND_MODULE " 0;") : "", tmp1); + if (strlen(tmp1)) { // {"NAME":"12345678901234","GPIO":[255,255,255,255,255,255,255,255,255,255,255,255,255],"FLAG":255,"BASE":255} + snprintf_P(command, sizeof(command), PSTR("%s;" D_CMND_TEMPLATE " %s%s"), command, tmp1, (Webserver->hasArg(F("t2"))) ? PSTR("; " D_CMND_MODULE " 0") : ""); } ExecuteWebCommand(command); } From 1ace2d229276c24601456cd8375da7757cf72e9c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 25 Apr 2021 17:22:38 +0200 Subject: [PATCH 47/97] Add initial support for optional for template specific commands Add initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` (#11788) --- CHANGELOG.md | 16 ++++++++++------ RELEASENOTES.md | 7 ++----- tasmota/i18n.h | 1 + tasmota/settings.ino | 10 +++++----- tasmota/support.ino | 24 ++++++++++++++++++++++++ tasmota/support_command.ino | 17 +++++++++++++---- tasmota/tasmota_version.h | 2 +- tasmota/xdrv_01_webserver.ino | 8 ++++---- 8 files changed, 60 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c710b9342..c087f80bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,16 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [9.4.0.1] +## [9.4.0.2] +### Added +- Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` (#11788) + +## [Released] + +## [9.4.0] 20210423 +- Release Leslie + +## [9.4.0.1] 20210423 ### Added - Command ``Wifi 0/1`` for ESP8266 to turn wifi Off and On. When wifi is Off it is always returned On after a restart except for a wake-up from deepsleep (#11839) @@ -14,11 +23,6 @@ All notable changes to this project will be documented in this file. - Command ``Power`` should not reset pulsetime (#11805) - Teleperiod rule handling regression from v9.3.1.2 (#11851) -## [Released] - -## [9.4.0] 20210422 -- Release Leslie - ## [9.3.1.4] 20210422 ### Added - Command ``TuyaTempSetRes 0..3`` to control Tuya Temperature Set Resolution (#11781) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index aaabcbdf5..574d5cc82 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -76,18 +76,15 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v9.4.0.1 +## Changelog v9.4.0.2 ### Added -- Command ``Wifi 0/1`` for ESP8266 to turn wifi Off and On. When wifi is Off it is always returned On after a restart except for a wake-up from deepsleep [#11839](https://github.com/arendst/Tasmota/issues/11839) +- Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` [#11788](https://github.com/arendst/Tasmota/issues/11788) ### Breaking Changed ### Changed -- Zigbee refactored storage for device configuration and device last known data [#11838](https://github.com/arendst/Tasmota/issues/11838) ### Fixed -- Command ``Power`` should not reset pulsetime [#11805](https://github.com/arendst/Tasmota/issues/11805) -- Teleperiod rule handling regression from v9.3.1.2 [#11851](https://github.com/arendst/Tasmota/issues/11851) ### Noted - ESP32 single core **tasmota32solo1.bin** binary can only be uploaded using the GUI as OTA upload will trigger the watchdog timer \ No newline at end of file diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 3fe877cb7..ce307c2cb 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -345,6 +345,7 @@ #define D_JSON_GPIO "GPIO" #define D_JSON_FLAG "FLAG" #define D_JSON_BASE "BASE" + #define D_JSON_CMND "CMND" #define D_CMND_TEMPOFFSET "TempOffset" #define D_CMND_HUMOFFSET "HumOffset" #define D_CMND_GLOBAL_TEMP "GlobalTemp" diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 3eb10d608..5691f20a0 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -1077,16 +1077,16 @@ void SettingsDefaultSet2(void) { flag4.mqtt_tls |= MQTT_TLS_ENABLED; flag4.mqtt_no_retain |= MQTT_NO_RETAIN; -#ifdef USER_TEMPLATE - String user_template = USER_TEMPLATE; - JsonTemplate((char*)user_template.c_str()); -#endif - Settings.flag = flag; Settings.flag2 = flag2; Settings.flag3 = flag3; Settings.flag4 = flag4; Settings.flag5 = flag5; + +#ifdef USER_TEMPLATE + String user_template = USER_TEMPLATE; + JsonTemplate((char*)user_template.c_str()); +#endif } /********************************************************************************************/ diff --git a/tasmota/support.ino b/tasmota/support.ino index f86cb1f16..1459810eb 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -515,6 +515,14 @@ char* UpperCase_P(char* dest, const char* source) return dest; } +char* StrStr_P(const char* source, const char* search) { + char case_source[strlen(source) +1]; + UpperCase_P(case_source, source); + char case_search[strlen(search) +1]; + UpperCase_P(case_search, search); + return strstr(case_source, case_search); +} + char* Trim(char* p) { if (*p != '\0') { @@ -1645,6 +1653,22 @@ bool JsonTemplate(char* dataBuf) Settings.user_template_base = base -1; // Default WEMOS } + val = root[PSTR(D_JSON_CMND)]; + if (val) { + if ((USER_MODULE == Settings.module) || (StrStr_P(val.getStr(), PSTR(D_CMND_MODULE " 0")))) { // Only execute if current module = USER_MODULE = this template + char* backup_data = XdrvMailbox.data; + XdrvMailbox.data = (char*)val.getStr(); // Backlog commands + uint32_t backup_data_len = XdrvMailbox.data_len; + XdrvMailbox.data_len = 1; // Any data + uint32_t backup_index = XdrvMailbox.index; + XdrvMailbox.index = 0; // Backlog0 - no delay + CmndBacklog(); + XdrvMailbox.index = backup_index; + XdrvMailbox.data_len = backup_data_len; + XdrvMailbox.data = backup_data; + } + } + // AddLog(LOG_LEVEL_DEBUG, PSTR("TPL: Converted")); // AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t*)&Settings.user_template, sizeof(Settings.user_template) / 2, 2); diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 4cdfcdf6a..13744c602 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -326,20 +326,27 @@ void CmndBacklog(void) { TasmotaGlobal.backlog_nodelay = true; } -#ifdef SUPPORT_IF_STATEMENT char *blcommand = strtok(XdrvMailbox.data, ";"); +#ifdef SUPPORT_IF_STATEMENT while ((blcommand != nullptr) && (backlog.size() < MAX_BACKLOG)) #else uint32_t bl_pointer = (!TasmotaGlobal.backlog_pointer) ? MAX_BACKLOG -1 : TasmotaGlobal.backlog_pointer; bl_pointer--; - char *blcommand = strtok(XdrvMailbox.data, ";"); while ((blcommand != nullptr) && (TasmotaGlobal.backlog_index != bl_pointer)) #endif { + // Ignore semicolon (; = end of single command) between brackets {} + char *next = strchr(blcommand, '\0') +1; // Prepare for next ; + while ((next != nullptr) && (ChrCount(blcommand, "{") != ChrCount(blcommand, "}"))) { // Check for valid {} count + next--; // Select end of line + *next = ';'; // Restore ; removed by strtok() + next = strtok(nullptr, ";"); // Point to begin of next string up to next ; or nullptr + } + // Skip unnecessary command Backlog at start of blcommand while(true) { blcommand = Trim(blcommand); if (!strncasecmp_P(blcommand, PSTR(D_CMND_BACKLOG), strlen(D_CMND_BACKLOG))) { - blcommand += strlen(D_CMND_BACKLOG); // Skip unnecessary command Backlog + blcommand += strlen(D_CMND_BACKLOG); } else { break; } @@ -352,7 +359,9 @@ void CmndBacklog(void) { #else TasmotaGlobal.backlog[TasmotaGlobal.backlog_index] = blcommand; TasmotaGlobal.backlog_index++; - if (TasmotaGlobal.backlog_index >= MAX_BACKLOG) TasmotaGlobal.backlog_index = 0; + if (TasmotaGlobal.backlog_index >= MAX_BACKLOG) { + TasmotaGlobal.backlog_index = 0; + } #endif } blcommand = strtok(nullptr, ";"); diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index c8df3b7fe..ed8d5d0f2 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,6 +20,6 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x09040001; +const uint32_t VERSION = 0x09040002; #endif // _TASMOTA_VERSION_H_ diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 1e1dece40..c96b80470 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -2130,11 +2130,11 @@ void HandleOtherConfiguration(void) { } void OtherSaveSettings(void) { - char tmp1[300]; // Needs to hold complete ESP32 template of minimal 230 chars + char tmp1[400]; // Needs to hold complete ESP32 template of minimal 230 chars WebGetArg(PSTR("dn"), tmp1, sizeof(tmp1)); // Device name char tmp2[TOPSZ]; WebGetArg(PSTR("wp"), tmp2, sizeof(tmp2)); // Web password - char command[500]; + char command[600]; snprintf_P(command, sizeof(command), PSTR(D_CMND_BACKLOG "0 " D_CMND_WEBPASSWORD "2 %s;" D_CMND_SO "3 %d;" D_CMND_DEVICENAME " %s"), (!strlen(tmp2)) ? "\"" : (strlen(tmp2) < 5) ? "" : tmp2, Webserver->hasArg(F("b1")), // SetOption3 - Enable MQTT @@ -2155,8 +2155,8 @@ void OtherSaveSettings(void) { #endif // USE_EMULATION WebGetArg(PSTR("t1"), tmp1, sizeof(tmp1)); // Template - if (strlen(tmp1)) { // {"NAME":"12345678901234","GPIO":[255,255,255,255,255,255,255,255,255,255,255,255,255],"FLAG":255,"BASE":255} - snprintf_P(command, sizeof(command), PSTR("%s;" D_CMND_TEMPLATE " %s%s"), command, tmp1, (Webserver->hasArg(F("t2"))) ? PSTR("; " D_CMND_MODULE " 0") : ""); + if (strlen(tmp1)) { // {"NAME":"12345678901234","GPIO":[255,255,255,255,255,255,255,255,255,255,255,255,255],"FLAG":255,"BASE":255,"CMND":"SO123 1;SO99 0"} + snprintf_P(command, sizeof(command), PSTR("%s;%s" D_CMND_TEMPLATE " %s"), command, (Webserver->hasArg(F("t2"))) ? PSTR(D_CMND_MODULE " 0;") : "", tmp1); } ExecuteWebCommand(command); } From 1e230e1f2d5d4b84de3c01c5f0a4f78c2a4d32c0 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sun, 25 Apr 2021 17:28:42 +0200 Subject: [PATCH 48/97] fix lvgl touch --- .../Xlatb_RA8876-gemu-1.0/RA8876.cpp | 3 ++ .../Xlatb_RA8876-gemu-1.0/library.properties | 12 +++--- .../Adafruit_LvGL_Glue.cpp | 2 - tasmota/xdrv_13_display.ino | 38 ++++++++++--------- 4 files changed, 30 insertions(+), 25 deletions(-) diff --git a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp index 0e36a6dde..b507912ff 100644 --- a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp +++ b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp @@ -481,6 +481,9 @@ void RA8876::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) { } bool RA8876::initDisplay() { + + lvgl_param = 10; + SPI.beginTransaction(m_spiSettings); // Set chip config register diff --git a/lib/lib_display/Xlatb_RA8876-gemu-1.0/library.properties b/lib/lib_display/Xlatb_RA8876-gemu-1.0/library.properties index 5eea15179..6e478adf0 100644 --- a/lib/lib_display/Xlatb_RA8876-gemu-1.0/library.properties +++ b/lib/lib_display/Xlatb_RA8876-gemu-1.0/library.properties @@ -1,9 +1,9 @@ name=RA8876 -version=1.0.0 -author=Jaret Burkett / Gerhard Mutz -maintainer=Gerhard Mutz -sentence=Tasmota Library for RA8876 displays -paragraph=Tasmota Library for RA8876 displays +version=1.0.2 +author=Jaret Burkett +maintainer=Jaret Burkett +sentence=Library for RA8876 displays +paragraph=Library for RA8876 displays category=Display -url=https://github.com/arendst/Tasmota +url=https://github.com/jaretburkett/ILI9488 architectures=* diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp index dfabf2efa..8128bf3b8 100644 --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp @@ -29,11 +29,9 @@ uint32_t Touch_Status(uint32_t sel); static bool touchscreen_read(struct _lv_indev_drv_t *indev_drv, lv_indev_data_t *data) { //lv_coord_t last_x = 0, last_y = 0; //static uint8_t release_count = 0; -#if defined(USE_FT5206) || defined(USE_XPT2046) data->point.x = Touch_Status(1); // Last-pressed coordinates data->point.y = Touch_Status(2); data->state = Touch_Status(0); -#endif return false; /*No buffering now so no more data read*/ } diff --git a/tasmota/xdrv_13_display.ino b/tasmota/xdrv_13_display.ino index 1736e6a2c..e90eab48a 100755 --- a/tasmota/xdrv_13_display.ino +++ b/tasmota/xdrv_13_display.ino @@ -2677,14 +2677,32 @@ void AddValue(uint8_t num,float fval) { * Touch panel control \*********************************************************************************************/ -#if defined(USE_FT5206) || defined(USE_XPT2046) + bool FT5206_found = false; bool XPT2046_found = false; - int16_t touch_xp; int16_t touch_yp; bool touched; +uint32_t Touch_Status(uint32_t sel) { + if (FT5206_found || XPT2046_found) { + switch (sel) { + case 0: + return touched; + case 1: + return touch_xp; + case 2: + return touch_yp; + } + return 0; + } else { + return 0; + } +} + +#if defined(USE_FT5206) || defined(USE_XPT2046) + + #ifdef USE_M5STACK_CORE2 uint8_t tbstate[3]; #endif // USE_M5STACK_CORE2 @@ -2747,21 +2765,7 @@ int16_t XPT2046_y() { } #endif // USE_XPT2046 -uint32_t Touch_Status(uint32_t sel) { - if (FT5206_found || XPT2046_found) { - switch (sel) { - case 0: - return touched; - case 1: - return touch_xp; - case 2: - return touch_yp; - } - return 0; - } else { - return 0; - } -} + void Touch_Check(void(*rotconvert)(int16_t *x, int16_t *y)) { From 45b38c9bf2db942540676efb23f8483df6faae7b Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sun, 25 Apr 2021 19:18:55 +0200 Subject: [PATCH 49/97] faster tft spi for esp32 --- lib/lib_display/UDisplay/uDisplay.cpp | 16 ++++++++-- tasmota/xdrv_10_scripter.ino | 45 ++++++++++++--------------- 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index d529de26d..aaa5c236d 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -1026,9 +1026,19 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean first) { return; } - while (len--) { - color = *data++; - WriteColor(color); + if ( (col_mode != 18) && (spi_dc >= 0) && (spi_nr <= 2) ) { + // special version 8 bit spi I or II +#ifdef ESP8266 + while (len--) { + uspi->write(*data++); + } +#else + uspi->writePixels(data, len * 2); +#endif + } else { + while (len--) { + WriteColor(*data++); + } } } diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index ff71dd4c8..da7216ca8 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -2629,7 +2629,7 @@ chknext: len = 0; goto exit; } -#endif +#endif // USE_LVGL break; case 'm': if (!strncmp(vname, "med(", 4)) { @@ -7764,39 +7764,34 @@ void btn_event_cb(lv_obj_t * btn, lv_event_t event) { if (event == LV_EVENT_CLICKED) { AddLog_P(LOG_LEVEL_INFO,PSTR(">>> clicked")); } - AddLog_P(LOG_LEVEL_INFO,PSTR(">>> clicked")); } int32_t lvgl_test(int32_t p) { + start_lvgl(ili9342); + lv_obj_clean(lv_scr_act()); - lv_obj_t *label1 = lv_label_create(lv_scr_act(), NULL); - - /*Modify the Label's text*/ - lv_label_set_text(label1, "Hello world!"); - + if (p == 0) { + lv_obj_t *label1 = lv_label_create(lv_scr_act(), NULL); + /*Modify the Label's text*/ + lv_label_set_text(label1, "Hello world!"); /* Align the Label to the center * NULL means align on parent (which is the screen now) * 0, 0 at the end means an x, y offset after alignment*/ - lv_obj_align(label1, NULL, LV_ALIGN_CENTER, 0, 0); - - - lvgl_setup(); - - /*Add a button*/ - lv_obj_t *btn1 = lv_btn_create(lv_scr_act(), NULL); /*Add to the active screen*/ - lv_obj_set_pos(btn1, 2, 2); /*Adjust the position*/ - lv_obj_set_size(btn1, 96, 30); /* set size of button */ - lv_obj_set_event_cb(btn1, btn_event_cb); - - /*Add text*/ - lv_obj_t *label = lv_label_create(btn1, NULL); /*Put on 'btn1'*/ - lv_label_set_text(label, "Click"); - - - + lv_obj_align(label1, NULL, LV_ALIGN_CENTER, 0, 0); + /*Add a button*/ + lv_obj_t *btn1 = lv_btn_create(lv_scr_act(), NULL); /*Add to the active screen*/ + lv_obj_set_pos(btn1, 2, 2); /*Adjust the position*/ + lv_obj_set_size(btn1, 96, 30); /* set size of button */ + lv_obj_set_event_cb(btn1, btn_event_cb); + /*Add text*/ + lv_obj_t *label = lv_label_create(btn1, NULL); /*Put on 'btn1'*/ + lv_label_set_text(label, "Click"); + } else { + lvgl_setup(); + } return 0; } @@ -7898,7 +7893,7 @@ void lvgl_setup(void) { } -#endif +#endif // USE_LVGL /*********************************************************************************************\ * Interface From 17277413575cd1c1761a28fd8050950f1d2995af Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Sun, 25 Apr 2021 19:25:42 +0200 Subject: [PATCH 50/97] add hadinger mod space --- lib/lib_display/UDisplay/uDisplay.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index aaa5c236d..95cff99dd 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -108,7 +108,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { } if (*lp1 == ',') lp1++; } - if (*lp1 != ':' && *lp1 != '\n') { + if (*lp1 != ':' && *lp1 != '\n' && *lp1 != ' ') { // Add space char switch (section) { case 'H': // header line @@ -288,11 +288,16 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { } } } - if (*lp == '\n') { + if (*lp == '\n' || *lp == ' ') { // Add space char lp++; } else { lp = strchr(lp, '\n'); - if (!lp) break; + if (!lp) { + lp = strchr(lp, ' '); + if (!lp) { + break; + } + } lp++; } } @@ -1272,7 +1277,7 @@ void uDisplay::TS_RotConvert(int16_t *x, int16_t *y) { uint8_t uDisplay::strlen_ln(char *str) { for (uint32_t cnt = 0; cnt < 256; cnt++) { - if (!str[cnt] || str[cnt] == '\n') return cnt; + if (!str[cnt] || str[cnt] == '\n' || str[cnt] == ' ') return cnt; } return 0; } From b03756a24ad14832ff0233be824b37012809fe5d Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 25 Apr 2021 21:40:01 +0200 Subject: [PATCH 51/97] Add time measure to SPI display --- .../Adafruit_LvGL_Glue.cpp | 111 ++++++++---------- tasmota/xdrv_54_lvgl.ino | 57 ++++++++- 2 files changed, 107 insertions(+), 61 deletions(-) diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp index dfabf2efa..250661600 100644 --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp @@ -3,6 +3,8 @@ // ARCHITECTURE-SPECIFIC TIMER STUFF --------------------------------------- +extern void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p); + // Tick interval for LittlevGL internal timekeeping; 1 to 10 ms recommended static const int lv_tick_interval_ms = 10; @@ -51,63 +53,63 @@ static bool touchscreen_read(struct _lv_indev_drv_t *indev_drv, lv_indev_data_t #define LV_BUFFER_ROWS 60 // Most others have a bit more space -// This is the flush function required for LittlevGL screen updates. -// It receives a bounding rect and an array of pixel data (conveniently -// already in 565 format, so the Earth was lucky there). -static void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) { - // Get pointer to glue object from indev user data - Adafruit_LvGL_Glue *glue = (Adafruit_LvGL_Glue *)disp->user_data; +// // This is the flush function required for LittlevGL screen updates. +// // It receives a bounding rect and an array of pixel data (conveniently +// // already in 565 format, so the Earth was lucky there). +// static void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) { +// // Get pointer to glue object from indev user data +// Adafruit_LvGL_Glue *glue = (Adafruit_LvGL_Glue *)disp->user_data; - uint16_t width = (area->x2 - area->x1 + 1); - uint16_t height = (area->y2 - area->y1 + 1); +// uint16_t width = (area->x2 - area->x1 + 1); +// uint16_t height = (area->y2 - area->y1 + 1); - if (glue->getScreenshotFile() != nullptr) { - // save pixels to file - int32_t btw = (width * height * LV_COLOR_DEPTH + 7) / 8; - while (btw > 0) { - int32_t ret = glue->getScreenshotFile()->write((const uint8_t*) color_p, btw); - //Serial.printf(">>> btw %d, written %d\n", btw, ret); - if (ret >= 0) { - btw -= ret; - } else { - btw = 0; // abort - } - } - lv_disp_flush_ready(disp); - return; // ok - } +// // check if we are currently doing a screenshot +// if (glue->getScreenshotFile() != nullptr) { +// // save pixels to file +// int32_t btw = (width * height * LV_COLOR_DEPTH + 7) / 8; +// while (btw > 0) { +// int32_t ret = glue->getScreenshotFile()->write((const uint8_t*) color_p, btw); +// if (ret >= 0) { +// btw -= ret; +// } else { +// btw = 0; // abort +// } +// } +// lv_disp_flush_ready(disp); +// return; // ok +// // } - Renderer *display = glue->display; +// Renderer *display = glue->display; - if (!glue->first_frame) { - //display->dmaWait(); // Wait for prior DMA transfer to complete - //display->endWrite(); // End transaction from any prior call - } else { - glue->first_frame = false; - } +// if (!glue->first_frame) { +// //display->dmaWait(); // Wait for prior DMA transfer to complete +// //display->endWrite(); // End transaction from any prior call +// } else { +// glue->first_frame = false; +// } - display->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height); - display->pushColors((uint16_t *)color_p, width * height, true); - display->setAddrWindow(0,0,0,0); +// display->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height); +// display->pushColors((uint16_t *)color_p, width * height, true); +// display->setAddrWindow(0,0,0,0); - lv_disp_flush_ready(disp); +// lv_disp_flush_ready(disp); -} +// } -#if (LV_USE_LOG) -// Optional LittlevGL debug print function, writes to Serial if debug is -// enabled when calling glue begin() function. -static void lv_debug(lv_log_level_t level, const char *file, uint32_t line, const char *fname, - const char *dsc) { - Serial.print(file); - Serial.write('@'); - Serial.print(line); - Serial.print(":"); - Serial.print(fname); - Serial.write("->"); - Serial.println(dsc); -} -#endif +// #if (LV_USE_LOG) +// // Optional LittlevGL debug print function, writes to Serial if debug is +// // enabled when calling glue begin() function. +// static void lv_debug(lv_log_level_t level, const char *file, uint32_t line, const char *fname, +// const char *dsc) { +// Serial.print(file); +// Serial.write('@'); +// Serial.print(line); +// Serial.print(":"); +// Serial.print(fname); +// Serial.write("->"); +// Serial.println(dsc); +// } +// #endif // GLUE LIB FUNCTIONS ------------------------------------------------------ @@ -120,9 +122,6 @@ static void lv_debug(lv_log_level_t level, const char *file, uint32_t line, cons */ Adafruit_LvGL_Glue::Adafruit_LvGL_Glue(void) : first_frame(true), lv_pixel_buf(NULL) { -#if defined(ARDUINO_ARCH_SAMD) - zerotimer = NULL; -#endif } // Destructor @@ -133,9 +132,6 @@ Adafruit_LvGL_Glue::Adafruit_LvGL_Glue(void) */ Adafruit_LvGL_Glue::~Adafruit_LvGL_Glue(void) { delete[] lv_pixel_buf; -#if defined(ARDUINO_ARCH_SAMD) - delete zerotimer; -#endif // Probably other stuff that could be deallocated here } @@ -207,11 +203,6 @@ LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) { lv_init(); -// #if (LV_USE_LOG) -// if (debug) { -// lv_log_register_print_cb(lv_debug); // Register debug print function -// } -// #endif // Allocate LvGL display buffer (x2 because DMA double buffering) LvGLStatus status = LVGL_ERR_ALLOC; diff --git a/tasmota/xdrv_54_lvgl.ino b/tasmota/xdrv_54_lvgl.ino index 717d279e0..daddaf109 100644 --- a/tasmota/xdrv_54_lvgl.ino +++ b/tasmota/xdrv_54_lvgl.ino @@ -119,6 +119,61 @@ static void guiTask(void *pvParameter) { vTaskDelete(NULL); } + +/************************************************************ + * Main screen refresh function + ************************************************************/ +// This is the flush function required for LittlevGL screen updates. +// It receives a bounding rect and an array of pixel data (conveniently +// already in 565 format, so the Earth was lucky there). +void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p); +void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) { + // Get pointer to glue object from indev user data + Adafruit_LvGL_Glue *glue = (Adafruit_LvGL_Glue *)disp->user_data; + + uint16_t width = (area->x2 - area->x1 + 1); + uint16_t height = (area->y2 - area->y1 + 1); + + // check if we are currently doing a screenshot + if (glue->getScreenshotFile() != nullptr) { + // save pixels to file + int32_t btw = (width * height * LV_COLOR_DEPTH + 7) / 8; + while (btw > 0) { + int32_t ret = glue->getScreenshotFile()->write((const uint8_t*) color_p, btw); + if (ret >= 0) { + btw -= ret; + } else { + btw = 0; // abort + } + } + lv_disp_flush_ready(disp); + return; // ok + } + + Renderer *display = glue->display; + + if (!glue->first_frame) { + //display->dmaWait(); // Wait for prior DMA transfer to complete + //display->endWrite(); // End transaction from any prior call + } else { + glue->first_frame = false; + } + + uint32_t pixels_len = width * height; + uint32_t chrono_start = millis(); + display->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height); + display->pushColors((uint16_t *)color_p, pixels_len, true); + display->setAddrWindow(0,0,0,0); + uint32_t chrono_time = millis() - chrono_start; + + lv_disp_flush_ready(disp); + + if (pixels_len >= 10000) { + AddLog(LOG_LEVEL_DEBUG, D_LOG_LVGL "Refreshed %d pixels in %d ms (%i pix/ms)", pixels_len, chrono_time, + chrono_time > 0 ? pixels_len / chrono_time : -1); + } +} + /************************************************************ * Callbacks for file system access from LVGL * @@ -255,7 +310,7 @@ void start_lvgl(const char * uconfig) { } if (uconfig && !renderer) { -#ifdef USE_UNIVERSAL_DISPLAY +#ifdef USE_UNIVERSAL_DISPLAY // TODO - we will probably support only UNIV_DISPLAY renderer = Init_uDisplay((char*)uconfig, -1); if (!renderer) return; #else From 9901ccdde70f75d11fd3395498f3c36382775b8b Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Mon, 26 Apr 2021 10:20:14 +0200 Subject: [PATCH 52/97] lvgl initial dma support --- .../src/renderer.cpp | 4 +- .../Display_Renderer-gemu-1.0/src/renderer.h | 21 ++- lib/lib_display/UDisplay/uDisplay.cpp | 173 +++++++++++++++++- lib/lib_display/UDisplay/uDisplay.h | 21 ++- .../Xlatb_RA8876-gemu-1.0/RA8876.cpp | 4 +- lib/libesp32_epdiy/src/epd4in7.cpp | 2 +- .../Adafruit_LvGL_Glue.cpp | 16 +- .../Adafruit_LvGL_Glue.h | 1 + .../Adafruit_LvGL_Glue-shadinger/Doxyfile | 0 .../Adafruit_LvGL_Glue-shadinger/README.md | 0 .../code-of-conduct.md | 0 .../examples/hello_changes/hello_changes.ino | 0 .../examples/hello_clue/.clue.test.only | 0 .../examples/hello_clue/hello_clue.ino | 0 .../hello_featherwing/.cpx_ada.test.skip | 0 .../hello_featherwing/hello_featherwing.ino | 0 .../examples/hello_gizmo/.cpb.test.only | 0 .../examples/hello_gizmo/hello_gizmo.ino | 0 .../hello_pyportal/.pyportal.test.only | 0 .../hello_pyportal/hello_pyportal.ino | 0 .../examples/widgets_clue/.clue.test.only | 0 .../examples/widgets_clue/widgets_clue.ino | 0 .../widgets_featherwing/.cpx_ada.test.skip | 0 .../widgets_featherwing.ino | 0 .../examples/widgets_gizmo/.cpb.test.only | 0 .../examples/widgets_gizmo/widgets_gizmo.ino | 0 .../widgets_pyportal/.pyportal.test.only | 0 .../widgets_pyportal/widgets_pyportal.ino | 0 .../library.properties | 0 .../Adafruit_LvGL_Glue-shadinger/license.txt | 0 30 files changed, 226 insertions(+), 16 deletions(-) mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Doxyfile mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/README.md mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/code-of-conduct.md mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_changes/hello_changes.ino mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_clue/.clue.test.only mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_clue/hello_clue.ino mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_featherwing/.cpx_ada.test.skip mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_featherwing/hello_featherwing.ino mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_gizmo/.cpb.test.only mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_gizmo/hello_gizmo.ino mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_pyportal/.pyportal.test.only mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_pyportal/hello_pyportal.ino mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_clue/.clue.test.only mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_clue/widgets_clue.ino mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_featherwing/.cpx_ada.test.skip mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_featherwing/widgets_featherwing.ino mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_gizmo/.cpb.test.only mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_gizmo/widgets_gizmo.ino mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_pyportal/.pyportal.test.only mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_pyportal/widgets_pyportal.ino mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/library.properties mode change 100644 => 100755 lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/license.txt diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp index 699c00763..96125f14d 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp @@ -624,8 +624,8 @@ char *Renderer::devname(void) { return (char*)dname; } -uint16_t Renderer::lvgl_pars(void) { - return lvgl_param; +LVGL_PARAMS *Renderer::lvgl_pars(void) { + return &lvgl_param; } void VButton::xdrawButton(bool inverted) { diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h index e5f15671d..d986db909 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h @@ -16,6 +16,23 @@ // a. in class GFX setCursor,setTextSize => virtual // b. textcolor,textbgcolor => public; +typedef struct LVGL_PARAMS { + uint16_t fluslines; + union { + uint8_t data; + struct { + uint8_t resvd_0 : 1; + uint8_t resvd_1 : 1; + uint8_t resvd_2 : 1; + uint8_t resvd_3 : 1; + uint8_t resvd_4 : 1; + uint8_t resvd_5 : 1; + uint8_t resvd_6 : 1; + uint8_t use_dma : 1; + }; + }; +}LVGL_PARAMS; + typedef void (*pwr_cb)(uint8_t); typedef void (*dim_cb)(uint8_t); @@ -51,7 +68,7 @@ public: virtual int8_t color_type(void); virtual void Splash(void); virtual char *devname(void); - virtual uint16_t lvgl_pars(void); + virtual LVGL_PARAMS *lvgl_pars(void); void setDrawMode(uint8_t mode); uint8_t drawmode; @@ -60,7 +77,7 @@ public: virtual uint8_t *allocate_framebuffer(uint32_t size); pwr_cb pwr_cbp = 0; dim_cb dim_cbp = 0; - uint16_t lvgl_param = 0; + LVGL_PARAMS lvgl_param; private: void DrawCharAt(int16_t x, int16_t y, char ascii_char,int16_t colored); inline void drawFastVLineInternal(int16_t x, int16_t y, int16_t h, uint16_t color) __attribute__((always_inline)); diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 95cff99dd..e36da63b3 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -283,7 +283,8 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { lut3time = next_val(&lp1); break; case 'B': - lvgl_param = next_val(&lp1); + lvgl_param.fluslines = next_val(&lp1); + lvgl_param.use_dma = next_val(&lp1); break; } } @@ -462,9 +463,18 @@ Renderer *uDisplay::Init(void) { if (spi_nr == 1) { uspi = &SPI; uspi->begin(spi_clk, spi_miso, spi_mosi, -1); + if (lvgl_param.use_dma) { + spi_host = VSPI_HOST; + initDMA(spi_cs); + } + } else if (spi_nr == 2) { uspi = new SPIClass(HSPI); uspi->begin(spi_clk, spi_miso, spi_mosi, -1); + if (lvgl_param.use_dma) { + spi_host = HSPI_HOST; + initDMA(spi_cs); + } } else { pinMode(spi_clk, OUTPUT); digitalWrite(spi_clk, LOW); @@ -1018,6 +1028,8 @@ static inline uint8_t ulv_color_to1(uint16_t color) { void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean first) { uint16_t color; + //Serial.printf("push %x - %d\n", (uint32_t)data, len); + if (bpp != 16) { // stupid monchrome version for (uint32_t y = seta_yp1; y < seta_yp2; y++) { @@ -1038,7 +1050,11 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean first) { uspi->write(*data++); } #else - uspi->writePixels(data, len * 2); + if (lvgl_param.use_dma) { + pushPixelsDMA(data, len ); + } else { + uspi->writePixels(data, len * 2); + } #endif } else { while (len--) { @@ -1758,3 +1774,156 @@ void uDisplay::drawFastHLine_EPD(int16_t x, int16_t y, int16_t w, uint16_t color x++; } } + + +void uDisplay::beginTransaction(SPISettings s) { + if (lvgl_param.use_dma) { + dmaWait(); + } else { + uspi->beginTransaction(s); + } +} + +void uDisplay::endTransaction(void) { + if (lvgl_param.use_dma) { + dmaBusy(); + } else { + uspi->endTransaction(); + } +} + + +// ESP 32 DMA section , derived from TFT_eSPI +#ifdef ESP32 + +/*************************************************************************************** +** Function name: initDMA +** Description: Initialise the DMA engine - returns true if init OK +***************************************************************************************/ +bool uDisplay::initDMA(bool ctrl_cs) +{ + if (DMA_Enabled) return false; + + esp_err_t ret; + spi_bus_config_t buscfg = { + .mosi_io_num = spi_mosi, + .miso_io_num = -1, + .sclk_io_num = spi_clk, + .quadwp_io_num = -1, + .quadhd_io_num = -1, + .max_transfer_sz = width() * height() * 2 + 8, // TFT screen size + .flags = 0, + .intr_flags = 0 + }; + + int8_t pin = -1; + if (ctrl_cs) pin = spi_cs; + + spi_device_interface_config_t devcfg = { + .command_bits = 0, + .address_bits = 0, + .dummy_bits = 0, + .mode = SPI_MODE3, + .duty_cycle_pos = 0, + .cs_ena_pretrans = 0, + .cs_ena_posttrans = 0, + .clock_speed_hz = spi_speed*1000000, + .input_delay_ns = 0, + .spics_io_num = pin, + .flags = SPI_DEVICE_NO_DUMMY, //0, + .queue_size = 1, + .pre_cb = 0, //dc_callback, //Callback to handle D/C line + .post_cb = 0 + }; + ret = spi_bus_initialize(spi_host, &buscfg, 1); + ESP_ERROR_CHECK(ret); + ret = spi_bus_add_device(spi_host, &devcfg, &dmaHAL); + ESP_ERROR_CHECK(ret); + + DMA_Enabled = true; + spiBusyCheck = 0; + return true; +} + +/*************************************************************************************** +** Function name: deInitDMA +** Description: Disconnect the DMA engine from SPI +***************************************************************************************/ +void uDisplay::deInitDMA(void) { + if (!DMA_Enabled) return; + spi_bus_remove_device(dmaHAL); + spi_bus_free(spi_host); + DMA_Enabled = false; +} + +/*************************************************************************************** +** Function name: dmaBusy +** Description: Check if DMA is busy +***************************************************************************************/ +bool uDisplay::dmaBusy(void) { + if (!DMA_Enabled || !spiBusyCheck) return false; + + spi_transaction_t *rtrans; + esp_err_t ret; + uint8_t checks = spiBusyCheck; + for (int i = 0; i < checks; ++i) { + ret = spi_device_get_trans_result(dmaHAL, &rtrans, 0); + if (ret == ESP_OK) spiBusyCheck--; + } + + //Serial.print("spiBusyCheck=");Serial.println(spiBusyCheck); + if (spiBusyCheck == 0) return false; + return true; +} + + +/*************************************************************************************** +** Function name: dmaWait +** Description: Wait until DMA is over (blocking!) +***************************************************************************************/ +void uDisplay::dmaWait(void) { + if (!DMA_Enabled || !spiBusyCheck) return; + spi_transaction_t *rtrans; + esp_err_t ret; + for (int i = 0; i < spiBusyCheck; ++i) { + ret = spi_device_get_trans_result(dmaHAL, &rtrans, portMAX_DELAY); + assert(ret == ESP_OK); + } + spiBusyCheck = 0; +} + + +/*************************************************************************************** +** Function name: pushPixelsDMA +** Description: Push pixels to TFT (len must be less than 32767) +***************************************************************************************/ +// This will byte swap the original image if setSwapBytes(true) was called by sketch. +void uDisplay::pushPixelsDMA(uint16_t* image, uint32_t len) { + + if ((len == 0) || (!DMA_Enabled)) return; + + dmaWait(); + +/* + if(_swapBytes) { + for (uint32_t i = 0; i < len; i++) (image[i] = image[i] << 8 | image[i] >> 8); + }*/ + + esp_err_t ret; + + memset(&trans, 0, sizeof(spi_transaction_t)); + + trans.user = (void *)1; + trans.tx_buffer = image; //finally send the line data + trans.length = len * 16; //Data length, in bits + trans.flags = 0; //SPI_TRANS_USE_TXDATA flag + + ret = spi_device_queue_trans(dmaHAL, &trans, portMAX_DELAY); + assert(ret == ESP_OK); + + spiBusyCheck++; +} + + + +#endif // ESP32 diff --git a/lib/lib_display/UDisplay/uDisplay.h b/lib/lib_display/UDisplay/uDisplay.h index 33ccec74e..f757a00ec 100755 --- a/lib/lib_display/UDisplay/uDisplay.h +++ b/lib/lib_display/UDisplay/uDisplay.h @@ -5,6 +5,7 @@ #include #include #include +#include "driver/spi_master.h" #define _UDSP_I2C 1 #define _UDSP_SPI 2 @@ -58,8 +59,8 @@ enum uColorType { uCOLOR_BW, uCOLOR_COLOR }; #endif -#define SPI_BEGIN_TRANSACTION if (spi_nr <= 2) uspi->beginTransaction(spiSettings); -#define SPI_END_TRANSACTION if (spi_nr <= 2) uspi->endTransaction(); +#define SPI_BEGIN_TRANSACTION if (spi_nr <= 2) beginTransaction(spiSettings); +#define SPI_END_TRANSACTION if (spi_nr <= 2) endTransaction(); #define SPI_CS_LOW if (spi_cs >= 0) GPIO_CLR(spi_cs); #define SPI_CS_HIGH if (spi_cs >= 0) GPIO_SET(spi_cs); #define SPI_DC_LOW if (spi_dc >= 0) GPIO_CLR(spi_dc); @@ -94,6 +95,8 @@ class uDisplay : public Renderer { void SetDimCB(dim_cb cb) { dim_cbp = cb; }; private: + void beginTransaction(SPISettings s); + void endTransaction(void); void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); void drawPixel(int16_t x, int16_t y, uint16_t color); void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); @@ -209,6 +212,20 @@ class uDisplay : public Renderer { uint16_t seta_xp2; uint16_t seta_yp1; uint16_t seta_yp2; +#ifdef ESP32 + // dma section + bool DMA_Enabled = false; + uint8_t spiBusyCheck = 0; + spi_transaction_t trans; + spi_device_handle_t dmaHAL; + spi_host_device_t spi_host = VSPI_HOST; + // spi_host_device_t spi_host = VSPI_HOST; + bool initDMA(bool ctrl_cs); + void deInitDMA(void); + bool dmaBusy(void); + void dmaWait(void); + void pushPixelsDMA(uint16_t* image, uint32_t len); +#endif // ESP32 }; diff --git a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp index b507912ff..2f7265f46 100644 --- a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp +++ b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp @@ -482,8 +482,8 @@ void RA8876::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) { bool RA8876::initDisplay() { - lvgl_param = 10; - + lvgl_param.fluslines = 10; + SPI.beginTransaction(m_spiSettings); // Set chip config register diff --git a/lib/libesp32_epdiy/src/epd4in7.cpp b/lib/libesp32_epdiy/src/epd4in7.cpp index f16d2cf78..8a83ec35a 100644 --- a/lib/libesp32_epdiy/src/epd4in7.cpp +++ b/lib/libesp32_epdiy/src/epd4in7.cpp @@ -61,7 +61,7 @@ int32_t Epd47::Init(void) { epd_init(EPD_LUT_1K); hl = epd_hl_init(WAVEFORM); epd47_buffer = epd_hl_get_framebuffer(&hl); - lvgl_param = 10; + lvgl_param.fluslines = 10; return 0; } diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp old mode 100644 new mode 100755 index 6f14a7a06..888e0d8da --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp @@ -198,8 +198,6 @@ LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, bool debug) { LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) { - - lv_init(); // Allocate LvGL display buffer (x2 because DMA double buffering) @@ -209,9 +207,17 @@ LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) { uint32_t lvgl_buffer_size; //lvgl_buffer_size = LV_HOR_RES_MAX * LV_BUFFER_ROWS; - uint8_t flushlines = tft->lvgl_pars(); + uint8_t flushlines = tft->lvgl_pars()->fluslines; lvgl_buffer_size = tft->width() * (flushlines ? flushlines:LV_BUFFER_ROWS); - //Serial.printf("%d\n", lvgl_buffer_size); + if (tft->lvgl_pars()->use_dma) { + lvgl_buffer_size /= 2; + lv_pixel_buf2 = new lv_color_t[lvgl_buffer_size]; + if (!lv_pixel_buf2) { + return status; + } + } else { + lv_pixel_buf2 = nullptr; + } if ((lv_pixel_buf = new lv_color_t[lvgl_buffer_size])) { @@ -227,7 +233,7 @@ LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) { // Initialize LvGL display buffers lv_disp_buf_init( &lv_disp_buf, lv_pixel_buf, // 1st half buf - nullptr, // 2nd half buf + lv_pixel_buf2, // 2nd half buf lvgl_buffer_size); // Initialize LvGL display driver diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h old mode 100644 new mode 100755 index 2a5c3e81b..7969bb890 --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h @@ -44,6 +44,7 @@ private: lv_disp_drv_t lv_disp_drv; lv_disp_buf_t lv_disp_buf; lv_color_t *lv_pixel_buf; + lv_color_t *lv_pixel_buf2; lv_indev_drv_t lv_indev_drv; lv_indev_t *lv_input_dev_ptr; Ticker tick; diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Doxyfile b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Doxyfile old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/README.md b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/README.md old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/code-of-conduct.md b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/code-of-conduct.md old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_changes/hello_changes.ino b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_changes/hello_changes.ino old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_clue/.clue.test.only b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_clue/.clue.test.only old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_clue/hello_clue.ino b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_clue/hello_clue.ino old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_featherwing/.cpx_ada.test.skip b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_featherwing/.cpx_ada.test.skip old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_featherwing/hello_featherwing.ino b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_featherwing/hello_featherwing.ino old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_gizmo/.cpb.test.only b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_gizmo/.cpb.test.only old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_gizmo/hello_gizmo.ino b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_gizmo/hello_gizmo.ino old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_pyportal/.pyportal.test.only b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_pyportal/.pyportal.test.only old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_pyportal/hello_pyportal.ino b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/hello_pyportal/hello_pyportal.ino old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_clue/.clue.test.only b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_clue/.clue.test.only old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_clue/widgets_clue.ino b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_clue/widgets_clue.ino old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_featherwing/.cpx_ada.test.skip b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_featherwing/.cpx_ada.test.skip old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_featherwing/widgets_featherwing.ino b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_featherwing/widgets_featherwing.ino old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_gizmo/.cpb.test.only b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_gizmo/.cpb.test.only old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_gizmo/widgets_gizmo.ino b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_gizmo/widgets_gizmo.ino old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_pyportal/.pyportal.test.only b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_pyportal/.pyportal.test.only old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_pyportal/widgets_pyportal.ino b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/examples/widgets_pyportal/widgets_pyportal.ino old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/library.properties b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/library.properties old mode 100644 new mode 100755 diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/license.txt b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/license.txt old mode 100644 new mode 100755 From 1c2db8ca4662f42d2e0da02585a28d73b87db956 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 26 Apr 2021 10:35:39 +0200 Subject: [PATCH 53/97] Minor strstr() refactor --- tasmota/support.ino | 3 +++ tasmota/support_tasmota.ino | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tasmota/support.ino b/tasmota/support.ino index 1459810eb..e56b9cf82 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1403,6 +1403,7 @@ bool ValidModule(uint32_t index) } bool ValidTemplate(const char *search) { +/* char template_name[strlen(SettingsText(SET_TEMPLATE_NAME)) +1]; char search_name[strlen(search) +1]; @@ -1410,6 +1411,8 @@ bool ValidTemplate(const char *search) { LowerCase(search_name, search); return (strstr(template_name, search_name) != nullptr); +*/ + return (StrStr_P(SettingsText(SET_TEMPLATE_NAME), search) != nullptr); } String AnyModuleName(uint32_t index) diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 07501638a..c1f086645 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1149,7 +1149,7 @@ void Every250mSeconds(void) } #endif // FIRMWARE_MINIMAL if (ota_retry_counter < OTA_ATTEMPTS / 2) { - if (strstr_P(TasmotaGlobal.mqtt_data, PSTR(".gz"))) { // Might be made case insensitive... + if (StrStr_P(TasmotaGlobal.mqtt_data, PSTR(".gz"))) { ota_retry_counter = 1; } else { strcat_P(TasmotaGlobal.mqtt_data, PSTR(".gz")); From f91eaf65724b554304427f45b389240db455ccc9 Mon Sep 17 00:00:00 2001 From: Norbert <48217146+Noschvie@users.noreply.github.com> Date: Mon, 26 Apr 2021 10:39:59 +0200 Subject: [PATCH 54/97] Update de_DE.h Fix typo. --- tasmota/language/de_DE.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 90928ae8a..6ea3bfbbf 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -303,7 +303,7 @@ #define D_CHECK_CREDENTIALS "Bitte SSID/Passwort überprüfen" #define D_SUCCESSFUL_WIFI_CONNECTION "mit Wifi verbunden" #define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "das Fenster kann geschlossen werden" -#define D_REDIRECTING_TO_NEW_IP "Umleitung zur neuen Geräte IP-Addresse" +#define D_REDIRECTING_TO_NEW_IP "Umleitung zur neuen Geräte IP-Adresse" #define D_MQTT_PARAMETERS "MQTT-Einstellungen" #define D_CLIENT "client" @@ -495,7 +495,7 @@ #define D_ZIGBEE_UNSUPPORTED_ATTRIBUTE_TYPE "Nicht unterstützter Attribut Typ" #define D_ZIGBEE_JSON_REQUIRED "Konfiguration muss JSON basiert sein" #define D_ZIGBEE_RESET_1_OR_2 "1 oder 2 für Reset" -#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM gefunden auf Addresse" +#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM gefunden auf Adresse" #define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Zufällige Zigbee Parameter erstellt, Überprüfung mit 'ZbConfig'" // xdrv_03_energy.ino @@ -659,9 +659,9 @@ #define D_SENSOR_TM1638_CLK "TM1638 CLK" #define D_SENSOR_TM1638_DIO "TM1638 DIO" #define D_SENSOR_TM1638_STB "TM1638 STB" -#define D_SENSOR_MAX7219_DIN "MAX7219 DIN" +#define D_SENSOR_MAX7219_DIN "MAX7219 DIN" #define D_SENSOR_MAX7219_CS "MAX7219 CS" -#define D_SENSOR_MAX7219_CLK "MAX7219 CLK" +#define D_SENSOR_MAX7219_CLK "MAX7219 CLK" #define D_SENSOR_HX711_SCK "HX711 SCK" #define D_SENSOR_HX711_DAT "HX711 DAT" #define D_SENSOR_FTC532 "FTC532" @@ -741,9 +741,9 @@ #define D_SENSOR_SM2135_DAT "SM2135 Dat" #define D_SENSOR_DEEPSLEEP "DeepSleep" #define D_SENSOR_EXS_ENABLE "EXS Enable" -#define D_SENSOR_CLIENT_TX "Client TX" -#define D_SENSOR_CLIENT_RX "Client RX" -#define D_SENSOR_CLIENT_RESET "Client RST" +#define D_SENSOR_CLIENT_TX "Client TX" +#define D_SENSOR_CLIENT_RX "Client RX" +#define D_SENSOR_CLIENT_RESET "Client RST" #define D_SENSOR_GPS_RX "GPS RX" #define D_SENSOR_GPS_TX "GPS TX" #define D_SENSOR_HM10_RX "HM10 RX" @@ -817,8 +817,8 @@ #define D_SENSOR_NEOPOOL_TX "NeoPool Tx" #define D_SENSOR_NEOPOOL_RX "NeoPool Rx" #define D_SENSOR_VL53L0X_XSHUT "VL53L0X XSHUT" -#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" -#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" +#define D_SENSOR_TFMINIPLUS_TX "TFmini+ TX" +#define D_SENSOR_TFMINIPLUS_RX "TFmini+ RX" #define D_SENSOR_ZEROCROSS "ZC Puls" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" @@ -869,7 +869,7 @@ #define D_UNIT_WATTHOUR "Wh" #define D_UNIT_WATT_METER_QUADRAT "W/m²" -#define D_NEW_ADDRESS "Neue Addresse" +#define D_NEW_ADDRESS "Neue Adresse" #define D_OUT_OF_RANGE "Außerhalb Bereich" #define D_SENSOR_DETECTED "erkannt" @@ -985,7 +985,7 @@ #define D_FP_IMAGEFAIL "Abbildungsfehler" // 0x03 Failed to enroll the finger #define D_FP_IMAGEMESS "schlechtes Abbild" // 0x06 Failed to generate character file due to overly disorderly fingerprint image #define D_FP_FEATUREFAIL "Fingerabdruck zu klein" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image -#define D_FP_NOMATCH "keine Übereinstimmung" // 0x08 Finger doesn't match +#define D_FP_NOMATCH "keine Übereinstimmung" // 0x08 Finger doesn't match #define D_FP_NOTFOUND "keinen Eintrag gefunden" // 0x09 Failed to find matching finger #define D_FP_ENROLLMISMATCH "Fingerabdruck fehlerhaft" // 0x0A Failed to combine the character files #define D_FP_BADLOCATION "Eintrag Fehler" // 0x0B Addressed PageID is beyond the finger library From ed61e9fe74a73d49e65228782109f48bfaf81c41 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Mon, 26 Apr 2021 11:41:01 +0200 Subject: [PATCH 55/97] fix esp8266 compile --- lib/lib_display/UDisplay/uDisplay.cpp | 8 ++++++++ lib/lib_display/UDisplay/uDisplay.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index e36da63b3..61d578b43 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -1777,19 +1777,27 @@ void uDisplay::drawFastHLine_EPD(int16_t x, int16_t y, int16_t w, uint16_t color void uDisplay::beginTransaction(SPISettings s) { +#ifdef ESP32 if (lvgl_param.use_dma) { dmaWait(); } else { uspi->beginTransaction(s); } +#else + uspi->beginTransaction(s); +#endif } void uDisplay::endTransaction(void) { +#ifdef ESP32 if (lvgl_param.use_dma) { dmaBusy(); } else { uspi->endTransaction(); } +#else + uspi->endTransaction(); +#endif } diff --git a/lib/lib_display/UDisplay/uDisplay.h b/lib/lib_display/UDisplay/uDisplay.h index f757a00ec..62b9bf620 100755 --- a/lib/lib_display/UDisplay/uDisplay.h +++ b/lib/lib_display/UDisplay/uDisplay.h @@ -5,7 +5,9 @@ #include #include #include +#ifdef ESP32 #include "driver/spi_master.h" +#endif #define _UDSP_I2C 1 #define _UDSP_SPI 2 From 61cecdef2f63a81c7a89239b5e89f61e381749cf Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Mon, 26 Apr 2021 13:49:42 +0200 Subject: [PATCH 56/97] Udisplay finegrain delay (#11894) * uDisplay add 10ms delay and log * Silly bug Co-authored-by: Stephan Hadinger --- lib/lib_display/UDisplay/uDisplay.cpp | 17 ++++++++++++++--- tasmota/displaydesc/ST7789_desc.txt | 3 +-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 61d578b43..b8830636a 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -514,9 +514,20 @@ Renderer *uDisplay::Init(void) { #ifdef UDSP_DEBUG Serial.printf("\n"); #endif - if (args & 0x80) { - if (args&0x60) delay(500); - else delay(150); + if (args & 0x80) { // delay after the command + uint32_t delay_ms = 0; + switch (args & 0xE0) { + case 0x80: delay_ms = 150; break; + case 0xA0: delay_ms = 10; break; + case 0xE0: delay_ms = 500; break; + } + if (delay_ms > 0) { + delay(delay_ms); +#ifdef UDSP_DEBUG + Serial.printf("delay %d ms\n", delay_ms); +#endif + } + } if (index >= dsp_ncmds) break; } diff --git a/tasmota/displaydesc/ST7789_desc.txt b/tasmota/displaydesc/ST7789_desc.txt index 6b21397ac..be21b135f 100644 --- a/tasmota/displaydesc/ST7789_desc.txt +++ b/tasmota/displaydesc/ST7789_desc.txt @@ -1,4 +1,3 @@ - :H,ST7789,240,240,16,SPI,1,*,*,*,*,*,*,*,40 :S,2,1,3,0,80,30 :I @@ -17,6 +16,6 @@ :1,A0,50,00,01 :2,00,00,00,02 :3,60,00,00,03 -i:20,21 +:i,20,21 :TI2,38,32,23 # From 01390c2ca6d0851d396c2670238c7eb94c862d97 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 26 Apr 2021 13:56:44 +0200 Subject: [PATCH 57/97] Add ESP32 pulldown buttons ``Button_d`` and ``Button_id`` Add ESP32 pulldown buttons ``Button_d`` and ``Button_id`` (#10814) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/support_button.ino | 7 ++++++- tasmota/support_tasmota.ino | 11 +++++++++++ tasmota/tasmota_template.h | 12 ++++++++++++ 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c087f80bb..d1f78d769 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ## [9.4.0.2] ### Added - Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` (#11788) +- ESP32 pulldown buttons ``Button_d`` and ``Button_id`` (#10814) ## [Released] diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 574d5cc82..80d1a08ab 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -79,6 +79,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.4.0.2 ### Added - Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` [#11788](https://github.com/arendst/Tasmota/issues/11788) +- ESP32 pulldown buttons ``Button_d`` and ``Button_id`` [#10814](https://github.com/arendst/Tasmota/issues/10814) ### Breaking Changed diff --git a/tasmota/support_button.ino b/tasmota/support_button.ino index ca3338502..a4b0d9ef3 100644 --- a/tasmota/support_button.ino +++ b/tasmota/support_button.ino @@ -35,6 +35,7 @@ const char kMultiPress[] PROGMEM = struct BUTTON { uint32_t debounce = 0; // Button debounce timer uint32_t no_pullup_mask = 0; // key no pullup flag (1 = no pullup) + uint32_t pulldown_mask = 0; // key pulldown flag (1 = pulldown) uint32_t inverted_mask = 0; // Key inverted flag (1 = inverted) #ifdef ESP32 uint32_t touch_mask = 0; // Touch flag (1 = inverted) @@ -67,6 +68,10 @@ void ButtonPullupFlag(uint32_t button_bit) { bitSet(Button.no_pullup_mask, button_bit); } +void ButtonPulldownFlag(uint32_t button_bit) { + bitSet(Button.pulldown_mask, button_bit); +} + void ButtonInvertFlag(uint32_t button_bit) { bitSet(Button.inverted_mask, button_bit); } @@ -92,7 +97,7 @@ void ButtonInit(void) { pinMode(Pin(GPIO_KEY1, i), bitRead(Button.no_pullup_mask, i) ? INPUT : ((16 == Pin(GPIO_KEY1, i)) ? INPUT_PULLDOWN_16 : INPUT_PULLUP)); #endif // ESP8266 #ifdef ESP32 - pinMode(Pin(GPIO_KEY1, i), bitRead(Button.no_pullup_mask, i) ? INPUT : INPUT_PULLUP); + pinMode(Pin(GPIO_KEY1, i), bitRead(Button.pulldown_mask, i) ? INPUT_PULLDOWN : bitRead(Button.no_pullup_mask, i) ? INPUT : INPUT_PULLUP); #endif // ESP32 } #ifdef USE_ADC diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index c1f086645..7dcc83f59 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1672,6 +1672,12 @@ void GpioInit(void) ButtonPullupFlag(mpin - AGPIO(GPIO_KEY1_NP)); // 0 .. 3 mpin -= (AGPIO(GPIO_KEY1_NP) - AGPIO(GPIO_KEY1)); } +#ifdef ESP32 + else if ((mpin >= AGPIO(GPIO_KEY1_PD)) && (mpin < (AGPIO(GPIO_KEY1_PD) + MAX_KEYS))) { + ButtonPulldownFlag(mpin - AGPIO(GPIO_KEY1_PD)); // 0 .. 3 + mpin -= (AGPIO(GPIO_KEY1_PD) - AGPIO(GPIO_KEY1)); + } +#endif else if ((mpin >= AGPIO(GPIO_KEY1_INV)) && (mpin < (AGPIO(GPIO_KEY1_INV) + MAX_KEYS))) { ButtonInvertFlag(mpin - AGPIO(GPIO_KEY1_INV)); // 0 .. 3 mpin -= (AGPIO(GPIO_KEY1_INV) - AGPIO(GPIO_KEY1)); @@ -1682,6 +1688,11 @@ void GpioInit(void) mpin -= (AGPIO(GPIO_KEY1_INV_NP) - AGPIO(GPIO_KEY1)); } #ifdef ESP32 + else if ((mpin >= AGPIO(GPIO_KEY1_INV_PD)) && (mpin < (AGPIO(GPIO_KEY1_INV_PD) + MAX_KEYS))) { + ButtonPulldownFlag(mpin - AGPIO(GPIO_KEY1_INV_PD)); // 0 .. 3 + ButtonInvertFlag(mpin - AGPIO(GPIO_KEY1_INV_PD)); // 0 .. 3 + mpin -= (AGPIO(GPIO_KEY1_INV_PD) - AGPIO(GPIO_KEY1)); + } else if ((mpin >= AGPIO(GPIO_KEY1_TC)) && (mpin < (AGPIO(GPIO_KEY1_TC) + MAX_KEYS))) { ButtonTouchFlag(mpin - AGPIO(GPIO_KEY1_TC)); // 0 .. 3 mpin -= (AGPIO(GPIO_KEY1_TC) - AGPIO(GPIO_KEY1)); diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 542539331..060722c58 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -163,6 +163,9 @@ enum UserSelectablePins { GPIO_EPD_DATA, // Base connection EPD driver #endif GPIO_INPUT, +#ifdef ESP32 + GPIO_KEY1_PD, GPIO_KEY1_INV_PD, +#endif GPIO_SENSOR_END }; enum ProgramSelectablePins { @@ -346,6 +349,9 @@ const char kSensorNames[] PROGMEM = D_SENSOR_EPD_DATA "|" #endif D_SENSOR_INPUT "|" +#ifdef ESP32 + D_SENSOR_BUTTON "_d|" D_SENSOR_BUTTON "_id|" +#endif ; const char kSensorNamesFixed[] PROGMEM = @@ -362,9 +368,15 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_OPTION_A) + MAX_OPTIONS_A, // Device specific options AGPIO(GPIO_KEY1) + MAX_KEYS, // Buttons AGPIO(GPIO_KEY1_NP) + MAX_KEYS, +#ifdef ESP32 + AGPIO(GPIO_KEY1_PD) + MAX_KEYS, +#endif AGPIO(GPIO_KEY1_INV) + MAX_KEYS, AGPIO(GPIO_KEY1_INV_NP) + MAX_KEYS, +#ifdef ESP32 + AGPIO(GPIO_KEY1_INV_PD) + MAX_KEYS, AGPIO(GPIO_KEY1_TC) + MAX_KEYS, // Touch button +#endif AGPIO(GPIO_SWT1) + MAX_SWITCHES, // User connected external switches AGPIO(GPIO_SWT1_NP) + MAX_SWITCHES, #ifdef ROTARY_V1 From 589ccb0f2f57904077ffba558d5bc84fb5d6eeb7 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 26 Apr 2021 14:21:48 +0200 Subject: [PATCH 58/97] Fix Tuya humidity resolution Fix Tuya humidity resolution (#11896) --- tasmota/xdrv_16_tuyamcu.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/xdrv_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index b3586909d..52206c971 100644 --- a/tasmota/xdrv_16_tuyamcu.ino +++ b/tasmota/xdrv_16_tuyamcu.ino @@ -1380,11 +1380,11 @@ void TuyaSensorsShow(bool json) dtostrfd(TuyaAdjustedTemperature(Tuya.Sensors[1], Settings.mbflag2.temperature_set_res), Settings.mbflag2.temperature_set_res, tempval), TempUnit()); break; case 73: - WSContentSend_PD(HTTP_SNS_HUM, "", dtostrfd(TuyaAdjustedTemperature(Tuya.Sensors[2], Settings.flag2.temperature_resolution), Settings.flag2.temperature_resolution, tempval)); + WSContentSend_PD(HTTP_SNS_HUM, "", dtostrfd(TuyaAdjustedTemperature(Tuya.Sensors[2], Settings.flag2.temperature_resolution), Settings.flag2.humidity_resolution, tempval)); break; case 74: WSContentSend_PD(PSTR("{s}" D_HUMIDITY " Set{m}%s " D_UNIT_PERCENT "{e}"), - dtostrfd(TuyaAdjustedTemperature(Tuya.Sensors[3], Settings.flag2.temperature_resolution), Settings.flag2.temperature_resolution, tempval)); + dtostrfd(TuyaAdjustedTemperature(Tuya.Sensors[3], Settings.flag2.temperature_resolution), Settings.flag2.humidity_resolution, tempval)); break; case 75: WSContentSend_PD(HTTP_SNS_ILLUMINANCE, "", Tuya.Sensors[4]); From 7cb30b07da23c5355970c595ddca39f87ab957fc Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Mon, 26 Apr 2021 14:33:20 +0200 Subject: [PATCH 59/97] LVGL fix byte order for DMA and non-DMA (#11897) Co-authored-by: Stephan Hadinger --- lib/lib_display/UDisplay/uDisplay.cpp | 7 ++----- tasmota/lvgl_berry/tasmota_lv_conf.h | 2 +- tasmota/xdrv_54_lvgl.ino | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index b8830636a..6d2d62368 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -1064,6 +1064,8 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean first) { if (lvgl_param.use_dma) { pushPixelsDMA(data, len ); } else { + // reversed order for DMA, so non-DMA needs to get back to normal order + for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); uspi->writePixels(data, len * 2); } #endif @@ -1923,11 +1925,6 @@ void uDisplay::pushPixelsDMA(uint16_t* image, uint32_t len) { dmaWait(); -/* - if(_swapBytes) { - for (uint32_t i = 0; i < len; i++) (image[i] = image[i] << 8 | image[i] >> 8); - }*/ - esp_err_t ret; memset(&trans, 0, sizeof(spi_transaction_t)); diff --git a/tasmota/lvgl_berry/tasmota_lv_conf.h b/tasmota/lvgl_berry/tasmota_lv_conf.h index ccc4146dc..9a501462b 100644 --- a/tasmota/lvgl_berry/tasmota_lv_conf.h +++ b/tasmota/lvgl_berry/tasmota_lv_conf.h @@ -37,7 +37,7 @@ * Useful if the display has a 8 bit interface (e.g. SPI)*/ // #define LV_COLOR_16_SWAP 1 // #if defined(ADAFRUIT_PYPORTAL) -// #define LV_COLOR_16_SWAP 1 +#define LV_COLOR_16_SWAP 1 // needed for DMA transfer // #else // #define LV_COLOR_16_SWAP 0 // #endif diff --git a/tasmota/xdrv_54_lvgl.ino b/tasmota/xdrv_54_lvgl.ino index daddaf109..98ff42bd4 100644 --- a/tasmota/xdrv_54_lvgl.ino +++ b/tasmota/xdrv_54_lvgl.ino @@ -168,7 +168,7 @@ void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *c lv_disp_flush_ready(disp); - if (pixels_len >= 10000) { + if (pixels_len >= 10000 && (!display->lvgl_param.use_dma)) { AddLog(LOG_LEVEL_DEBUG, D_LOG_LVGL "Refreshed %d pixels in %d ms (%i pix/ms)", pixels_len, chrono_time, chrono_time > 0 ? pixels_len / chrono_time : -1); } From 688a9995668a71d88deb9c38b7f3ffdaf4d04b1f Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Mon, 26 Apr 2021 15:05:17 +0200 Subject: [PATCH 60/97] fix lvgl pushcolors --- lib/lib_display/UDisplay/uDisplay.cpp | 22 ++++++++++++++++------ lib/lib_display/UDisplay/uDisplay.h | 4 ++-- tasmota/xdrv_54_lvgl.ino | 2 +- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 6d2d62368..b02ced404 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -66,6 +66,9 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { lutftime = 350; lut3time = 10; ep_mode = 0; + fg_col = 1; + bg_col = 0; + splash_font = -1; allcmd_mode = 0; startline = 0xA1; uint8_t section = 0; @@ -527,7 +530,7 @@ Renderer *uDisplay::Init(void) { Serial.printf("delay %d ms\n", delay_ms); #endif } - + } if (index >= dsp_ncmds) break; } @@ -575,8 +578,10 @@ void uDisplay::DisplayInit(int8_t p, int8_t size, int8_t rot, int8_t font) { setTextSize(size); setTextColor(fg_col, bg_col); setCursor(0,0); - fillScreen(bg_col); - Updateframe(); + if (splash_font >= 0) { + fillScreen(bg_col); + Updateframe(); + } #ifdef UDSP_DEBUG Serial.printf("Dsp Init complete \n"); @@ -1036,11 +1041,18 @@ static inline uint8_t ulv_color_to1(uint16_t color) { return 0; } } -void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean first) { +void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_inverted) { uint16_t color; //Serial.printf("push %x - %d\n", (uint32_t)data, len); +#ifdef ESP32 +// reversed order for DMA, so non-DMA needs to get back to normal order + if (!not_inverted && !lvgl_param.use_dma) { + for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); + } +#endif + if (bpp != 16) { // stupid monchrome version for (uint32_t y = seta_yp1; y < seta_yp2; y++) { @@ -1064,8 +1076,6 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean first) { if (lvgl_param.use_dma) { pushPixelsDMA(data, len ); } else { - // reversed order for DMA, so non-DMA needs to get back to normal order - for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); uspi->writePixels(data, len * 2); } #endif diff --git a/lib/lib_display/UDisplay/uDisplay.h b/lib/lib_display/UDisplay/uDisplay.h index 62b9bf620..ba4a9bfd1 100755 --- a/lib/lib_display/UDisplay/uDisplay.h +++ b/lib/lib_display/UDisplay/uDisplay.h @@ -163,8 +163,8 @@ class uDisplay : public Renderer { uint8_t dsp_on; uint8_t dsp_off; uint8_t allcmd_mode; - uint16_t splash_font; - uint16_t splash_size; + int8_t splash_font; + uint8_t splash_size; uint16_t splash_xp; uint16_t splash_yp; uint16_t fg_col; diff --git a/tasmota/xdrv_54_lvgl.ino b/tasmota/xdrv_54_lvgl.ino index 98ff42bd4..4823bb0f9 100644 --- a/tasmota/xdrv_54_lvgl.ino +++ b/tasmota/xdrv_54_lvgl.ino @@ -162,7 +162,7 @@ void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *c uint32_t pixels_len = width * height; uint32_t chrono_start = millis(); display->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height); - display->pushColors((uint16_t *)color_p, pixels_len, true); + display->pushColors((uint16_t *)color_p, pixels_len, false); display->setAddrWindow(0,0,0,0); uint32_t chrono_time = millis() - chrono_start; From bfdd9ca0331d0dbf1e27a7f365acc92608207060 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 26 Apr 2021 16:09:46 +0200 Subject: [PATCH 61/97] LVGL updated template for M5Stack Core/Fire --- tasmota/xdrv_52_7_berry_embedded.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tasmota/xdrv_52_7_berry_embedded.ino b/tasmota/xdrv_52_7_berry_embedded.ino index 02311e521..308824476 100644 --- a/tasmota/xdrv_52_7_berry_embedded.ino +++ b/tasmota/xdrv_52_7_berry_embedded.ino @@ -378,10 +378,10 @@ const char berry_prog[] = // temporarily put udisplay descriptions here (will be solidified later) "udisplay = module('udisplay') " - "udisplay.ILI9341_M5Stack_Core = ':H,ILI9341,320,240,16,SPI,1,*,*,*,*,*,*,*,40 :S,2,1,1,2,40,20 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C :R,36 :0,08,00,00,00 :1,68,00,00,01 :2,C8,00,00,02 :3,A8,00,00,03 #' " - "udisplay.ILI9341 = ':H,ILI9341,240,320,16,SPI,1,*,*,*,*,*,*,*,40 :S,2,1,1,0,40,20 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C,16 :R,36 :0,48,00,00,00 :1,28,00,00,01 :2,88,00,00,02 :3,E8,00,00,03 :i,20,21 #' " - "udisplay.ILI9342 = ':H,ILI9342,320,240,16,SPI,1,*,*,*,*,*,*,*,40 :S,2,1,3,0,100,100 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 21,80 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C,16 :R,36 :0,08,00,00,00 :1,A8,00,00,01 :2,C8,00,00,02 :3,68,00,00,03 :i,21,20 :TI2,38,22,21 #' " - "udisplay.ILI9488 = ':H,ILI9488,480,320,16,SPI,1,*,*,*,*,*,*,*,10 :S,2,1,1,0,40,20 :I E0,0F,00,03,09,08,16,0A,3F,78,4C,09,0A,08,16,1A,0F E1,0F,00,16,19,03,0F,05,32,45,46,04,0E,0D,35,37,0F C0,2,17,15 C1,1,41 C5,3,00,12,80 36,1,48 3A,1,66 B0,1,80 B1,1,A0 B4,1,02 B6,2,02,02 E9,1,00 F7,4,A9,51,2C,82 11,80 29,0 :o,28 :O,29 :A,2A,2B,2C,16 :R,36 ;:0,48,00,00,00 :0,28,00,00,01 :1,28,00,00,00 :2,E8,00,00,03 :3,88,00,00,02 :P,18 :i,20,21 :TI1,38,*,* #' " + "udisplay.ILI9341_M5Stack_Core = ':H,ILI9341,320,240,16,SPI,1,*,*,*,*,*,*,*,40 :B,60,1 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C :R,36 :0,08,00,00,00 :1,68,00,00,01 :2,C8,00,00,02 :3,A8,00,00,03 #' " + "udisplay.ILI9341 = ':H,ILI9341,240,320,16,SPI,1,*,*,*,*,*,*,*,40 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C,16 :R,36 :0,48,00,00,00 :1,28,00,00,01 :2,88,00,00,02 :3,E8,00,00,03 :i,20,21 #' " + "udisplay.ILI9342 = ':H,ILI9342,320,240,16,SPI,1,*,*,*,*,*,*,*,40 :I EF,3,03,80,02 CF,3,00,C1,30 ED,4,64,03,12,81 E8,3,85,00,78 CB,5,39,2C,00,34,02 F7,1,20 EA,2,00,00 C0,1,23 C1,1,10 C5,2,3e,28 C7,1,86 36,1,48 37,1,00 3A,1,55 B1,2,00,18 B6,3,08,82,27 F2,1,00 26,1,01 E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00 E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F 21,80 11,80 29,80 :o,28 :O,29 :A,2A,2B,2C,16 :R,36 :0,08,00,00,00 :1,A8,00,00,01 :2,C8,00,00,02 :3,68,00,00,03 :i,21,20 :TI2,38,22,21 #' " + "udisplay.ILI9488 = ':H,ILI9488,480,320,16,SPI,1,*,*,*,*,*,*,*,10 :I E0,0F,00,03,09,08,16,0A,3F,78,4C,09,0A,08,16,1A,0F E1,0F,00,16,19,03,0F,05,32,45,46,04,0E,0D,35,37,0F C0,2,17,15 C1,1,41 C5,3,00,12,80 36,1,48 3A,1,66 B0,1,80 B1,1,A0 B4,1,02 B6,2,02,02 E9,1,00 F7,4,A9,51,2C,82 11,80 29,0 :o,28 :O,29 :A,2A,2B,2C,16 :R,36 ;:0,48,00,00,00 :0,28,00,00,01 :1,28,00,00,00 :2,E8,00,00,03 :3,88,00,00,02 :P,18 :i,20,21 :TI1,38,*,* #' " #endif // USE_LVGL From 78be0321df0eafdc28379cf4adfff7a4a644d9a2 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 26 Apr 2021 17:41:19 +0200 Subject: [PATCH 62/97] Fix Tuya humidity resolution (2) --- tasmota/xdrv_16_tuyamcu.ino | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tasmota/xdrv_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index 52206c971..d2ccaef66 100644 --- a/tasmota/xdrv_16_tuyamcu.ino +++ b/tasmota/xdrv_16_tuyamcu.ino @@ -1357,6 +1357,8 @@ void TuyaSensorsShow(bool json) } if (sensor > 74) { res = 0; + } else if (sensor > 72) { + res = Settings.flag2.humidity_resolution; } else if (sensor == 72) { res = Settings.mbflag2.temperature_set_res; } else { @@ -1380,11 +1382,11 @@ void TuyaSensorsShow(bool json) dtostrfd(TuyaAdjustedTemperature(Tuya.Sensors[1], Settings.mbflag2.temperature_set_res), Settings.mbflag2.temperature_set_res, tempval), TempUnit()); break; case 73: - WSContentSend_PD(HTTP_SNS_HUM, "", dtostrfd(TuyaAdjustedTemperature(Tuya.Sensors[2], Settings.flag2.temperature_resolution), Settings.flag2.humidity_resolution, tempval)); + WSContentSend_PD(HTTP_SNS_HUM, "", dtostrfd(TuyaAdjustedTemperature(Tuya.Sensors[2], Settings.flag2.humidity_resolution), Settings.flag2.humidity_resolution, tempval)); break; case 74: WSContentSend_PD(PSTR("{s}" D_HUMIDITY " Set{m}%s " D_UNIT_PERCENT "{e}"), - dtostrfd(TuyaAdjustedTemperature(Tuya.Sensors[3], Settings.flag2.temperature_resolution), Settings.flag2.humidity_resolution, tempval)); + dtostrfd(TuyaAdjustedTemperature(Tuya.Sensors[3], Settings.flag2.humidity_resolution), Settings.flag2.humidity_resolution, tempval)); break; case 75: WSContentSend_PD(HTTP_SNS_ILLUMINANCE, "", Tuya.Sensors[4]); From 5228f04b19a3ab116cbf399f43ef37865b19df8c Mon Sep 17 00:00:00 2001 From: ksaye Date: Mon, 26 Apr 2021 18:02:38 -0500 Subject: [PATCH 63/97] Adding support for Azure IoT Hub Simple testing documentation here: https://kevinsaye.wordpress.com/2021/04/26/using-tasmota-with-azure-iot-hub/ until I can contribute tot the Tasmota documentation site. --- tasmota/xdrv_02_mqtt.ino | 64 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/tasmota/xdrv_02_mqtt.ino b/tasmota/xdrv_02_mqtt.ino index b72cc671c..48aa65d9d 100644 --- a/tasmota/xdrv_02_mqtt.ino +++ b/tasmota/xdrv_02_mqtt.ino @@ -23,6 +23,12 @@ #define MQTT_WIFI_CLIENT_TIMEOUT 200 // Wifi TCP connection timeout (default is 5000 mSec) #endif +#if defined(USE_MQTT_AZURE_IOT) + #include + #undef MQTT_PORT + #define MQTT_PORT 8883 +#endif //USE_MQTT_AZURE_IOT + #define USE_MQTT_NEW_PUBSUBCLIENT // #define DEBUG_DUMP_TLS // allow dumping of TLS Flash keys @@ -225,7 +231,14 @@ void MqttDisconnect(void) { } void MqttSubscribeLib(const char *topic) { - MqttClient.subscribe(topic); + #if defined(USE_MQTT_AZURE_IOT) + // Azure IoT Hub currently does not support custom topics: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support + String realTopicString = "devices/" + String(SettingsText(SET_MQTT_CLIENT)); + realTopicString += "/messages/devicebound/#"; + MqttClient.subscribe(realTopicString.c_str()); + #else //USE_MQTT_AZURE_IOT + MqttClient.subscribe(topic); + #endif //USE_MQTT_AZURE_IOT MqttClient.loop(); // Solve LmacRxBlk:1 messages } @@ -244,7 +257,25 @@ bool MqttPublishLib(const char* topic, bool retained) { } } - bool result = MqttClient.publish(topic, TasmotaGlobal.mqtt_data, retained); + bool result; + #if defined(USE_MQTT_AZURE_IOT) + String sourceTopicString = String(topic); + sourceTopicString.replace("/", "%2F"); + String topicString = "devices/" + String(SettingsText(SET_MQTT_CLIENT)); + topicString+= "/messages/events/topic=" + sourceTopicString; + + JsonParser mqtt_message((char*) String(TasmotaGlobal.mqtt_data).c_str()); + JsonParserObject message_object = mqtt_message.getRootObject(); + if (message_object.isValid()) { // only sending valid JSON, yet this is optional + result = MqttClient.publish(topicString.c_str(), TasmotaGlobal.mqtt_data, retained); + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "Sending '%s'"), TasmotaGlobal.mqtt_data); + } else { + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "Invalid JSON, '%s' for topic '%s', not sending to Azure IoT Hub"), TasmotaGlobal.mqtt_data, topic); + result = true; + } + #else //USE_MQTT_AZURE_IOT + result = MqttClient.publish(topic, TasmotaGlobal.mqtt_data, retained); + #endif //USE_MQTT_AZURE_IOT yield(); // #3313 return result; } @@ -276,7 +307,24 @@ void MqttDataHandler(char* mqtt_topic, uint8_t* mqtt_data, unsigned int data_len // Save MQTT data ASAP as it's data is discarded by PubSubClient with next publish as used in MQTTlog char topic[TOPSZ]; - strlcpy(topic, mqtt_topic, sizeof(topic)); + #if defined(USE_MQTT_AZURE_IOT) + // for Azure, we read the topic from the property of the message + String fullTopicString = String(mqtt_topic); + int startOfTopic = fullTopicString.indexOf("TOPIC="); + if (startOfTopic == -1){ + AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_MQTT "Azure IoT message without the property TOPIC, case sensitive.")); + return; + } + String newTopic = fullTopicString.substring(startOfTopic + 6); + newTopic.replace("%2F", "/"); + if (newTopic.indexOf("/") == -1){ + AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_MQTT "Invalid Topic %s"), newTopic.c_str()); + return; + } + strlcpy(topic, newTopic.c_str(), sizeof(topic)); + #else //USE_MQTT_AZURE_IOT + strlcpy(topic, mqtt_topic, sizeof(topic)); + #endif //USE_MQTT_AZURE_IOT mqtt_data[data_len] = 0; char data[data_len +1]; memcpy(data, mqtt_data, sizeof(data)); @@ -698,7 +746,17 @@ void MqttReconnect(void) { } #endif +#ifdef USE_MQTT_AZURE_IOT + if (String(mqtt_pwd).indexOf("SharedAccessSignature") == -1) { + AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_MQTT "Azure IoT incorrect SAS Token format. Refer to https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support")); + return; + } + String azureMqtt_userString = String(SettingsText(SET_MQTT_HOST)) + "/" + String(SettingsText(SET_MQTT_CLIENT)); + "/?api-version=2018-06-30"; + if (MqttClient.connect(TasmotaGlobal.mqtt_client, azureMqtt_userString.c_str(), mqtt_pwd, stopic, 1, lwt_retain, TasmotaGlobal.mqtt_data, MQTT_CLEAN_SESSION)) { +#else //USE_MQTT_AZURE_IOT if (MqttClient.connect(TasmotaGlobal.mqtt_client, mqtt_user, mqtt_pwd, stopic, 1, lwt_retain, TasmotaGlobal.mqtt_data, MQTT_CLEAN_SESSION)) { +#endif //USE_MQTT_AZURE_IOT + #ifdef USE_MQTT_TLS if (Mqtt.mqtt_tls) { #ifdef ESP8266 From a5a9170296ecc52439b7b08ef661bed9572e04c7 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Tue, 27 Apr 2021 10:00:58 +0200 Subject: [PATCH 64/97] script i2c support --- tasmota/xdrv_10_scripter.ino | 137 ++++++++++++++++++++++++++++++++--- 1 file changed, 125 insertions(+), 12 deletions(-) diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index da7216ca8..2971bb03c 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -209,7 +209,7 @@ void alt_eeprom_readBytes(uint32_t adr, uint32_t len, uint8_t *buf) { #define EPOCH_OFFSET 1546300800 #endif -enum {OPER_EQU=1,OPER_PLS,OPER_MIN,OPER_MUL,OPER_DIV,OPER_PLSEQU,OPER_MINEQU,OPER_MULEQU,OPER_DIVEQU,OPER_EQUEQU,OPER_NOTEQU,OPER_GRTEQU,OPER_LOWEQU,OPER_GRT,OPER_LOW,OPER_PERC,OPER_XOR,OPER_AND,OPER_OR,OPER_ANDEQU,OPER_OREQU,OPER_XOREQU,OPER_PERCEQU}; +enum {OPER_EQU=1,OPER_PLS,OPER_MIN,OPER_MUL,OPER_DIV,OPER_PLSEQU,OPER_MINEQU,OPER_MULEQU,OPER_DIVEQU,OPER_EQUEQU,OPER_NOTEQU,OPER_GRTEQU,OPER_LOWEQU,OPER_GRT,OPER_LOW,OPER_PERC,OPER_XOR,OPER_AND,OPER_OR,OPER_ANDEQU,OPER_OREQU,OPER_XOREQU,OPER_PERCEQU,OPER_SHLEQU,OPER_SHREQU,OPER_SHL,OPER_SHR}; enum {SCRIPT_LOGLEVEL=1,SCRIPT_TELEPERIOD,SCRIPT_EVENT_HANDLED,SML_JSON_ENABLE,SCRIPT_EPOFFS}; @@ -1508,18 +1508,18 @@ char *isvar(char *lp, uint8_t *vtype, struct T_INDEX *tind, float *fp, char *sp, if (isdigit(*lp) || (*lp=='-' && isdigit(*(lp+1))) || *lp=='.') { // isnumber if (fp) { - if (*lp=='0' && *(lp+1)=='x') { + if (*lp == '0' && *(lp + 1) == 'x') { lp += 2; - *fp = strtol(lp, 0, 16); + *fp = strtol(lp, &lp, 16); } else { *fp = CharToFloat(lp); + if (*lp == '-') lp++; + while (isdigit(*lp) || *lp == '.') { + if (*lp == 0 || *lp == SCRIPT_EOL) break; + lp++; + } } } - if (*lp=='-') lp++; - while (isdigit(*lp) || *lp=='.') { - if (*lp==0 || *lp==SCRIPT_EOL) break; - lp++; - } tind->bits.constant = 1; tind->bits.is_string = 0; *vtype = NUM_RES; @@ -2599,6 +2599,47 @@ chknext: len = 0; goto strexit; } +#ifdef USE_SCRIPT_I2C + if (!strncmp(vname, "ia", 2)) { + uint8_t bus = 0; + lp += 2; + if (*lp == '2') { + lp++; + bus = 1; + } + lp = GetNumericArgument(lp + 1, OPER_EQU, &fvar, gv); + fvar = script_i2c(0, fvar, bus); + lp++; + len = 0; + goto exit; + } + if (!strncmp(vname, "iw(", 3)) { + lp = GetNumericArgument(lp + 3, OPER_EQU, &fvar, gv); + SCRIPT_SKIP_SPACES + // arg2 + float fvar2; + lp = GetNumericArgument(lp, OPER_EQU, &fvar2, gv); + fvar = script_i2c(1, fvar, fvar2); + lp++; + len = 0; + goto exit; + } + if (!strncmp(vname, "ir", 2)) { + uint8_t bytes = 1; + lp += 2; + if (*lp != '(') { + bytes = *lp & 0xf; + if (bytes < 1) bytes = 1; + if (bytes > 4) bytes = 4; + lp++; + } + lp = GetNumericArgument(lp + 1, OPER_EQU, &fvar, gv); + fvar = script_i2c(2, fvar, bytes); + lp++; + len = 0; + goto exit; + } +#endif // USE_SCRIPT_I2C break; case 'l': if (!strncmp(vname, "lip", 3)) { @@ -3421,22 +3462,42 @@ char *getop(char *lp, uint8_t *operand) { } break; case '>': - if (*(lp + 1)=='=') { + if (*(lp + 1)=='>') { + if (*(lp + 2) == '=') { + *operand = OPER_SHREQU; + return lp + 3; + } else { + *operand = OPER_SHR; + return lp + 2; + } + } else { + if (*(lp + 1)=='=') { *operand = OPER_GRTEQU; return lp + 2; - } else { + } else { *operand = OPER_GRT; return lp + 1; + } } break; case '<': - if (*(lp + 1)=='=') { + if (*(lp + 1)=='<') { + if (*(lp + 2) == '=') { + *operand = OPER_SHLEQU; + return lp + 3; + } else { + *operand = OPER_SHL; + return lp + 2; + } + } else { + if (*(lp + 1)=='=') { *operand = OPER_LOWEQU; return lp + 2; - } else { + } else { *operand = OPER_LOW; return lp + 1; + } } break; case '%': @@ -3591,6 +3652,12 @@ struct T_INDEX ind; case OPER_OR: fvar = (uint32_t)fvar | (uint32_t)fvar1; break; + case OPER_SHL: + fvar = (uint32_t)fvar << (uint32_t)fvar1; + break; + case OPER_SHR: + fvar = (uint32_t)fvar >> (uint32_t)fvar1; + break; default: break; @@ -4693,6 +4760,12 @@ int16_t Run_script_sub(const char *type, int8_t tlen, struct GVARS *gv) { case OPER_XOREQU: *dfvar = (uint32_t)*dfvar ^ (uint32_t)fvar; break; + case OPER_SHLEQU: + *dfvar = (uint32_t)*dfvar << (uint32_t)fvar; + break; + case OPER_SHREQU: + *dfvar = (uint32_t)*dfvar >> (uint32_t)fvar; + break; default: // error break; @@ -7713,6 +7786,46 @@ void cpy2lf(char *dst, uint32_t dstlen, char *src) { } } +#ifdef USE_SCRIPT_I2C +uint8_t script_i2c_addr; +TwoWire *script_i2c_wire; +uint32_t script_i2c(uint8_t sel, uint8_t val, uint8_t val1) { + switch (sel) { + case 0: + script_i2c_addr = val; +#ifdef ESP32 + if (val1 == 0) script_i2c_wire = &Wire; + else script_i2c_wire = &Wire1; +#else + script_i2c_wire = &Wire; +#endif + script_i2c_wire->beginTransmission(script_i2c_addr); + return (0 == script_i2c_wire->endTransmission()); + break; + case 1: + script_i2c_wire->beginTransmission(script_i2c_addr); + script_i2c_wire->write(val); + script_i2c_wire->write(val1); + script_i2c_wire->endTransmission(); + break; + case 2: + script_i2c_wire->beginTransmission(script_i2c_addr); + script_i2c_wire->write(val); + script_i2c_wire->endTransmission(); + script_i2c_wire->requestFrom((int)script_i2c_addr, (int)val1); + uint32_t rval = 0; + for (uint8_t cnt = 0; cnt < val1; cnt++) { + rval <<= 8; + rval |= script_i2c_wire->read(); + } + return rval; + break; + } + return 0; +} +#endif // USE_SCRIPT_I2C + + #ifdef USE_LVGL #include #include "lvgl.h" From 74156c996537889d8b3a796e69a32bd37fd0bfcc Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 27 Apr 2021 11:23:17 +0200 Subject: [PATCH 65/97] Add support for MQTT using Azure IoT Hub Add support for MQTT using Azure IoT Hub by Kevin Saye (#11906) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/my_user_config.h | 1 + tasmota/xdrv_02_mqtt.ino | 101 +++++++++++++++++++-------------------- 4 files changed, 53 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1f78d769..40eefa499 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Added - Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` (#11788) - ESP32 pulldown buttons ``Button_d`` and ``Button_id`` (#10814) +- Support for MQTT using Azure IoT Hub by Kevin Saye (#11906) ## [Released] diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 80d1a08ab..5904545a6 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -80,6 +80,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ### Added - Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` [#11788](https://github.com/arendst/Tasmota/issues/11788) - ESP32 pulldown buttons ``Button_d`` and ``Button_id`` [#10814](https://github.com/arendst/Tasmota/issues/10814) +- Support for MQTT using Azure IoT Hub by Kevin Saye [#11906](https://github.com/arendst/Tasmota/issues/11906) ### Breaking Changed diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index b7147058b..5a5dda444 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -419,6 +419,7 @@ // Any valid fingerprint with the old algo will be automatically updated to the new algo. // Enable this if you want to disable the old algo check, which should be more secure // for USE_4K_RSA (support for 4096 bits certificates, instead of 2048), you need to uncommend `-DUSE_4K_RSA` in `build_flags` from `platform.ini` or `platform_override.ini` +// #define USE_MQTT_AZURE_IOT // Enable MQTT for Azure IoT Hub (+1k code) // -- Telegram Protocol --------------------------- //#define USE_TELEGRAM // Support for Telegram protocol (+49k code, +7.0k mem and +4.8k additional during connection handshake) diff --git a/tasmota/xdrv_02_mqtt.ino b/tasmota/xdrv_02_mqtt.ino index 48aa65d9d..8fcb330a4 100644 --- a/tasmota/xdrv_02_mqtt.ino +++ b/tasmota/xdrv_02_mqtt.ino @@ -23,11 +23,11 @@ #define MQTT_WIFI_CLIENT_TIMEOUT 200 // Wifi TCP connection timeout (default is 5000 mSec) #endif -#if defined(USE_MQTT_AZURE_IOT) - #include - #undef MQTT_PORT - #define MQTT_PORT 8883 -#endif //USE_MQTT_AZURE_IOT +#ifdef USE_MQTT_AZURE_IOT +#include +#undef MQTT_PORT +#define MQTT_PORT 8883 +#endif // USE_MQTT_AZURE_IOT #define USE_MQTT_NEW_PUBSUBCLIENT @@ -231,14 +231,14 @@ void MqttDisconnect(void) { } void MqttSubscribeLib(const char *topic) { - #if defined(USE_MQTT_AZURE_IOT) - // Azure IoT Hub currently does not support custom topics: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support - String realTopicString = "devices/" + String(SettingsText(SET_MQTT_CLIENT)); - realTopicString += "/messages/devicebound/#"; - MqttClient.subscribe(realTopicString.c_str()); - #else //USE_MQTT_AZURE_IOT - MqttClient.subscribe(topic); - #endif //USE_MQTT_AZURE_IOT +#ifdef USE_MQTT_AZURE_IOT + // Azure IoT Hub currently does not support custom topics: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support + String realTopicString = "devices/" + String(SettingsText(SET_MQTT_CLIENT)); + realTopicString += "/messages/devicebound/#"; + MqttClient.subscribe(realTopicString.c_str()); +#else + MqttClient.subscribe(topic); +#endif // USE_MQTT_AZURE_IOT MqttClient.loop(); // Solve LmacRxBlk:1 messages } @@ -258,24 +258,24 @@ bool MqttPublishLib(const char* topic, bool retained) { } bool result; - #if defined(USE_MQTT_AZURE_IOT) - String sourceTopicString = String(topic); - sourceTopicString.replace("/", "%2F"); - String topicString = "devices/" + String(SettingsText(SET_MQTT_CLIENT)); - topicString+= "/messages/events/topic=" + sourceTopicString; +#ifdef USE_MQTT_AZURE_IOT + String sourceTopicString = String(topic); + sourceTopicString.replace("/", "%2F"); + String topicString = "devices/" + String(SettingsText(SET_MQTT_CLIENT)); + topicString+= "/messages/events/topic=" + sourceTopicString; - JsonParser mqtt_message((char*) String(TasmotaGlobal.mqtt_data).c_str()); - JsonParserObject message_object = mqtt_message.getRootObject(); - if (message_object.isValid()) { // only sending valid JSON, yet this is optional - result = MqttClient.publish(topicString.c_str(), TasmotaGlobal.mqtt_data, retained); - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "Sending '%s'"), TasmotaGlobal.mqtt_data); - } else { - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "Invalid JSON, '%s' for topic '%s', not sending to Azure IoT Hub"), TasmotaGlobal.mqtt_data, topic); - result = true; - } - #else //USE_MQTT_AZURE_IOT - result = MqttClient.publish(topic, TasmotaGlobal.mqtt_data, retained); - #endif //USE_MQTT_AZURE_IOT + JsonParser mqtt_message((char*) String(TasmotaGlobal.mqtt_data).c_str()); + JsonParserObject message_object = mqtt_message.getRootObject(); + if (message_object.isValid()) { // only sending valid JSON, yet this is optional + result = MqttClient.publish(topicString.c_str(), TasmotaGlobal.mqtt_data, retained); + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "Sending '%s'"), TasmotaGlobal.mqtt_data); + } else { + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "Invalid JSON, '%s' for topic '%s', not sending to Azure IoT Hub"), TasmotaGlobal.mqtt_data, topic); + result = true; + } +#else + result = MqttClient.publish(topic, TasmotaGlobal.mqtt_data, retained); +#endif // USE_MQTT_AZURE_IOT yield(); // #3313 return result; } @@ -307,24 +307,24 @@ void MqttDataHandler(char* mqtt_topic, uint8_t* mqtt_data, unsigned int data_len // Save MQTT data ASAP as it's data is discarded by PubSubClient with next publish as used in MQTTlog char topic[TOPSZ]; - #if defined(USE_MQTT_AZURE_IOT) - // for Azure, we read the topic from the property of the message - String fullTopicString = String(mqtt_topic); - int startOfTopic = fullTopicString.indexOf("TOPIC="); - if (startOfTopic == -1){ - AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_MQTT "Azure IoT message without the property TOPIC, case sensitive.")); - return; - } - String newTopic = fullTopicString.substring(startOfTopic + 6); - newTopic.replace("%2F", "/"); - if (newTopic.indexOf("/") == -1){ - AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_MQTT "Invalid Topic %s"), newTopic.c_str()); - return; - } - strlcpy(topic, newTopic.c_str(), sizeof(topic)); - #else //USE_MQTT_AZURE_IOT - strlcpy(topic, mqtt_topic, sizeof(topic)); - #endif //USE_MQTT_AZURE_IOT +#ifdef USE_MQTT_AZURE_IOT + // for Azure, we read the topic from the property of the message + String fullTopicString = String(mqtt_topic); + int startOfTopic = fullTopicString.indexOf("TOPIC="); + if (startOfTopic == -1){ + AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_MQTT "Azure IoT message without the property TOPIC, case sensitive.")); + return; + } + String newTopic = fullTopicString.substring(startOfTopic + 6); + newTopic.replace("%2F", "/"); + if (newTopic.indexOf("/") == -1){ + AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_MQTT "Invalid Topic %s"), newTopic.c_str()); + return; + } + strlcpy(topic, newTopic.c_str(), sizeof(topic)); +#else + strlcpy(topic, mqtt_topic, sizeof(topic)); +#endif // USE_MQTT_AZURE_IOT mqtt_data[data_len] = 0; char data[data_len +1]; memcpy(data, mqtt_data, sizeof(data)); @@ -753,10 +753,9 @@ void MqttReconnect(void) { } String azureMqtt_userString = String(SettingsText(SET_MQTT_HOST)) + "/" + String(SettingsText(SET_MQTT_CLIENT)); + "/?api-version=2018-06-30"; if (MqttClient.connect(TasmotaGlobal.mqtt_client, azureMqtt_userString.c_str(), mqtt_pwd, stopic, 1, lwt_retain, TasmotaGlobal.mqtt_data, MQTT_CLEAN_SESSION)) { -#else //USE_MQTT_AZURE_IOT +#else if (MqttClient.connect(TasmotaGlobal.mqtt_client, mqtt_user, mqtt_pwd, stopic, 1, lwt_retain, TasmotaGlobal.mqtt_data, MQTT_CLEAN_SESSION)) { -#endif //USE_MQTT_AZURE_IOT - +#endif // USE_MQTT_AZURE_IOT #ifdef USE_MQTT_TLS if (Mqtt.mqtt_tls) { #ifdef ESP8266 From 06667d98face3a532f40756ece0e9e33919824e9 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 27 Apr 2021 11:36:10 +0200 Subject: [PATCH 66/97] Add ESP32 pulldown switches ``Switch_d`` Add ESP32 pulldown switches ``Switch_d`` (#10814) --- CHANGELOG.md | 2 +- RELEASENOTES.md | 2 +- tasmota/support_switch.ino | 7 ++++++- tasmota/support_tasmota.ino | 14 ++++++++------ tasmota/tasmota_template.h | 7 +++++-- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40eefa499..dda462284 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ All notable changes to this project will be documented in this file. ## [9.4.0.2] ### Added - Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` (#11788) -- ESP32 pulldown buttons ``Button_d`` and ``Button_id`` (#10814) +- ESP32 pulldown buttons ``Button_d`` and ``Button_id`` and switches ``Switch_d`` (#10814) - Support for MQTT using Azure IoT Hub by Kevin Saye (#11906) ## [Released] diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 5904545a6..ab9114bf0 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -79,7 +79,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.4.0.2 ### Added - Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` [#11788](https://github.com/arendst/Tasmota/issues/11788) -- ESP32 pulldown buttons ``Button_d`` and ``Button_id`` [#10814](https://github.com/arendst/Tasmota/issues/10814) +- ESP32 pulldown buttons ``Button_d`` and ``Button_id`` and switches ``Switch_d`` [#10814](https://github.com/arendst/Tasmota/issues/10814) - Support for MQTT using Azure IoT Hub by Kevin Saye [#11906](https://github.com/arendst/Tasmota/issues/11906) ### Breaking Changed diff --git a/tasmota/support_switch.ino b/tasmota/support_switch.ino index 91f233bb7..646c2bf9c 100644 --- a/tasmota/support_switch.ino +++ b/tasmota/support_switch.ino @@ -46,6 +46,7 @@ Ticker TickerSwitch; struct SWITCH { uint32_t debounce = 0; // Switch debounce timer uint32_t no_pullup_mask = 0; // Switch pull-up bitmask flags + uint32_t pulldown_mask = 0; // Switch pull-down bitmask flags uint8_t state[MAX_SWITCHES] = { 0 }; uint8_t last_state[MAX_SWITCHES]; // Last wall switch states uint8_t hold_timer[MAX_SWITCHES] = { 0 }; // Timer for wallswitch push button hold @@ -60,6 +61,10 @@ void SwitchPullupFlag(uint32 switch_bit) { bitSet(Switch.no_pullup_mask, switch_bit); } +void SwitchPulldownFlag(uint32 switch_bit) { + bitSet(Switch.pulldown_mask, switch_bit); +} + void SwitchSetVirtual(uint32_t index, uint32_t state) { Switch.virtual_state[index] = state; } @@ -199,7 +204,7 @@ void SwitchInit(void) { pinMode(Pin(GPIO_SWT1, i), bitRead(Switch.no_pullup_mask, i) ? INPUT : ((16 == Pin(GPIO_SWT1, i)) ? INPUT_PULLDOWN_16 : INPUT_PULLUP)); #endif // ESP8266 #ifdef ESP32 - pinMode(Pin(GPIO_SWT1, i), bitRead(Switch.no_pullup_mask, i) ? INPUT : INPUT_PULLUP); + pinMode(Pin(GPIO_SWT1, i), bitRead(Switch.pulldown_mask, i) ? INPUT_PULLDOWN : bitRead(Switch.no_pullup_mask, i) ? INPUT : INPUT_PULLUP); #endif // ESP32 if (ac_detect) { Switch.state[i] = 0x80 + 2 * AC_PERIOD; diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 7dcc83f59..9f52d2747 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1672,12 +1672,6 @@ void GpioInit(void) ButtonPullupFlag(mpin - AGPIO(GPIO_KEY1_NP)); // 0 .. 3 mpin -= (AGPIO(GPIO_KEY1_NP) - AGPIO(GPIO_KEY1)); } -#ifdef ESP32 - else if ((mpin >= AGPIO(GPIO_KEY1_PD)) && (mpin < (AGPIO(GPIO_KEY1_PD) + MAX_KEYS))) { - ButtonPulldownFlag(mpin - AGPIO(GPIO_KEY1_PD)); // 0 .. 3 - mpin -= (AGPIO(GPIO_KEY1_PD) - AGPIO(GPIO_KEY1)); - } -#endif else if ((mpin >= AGPIO(GPIO_KEY1_INV)) && (mpin < (AGPIO(GPIO_KEY1_INV) + MAX_KEYS))) { ButtonInvertFlag(mpin - AGPIO(GPIO_KEY1_INV)); // 0 .. 3 mpin -= (AGPIO(GPIO_KEY1_INV) - AGPIO(GPIO_KEY1)); @@ -1688,6 +1682,14 @@ void GpioInit(void) mpin -= (AGPIO(GPIO_KEY1_INV_NP) - AGPIO(GPIO_KEY1)); } #ifdef ESP32 + else if ((mpin >= AGPIO(GPIO_SWT1_PD)) && (mpin < (AGPIO(GPIO_SWT1_PD) + MAX_SWITCHES))) { + SwitchPulldownFlag(mpin - AGPIO(GPIO_SWT1_PD)); + mpin -= (AGPIO(GPIO_SWT1_PD) - AGPIO(GPIO_SWT1)); + } + else if ((mpin >= AGPIO(GPIO_KEY1_PD)) && (mpin < (AGPIO(GPIO_KEY1_PD) + MAX_KEYS))) { + ButtonPulldownFlag(mpin - AGPIO(GPIO_KEY1_PD)); // 0 .. 3 + mpin -= (AGPIO(GPIO_KEY1_PD) - AGPIO(GPIO_KEY1)); + } else if ((mpin >= AGPIO(GPIO_KEY1_INV_PD)) && (mpin < (AGPIO(GPIO_KEY1_INV_PD) + MAX_KEYS))) { ButtonPulldownFlag(mpin - AGPIO(GPIO_KEY1_INV_PD)); // 0 .. 3 ButtonInvertFlag(mpin - AGPIO(GPIO_KEY1_INV_PD)); // 0 .. 3 diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 060722c58..f53975e5d 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -164,7 +164,7 @@ enum UserSelectablePins { #endif GPIO_INPUT, #ifdef ESP32 - GPIO_KEY1_PD, GPIO_KEY1_INV_PD, + GPIO_KEY1_PD, GPIO_KEY1_INV_PD, GPIO_SWT1_PD, #endif GPIO_SENSOR_END }; @@ -350,7 +350,7 @@ const char kSensorNames[] PROGMEM = #endif D_SENSOR_INPUT "|" #ifdef ESP32 - D_SENSOR_BUTTON "_d|" D_SENSOR_BUTTON "_id|" + D_SENSOR_BUTTON "_d|" D_SENSOR_BUTTON "_id|" D_SENSOR_SWITCH "_d|" #endif ; @@ -379,6 +379,9 @@ const uint16_t kGpioNiceList[] PROGMEM = { #endif AGPIO(GPIO_SWT1) + MAX_SWITCHES, // User connected external switches AGPIO(GPIO_SWT1_NP) + MAX_SWITCHES, +#ifdef ESP32 + AGPIO(GPIO_SWT1_PD) + MAX_SWITCHES, +#endif #ifdef ROTARY_V1 AGPIO(GPIO_ROT1A) + MAX_ROTARIES, // Rotary A Pin AGPIO(GPIO_ROT1B) + MAX_ROTARIES, // Rotary B Pin From 994c3a0f32e0f635c29d52eb738ec7222c5488a4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 27 Apr 2021 11:43:53 +0200 Subject: [PATCH 67/97] Fix Tuya humidity resolution (3) Fix Tuya humidity resolution (3) (#11896) --- tasmota/xdrv_16_tuyamcu.ino | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/xdrv_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index d2ccaef66..f34c56af2 100644 --- a/tasmota/xdrv_16_tuyamcu.ino +++ b/tasmota/xdrv_16_tuyamcu.ino @@ -787,6 +787,8 @@ void TuyaProcessStatePacket(void) { } else { if (fnId > 74) { res = 0; + } else if (fnId > 72) { + res = Settings.flag2.humidity_resolution; } else if (fnId == 72) { res = Settings.mbflag2.temperature_set_res; } else { From e31998620f0c8db9a4b651da59ab35ddf3e260aa Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 27 Apr 2021 19:05:23 +0200 Subject: [PATCH 68/97] LVGL add Led 7 seg font (#11916) * LVGL add Led 7 seg font * Moved fonts to a new LVGL_assets lib * Forgot include Co-authored-by: Stephan Hadinger --- .../Berry/default/be_lv_lvgl_module.c | 7 + lib/libesp32/Berry/generate/be_const_strtab.h | 3210 +++++------ .../Berry/generate/be_const_strtab_def.h | 4763 +++++++++-------- lib/libesp32/Berry/generate/be_fixed_lvgl.h | 890 +-- lib/libesp32_lvgl/LVGL_assets/library.json | 17 + .../LVGL_assets/src/fonts/seg7_10.c | 171 + .../LVGL_assets/src/fonts/seg7_12.c | 180 + .../LVGL_assets/src/fonts/seg7_14.c | 186 + .../LVGL_assets/src/fonts/seg7_16.c | 189 + .../LVGL_assets/src/fonts/seg7_18.c | 195 + .../LVGL_assets/src/fonts/seg7_20.c | 219 + .../LVGL_assets/src/fonts/seg7_24.c | 235 + .../LVGL_assets/src/fonts/seg7_28.c | 262 + .../LVGL_assets/src/fonts/seg7_36.c | 309 ++ .../LVGL_assets/src/fonts/seg7_48.c | 368 ++ .../LVGL_assets/src/fonts/seg7_8.c | 171 + .../LVGL_assets/src/tasmota_lvgl_assets.h | 1 + .../lvgl_berry/fonts/DSEG7/DSEG-LICENSE.txt | 95 + .../fonts/DSEG7/DSEG7Classic-Bold.ttf | Bin 0 -> 23040 bytes .../fonts/DSEG7/DSEG7Classic-BoldItalic.ttf | Bin 0 -> 23464 bytes .../fonts/DSEG7/font_files/seg7_10.lvfont | Bin 0 -> 272 bytes .../fonts/DSEG7/font_files/seg7_12.lvfont | Bin 0 -> 300 bytes .../fonts/DSEG7/font_files/seg7_14.lvfont | Bin 0 -> 356 bytes .../fonts/DSEG7/font_files/seg7_16.lvfont | Bin 0 -> 392 bytes .../fonts/DSEG7/font_files/seg7_18.lvfont | Bin 0 -> 432 bytes .../fonts/DSEG7/font_files/seg7_20.lvfont | Bin 0 -> 652 bytes .../fonts/DSEG7/font_files/seg7_24.lvfont | Bin 0 -> 792 bytes .../fonts/DSEG7/font_files/seg7_28.lvfont | Bin 0 -> 1020 bytes .../fonts/DSEG7/font_files/seg7_36.lvfont | Bin 0 -> 1384 bytes .../fonts/DSEG7/font_files/seg7_48.lvfont | Bin 0 -> 1860 bytes .../fonts/DSEG7/font_files/seg7_8.lvfont | Bin 0 -> 244 bytes .../fonts/DSEG7/gen_seg7_fonts.bash | 42 + tasmota/lvgl_berry/tasmota_lv_conf.h | 18 +- tasmota/xdrv_52_3_berry_lvlg.ino | 51 + tasmota/xdrv_54_lvgl.ino | 5 + tools/lv_berry/convert.py | 7 + 36 files changed, 7160 insertions(+), 4431 deletions(-) create mode 100644 lib/libesp32_lvgl/LVGL_assets/library.json create mode 100644 lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_10.c create mode 100644 lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_12.c create mode 100644 lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_14.c create mode 100644 lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_16.c create mode 100644 lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_18.c create mode 100644 lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_20.c create mode 100644 lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_24.c create mode 100644 lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_28.c create mode 100644 lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_36.c create mode 100644 lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_48.c create mode 100644 lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_8.c create mode 100644 lib/libesp32_lvgl/LVGL_assets/src/tasmota_lvgl_assets.h create mode 100755 tasmota/lvgl_berry/fonts/DSEG7/DSEG-LICENSE.txt create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/DSEG7Classic-Bold.ttf create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/DSEG7Classic-BoldItalic.ttf create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_10.lvfont create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_12.lvfont create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_14.lvfont create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_16.lvfont create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_18.lvfont create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_20.lvfont create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_24.lvfont create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_28.lvfont create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_36.lvfont create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_48.lvfont create mode 100644 tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_8.lvfont create mode 100755 tasmota/lvgl_berry/fonts/DSEG7/gen_seg7_fonts.bash diff --git a/lib/libesp32/Berry/default/be_lv_lvgl_module.c b/lib/libesp32/Berry/default/be_lv_lvgl_module.c index b0833d54b..88b519393 100644 --- a/lib/libesp32/Berry/default/be_lv_lvgl_module.c +++ b/lib/libesp32/Berry/default/be_lv_lvgl_module.c @@ -14,6 +14,8 @@ extern int lv0_start(bvm *vm); extern int lv0_load_montserrat_font(bvm *vm); +extern int lv0_load_seg7_font(bvm *vm); +extern int lv0_load_font(bvm *vm); extern int lv0_scr_act(bvm *vm); extern int lv0_layer_top(bvm *vm); @@ -611,6 +613,9 @@ be_native_module_attr_table(lvgl) { be_native_module_function("start", lv0_start), be_native_module_function("montserrat_font", lv0_load_montserrat_font), + be_native_module_function("seg7_font", lv0_load_seg7_font), + be_native_module_function("load_font", lv0_load_font), + // screen and layers be_native_module_function("scr_act", lv0_scr_act), @@ -1148,6 +1153,8 @@ module lvgl (scope: global) { start, func(lv0_start) montserrat_font, func(lv0_load_montserrat_font) + seg7_font, func(lv0_load_seg7_font) + load_font, func(lv0_load_font) scr_act, func(lv0_scr_act) layer_top, func(lv0_layer_top) diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 5b083c19e..2fa5e5088 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,1626 +1,1628 @@ -extern const bcstring be_const_str_ARC_TYPE_NORMAL; -extern const bcstring be_const_str_SPINNER_DIR_BACKWARD; -extern const bcstring be_const_str_set_clip_corner; -extern const bcstring be_const_str_set_pad_right; -extern const bcstring be_const_str_set_x; -extern const bcstring be_const_str_set_anim_time; -extern const bcstring be_const_str_KEYBOARD_PART_BG; -extern const bcstring be_const_str_get_min_value; -extern const bcstring be_const_str_set_style_local_scale_end_line_width; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_LAYOUT_PRETTY_BOTTOM; -extern const bcstring be_const_str_get_x; -extern const bcstring be_const_str_reset_style_list; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_GESTURE_DIR_BOTTOM; -extern const bcstring be_const_str_get_style_shadow_ofs_x; -extern const bcstring be_const_str_fade_in; -extern const bcstring be_const_str_get_tab_count; -extern const bcstring be_const_str_get_cell_merge_right; -extern const bcstring be_const_str_get_start_value; -extern const bcstring be_const_str_get_style_outline_pad; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_STYLE_SCALE_END_COLOR; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_set_angle; -extern const bcstring be_const_str_set_text_align; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_CALENDAR_PART_HEADER; -extern const bcstring be_const_str_get_critical_value; -extern const bcstring be_const_str_set_cursor_hidden; -extern const bcstring be_const_str_set_height; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_LIST_PART_SCROLLBAR; -extern const bcstring be_const_str_get_angle_start; -extern const bcstring be_const_str_KEYBOARD_PART_BTN; -extern const bcstring be_const_str_set_style_local_pad_top; -extern const bcstring be_const_str_set_row_cnt; -extern const bcstring be_const_str_FIT_TIGHT; -extern const bcstring be_const_str_down; -extern const bcstring be_const_str_get_drag_parent; -extern const bcstring be_const_str_get_show_selected; -extern const bcstring be_const_str_set_style_local_transition_prop_1; -extern const bcstring be_const_str_RED; -extern const bcstring be_const_str_set_style_local_pattern_image; -extern const bcstring be_const_str_get_zoom; -extern const bcstring be_const_str_move_background; -extern const bcstring be_const_str_add_btn_right; -extern const bcstring be_const_str_align_x; -extern const bcstring be_const_str_get_style_pad_left; -extern const bcstring be_const_str_set_auto_size; -extern const bcstring be_const_str_update_mask; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_list_get_style; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_BAR_TYPE_SYMMETRICAL; -extern const bcstring be_const_str_get_style_image_opa; -extern const bcstring be_const_str_set_scale_end_line_width; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_get_btn_text; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_get_placeholder_text; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_set_margin_right; -extern const bcstring be_const_str_SSPI; -extern const bcstring be_const_str_area_is_visible; -extern const bcstring be_const_str_DISP_SIZE_MEDIUM; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_set_scale_width; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_get_style_clip_corner; -extern const bcstring be_const_str_set_style_local_border_side; -extern const bcstring be_const_str_STYLE_MARGIN_TOP; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_get_fit_right; -extern const bcstring be_const_str_PURPLE; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_get_parent; -extern const bcstring be_const_str_get_text_sel_en; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_FIT_MAX; -extern const bcstring be_const_str_get_series_area; -extern const bcstring be_const_str_set_day_names; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_LINEMETER_PART_MAIN; -extern const bcstring be_const_str_set_event_cb; -extern const bcstring be_const_str_GRAD_DIR_VER; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_set_style_local_transform_zoom; -extern const bcstring be_const_str_STYLE_VALUE_OFS_Y; -extern const bcstring be_const_str_set_max_length; -extern const bcstring be_const_str_EVENT_LONG_PRESSED_REPEAT; -extern const bcstring be_const_str_get_letter_pos; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_del; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_get_needle_img_pivot_y; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_set_x_start_point; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_set_base_dir; -extern const bcstring be_const_str_set_style_local_value_color; -extern const bcstring be_const_str_get_style_transition_prop_2; -extern const bcstring be_const_str_set_start_angle; -extern const bcstring be_const_str_STYLE_SHADOW_BLEND_MODE; -extern const bcstring be_const_str_get_y_from_index; -extern const bcstring be_const_str_set_auto_fit; -extern const bcstring be_const_str_report_style_mod; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_SLIDER_TYPE_RANGE; -extern const bcstring be_const_str_set_line_width; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_STYLE_BG_MAIN_STOP; -extern const bcstring be_const_str_focus; -extern const bcstring be_const_str_get_style_pattern_image; -extern const bcstring be_const_str_set_shadow_spread; -extern const bcstring be_const_str_EVENT_INSERT; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_get_color_mode; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_get_style_transform_angle; -extern const bcstring be_const_str_layer_top; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_set_y_range; -extern const bcstring be_const_str_PAGE_EDGE_TOP; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_set_width; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_set_options_static; -extern const bcstring be_const_str_CHECKBOX_PART_BG; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_PROTECT_FOLLOW; -extern const bcstring be_const_str_STYLE_TRANSITION_PROP_3; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_set_style_local_transform_height; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_align_mid_y; -extern const bcstring be_const_str_get_style_shadow_opa; -extern const bcstring be_const_str_set_digit_format; -extern const bcstring be_const_str_focus_btn; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_set_transform_height; -extern const bcstring be_const_str_BAR_TYPE_CUSTOM; -extern const bcstring be_const_str_set_line_opa; -extern const bcstring be_const_str_ALIGN_OUT_BOTTOM_MID; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_STATE_CHECKED; -extern const bcstring be_const_str_get_ext_click_pad_top; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_get_base_dir; -extern const bcstring be_const_str_STYLE_SCALE_WIDTH; -extern const bcstring be_const_str_STYLE_VALUE_STR; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_set_transform_angle; -extern const bcstring be_const_str_LABEL_ALIGN_LEFT; -extern const bcstring be_const_str_remove_obj; -extern const bcstring be_const_str_CHART_UPDATE_MODE_CIRCULAR; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_TXT_FLAG_RIGHT; -extern const bcstring be_const_str_del_char_forward; -extern const bcstring be_const_str_ANIM_ON; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_STYLE_SHADOW_WIDTH; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_get_color; -extern const bcstring be_const_str_get_hsv; -extern const bcstring be_const_str_set_col_cnt; -extern const bcstring be_const_str_SYMBOL_REFRESH; extern const bcstring be_const_str_set_edge_flash; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_get_cursor_pos; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_TEAL; -extern const bcstring be_const_str_get_selected; -extern const bcstring be_const_str_set_needle_count; -extern const bcstring be_const_str_STYLE_BG_GRAD_STOP; -extern const bcstring be_const_str_TXT_CMD_STATE_PAR; -extern const bcstring be_const_str_set_transition_prop_6; -extern const bcstring be_const_str_get_style_bg_grad_stop; -extern const bcstring be_const_str_set_bg_blend_mode; -extern const bcstring be_const_str_set_hsv; -extern const bcstring be_const_str_set_style_local_bg_grad_color; -extern const bcstring be_const_str_STYLE_BG_GRAD_DIR; -extern const bcstring be_const_str_step_prev; -extern const bcstring be_const_str_set_today_date; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_get_series_axis; -extern const bcstring be_const_str_get_width_grid; -extern const bcstring be_const_str_set_style_local_transition_path; -extern const bcstring be_const_str_CALENDAR_PART_DATE; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_set_style_local_text_sel_bg_color; -extern const bcstring be_const_str_set_y_invert; -extern const bcstring be_const_str_CPICKER_COLOR_MODE_HUE; -extern const bcstring be_const_str_EVENT_DELETE; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_get_style_line_width; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_get_dir; -extern const bcstring be_const_str_get_group; -extern const bcstring be_const_str_set_value_letter_space; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_STYLE_OUTLINE_WIDTH; -extern const bcstring be_const_str_increment; -extern const bcstring be_const_str_get_style_margin_right; -extern const bcstring be_const_str_get_style_text_color; -extern const bcstring be_const_str_set_show_selected; -extern const bcstring be_const_str_set_style_local_transition_prop_5; -extern const bcstring be_const_str_set_style_local_bg_opa; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_get_ext_attr; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_GREEN; -extern const bcstring be_const_str_set_color_mode_fixed; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_set_mode; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_get_selected_str; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_set_style_local_bg_blend_mode; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_draw_line; -extern const bcstring be_const_str_FS_RES_DENIED; -extern const bcstring be_const_str_LABEL_LONG_CROP; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_set_pattern_recolor; -extern const bcstring be_const_str_set_text_blend_mode; -extern const bcstring be_const_str_SLIDER_TYPE_SYMMETRICAL; -extern const bcstring be_const_str_set_click; -extern const bcstring be_const_str_EVENT_DEFOCUSED; -extern const bcstring be_const_str_get_btn_selected; -extern const bcstring be_const_str_FIT_NONE; -extern const bcstring be_const_str_set_style_local_text_decor; -extern const bcstring be_const_str_set_spin_time; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_set_line_rounded; -extern const bcstring be_const_str_get_child_back; -extern const bcstring be_const_str_get_scrl_height; -extern const bcstring be_const_str_set_margin_top; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_ins_text; -extern const bcstring be_const_str_set_scrollable_fit; -extern const bcstring be_const_str_set_visible_row_count; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_get_title; -extern const bcstring be_const_str_set_drag_dir; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_TABVIEW_TAB_POS_NONE; -extern const bcstring be_const_str_get_content; -extern const bcstring be_const_str_get_offset_y; -extern const bcstring be_const_str_set_style_local_text_blend_mode; -extern const bcstring be_const_str_set_options; -extern const bcstring be_const_str_get_tab; -extern const bcstring be_const_str_finish_transitions; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_get_angle_offset; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_OPA_COVER; extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_add_element; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_DISP_SIZE_SMALL; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_DRAG_DIR_VER; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_BTN_STATE_CHECKED_PRESSED; -extern const bcstring be_const_str_get_saturation; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_set_layout; -extern const bcstring be_const_str_set_pivot; -extern const bcstring be_const_str_set_style_local_scale_width; -extern const bcstring be_const_str_CHART_CURSOR_LEFT; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_get_hidden; -extern const bcstring be_const_str_get_hor_res; -extern const bcstring be_const_str_get_recolor; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_get_fit_top; -extern const bcstring be_const_str_CHART_AXIS_PRIMARY_Y; -extern const bcstring be_const_str_KEY_UP; -extern const bcstring be_const_str_set_top; -extern const bcstring be_const_str_get_style_scale_end_color; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_set_bg_grad_stop; -extern const bcstring be_const_str_set_style_local_pattern_recolor; -extern const bcstring be_const_str_BLACK; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_get_ver_res; -extern const bcstring be_const_str_set_cell_value_fmt; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_DROPDOWN_DIR_DOWN; -extern const bcstring be_const_str_STYLE_PATTERN_RECOLOR_OPA; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_TXT_CMD_STATE_IN; -extern const bcstring be_const_str_set_antialias; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_set_value_str; -extern const bcstring be_const_str_get_drag; -extern const bcstring be_const_str_set_tab_act; -extern const bcstring be_const_str_set_transform_zoom; -extern const bcstring be_const_str_get_adv_hittest; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_on_edge; -extern const bcstring be_const_str_set_bg_opa; -extern const bcstring be_const_str_ALIGN_OUT_LEFT_BOTTOM; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_get_style_line_opa; -extern const bcstring be_const_str_get_style_text_sel_bg_color; -extern const bcstring be_const_str_set_checked; -extern const bcstring be_const_str_get_antialias; -extern const bcstring be_const_str_def_event_cb; -extern const bcstring be_const_str_set_refocus_policy; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_get_inner_coords; -extern const bcstring be_const_str_get_style_text_letter_space; -extern const bcstring be_const_str_ALIGN_OUT_TOP_RIGHT; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_PAGE_EDGE_LEFT; -extern const bcstring be_const_str_set_transition_prop_2; -extern const bcstring be_const_str_close_event_cb; -extern const bcstring be_const_str_get_bg_angle_start; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_set_margin_bottom; -extern const bcstring be_const_str_set_chg_rate; -extern const bcstring be_const_str_LABEL_ALIGN_RIGHT; -extern const bcstring be_const_str_get_style_shadow_width; -extern const bcstring be_const_str_get_style_text_line_space; -extern const bcstring be_const_str_FS_RES_OK; -extern const bcstring be_const_str_PROTECT_CHILD_CHG; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_CHART_UPDATE_MODE_SHIFT; -extern const bcstring be_const_str_OPA_70; -extern const bcstring be_const_str_STYLE_SHADOW_SPREAD; -extern const bcstring be_const_str_get_cell_crop; -extern const bcstring be_const_str_get_focused_obj; -extern const bcstring be_const_str_get_one_line; -extern const bcstring be_const_str_SPINNER_TYPE_SPINNING_ARC; -extern const bcstring be_const_str_set_style_local_bg_color; -extern const bcstring be_const_str_OBJ_PART_MAIN; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_LABEL_LONG_EXPAND; -extern const bcstring be_const_str_STYLE_TEXT_DECOR; -extern const bcstring be_const_str_add_option; -extern const bcstring be_const_str_get_hue; -extern const bcstring be_const_str_get_active_btn; -extern const bcstring be_const_str_get_rollover; -extern const bcstring be_const_str_get_style_pad_right; -extern const bcstring be_const_str_send_data; -extern const bcstring be_const_str_set_scale_end_color; -extern const bcstring be_const_str_get_pwd_show_time; -extern const bcstring be_const_str_clear_series; -extern const bcstring be_const_str_get_auto_realign; -extern const bcstring be_const_str_refr_text; -extern const bcstring be_const_str_CHART_TYPE_NONE; -extern const bcstring be_const_str_get_scrl_fit_right; -extern const bcstring be_const_str_get_style_transition_prop_5; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_set_max_height; -extern const bcstring be_const_str_VSPI; -extern const bcstring be_const_str_set_end_angle; -extern const bcstring be_const_str_clean; -extern const bcstring be_const_str_get_cursor_manage; -extern const bcstring be_const_str_set_cell_align; -extern const bcstring be_const_str_set_line_blend_mode; -extern const bcstring be_const_str_GRAD_DIR_HOR; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_set_text_fmt; -extern const bcstring be_const_str_set_height_margin; -extern const bcstring be_const_str_set_style_local_outline_pad; -extern const bcstring be_const_str_get_nearest_index_from_coord; -extern const bcstring be_const_str_is_char_under_pos; -extern const bcstring be_const_str_set_value_ofs_y; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_set_one_line; -extern const bcstring be_const_str_EVENT_DRAG_END; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_set_pattern_image; -extern const bcstring be_const_str_DISP_ROT_270; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_set_fit2; -extern const bcstring be_const_str_set_needle_img; -extern const bcstring be_const_str_set_width_margin; -extern const bcstring be_const_str_get_file_name; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_STYLE_TEXT_SEL_COLOR; -extern const bcstring be_const_str_STYLE_TRANSITION_PROP_4; -extern const bcstring be_const_str_invalidate_area; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_set_text_sel_color; -extern const bcstring be_const_str_count_children_recursive; -extern const bcstring be_const_str_get_anim_time; -extern const bcstring be_const_str_get_header_height; -extern const bcstring be_const_str_set_accepted_chars; -extern const bcstring be_const_str_FS_RES_OUT_OF_MEM; -extern const bcstring be_const_str_STATE_HOVERED; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_get_style_transition_delay; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_set_style_local_pad_right; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_get_options; -extern const bcstring be_const_str_layer_sys; -extern const bcstring be_const_str_remove_mask; -extern const bcstring be_const_str_STYLE_SHADOW_OFS_X; -extern const bcstring be_const_str_LABEL_LONG_DOT; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_set_parent; -extern const bcstring be_const_str_set_text_sel_bg_color; -extern const bcstring be_const_str_get_style_pad_bottom; -extern const bcstring be_const_str_CHART_PART_CURSOR; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_set_pattern_blend_mode; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_get_anim_speed; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_get_color_mode_fixed; -extern const bcstring be_const_str_PROTECT_NONE; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_set_recolor; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_set_secondary_y_tick_texts; -extern const bcstring be_const_str_get_style_bg_opa; -extern const bcstring be_const_str_set_size; -extern const bcstring be_const_str_set_pad_bottom; -extern const bcstring be_const_str_set_transition_prop_5; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str_get_style_scale_grad_color; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_set_drag; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_STYLE_BORDER_WIDTH; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_set_map; -extern const bcstring be_const_str_get_btns_pos; -extern const bcstring be_const_str_get_style_bg_main_stop; -extern const bcstring be_const_str_get_text; -extern const bcstring be_const_str_LAYOUT_PRETTY_TOP; -extern const bcstring be_const_str_get_label_count; -extern const bcstring be_const_str_BTNMATRIX_CTRL_CHECKABLE; -extern const bcstring be_const_str_LIST_PART_BG; -extern const bcstring be_const_str_CPICKER_TYPE_RECT; -extern const bcstring be_const_str_init_draw_line_dsc; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_set_style_local_margin_bottom; -extern const bcstring be_const_str_ARC_PART_INDIC; -extern const bcstring be_const_str_add_char; -extern const bcstring be_const_str_set_drag_parent; -extern const bcstring be_const_str_decrement; -extern const bcstring be_const_str_get_style_border_color; -extern const bcstring be_const_str_draw_img; -extern const bcstring be_const_str_set_style_local_text_letter_space; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_OPA_100; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_SCROLLBAR_MODE_HIDE; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_set_offset_y; -extern const bcstring be_const_str_ALIGN_IN_TOP_LEFT; -extern const bcstring be_const_str_align_y; -extern const bcstring be_const_str_allocate_ext_attr; -extern const bcstring be_const_str_SPI; -extern const bcstring be_const_str_STYLE_PATTERN_BLEND_MODE; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_CHART_CURSOR_UP; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_STYLE_VALUE_COLOR; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_BLUE; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_set_style_local_line_opa; -extern const bcstring be_const_str_draw_polygon; -extern const bcstring be_const_str_DROPDOWN_DIR_RIGHT; -extern const bcstring be_const_str_set_pwd_show_time; -extern const bcstring be_const_str_set_shadow_opa; -extern const bcstring be_const_str_STATE_DEFAULT; -extern const bcstring be_const_str_STYLE_OUTLINE_OPA; -extern const bcstring be_const_str_STYLE_TEXT_LINE_SPACE; -extern const bcstring be_const_str_get_point_id; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_LAYOUT_PRETTY_MID; -extern const bcstring be_const_str_STYLE_PAD_INNER; -extern const bcstring be_const_str_get_cell_type; -extern const bcstring be_const_str_get_style_border_width; -extern const bcstring be_const_str_get_value; -extern const bcstring be_const_str_set_style_local_size; -extern const bcstring be_const_str_DRAG_DIR_HOR; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_set_style_local_border_post; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_get_style_margin_top; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_SCROLLBAR_MODE_DRAG; -extern const bcstring be_const_str_get_cell_value; -extern const bcstring be_const_str_ALIGN_IN_LEFT_MID; -extern const bcstring be_const_str_set_value_blend_mode; -extern const bcstring be_const_str_set_hue; -extern const bcstring be_const_str_set_radius; -extern const bcstring be_const_str_LABEL_ALIGN_AUTO; -extern const bcstring be_const_str_set_style_local_scale_grad_color; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_get_scale_angle; -extern const bcstring be_const_str_FS_MODE_RD; -extern const bcstring be_const_str_STYLE_VALUE_OFS_X; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_ALIGN_IN_TOP_RIGHT; -extern const bcstring be_const_str_get_fit_left; -extern const bcstring be_const_str_CPICKER_PART_MAIN; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_copy_buf; -extern const bcstring be_const_str_set_image_recolor; -extern const bcstring be_const_str_CHART_PART_BG; -extern const bcstring be_const_str_CHART_TYPE_LINE; -extern const bcstring be_const_str_STYLE_BG_OPA; -extern const bcstring be_const_str_ARC_PART_KNOB; -extern const bcstring be_const_str_FS_RES_UNKNOWN; -extern const bcstring be_const_str_MAGENTA; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_is_dragged; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_get_style_image_recolor_opa; -extern const bcstring be_const_str_get_style_transition_prop_1; -extern const bcstring be_const_str_ALIGN_OUT_LEFT_MID; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_get_pressed_cell; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_get_user_data; -extern const bcstring be_const_str_move_foreground; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_set_mirror; -extern const bcstring be_const_str_set_text_static; -extern const bcstring be_const_str_CPICKER_COLOR_MODE_VALUE; -extern const bcstring be_const_str_get_x_start_point; -extern const bcstring be_const_str_set_wrap; -extern const bcstring be_const_str_STYLE_BORDER_SIDE; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_BORDER_SIDE_NONE; -extern const bcstring be_const_str_get_spin_time; -extern const bcstring be_const_str_TXT_FLAG_RECOLOR; -extern const bcstring be_const_str_set_left_value; -extern const bcstring be_const_str_is_protected; -extern const bcstring be_const_str_set_border_side; -extern const bcstring be_const_str_DISP_ROT_180; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_STYLE_OUTLINE_COLOR; -extern const bcstring be_const_str_get_btn_width; -extern const bcstring be_const_str_set_style_local_value_ofs_x; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_get_cursor_click_pos; -extern const bcstring be_const_str_set_style_local_pattern_recolor_opa; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_add_btns; -extern const bcstring be_const_str_align_mid_x; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_get_width; -extern const bcstring be_const_str_set_style_local_pattern_repeat; -extern const bcstring be_const_str_set_symbol; -extern const bcstring be_const_str_FIT_PARENT; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_STYLE_MARGIN_BOTTOM; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_get_focus_parent; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_set_line_dash_gap; -extern const bcstring be_const_str_EVENT_RELEASED; -extern const bcstring be_const_str_cursor_up; -extern const bcstring be_const_str_get_style_value_ofs_x; -extern const bcstring be_const_str_KEY_BACKSPACE; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_PROTECT_POS; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_set_btns_pos; -extern const bcstring be_const_str_set_formatter_cb; -extern const bcstring be_const_str_set_gesture_parent; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_del_async; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_up; -extern const bcstring be_const_str_CPICKER_PART_KNOB; -extern const bcstring be_const_str_set_one_check; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_get_style_radius; -extern const bcstring be_const_str_set_ctrl_map; -extern const bcstring be_const_str_FS_RES_FS_ERR; -extern const bcstring be_const_str_get_angle_end; -extern const bcstring be_const_str_set_style_local_transition_delay; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_get_scrl_fit_left; -extern const bcstring be_const_str_get_style_outline_opa; -extern const bcstring be_const_str_set_rollover; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_CHART_PART_SERIES; -extern const bcstring be_const_str_STYLE_SCALE_END_BORDER_WIDTH; -extern const bcstring be_const_str_set_transition_prop_1; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_get_scrl_width; -extern const bcstring be_const_str_set_bright; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_set_pattern_opa; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_STYLE_TEXT_FONT; -extern const bcstring be_const_str_get_max_value; -extern const bcstring be_const_str_cursor_right; -extern const bcstring be_const_str_set_design_cb; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_get_mirror; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_set_text_color; -extern const bcstring be_const_str_OBJ_PART_REAL_FIRST; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_fade_out; -extern const bcstring be_const_str_set_border_blend_mode; -extern const bcstring be_const_str_CHECKBOX_PART_BULLET; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_STYLE_TRANSFORM_ANGLE; -extern const bcstring be_const_str_get_px; -extern const bcstring be_const_str_set_points; -extern const bcstring be_const_str_set_outline_blend_mode; -extern const bcstring be_const_str_set_style_local_transition_prop_4; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_set_scrollable_fit2; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_get_scrl_fit_bottom; -extern const bcstring be_const_str_get_style_line_color; -extern const bcstring be_const_str_set_style_local_bg_grad_dir; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_get_day_of_week; -extern const bcstring be_const_str_set_text_sel; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_TEMPL_STYLE_Y; -extern const bcstring be_const_str_set_style_local_border_width; -extern const bcstring be_const_str_set_text_font; -extern const bcstring be_const_str_set_tile_act; -extern const bcstring be_const_str_get_style_text_sel_color; -extern const bcstring be_const_str_get_symbol; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_SCROLLBAR_MODE_AUTO; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_set_style_local_outline_opa; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_TABVIEW_TAB_POS_LEFT; -extern const bcstring be_const_str_set_cursor_manage; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_get_max_height; -extern const bcstring be_const_str_get_tab_act; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_set_y_tick_texts; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_is_checked; -extern const bcstring be_const_str_set_knob_colored; -extern const bcstring be_const_str_DROPDOWN_PART_SELECTED; -extern const bcstring be_const_str_HSPI; -extern const bcstring be_const_str_set_bg_grad_dir; -extern const bcstring be_const_str_CHART_CURSOR_DOWN; -extern const bcstring be_const_str_set_style_local_text_line_space; -extern const bcstring be_const_str_get_scrl_fit_top; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_set_outline_width; -extern const bcstring be_const_str_set_scrl_width; -extern const bcstring be_const_str_set_value_line_space; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_get_offset_x; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_set_checkable; -extern const bcstring be_const_str_set_point_count; -extern const bcstring be_const_str_set_style_local_outline_color; -extern const bcstring be_const_str_add_btn_left; -extern const bcstring be_const_str_set_line_color; -extern const bcstring be_const_str_STYLE_LINE_DASH_GAP; -extern const bcstring be_const_str_set_header_height; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_get_style_shadow_color; -extern const bcstring be_const_str_DROPDOWN_PART_SCROLLBAR; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_get_row_cnt; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_PROTECT_PRESS_LOST; -extern const bcstring be_const_str_STYLE_SCALE_BORDER_WIDTH; -extern const bcstring be_const_str_BORDER_SIDE_BOTTOM; -extern const bcstring be_const_str_LABEL_LONG_SROLL_CIRC; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_count_children; -extern const bcstring be_const_str_set_width_fit; -extern const bcstring be_const_str_set_padding_left; -extern const bcstring be_const_str_add_text; -extern const bcstring be_const_str_set_ext_click_area; -extern const bcstring be_const_str_set_style_local_value_line_space; -extern const bcstring be_const_str_set_px; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_STYLE_LINE_DASH_WIDTH; -extern const bcstring be_const_str_get_adjustable; -extern const bcstring be_const_str_set_border_post; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_set_textarea; -extern const bcstring be_const_str_get_parent_event; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_set_showed_date; -extern const bcstring be_const_str_STYLE_BG_COLOR; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_set_cell_merge_right; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_get_style_size; -extern const bcstring be_const_str_OPA_60; -extern const bcstring be_const_str_KEY_ENTER; -extern const bcstring be_const_str_LAYOUT_ROW_MID; -extern const bcstring be_const_str_KEY_DEL; -extern const bcstring be_const_str_STYLE_MARGIN_RIGHT; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_BORDER_SIDE_FULL; -extern const bcstring be_const_str_get_text_sel_start; -extern const bcstring be_const_str_set_style_local_transition_prop_3; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_STYLE_BORDER_BLEND_MODE; -extern const bcstring be_const_str_BLEND_MODE_NORMAL; -extern const bcstring be_const_str_set_title; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_set_shadow_ofs_y; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_STYLE_OPA_SCALE; -extern const bcstring be_const_str_get_style_line_rounded; -extern const bcstring be_const_str_set_style_local_text_sel_color; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_get_style_value_str; -extern const bcstring be_const_str_STYLE_TEXT_COLOR; -extern const bcstring be_const_str_set_style_local_transform_angle; -extern const bcstring be_const_str_ALIGN_IN_BOTTOM_RIGHT; -extern const bcstring be_const_str_focus_obj; -extern const bcstring be_const_str_set_content_size; -extern const bcstring be_const_str_set_style_local_shadow_opa; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_get_cell_align; -extern const bcstring be_const_str_set_pattern_recolor_opa; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_remove_style_local_prop; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_SCROLLBAR_MODE_ON; -extern const bcstring be_const_str_get_accepted_chars; -extern const bcstring be_const_str_EVENT_CANCEL; -extern const bcstring be_const_str_STYLE_PATTERN_RECOLOR; -extern const bcstring be_const_str_fill_bg; -extern const bcstring be_const_str_title_set_alignment; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_remove_style; -extern const bcstring be_const_str_KEY_END; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_AQUA; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_set_step; -extern const bcstring be_const_str_BTNMATRIX_CTRL_DISABLED; -extern const bcstring be_const_str_del_char; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_set_angle_offset; -extern const bcstring be_const_str_STYLE_TRANSITION_TIME; -extern const bcstring be_const_str_TXT_CMD_STATE_WAIT; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_DISP_ROT_90; -extern const bcstring be_const_str_PROTECT_PARENT; -extern const bcstring be_const_str_SCROLLBAR_MODE_UNHIDE; -extern const bcstring be_const_str_set_pwd_mode; -extern const bcstring be_const_str_DROPDOWN_DIR_LEFT; -extern const bcstring be_const_str_get_height; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_set_bg_angles; -extern const bcstring be_const_str_set_style_local_shadow_spread; -extern const bcstring be_const_str_get_max_length; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_set_style_local_outline_width; -extern const bcstring be_const_str_SPINNER_TYPE_FILLSPIN_ARC; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_get_cursor_blink_time; -extern const bcstring be_const_str_get_style_bg_color; -extern const bcstring be_const_str_set_color; -extern const bcstring be_const_str_get_style_transition_prop_4; -extern const bcstring be_const_str_DISP_SIZE_LARGE; -extern const bcstring be_const_str_STYLE_LINE_BLEND_MODE; -extern const bcstring be_const_str_draw_text; -extern const bcstring be_const_str_set_next; -extern const bcstring be_const_str_add_style; -extern const bcstring be_const_str_get_style_bg_grad_color; -extern const bcstring be_const_str_set_style_local_image_recolor_opa; -extern const bcstring be_const_str_OPA_0; -extern const bcstring be_const_str_PAGE_EDGE_RIGHT; -extern const bcstring be_const_str_hide_series; -extern const bcstring be_const_str_STYLE_PAD_TOP; -extern const bcstring be_const_str_set_text_sel_end; -extern const bcstring be_const_str_get_style_transition_time; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_ALIGN_OUT_TOP_LEFT; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_set_style_local_value_str; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_off; -extern const bcstring be_const_str_init_points; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_get_ext_click_pad_bottom; -extern const bcstring be_const_str_set_auto_realign; -extern const bcstring be_const_str_KEYBOARD_MODE_NUM; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_STYLE_TRANSITION_PROP_5; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_get_height_margin; -extern const bcstring be_const_str_align_mid; -extern const bcstring be_const_str_STYLE_TRANSITION_PATH; -extern const bcstring be_const_str_set_style_local_clip_corner; -extern const bcstring be_const_str_EVENT_KEY; -extern const bcstring be_const_str_ARC_TYPE_SYMMETRIC; -extern const bcstring be_const_str_DRAG_DIR_ONE; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_STYLE_VALUE_BLEND_MODE; -extern const bcstring be_const_str_blur_hor; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_get_drag_throw; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_FS_RES_NOT_EX; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_STYLE_SHADOW_OFS_Y; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_set_scale_border_width; -extern const bcstring be_const_str_set_scrl_height; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_CHART_PART_SERIES_BG; -extern const bcstring be_const_str_focus_freeze; -extern const bcstring be_const_str_EVENT_SHORT_CLICKED; -extern const bcstring be_const_str_GAUGE_PART_NEEDLE; -extern const bcstring be_const_str_get_point_count; -extern const bcstring be_const_str_STYLE_TEXT_BLEND_MODE; -extern const bcstring be_const_str_CHART_AXIS_DRAW_LAST_TICK; -extern const bcstring be_const_str_set_height_fit; -extern const bcstring be_const_str_set_src; -extern const bcstring be_const_str_BORDER_SIDE_INTERNAL; -extern const bcstring be_const_str_LABEL_LONG_SROLL; -extern const bcstring be_const_str_clear_options; -extern const bcstring be_const_str_ANIM_OFF; -extern const bcstring be_const_str_draw_arc; -extern const bcstring be_const_str_set_transition_prop_4; -extern const bcstring be_const_str_set_value_opa; -extern const bcstring be_const_str_NAVY; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_OBJ_PART_ALL; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_get_scrl_layout; -extern const bcstring be_const_str_get_active_btn_text; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_STYLE_SHADOW_OPA; -extern const bcstring be_const_str_get_line_count; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_BOILER_OT_RX; extern const bcstring be_const_str_TXT_FLAG_NONE; -extern const bcstring be_const_str_realign; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_set_style_local_scale_end_border_width; -extern const bcstring be_const_str_set_style_local_text_opa; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_get_ext_draw_pad; -extern const bcstring be_const_str_set_scale; -extern const bcstring be_const_str_get_btnmatrix; -extern const bcstring be_const_str_get_protect; -extern const bcstring be_const_str_get_scrollable; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_GAUGE_PART_MAIN; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_STYLE_PAD_RIGHT; -extern const bcstring be_const_str_set_highlighted_dates; -extern const bcstring be_const_str_set_parent_event; -extern const bcstring be_const_str_set_offset_x; -extern const bcstring be_const_str_GRAD_DIR_NONE; -extern const bcstring be_const_str_KEY_PREV; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_STYLE_RADIUS; -extern const bcstring be_const_str_STYLE_PAD_BOTTOM; -extern const bcstring be_const_str_STYLE_SCALE_GRAD_COLOR; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_set_bg_main_stop; -extern const bcstring be_const_str_set_style_local_image_recolor; -extern const bcstring be_const_str_set_user_data; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_add_obj; -extern const bcstring be_const_str_get_height_grid; -extern const bcstring be_const_str_get_screen; -extern const bcstring be_const_str_set_bg_start_angle; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_set_style_local_margin_right; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_get_highlighted_dates_num; -extern const bcstring be_const_str_set_focus_cb; -extern const bcstring be_const_str_set_style_local_bg_main_stop; -extern const bcstring be_const_str_STYLE_TEXT_LETTER_SPACE; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_init_draw_img_dsc; -extern const bcstring be_const_str_BTN_STATE_DISABLED; -extern const bcstring be_const_str_EVENT_PRESS_LOST; -extern const bcstring be_const_str_get_style_shadow_spread; -extern const bcstring be_const_str_get_bg_angle_end; -extern const bcstring be_const_str_set_style_local_margin_top; -extern const bcstring be_const_str_start_edge_flash; -extern const bcstring be_const_str_set_dir; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_ALIGN_CENTER; -extern const bcstring be_const_str_set_style_local_line_dash_gap; -extern const bcstring be_const_str_set_border_color; -extern const bcstring be_const_str_TABVIEW_TAB_POS_RIGHT; -extern const bcstring be_const_str_get_state; -extern const bcstring be_const_str_CYAN; -extern const bcstring be_const_str_set_style_local_line_dash_width; -extern const bcstring be_const_str_set_secondary_y_tick_length; -extern const bcstring be_const_str_set_x_tick_length; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_get_btn_ctrl; -extern const bcstring be_const_str_LAYOUT_COLUMN_RIGHT; -extern const bcstring be_const_str_STYLE_PATTERN_REPEAT; -extern const bcstring be_const_str_YELLOW; -extern const bcstring be_const_str_get_coords; -extern const bcstring be_const_str_handle_get_type_signal; -extern const bcstring be_const_str_set_pos; -extern const bcstring be_const_str_STYLE_BORDER_COLOR; -extern const bcstring be_const_str_is_focused; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_get_ext_click_pad_left; -extern const bcstring be_const_str_set_start_value; -extern const bcstring be_const_str_LABEL_ALIGN_CENTER; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_text_is_selected; -extern const bcstring be_const_str_KEY_HOME; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_TEXT_DECOR_STRIKETHROUGH; -extern const bcstring be_const_str_get_y_invert; -extern const bcstring be_const_str_set_scrollbar_mode; -extern const bcstring be_const_str_FS_RES_BUSY; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_GAUGE_PART_MAJOR; -extern const bcstring be_const_str_STYLE_PAD_LEFT; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_LAYOUT_COLUMN_MID; -extern const bcstring be_const_str_DISP_ROT_NONE; -extern const bcstring be_const_str_get_style_pattern_recolor_opa; -extern const bcstring be_const_str_set_style_local_value_ofs_y; -extern const bcstring be_const_str_get_fit_bottom; -extern const bcstring be_const_str_STYLE_BG_BLEND_MODE; -extern const bcstring be_const_str_STYLE_IMAGE_RECOLOR_OPA; -extern const bcstring be_const_str_STYLE_TRANSITION_PROP_1; -extern const bcstring be_const_str_get_style_transform_zoom; -extern const bcstring be_const_str_remove_all_objs; -extern const bcstring be_const_str_set_cell_value; -extern const bcstring be_const_str_EVENT_LEAVE; -extern const bcstring be_const_str_STYLE_MARGIN_LEFT; -extern const bcstring be_const_str_set_month_names; -extern const bcstring be_const_str_set_style_local_value_align; -extern const bcstring be_const_str_set_type; -extern const bcstring be_const_str_get_local_style; -extern const bcstring be_const_str_FS_RES_LOCKED; -extern const bcstring be_const_str_OLIVE; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_CPICKER_TYPE_DISC; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_ALIGN_OUT_RIGHT_TOP; -extern const bcstring be_const_str_get_drag_dir; -extern const bcstring be_const_str_init_draw_rect_dsc; -extern const bcstring be_const_str_set_style_local_shadow_blend_mode; -extern const bcstring be_const_str_clear_selection; -extern const bcstring be_const_str_set_value_font; -extern const bcstring be_const_str_STYLE_PATTERN_OPA; -extern const bcstring be_const_str_get_style_value_ofs_y; -extern const bcstring be_const_str_set_focused_btn; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_get_src; -extern const bcstring be_const_str_set_outline_pad; -extern const bcstring be_const_str_ARC_TYPE_REVERSE; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_set_bg_end_angle; -extern const bcstring be_const_str_STYLE_VALUE_LINE_SPACE; -extern const bcstring be_const_str_get_pivot; -extern const bcstring be_const_str_set_btn_ctrl_all; -extern const bcstring be_const_str_OPA_50; -extern const bcstring be_const_str_STYLE_OUTLINE_PAD; -extern const bcstring be_const_str_STYLE_TRANSFORM_HEIGHT; -extern const bcstring be_const_str_LAYOUT_ROW_BOTTOM; -extern const bcstring be_const_str_LIST_PART_EDGE_FLASH; -extern const bcstring be_const_str_get_prev_btn; -extern const bcstring be_const_str_get_style_text_opa; -extern const bcstring be_const_str_OPA_30; -extern const bcstring be_const_str_STATE_DISABLED; -extern const bcstring be_const_str_STYLE_TEXT_OPA; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_set_image_opa; -extern const bcstring be_const_str_OPA_90; -extern const bcstring be_const_str_STATE_PRESSED; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_FS_RES_HW_ERR; -extern const bcstring be_const_str_get_style_value_opa; -extern const bcstring be_const_str_get_one_check; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_I2C; -extern const bcstring be_const_str_get_cursor_point; -extern const bcstring be_const_str_FS_MODE_WR; -extern const bcstring be_const_str_STATE_EDITED; -extern const bcstring be_const_str_STYLE_TRANSITION_DELAY; -extern const bcstring be_const_str_glue_obj; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_set_cursor_point; -extern const bcstring be_const_str_del_anim_ready_cb; -extern const bcstring be_const_str_EVENT_LONG_PRESSED; -extern const bcstring be_const_str_set_color_mode; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_set_adjustable; -extern const bcstring be_const_str_BTNMATRIX_CTRL_HIDDEN; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_align; -extern const bcstring be_const_str_set_pattern_repeat; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_refresh_ext_draw_pad; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_WHITE; -extern const bcstring be_const_str_set_margin_left; -extern const bcstring be_const_str_set_saturation; -extern const bcstring be_const_str_set_style_local_pad_inner; -extern const bcstring be_const_str_get_tile_act; -extern const bcstring be_const_str_set_style_local_border_opa; -extern const bcstring be_const_str_set_style_local_shadow_ofs_y; -extern const bcstring be_const_str_BTNMATRIX_CTRL_CLICK_TRIG; -extern const bcstring be_const_str_KEY_ESC; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_clear_btn_ctrl; -extern const bcstring be_const_str_get_style_scale_width; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_PROTECT_CLICK_FOCUS; -extern const bcstring be_const_str_TEMPL_STYLE_X; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_scroll_hor; -extern const bcstring be_const_str_set_style_local_outline_blend_mode; -extern const bcstring be_const_str_set_style_local_shadow_color; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_get_align; -extern const bcstring be_const_str_set_image_blend_mode; -extern const bcstring be_const_str_set_palette; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_CALENDAR_PART_BG; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_GESTURE_DIR_TOP; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_get_letter_on; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_set_style_local_value_font; -extern const bcstring be_const_str_ALIGN_OUT_BOTTOM_RIGHT; -extern const bcstring be_const_str_clean_tab; -extern const bcstring be_const_str_cursor_down; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_set_state; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_set_div_line_count; -extern const bcstring be_const_str_get_left_value; -extern const bcstring be_const_str_KEY_LEFT; -extern const bcstring be_const_str_get_scrollbar_mode; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_EVENT_FOCUSED; -extern const bcstring be_const_str_STYLE_TRANSITION_PROP_6; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_set_transition_delay; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_set_style_local_scale_border_width; -extern const bcstring be_const_str_ALIGN_IN_BOTTOM_MID; -extern const bcstring be_const_str_ALIGN_OUT_BOTTOM_LEFT; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_set_value_color; -extern const bcstring be_const_str_BLEND_MODE_SUBTRACTIVE; -extern const bcstring be_const_str_OPA_10; -extern const bcstring be_const_str_TEXTAREA_CURSOR_LAST; -extern const bcstring be_const_str_set_scale_grad_color; -extern const bcstring be_const_str_transform; -extern const bcstring be_const_str_EVENT_VALUE_CHANGED; -extern const bcstring be_const_str_OPA_20; -extern const bcstring be_const_str_get_style_line_dash_width; -extern const bcstring be_const_str_EVENT_GESTURE; -extern const bcstring be_const_str_list_copy; -extern const bcstring be_const_str_OPA_80; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_SCROLLBAR_MODE_OFF; -extern const bcstring be_const_str_BTNMATRIX_CTRL_NO_REPEAT; -extern const bcstring be_const_str_STYLE_VALUE_LETTER_SPACE; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_get_x_from_index; -extern const bcstring be_const_str_set_btn_ctrl; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_set_scroll_propagation; -extern const bcstring be_const_str_set_style_local_margin_left; -extern const bcstring be_const_str_FS_RES_FULL; -extern const bcstring be_const_str_set_style_local_pad_bottom; -extern const bcstring be_const_str_CHART_AXIS_SECONDARY_Y; -extern const bcstring be_const_str_get_text_sel_end; -extern const bcstring be_const_str_get_col_width; -extern const bcstring be_const_str_set_y; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_set_text_letter_space; -extern const bcstring be_const_str_get_y; -extern const bcstring be_const_str_set_text; -extern const bcstring be_const_str_hittest; -extern const bcstring be_const_str_set_insert_replace; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_set_pad_top; -extern const bcstring be_const_str_get_col_cnt; -extern const bcstring be_const_str_get_width_fit; -extern const bcstring be_const_str_SPINNER_TYPE_CONSTANT_ARC; -extern const bcstring be_const_str_get_style_shadow_ofs_y; -extern const bcstring be_const_str_set_selected; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_set_y_tick_length; -extern const bcstring be_const_str_start_auto_close; -extern const bcstring be_const_str_STYLE_CLIP_CORNER; -extern const bcstring be_const_str_get_arc_length; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_LAYOUT_OFF; -extern const bcstring be_const_str_ROLLER_MODE_NORMAL; -extern const bcstring be_const_str_set_series_axis; -extern const bcstring be_const_str_set_transform_width; -extern const bcstring be_const_str_FS_RES_TOUT; -extern const bcstring be_const_str_anim_cb; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_get_pwd_mode; -extern const bcstring be_const_str_set_text_decor; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_OPA_TRANSP; -extern const bcstring be_const_str_TXT_FLAG_CENTER; -extern const bcstring be_const_str_set_point_id; -extern const bcstring be_const_str_set_style_local_transition_prop_2; -extern const bcstring be_const_str_FS_RES_INV_PARAM; -extern const bcstring be_const_str_STYLE_IMAGE_RECOLOR; -extern const bcstring be_const_str_get_style_transform_height; -extern const bcstring be_const_str_TEXT_DECOR_NONE; -extern const bcstring be_const_str_GESTURE_DIR_LEFT; +extern const bcstring be_const_str_align_mid; +extern const bcstring be_const_str_get_scale_angle; +extern const bcstring be_const_str_MIEL_HVAC_TX; extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_STYLE_BORDER_POST; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_set_editing; -extern const bcstring be_const_str_set_shadow_ofs_x; -extern const bcstring be_const_str_set_style_local_value_blend_mode; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_set_bg_grad_color; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_KEY_NEXT; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_EVENT_DRAG_THROW_BEGIN; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_set_style_local_pad_left; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_get_style_outline_width; -extern const bcstring be_const_str_set_click_focus; -extern const bcstring be_const_str_set_value_align; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_add_tab; -extern const bcstring be_const_str_BTN_STATE_CHECKED_RELEASED; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_set_tab_name; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_DROPDOWN_DIR_UP; -extern const bcstring be_const_str_STYLE_LINE_OPA; -extern const bcstring be_const_str_SLIDER_TYPE_NORMAL; -extern const bcstring be_const_str_ALIGN_OUT_RIGHT_BOTTOM; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_add_protect; -extern const bcstring be_const_str_get_layout; -extern const bcstring be_const_str_set_outline_color; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_ALIGN_IN_BOTTOM_LEFT; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_ALIGN_OUT_LEFT_TOP; -extern const bcstring be_const_str_set_bg_color; -extern const bcstring be_const_str_KEYBOARD_MODE_TEXT_LOWER; -extern const bcstring be_const_str_get_height_fit; -extern const bcstring be_const_str_set_adv_hittest; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_CALENDAR_PART_DAY_NAMES; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_get_auto_size; -extern const bcstring be_const_str_get_focused; -extern const bcstring be_const_str_set_fit4; -extern const bcstring be_const_str_SILVER; -extern const bcstring be_const_str_set_cell_type; -extern const bcstring be_const_str_ALIGN_OUT_RIGHT_MID; -extern const bcstring be_const_str_BTN_STATE_RELEASED; -extern const bcstring be_const_str_DROPDOWN_PART_LIST; -extern const bcstring be_const_str_get_needle_img_pivot_x; -extern const bcstring be_const_str_get_width_margin; -extern const bcstring be_const_str_set_update_mode; -extern const bcstring be_const_str_step_next; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_get_style_transition_prop_3; -extern const bcstring be_const_str_remove_prop; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_BORDER_SIDE_LEFT; -extern const bcstring be_const_str_set_style_local_border_blend_mode; -extern const bcstring be_const_str_set_style_local_pattern_blend_mode; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_LAYOUT_CENTER; -extern const bcstring be_const_str_TABVIEW_TAB_POS_BOTTOM; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_create; -extern const bcstring be_const_str_set_style_local_pattern_opa; -extern const bcstring be_const_str_TABVIEW_TAB_POS_TOP; -extern const bcstring be_const_str_KEY_DOWN; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_get_cursor_hidden; -extern const bcstring be_const_str_BORDER_SIDE_RIGHT; -extern const bcstring be_const_str_set_style_local_line_color; -extern const bcstring be_const_str_BLEND_MODE_ADDITIVE; -extern const bcstring be_const_str_STYLE_TEXT_SEL_BG_COLOR; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_clear_state; -extern const bcstring be_const_str_STYLE_TRANSITION_PROP_2; -extern const bcstring be_const_str_DISP_SIZE_EXTRA_LARGE; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_STYLE_BG_GRAD_COLOR; -extern const bcstring be_const_str_set_cursor_pos; -extern const bcstring be_const_str_EVENT_DRAG_BEGIN; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_set_style_local_text_color; -extern const bcstring be_const_str_draw_scale; -extern const bcstring be_const_str_init_draw_label_dsc; -extern const bcstring be_const_str_set_style_local_image_opa; -extern const bcstring be_const_str_set_anim_speed; -extern const bcstring be_const_str_set_btn_width; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_focus_prev; -extern const bcstring be_const_str_get_sb_mode; -extern const bcstring be_const_str_set_cell_crop; -extern const bcstring be_const_str_get_style_opa_scale; -extern const bcstring be_const_str_CHART_AXIS_SKIP_LAST_TICK; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_BORDER_SIDE_TOP; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_set_border_width; -extern const bcstring be_const_str_set_style_local_shadow_width; -extern const bcstring be_const_str_set_x_tick_texts; -extern const bcstring be_const_str_get_style_pattern_repeat; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_TEXT_DECOR_UNDERLINE; -extern const bcstring be_const_str_get_draw_rect_ext_pad_size; -extern const bcstring be_const_str_cut_text; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_get_wrap; -extern const bcstring be_const_str_focus_next; -extern const bcstring be_const_str_BTN_STATE_PRESSED; -extern const bcstring be_const_str_get_focused_btn; -extern const bcstring be_const_str_OBJ_PART_VIRTUAL_FIRST; -extern const bcstring be_const_str_set_disabled; -extern const bcstring be_const_str_TXT_FLAG_EXPAND; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_get_min_value; +extern const bcstring be_const_str_set_max_height; +extern const bcstring be_const_str_draw_polygon; +extern const bcstring be_const_str_set_point_id; +extern const bcstring be_const_str_get_zoom; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_BORDER_SIDE_BOTTOM; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_set_style_local_image_blend_mode; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_get_col_width; +extern const bcstring be_const_str_get_src; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_set_border_opa; +extern const bcstring be_const_str_clear; extern const bcstring be_const_str_set_hidden; -extern const bcstring be_const_str_set_shadow_color; -extern const bcstring be_const_str_STYLE_IMAGE_OPA; -extern const bcstring be_const_str_get_top; -extern const bcstring be_const_str_set_focus_parent; -extern const bcstring be_const_str_toggle; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_LED_PART_MAIN; -extern const bcstring be_const_str_CPICKER_COLOR_MODE_SATURATION; -extern const bcstring be_const_str_get_needle_img; -extern const bcstring be_const_str_set_transition_time; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_set_style_local_pattern_image; +extern const bcstring be_const_str_PURPLE; +extern const bcstring be_const_str_set_insert_replace; +extern const bcstring be_const_str_set_series_axis; +extern const bcstring be_const_str_DROPDOWN_DIR_LEFT; +extern const bcstring be_const_str_CPICKER_COLOR_MODE_HUE; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_get_label_count; +extern const bcstring be_const_str_set_text_sel; +extern const bcstring be_const_str_SYMBOL_RIGHT; extern const bcstring be_const_str_add_btn; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_get_edge_flash; -extern const bcstring be_const_str_get_focus_cb; -extern const bcstring be_const_str_get_style_image_recolor; -extern const bcstring be_const_str_set_line_dash_width; -extern const bcstring be_const_str_get_style_border_opa; -extern const bcstring be_const_str_get_style_outline_color; -extern const bcstring be_const_str_set_style_local_line_rounded; -extern const bcstring be_const_str_set_style_local_transition_prop_6; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_cursor_left; -extern const bcstring be_const_str_get_style_value_line_space; -extern const bcstring be_const_str_set_align; -extern const bcstring be_const_str_set_drag_throw; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_STYLE_TRANSFORM_WIDTH; -extern const bcstring be_const_str_set_rotation; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_BTN_STATE_CHECKED_DISABLED; -extern const bcstring be_const_str_LAYOUT_GRID; -extern const bcstring be_const_str_ALIGN_OUT_TOP_MID; -extern const bcstring be_const_str_get_textarea; -extern const bcstring be_const_str_get_btn_label; -extern const bcstring be_const_str_OBJMASK_PART_MAIN; -extern const bcstring be_const_str_STYLE_IMAGE_BLEND_MODE; -extern const bcstring be_const_str_blur_ver; -extern const bcstring be_const_str_LABEL_LONG_BREAK; -extern const bcstring be_const_str_get_child; -extern const bcstring be_const_str_get_from_btn; -extern const bcstring be_const_str_get_style_value_letter_space; -extern const bcstring be_const_str_LAYOUT_ROW_TOP; -extern const bcstring be_const_str_set_cursor_click_pos; -extern const bcstring be_const_str_stop_auto_close; -extern const bcstring be_const_str_KEYBOARD_MODE_TEXT_UPPER; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_get_auto_fit; -extern const bcstring be_const_str_get_click_focus; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_set_cell_merge_right; +extern const bcstring be_const_str_init_draw_line_dsc; +extern const bcstring be_const_str_SCROLLBAR_MODE_UNHIDE; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_get_base_dir; +extern const bcstring be_const_str_TXT_FLAG_EXPAND; +extern const bcstring be_const_str_STYLE_VALUE_LINE_SPACE; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_allocate_ext_attr; +extern const bcstring be_const_str_cursor_right; +extern const bcstring be_const_str_get_drag_dir; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_STYLE_RADIUS; extern const bcstring be_const_str_get_style_pattern_recolor; -extern const bcstring be_const_str_set_cursor_blink_time; -extern const bcstring be_const_str_set_scrl_layout; -extern const bcstring be_const_str_EVENT_APPLY; -extern const bcstring be_const_str_get_scroll_propagation; -extern const bcstring be_const_str_scroll_ver; -extern const bcstring be_const_str_is_point_on_coords; -extern const bcstring be_const_str_get_style_scale_end_line_width; -extern const bcstring be_const_str_scr_act; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_set_long_mode; -extern const bcstring be_const_str_EVENT_REFRESH; -extern const bcstring be_const_str_clear_btn_ctrl_all; -extern const bcstring be_const_str_is_inactive; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_set_arc_length; -extern const bcstring be_const_str_get_label; -extern const bcstring be_const_str_refresh; -extern const bcstring be_const_str_get_style_value_color; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_FS_RES_NOT_IMP; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_set_style_local_value_opa; -extern const bcstring be_const_str_CHART_AXIS_INVERSE_LABELS_ORDER; -extern const bcstring be_const_str_set_critical_value; -extern const bcstring be_const_str_PROTECT_EVENT_TO_DISABLED; -extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_get_focus_cb; +extern const bcstring be_const_str_get_text_sel_start; +extern const bcstring be_const_str_FS_RES_LOCKED; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_set_adjustable; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_del_char; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_BTN_STATE_RELEASED; +extern const bcstring be_const_str_get_style_size; +extern const bcstring be_const_str_get_style_text_line_space; +extern const bcstring be_const_str_DISP_ROT_180; +extern const bcstring be_const_str_get_style_transform_angle; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_ALIGN_OUT_RIGHT_TOP; +extern const bcstring be_const_str_get_inner_coords; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_MAGENTA; +extern const bcstring be_const_str_get_ext_attr; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_get_state; +extern const bcstring be_const_str_set_style_local_value_str; +extern const bcstring be_const_str_get_style_image_recolor; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_SLIDER_TYPE_NORMAL; +extern const bcstring be_const_str_TXT_CMD_STATE_WAIT; +extern const bcstring be_const_str_TXT_FLAG_RECOLOR; +extern const bcstring be_const_str_set_scale_border_width; +extern const bcstring be_const_str_set_transition_prop_3; +extern const bcstring be_const_str_BLACK; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_set_height_fit; +extern const bcstring be_const_str_NAVY; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_LAYOUT_COLUMN_RIGHT; +extern const bcstring be_const_str_OBJ_PART_ALL; +extern const bcstring be_const_str_get_auto_size; +extern const bcstring be_const_str_get_btn_img; +extern const bcstring be_const_str_set_outline_color; +extern const bcstring be_const_str_set_value_color; +extern const bcstring be_const_str_align_x; +extern const bcstring be_const_str_set_style_local_pad_inner; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_get_col_cnt; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_set_border_side; +extern const bcstring be_const_str_LAYOUT_COLUMN_LEFT; +extern const bcstring be_const_str_TABVIEW_TAB_POS_RIGHT; +extern const bcstring be_const_str_get_style_transition_prop_1; +extern const bcstring be_const_str_set_knob_colored; +extern const bcstring be_const_str_set_left_value; +extern const bcstring be_const_str_get_local_style; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_get_style_value_letter_space; +extern const bcstring be_const_str_set_bg_end_angle; +extern const bcstring be_const_str_set_style_local_bg_blend_mode; +extern const bcstring be_const_str_set_title; +extern const bcstring be_const_str_AQUA; +extern const bcstring be_const_str_layer_top; +extern const bcstring be_const_str_set_transition_prop_6; +extern const bcstring be_const_str_set_value_letter_space; extern const bcstring be_const_str_set_style_local_text_font; -extern const bcstring be_const_str_get_editing; -extern const bcstring be_const_str_get_long_mode; -extern const bcstring be_const_str_invalidate; -extern const bcstring be_const_str_title_get_alignment; -extern const bcstring be_const_str_clean_style_list; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_ALIGN_IN_RIGHT_MID; -extern const bcstring be_const_str_CHART_CURSOR_RIGHT; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_KEYBOARD_MODE_SPECIAL; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_ARC_PART_BG; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_set_anim_speed; +extern const bcstring be_const_str_set_border_width; +extern const bcstring be_const_str_set_transform_angle; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_STYLE_VALUE_BLEND_MODE; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_set_scale_grad_color; +extern const bcstring be_const_str_DISP_ROT_270; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_get_style_transition_prop_4; +extern const bcstring be_const_str_EVENT_SHORT_CLICKED; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_OPA_80; +extern const bcstring be_const_str_get_style_margin_bottom; +extern const bcstring be_const_str_set_scroll_propagation; +extern const bcstring be_const_str_EVENT_DEFOCUSED; +extern const bcstring be_const_str_CALENDAR_PART_BG; +extern const bcstring be_const_str_move_foreground; +extern const bcstring be_const_str_BORDER_SIDE_LEFT; +extern const bcstring be_const_str_set_style_local_pattern_repeat; +extern const bcstring be_const_str_set_transition_prop_5; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_set_pattern_image; +extern const bcstring be_const_str_CHECKBOX_PART_BG; +extern const bcstring be_const_str_OPA_60; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_get_style_pattern_opa; +extern const bcstring be_const_str_TABVIEW_TAB_POS_BOTTOM; +extern const bcstring be_const_str_CHART_PART_SERIES; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_YELLOW; +extern const bcstring be_const_str_set_pad_inner; +extern const bcstring be_const_str_get_day_of_week; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_set_style_local_text_letter_space; +extern const bcstring be_const_str_step_next; +extern const bcstring be_const_str_set_secondary_y_tick_length; +extern const bcstring be_const_str_STYLE_MARGIN_RIGHT; +extern const bcstring be_const_str_add_protect; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_set_day_names; +extern const bcstring be_const_str_set_scale_end_line_width; +extern const bcstring be_const_str_STYLE_SHADOW_COLOR; +extern const bcstring be_const_str_get_style_value_line_space; +extern const bcstring be_const_str_ins_text; +extern const bcstring be_const_str_P9813_CLK; extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_STATE_DEFAULT; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_STYLE_SHADOW_OPA; +extern const bcstring be_const_str_set_style_local_text_opa; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_KEYBOARD_MODE_TEXT_UPPER; +extern const bcstring be_const_str_TXT_CMD_STATE_IN; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_set_margin_top; +extern const bcstring be_const_str_set_style_local_text_decor; +extern const bcstring be_const_str_up; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_CHART_TYPE_LINE; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_set_btn_ctrl_all; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_CHART_CURSOR_LEFT; +extern const bcstring be_const_str_LABEL_ALIGN_CENTER; +extern const bcstring be_const_str_KEY_END; +extern const bcstring be_const_str_set_y_invert; +extern const bcstring be_const_str_DRAG_DIR_VER; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_SPI; +extern const bcstring be_const_str_OPA_0; +extern const bcstring be_const_str_STYLE_SCALE_END_BORDER_WIDTH; +extern const bcstring be_const_str_get_tab_count; +extern const bcstring be_const_str_LIST_PART_SCROLLBAR; +extern const bcstring be_const_str_get_cursor_point; +extern const bcstring be_const_str_get_series_axis; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_set_tab_name; +extern const bcstring be_const_str_get_style_transition_time; +extern const bcstring be_const_str_refresh_ext_draw_pad; +extern const bcstring be_const_str_ALIGN_OUT_BOTTOM_RIGHT; +extern const bcstring be_const_str_get_style_scale_end_line_width; +extern const bcstring be_const_str_STYLE_LINE_BLEND_MODE; +extern const bcstring be_const_str_set_dir; +extern const bcstring be_const_str_update_mask; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_BTNMATRIX_CTRL_HIDDEN; +extern const bcstring be_const_str_BTN_STATE_DISABLED; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_get_height_grid; +extern const bcstring be_const_str_ALIGN_OUT_BOTTOM_MID; +extern const bcstring be_const_str_get_style_scale_end_border_width; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_get_style_image_opa; +extern const bcstring be_const_str_TEXTAREA_CURSOR_LAST; +extern const bcstring be_const_str_get_cursor_pos; +extern const bcstring be_const_str_OPA_50; +extern const bcstring be_const_str_set_accepted_chars; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_CALENDAR_PART_DAY_NAMES; +extern const bcstring be_const_str_get_x; +extern const bcstring be_const_str_set_style_local_scale_border_width; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_set_value_opa; +extern const bcstring be_const_str_FS_RES_OUT_OF_MEM; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_STYLE_PAD_LEFT; +extern const bcstring be_const_str_get_style_bg_opa; +extern const bcstring be_const_str_get_width_grid; +extern const bcstring be_const_str_set_points; +extern const bcstring be_const_str_cursor_down; +extern const bcstring be_const_str_set_style_local_pad_bottom; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_get_width_margin; +extern const bcstring be_const_str_CHART_AXIS_DRAW_LAST_TICK; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_get_color; +extern const bcstring be_const_str_get_label; +extern const bcstring be_const_str_BTNMATRIX_CTRL_DISABLED; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_SLIDER_TYPE_SYMMETRICAL; +extern const bcstring be_const_str_get_cursor_blink_time; +extern const bcstring be_const_str_set_margin_right; +extern const bcstring be_const_str_LABEL_ALIGN_AUTO; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_draw_line; +extern const bcstring be_const_str_get_style_value_ofs_y; +extern const bcstring be_const_str_set_text_decor; +extern const bcstring be_const_str_set_max_length; +extern const bcstring be_const_str_ALIGN_IN_BOTTOM_RIGHT; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_set_style_local_scale_width; +extern const bcstring be_const_str_TEMPL_STYLE_X; +extern const bcstring be_const_str_set_style_local_shadow_blend_mode; +extern const bcstring be_const_str_ARC_PART_BG; +extern const bcstring be_const_str_set_outline_opa; +extern const bcstring be_const_str_set_state; +extern const bcstring be_const_str_get_height_margin; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_move_background; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_get_parent; +extern const bcstring be_const_str_GRAY; +extern const bcstring be_const_str_STYLE_IMAGE_OPA; +extern const bcstring be_const_str_remove_style_local_prop; +extern const bcstring be_const_str_set_visible_row_count; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_add_text; +extern const bcstring be_const_str_set_outline_width; +extern const bcstring be_const_str_CHART_TYPE_COLUMN; +extern const bcstring be_const_str_STYLE_TRANSITION_PROP_3; +extern const bcstring be_const_str_get_fit_top; +extern const bcstring be_const_str_get_needle_img_pivot_y; +extern const bcstring be_const_str_get_scrollbar_mode; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_get_knob_colored; +extern const bcstring be_const_str_set_style_local_border_color; +extern const bcstring be_const_str_ALIGN_OUT_LEFT_TOP; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_ALIGN_IN_BOTTOM_MID; +extern const bcstring be_const_str_LAYOUT_PRETTY_BOTTOM; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_add_obj; +extern const bcstring be_const_str_get_offset_y; +extern const bcstring be_const_str_set_map; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_get_cell_value; +extern const bcstring be_const_str_get_row_cnt; +extern const bcstring be_const_str_STYLE_VALUE_OFS_Y; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_refr_text; +extern const bcstring be_const_str_SILVER; +extern const bcstring be_const_str_get_editing; +extern const bcstring be_const_str_set_point_count; extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_get_next_btn; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_remove_series; -extern const bcstring be_const_str_get_step; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_set_placeholder_text; -extern const bcstring be_const_str_get_style_margin_left; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_send_data; +extern const bcstring be_const_str_set_image_recolor; +extern const bcstring be_const_str_STYLE_TRANSITION_PROP_4; +extern const bcstring be_const_str_EVENT_INSERT; +extern const bcstring be_const_str_PROTECT_FOLLOW; +extern const bcstring be_const_str_TXT_FLAG_CENTER; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_TABVIEW_TAB_POS_NONE; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_set_shadow_spread; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_set_line_dash_width; extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_get_angle; +extern const bcstring be_const_str_LAYOUT_CENTER; +extern const bcstring be_const_str_get_scrl_fit_top; +extern const bcstring be_const_str_get_style_scale_width; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_EVENT_REFRESH; +extern const bcstring be_const_str_get_style_outline_width; +extern const bcstring be_const_str_set_color; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_EVENT_LONG_PRESSED_REPEAT; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_set_border_post; +extern const bcstring be_const_str_set_style_local_transform_zoom; +extern const bcstring be_const_str_STYLE_LINE_OPA; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_get_height_fit; +extern const bcstring be_const_str_set_drag_dir; +extern const bcstring be_const_str_set_style_local_bg_grad_dir; +extern const bcstring be_const_str_EVENT_LEAVE; +extern const bcstring be_const_str_align; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_set_start_value; +extern const bcstring be_const_str_get_color_mode_fixed; +extern const bcstring be_const_str_set_style_local_line_color; +extern const bcstring be_const_str_set_style_local_outline_color; +extern const bcstring be_const_str_set_style_local_transform_height; +extern const bcstring be_const_str_SCROLLBAR_MODE_DRAG; +extern const bcstring be_const_str_set_cursor_click_pos; +extern const bcstring be_const_str_set_style_local_transition_prop_6; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_ALIGN_OUT_TOP_RIGHT; +extern const bcstring be_const_str_STYLE_LINE_DASH_GAP; +extern const bcstring be_const_str_LAYOUT_ROW_TOP; +extern const bcstring be_const_str_set_layout; +extern const bcstring be_const_str_set_style_local_outline_width; +extern const bcstring be_const_str_LED_PART_MAIN; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_get_ext_click_pad_right; +extern const bcstring be_const_str_set_color_mode; +extern const bcstring be_const_str_set_fit4; +extern const bcstring be_const_str_OPA_100; +extern const bcstring be_const_str_set_y_tick_length; +extern const bcstring be_const_str_FS_RES_UNKNOWN; +extern const bcstring be_const_str_SCROLLBAR_MODE_OFF; +extern const bcstring be_const_str_report_style_mod; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_STYLE_PAD_BOTTOM; +extern const bcstring be_const_str_DROPDOWN_DIR_UP; +extern const bcstring be_const_str_get_long_mode; +extern const bcstring be_const_str_get_top; +extern const bcstring be_const_str_set_style_local_value_blend_mode; +extern const bcstring be_const_str_get_btn_text; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_set_style_local_transition_prop_1; +extern const bcstring be_const_str_get_style_border_color; +extern const bcstring be_const_str_KEYBOARD_PART_BG; +extern const bcstring be_const_str_set_style_local_text_color; +extern const bcstring be_const_str_I2C; +extern const bcstring be_const_str_DROPDOWN_PART_SELECTED; +extern const bcstring be_const_str_get_style_text_sel_bg_color; +extern const bcstring be_const_str_set_disabled; +extern const bcstring be_const_str_FIT_MAX; +extern const bcstring be_const_str_DROPDOWN_PART_LIST; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_get_style_scale_end_color; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_STYLE_OUTLINE_BLEND_MODE; +extern const bcstring be_const_str_add_btn_left; +extern const bcstring be_const_str_blur_hor; +extern const bcstring be_const_str_step_prev; +extern const bcstring be_const_str_STYLE_TEXT_COLOR; +extern const bcstring be_const_str_align_mid_x; +extern const bcstring be_const_str_set_valid_positions; +extern const bcstring be_const_str_ARC_PART_INDIC; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_set_pos; +extern const bcstring be_const_str_FS_RES_BUSY; +extern const bcstring be_const_str_KEY_LEFT; +extern const bcstring be_const_str_get_child; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_get_checkable; +extern const bcstring be_const_str_get_max_length; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_RED; +extern const bcstring be_const_str_TEXT_DECOR_STRIKETHROUGH; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_set_style_local_shadow_opa; +extern const bcstring be_const_str_FS_RES_FS_ERR; +extern const bcstring be_const_str_STYLE_BG_MAIN_STOP; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_STYLE_PATTERN_RECOLOR_OPA; +extern const bcstring be_const_str_STYLE_SHADOW_OFS_X; +extern const bcstring be_const_str_set_style_local_clip_corner; +extern const bcstring be_const_str_CPICKER_PART_KNOB; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_set_drag; +extern const bcstring be_const_str_set_style_local_pattern_opa; +extern const bcstring be_const_str_set_row_cnt; +extern const bcstring be_const_str_set_text_sel_end; +extern const bcstring be_const_str_set_x; +extern const bcstring be_const_str_get_auto_realign; +extern const bcstring be_const_str_EVENT_DRAG_THROW_BEGIN; +extern const bcstring be_const_str_FS_RES_FULL; +extern const bcstring be_const_str_focus_freeze; +extern const bcstring be_const_str_ROLLER_MODE_INFINITE; +extern const bcstring be_const_str_LINEMETER_PART_MAIN; +extern const bcstring be_const_str_PROTECT_POS; extern const bcstring be_const_str_refresh_style; extern const bcstring be_const_str_set_fit; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_DROPDOWN_PART_MAIN; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_draw_rect; -extern const bcstring be_const_str_set_style_local_scale_end_color; -extern const bcstring be_const_str_get_ext_click_pad_right; -extern const bcstring be_const_str_get_style_border_post; -extern const bcstring be_const_str_set_style_local_line_width; -extern const bcstring be_const_str_set_text_sel_start; -extern const bcstring be_const_str_STYLE_BORDER_OPA; -extern const bcstring be_const_str_STYLE_VALUE_ALIGN; -extern const bcstring be_const_str_get_type; -extern const bcstring be_const_str_CHART_TYPE_COLUMN; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_set_style_local_line_blend_mode; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_DRAG_DIR_BOTH; -extern const bcstring be_const_str_set_col_width; -extern const bcstring be_const_str_set_image_recolor_opa; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_STYLE_LINE_ROUNDED; -extern const bcstring be_const_str_set_outline_opa; -extern const bcstring be_const_str_MAROON; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_set_transition_prop_3; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_get_style_pad_inner; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_list_get_local_style; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_get_style_transform_width; -extern const bcstring be_const_str_set_text_line_space; -extern const bcstring be_const_str_ROLLER_MODE_INFINITE; -extern const bcstring be_const_str_add_state; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_STYLE_SHADOW_COLOR; -extern const bcstring be_const_str_set_transition_path; -extern const bcstring be_const_str_get_bright; -extern const bcstring be_const_str_get_needle_count; -extern const bcstring be_const_str_set_ext_array; -extern const bcstring be_const_str_set_style_local_value_letter_space; -extern const bcstring be_const_str_set_tasmota_logo; -extern const bcstring be_const_str_SPINNER_DIR_FORWARD; -extern const bcstring be_const_str_clear_protect; -extern const bcstring be_const_str_get_style_scale_border_width; -extern const bcstring be_const_str_set_scale_end_border_width; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_get_gesture_parent; -extern const bcstring be_const_str_list_init; -extern const bcstring be_const_str_KEY_RIGHT; -extern const bcstring be_const_str_STYLE_SIZE; -extern const bcstring be_const_str_EVENT_CLICKED; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_set_border_opa; -extern const bcstring be_const_str_LAYOUT_COLUMN_LEFT; -extern const bcstring be_const_str_CHART_CURSOR_NONE; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_STYLE_SCALE_END_LINE_WIDTH; -extern const bcstring be_const_str_set_shadow_width; -extern const bcstring be_const_str_STYLE_VALUE_FONT; -extern const bcstring be_const_str_BAR_TYPE_NORMAL; -extern const bcstring be_const_str_STYLE_LINE_COLOR; -extern const bcstring be_const_str_STYLE_TRANSFORM_ZOOM; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_set_style_local_border_color; -extern const bcstring be_const_str_set_style_local_shadow_ofs_x; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_TXT_FLAG_FIT; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_set_angles; -extern const bcstring be_const_str_get_btn_index; -extern const bcstring be_const_str_STYLE_LINE_WIDTH; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_get_style_transition_prop_6; -extern const bcstring be_const_str_STYLE_OUTLINE_BLEND_MODE; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_get_btn_img; -extern const bcstring be_const_str_set_style_local_radius; -extern const bcstring be_const_str_EVENT_PRESSING; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_STYLE_VALUE_OPA; -extern const bcstring be_const_str_set_zoom; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_get_click; -extern const bcstring be_const_str_get_style_line_dash_gap; -extern const bcstring be_const_str_get_style_pad_top; -extern const bcstring be_const_str_set_style_local_image_blend_mode; -extern const bcstring be_const_str_set_value_ofs_x; -extern const bcstring be_const_str_get_style_margin_bottom; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_get_knob_colored; -extern const bcstring be_const_str_GRAY; -extern const bcstring be_const_str_LIME; -extern const bcstring be_const_str_STATE_FOCUSED; -extern const bcstring be_const_str_set_range; -extern const bcstring be_const_str_EVENT_PRESSED; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_get_style_pattern_opa; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_OPA_40; -extern const bcstring be_const_str_PAGE_EDGE_BOTTOM; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_set_style_local_opa_scale; -extern const bcstring be_const_str_set_style_local_transform_width; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_get_style_scale_end_border_width; +extern const bcstring be_const_str_SPINNER_TYPE_SPINNING_ARC; +extern const bcstring be_const_str_area_is_visible; +extern const bcstring be_const_str_get_active_btn; +extern const bcstring be_const_str_set_pivot; +extern const bcstring be_const_str_get_dir; +extern const bcstring be_const_str_get_hidden; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_CHART_AXIS_SKIP_LAST_TICK; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_get_needle_img; +extern const bcstring be_const_str_set_offset_y; extern const bcstring be_const_str_set_shadow_blend_mode; +extern const bcstring be_const_str_STYLE_VALUE_OPA; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_count_children; +extern const bcstring be_const_str_get_drag_parent; +extern const bcstring be_const_str_get_show_selected; +extern const bcstring be_const_str_set_transform_zoom; +extern const bcstring be_const_str_STYLE_SCALE_WIDTH; +extern const bcstring be_const_str_set_size; extern const bcstring be_const_str_set_text_opa; -extern const bcstring be_const_str_BTNMATRIX_CTRL_CHECK_STATE; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_fill_bg; +extern const bcstring be_const_str_LABEL_LONG_DOT; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_set_step; +extern const bcstring be_const_str_OPA_70; +extern const bcstring be_const_str_set_bright; +extern const bcstring be_const_str_set_show_selected; +extern const bcstring be_const_str_LIME; +extern const bcstring be_const_str_BORDER_SIDE_INTERNAL; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_title_set_alignment; +extern const bcstring be_const_str_get_needle_count; +extern const bcstring be_const_str_set_pwd_show_time; +extern const bcstring be_const_str_OPA_TRANSP; +extern const bcstring be_const_str_get_bg_angle_end; +extern const bcstring be_const_str_get_child_back; +extern const bcstring be_const_str_get_scrl_layout; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_GREEN; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_del; +extern const bcstring be_const_str_draw_scale; +extern const bcstring be_const_str_get_style_text_letter_space; +extern const bcstring be_const_str_focus_next; +extern const bcstring be_const_str_get_style_pattern_repeat; +extern const bcstring be_const_str_set_pwd_mode; +extern const bcstring be_const_str_DISP_ROT_90; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_set_text_static; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_increment; +extern const bcstring be_const_str_set_auto_realign; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_refresh; +extern const bcstring be_const_str_clear_state; +extern const bcstring be_const_str_del_async; +extern const bcstring be_const_str_ARC_TYPE_SYMMETRIC; +extern const bcstring be_const_str_STYLE_OUTLINE_PAD; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_glue_obj; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_get_btn_index; +extern const bcstring be_const_str_LAYOUT_GRID; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_decrement; +extern const bcstring be_const_str_set_style_local_scale_end_line_width; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_set_gesture_parent; extern const bcstring be_const_str_set_style_local_bg_grad_stop; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_is_visible; -extern const bcstring be_const_str_GESTURE_DIR_RIGHT; +extern const bcstring be_const_str_set_tab_act; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_get_letter_pos; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_toggle; +extern const bcstring be_const_str_KEY_ENTER; extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_STYLE_PATTERN_IMAGE; +extern const bcstring be_const_str_BAR_TYPE_CUSTOM; +extern const bcstring be_const_str_get_style_text_sel_color; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_STYLE_VALUE_COLOR; +extern const bcstring be_const_str_OPA_20; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_get_angle; +extern const bcstring be_const_str_get_rollover; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_get_height; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_draw_text; +extern const bcstring be_const_str_focus_obj; +extern const bcstring be_const_str_get_x_start_point; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_get_saturation; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_CHART_CURSOR_RIGHT; +extern const bcstring be_const_str_EVENT_VALUE_CHANGED; +extern const bcstring be_const_str_is_focused; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_get_cursor_hidden; +extern const bcstring be_const_str_get_selected_str; +extern const bcstring be_const_str_set_pattern_blend_mode; +extern const bcstring be_const_str_set_value_ofs_x; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_OLIVE; +extern const bcstring be_const_str_set_style_local_shadow_color; +extern const bcstring be_const_str_get_style_image_recolor_opa; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_set_style_local_text_line_space; +extern const bcstring be_const_str_set_parent; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_get_btn_label; +extern const bcstring be_const_str_set_bg_angles; +extern const bcstring be_const_str_GAUGE_PART_MAJOR; +extern const bcstring be_const_str_get_style_border_post; +extern const bcstring be_const_str_get_coords; +extern const bcstring be_const_str_get_text_sel_end; +extern const bcstring be_const_str_TABVIEW_TAB_POS_LEFT; +extern const bcstring be_const_str_get_px; +extern const bcstring be_const_str_EVENT_RELEASED; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_get_step; +extern const bcstring be_const_str_get_text; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_set_transition_prop_2; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_copy_buf; +extern const bcstring be_const_str_get_textarea; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_FS_MODE_WR; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_STYLE_SCALE_BORDER_WIDTH; +extern const bcstring be_const_str_STYLE_TRANSITION_DELAY; +extern const bcstring be_const_str_set_btn_width; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_set_scale_width; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_STYLE_VALUE_FONT; +extern const bcstring be_const_str_del_char_forward; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_STYLE_IMAGE_BLEND_MODE; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_align_y; extern const bcstring be_const_str_set_style_local_transition_time; -extern const bcstring be_const_str_set_pad_inner; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_get_option_cnt; -extern const bcstring be_const_str_get_checkable; +extern const bcstring be_const_str_BAR_TYPE_NORMAL; +extern const bcstring be_const_str_BTN_STATE_PRESSED; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_FS_RES_INV_PARAM; +extern const bcstring be_const_str_set_click; +extern const bcstring be_const_str_ANIM_ON; +extern const bcstring be_const_str_DROPDOWN_DIR_DOWN; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_get_style_bg_color; +extern const bcstring be_const_str_set_placeholder_text; +extern const bcstring be_const_str_BTNMATRIX_CTRL_CHECK_STATE; +extern const bcstring be_const_str_FIT_NONE; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_set_bg_blend_mode; +extern const bcstring be_const_str_set_transition_prop_1; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_set_src; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_LAYOUT_ROW_BOTTOM; +extern const bcstring be_const_str_OBJ_PART_MAIN; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_set_hue; +extern const bcstring be_const_str_set_type; +extern const bcstring be_const_str_get_width_fit; +extern const bcstring be_const_str_set_editing; extern const bcstring be_const_str_ALIGN_IN_TOP_MID; -extern const bcstring be_const_str_set_opa_scale; -extern const bcstring be_const_str_set_signal_cb; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_set_pad_left; -extern const bcstring be_const_str_set_valid_positions; -extern const bcstring be_const_str_set_value; +extern const bcstring be_const_str_STYLE_SCALE_END_COLOR; +extern const bcstring be_const_str_get_click; +extern const bcstring be_const_str_get_width; +extern const bcstring be_const_str_set_focus_cb; +extern const bcstring be_const_str_set_pad_right; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_PAGE_EDGE_RIGHT; +extern const bcstring be_const_str_list_copy; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_set_transition_path; +extern const bcstring be_const_str_BLUE; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_set_transition_time; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_get_style_margin_top; +extern const bcstring be_const_str_STYLE_BG_GRAD_STOP; +extern const bcstring be_const_str_get_style_transition_prop_3; +extern const bcstring be_const_str_DRAG_DIR_BOTH; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_cursor_up; +extern const bcstring be_const_str_get_focused; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_get_anim_time; +extern const bcstring be_const_str_invalidate_area; +extern const bcstring be_const_str_remove_series; +extern const bcstring be_const_str_get_style_transform_height; +extern const bcstring be_const_str_set_scrollable_fit; +extern const bcstring be_const_str_set_shadow_color; +extern const bcstring be_const_str_set_transition_prop_4; +extern const bcstring be_const_str_is_dragged; +extern const bcstring be_const_str_set_angle_offset; +extern const bcstring be_const_str_set_line_dash_gap; +extern const bcstring be_const_str_set_shadow_ofs_y; +extern const bcstring be_const_str_SPINNER_TYPE_FILLSPIN_ARC; +extern const bcstring be_const_str_get_file_name; +extern const bcstring be_const_str_PROTECT_CHILD_CHG; +extern const bcstring be_const_str_TEAL; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_STYLE_PATTERN_RECOLOR; +extern const bcstring be_const_str_get_critical_value; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_set_margin_bottom; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_get_ext_click_pad_bottom; +extern const bcstring be_const_str_remove_prop; +extern const bcstring be_const_str_STYLE_TEXT_DECOR; +extern const bcstring be_const_str_set_spin_time; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_get_style_transition_prop_6; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_invalidate; +extern const bcstring be_const_str_BORDER_SIDE_RIGHT; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_get_adv_hittest; +extern const bcstring be_const_str_get_bright; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_set_style_local_line_width; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_get_type; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_set_saturation; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_layer_sys; +extern const bcstring be_const_str_list_init; +extern const bcstring be_const_str_set_pattern_recolor_opa; +extern const bcstring be_const_str_DRAG_DIR_HOR; +extern const bcstring be_const_str_is_point_on_coords; +extern const bcstring be_const_str_cut_text; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_set_tile_act; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_EVENT_PRESSING; +extern const bcstring be_const_str_set_text_sel_start; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_set_image_opa; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_FS_RES_DENIED; +extern const bcstring be_const_str_get_style_pad_left; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_get_option_cnt; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_CHART_AXIS_INVERSE_LABELS_ORDER; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_scroll_ver; +extern const bcstring be_const_str_get_antialias; +extern const bcstring be_const_str_get_line_count; +extern const bcstring be_const_str_set_border_blend_mode; +extern const bcstring be_const_str_set_style_local_value_line_space; +extern const bcstring be_const_str_CHART_CURSOR_DOWN; +extern const bcstring be_const_str_LAYOUT_OFF; +extern const bcstring be_const_str_set_pad_top; +extern const bcstring be_const_str_STYLE_MARGIN_LEFT; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_set_style_local_pattern_recolor_opa; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_get_btn_width; +extern const bcstring be_const_str_set_style_local_shadow_spread; +extern const bcstring be_const_str_set_x_tick_length; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_STYLE_SIZE; +extern const bcstring be_const_str_set_auto_size; +extern const bcstring be_const_str_set_style_local_value_ofs_x; +extern const bcstring be_const_str_close_event_cb; +extern const bcstring be_const_str_remove_style; +extern const bcstring be_const_str_LABEL_ALIGN_LEFT; +extern const bcstring be_const_str_set_style_local_opa_scale; +extern const bcstring be_const_str_remove_mask; +extern const bcstring be_const_str_set_image_recolor_opa; +extern const bcstring be_const_str_CHART_AXIS_PRIMARY_Y; +extern const bcstring be_const_str_get_scrollable; +extern const bcstring be_const_str_CHART_AXIS_SECONDARY_Y; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_set_style_local_line_dash_gap; +extern const bcstring be_const_str_set_text_sel_color; +extern const bcstring be_const_str_get_spin_time; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_HSPI; +extern const bcstring be_const_str_OBJMASK_PART_MAIN; +extern const bcstring be_const_str_count_children_recursive; +extern const bcstring be_const_str_opt_add; extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_set_adv_hittest; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_set_checkable; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_ARC_TYPE_REVERSE; +extern const bcstring be_const_str_set_tasmota_logo; +extern const bcstring be_const_str_ALIGN_IN_LEFT_MID; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_EVENT_PRESS_LOST; +extern const bcstring be_const_str_STYLE_TEXT_FONT; +extern const bcstring be_const_str_set_style_local_scale_grad_color; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_get_style_outline_opa; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_set_col_cnt; +extern const bcstring be_const_str_set_width; +extern const bcstring be_const_str_KEY_PREV; +extern const bcstring be_const_str_set_text_fmt; +extern const bcstring be_const_str_get_scrl_height; +extern const bcstring be_const_str_set_arc_length; +extern const bcstring be_const_str_set_style_local_image_recolor_opa; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_FS_RES_OK; +extern const bcstring be_const_str_set_scrl_width; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_STYLE_VALUE_STR; +extern const bcstring be_const_str_ALIGN_IN_TOP_LEFT; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_transform; +extern const bcstring be_const_str_set_style_local_line_blend_mode; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_set_angle; +extern const bcstring be_const_str_set_today_date; +extern const bcstring be_const_str_PAGE_EDGE_BOTTOM; +extern const bcstring be_const_str_get_btns_pos; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_set_bg_grad_color; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_clear_protect; +extern const bcstring be_const_str_LABEL_LONG_BREAK; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_get_style_border_width; +extern const bcstring be_const_str_set_style_local_size; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_add_char; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_CHART_CURSOR_NONE; +extern const bcstring be_const_str_EVENT_KEY; +extern const bcstring be_const_str_del_anim_ready_cb; +extern const bcstring be_const_str_set_bg_opa; +extern const bcstring be_const_str_TEXT_DECOR_NONE; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_GRAD_DIR_VER; +extern const bcstring be_const_str_get_angle_end; +extern const bcstring be_const_str_set_drag_parent; +extern const bcstring be_const_str_set_recolor; +extern const bcstring be_const_str_set_style_local_text_sel_color; +extern const bcstring be_const_str_BLEND_MODE_SUBTRACTIVE; +extern const bcstring be_const_str_finish_transitions; +extern const bcstring be_const_str_realign; +extern const bcstring be_const_str_set_style_local_value_opa; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_get_start_value; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_OPA_40; +extern const bcstring be_const_str_get_active_btn_text; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_clear_selection; +extern const bcstring be_const_str_get_hor_res; +extern const bcstring be_const_str_get_offset_x; +extern const bcstring be_const_str_set_style_local_border_opa; +extern const bcstring be_const_str_DISP_SIZE_MEDIUM; +extern const bcstring be_const_str_FS_MODE_RD; +extern const bcstring be_const_str_get_scrl_width; +extern const bcstring be_const_str_get_style_pad_right; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_BTNMATRIX_CTRL_CLICK_TRIG; +extern const bcstring be_const_str_CHART_PART_SERIES_BG; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_get_scrl_fit_right; +extern const bcstring be_const_str_set_style_local_shadow_ofs_y; +extern const bcstring be_const_str_STYLE_PATTERN_IMAGE; +extern const bcstring be_const_str_STYLE_VALUE_OFS_X; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_TXT_FLAG_FIT; +extern const bcstring be_const_str_set_width_fit; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_DISP_SIZE_SMALL; +extern const bcstring be_const_str_STYLE_TRANSITION_PROP_5; +extern const bcstring be_const_str_set_bg_grad_stop; +extern const bcstring be_const_str_set_style_local_text_sel_bg_color; +extern const bcstring be_const_str_set_top; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_get_style_value_color; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_CPICKER_COLOR_MODE_VALUE; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_STYLE_TEXT_SEL_COLOR; +extern const bcstring be_const_str_set_hsv; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_CALENDAR_PART_DATE; +extern const bcstring be_const_str_add_element; +extern const bcstring be_const_str_set_scale; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_reset_style_list; +extern const bcstring be_const_str_set_parent_event; +extern const bcstring be_const_str_set_text_line_space; +extern const bcstring be_const_str_FIT_TIGHT; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_get_style_line_opa; +extern const bcstring be_const_str_get_style_line_rounded; +extern const bcstring be_const_str_get_nearest_index_from_coord; +extern const bcstring be_const_str_get_selected; +extern const bcstring be_const_str_set_long_mode; +extern const bcstring be_const_str_set_month_names; +extern const bcstring be_const_str_set_refocus_policy; +extern const bcstring be_const_str_DROPDOWN_DIR_RIGHT; +extern const bcstring be_const_str_set_line_blend_mode; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_STYLE_TRANSITION_PROP_6; +extern const bcstring be_const_str_get_fit_right; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_clear_btn_ctrl; +extern const bcstring be_const_str_set_align; +extern const bcstring be_const_str_set_style_local_margin_left; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_STYLE_CLIP_CORNER; +extern const bcstring be_const_str_VSPI; +extern const bcstring be_const_str_cursor_left; +extern const bcstring be_const_str_set_style_local_border_side; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_get_align; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_get_fit_bottom; +extern const bcstring be_const_str_set_style_local_transition_prop_5; +extern const bcstring be_const_str_get_ext_click_pad_left; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_set_focus_parent; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_DISP_ROT_NONE; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_set_opa_scale; +extern const bcstring be_const_str_CYAN; +extern const bcstring be_const_str_set_palette; +extern const bcstring be_const_str_get_pivot; +extern const bcstring be_const_str_BTNMATRIX_CTRL_NO_REPEAT; +extern const bcstring be_const_str_SCROLLBAR_MODE_HIDE; +extern const bcstring be_const_str_get_focused_btn; +extern const bcstring be_const_str_PROTECT_CLICK_FOCUS; +extern const bcstring be_const_str_is_visible; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_PROTECT_PRESS_LOST; +extern const bcstring be_const_str_get_hue; +extern const bcstring be_const_str_set_pattern_recolor; +extern const bcstring be_const_str_SSPI; +extern const bcstring be_const_str_get_style_line_dash_width; +extern const bcstring be_const_str_set_ctrl_map; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_get_text_sel_en; +extern const bcstring be_const_str_get_title; +extern const bcstring be_const_str_get_y_invert; +extern const bcstring be_const_str_GAUGE_PART_MAIN; +extern const bcstring be_const_str_get_btn_selected; +extern const bcstring be_const_str_PAGE_EDGE_TOP; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_set_style_local_line_opa; +extern const bcstring be_const_str_set_style_local_shadow_width; +extern const bcstring be_const_str_set_formatter_cb; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_get_adjustable; +extern const bcstring be_const_str_DRAG_DIR_ONE; +extern const bcstring be_const_str_STYLE_LINE_WIDTH; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_hittest; +extern const bcstring be_const_str_STYLE_BG_GRAD_DIR; +extern const bcstring be_const_str_get_drag_throw; +extern const bcstring be_const_str_set_style_local_transform_angle; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_draw_rect; +extern const bcstring be_const_str_get_user_data; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_set_options_static; +extern const bcstring be_const_str_set_value; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_set_mode; +extern const bcstring be_const_str_set_style_local_image_opa; +extern const bcstring be_const_str_set_style_local_outline_blend_mode; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_STYLE_SCALE_GRAD_COLOR; +extern const bcstring be_const_str_draw_img; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_set_style_local_transition_path; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_set_style_local_transition_prop_3; +extern const bcstring be_const_str_fade_in; +extern const bcstring be_const_str_set_angles; +extern const bcstring be_const_str_set_style_local_margin_right; +extern const bcstring be_const_str_get_one_check; +extern const bcstring be_const_str_set_highlighted_dates; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_get_style_outline_color; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_CHECKBOX_PART_BULLET; +extern const bcstring be_const_str_STYLE_BORDER_SIDE; +extern const bcstring be_const_str_get_anim_speed; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_KEY_HOME; +extern const bcstring be_const_str_focus_prev; +extern const bcstring be_const_str_STYLE_SHADOW_OFS_Y; +extern const bcstring be_const_str_BTN_STATE_CHECKED_RELEASED; +extern const bcstring be_const_str_get_pwd_mode; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_get_cell_merge_right; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_EVENT_APPLY; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_STYLE_PATTERN_BLEND_MODE; +extern const bcstring be_const_str_get_wrap; +extern const bcstring be_const_str_set_value_str; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_get_style_scale_border_width; +extern const bcstring be_const_str_set_shadow_width; +extern const bcstring be_const_str_ALIGN_OUT_RIGHT_BOTTOM; +extern const bcstring be_const_str_KEY_DEL; +extern const bcstring be_const_str_get_angle_offset; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_get_style_transform_width; +extern const bcstring be_const_str_set_bg_grad_dir; +extern const bcstring be_const_str_set_signal_cb; +extern const bcstring be_const_str_KEYBOARD_PART_BTN; +extern const bcstring be_const_str_get_content; +extern const bcstring be_const_str_set_focused_btn; +extern const bcstring be_const_str_set_offset_x; +extern const bcstring be_const_str_OPA_90; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_get_edge_flash; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_get_pressed_cell; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_STYLE_SHADOW_WIDTH; +extern const bcstring be_const_str_set_text_font; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_STYLE_LINE_COLOR; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_set_outline_pad; +extern const bcstring be_const_str_BAR_TYPE_SYMMETRICAL; +extern const bcstring be_const_str_set_height_margin; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_anim_cb; +extern const bcstring be_const_str_get_style_bg_main_stop; +extern const bcstring be_const_str_get_style_shadow_ofs_y; +extern const bcstring be_const_str_get_style_transform_zoom; +extern const bcstring be_const_str_set_line_rounded; +extern const bcstring be_const_str_set_style_local_pattern_recolor; +extern const bcstring be_const_str_EVENT_GESTURE; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_SCROLLBAR_MODE_ON; +extern const bcstring be_const_str_set_chg_rate; +extern const bcstring be_const_str_set_needle_count; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_set_text; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_ALIGN_IN_BOTTOM_LEFT; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_get_tile_act; +extern const bcstring be_const_str_set_value_font; +extern const bcstring be_const_str_get_angle_start; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_init_draw_rect_dsc; +extern const bcstring be_const_str_set_width_margin; +extern const bcstring be_const_str_STYLE_BG_COLOR; +extern const bcstring be_const_str_STYLE_TEXT_LETTER_SPACE; +extern const bcstring be_const_str_get_style_radius; +extern const bcstring be_const_str_set_zoom; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_FS_RES_NOT_EX; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_clean_style_list; +extern const bcstring be_const_str_LAYOUT_PRETTY_MID; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_get_scrl_fit_left; +extern const bcstring be_const_str_TABVIEW_TAB_POS_TOP; +extern const bcstring be_const_str_get_style_pad_bottom; +extern const bcstring be_const_str_BLEND_MODE_NORMAL; +extern const bcstring be_const_str_STYLE_BORDER_OPA; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_get_btnmatrix; +extern const bcstring be_const_str_DISP_SIZE_LARGE; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_set_text_align; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_get_x_from_index; +extern const bcstring be_const_str_set_style_local_margin_top; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_set_style_local_scale_end_border_width; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_STYLE_LINE_ROUNDED; +extern const bcstring be_const_str_STYLE_PAD_INNER; +extern const bcstring be_const_str_get_sb_mode; +extern const bcstring be_const_str_set_selected; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_set_scrl_height; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_add_btns; +extern const bcstring be_const_str_set_style_local_scale_end_color; +extern const bcstring be_const_str_get_style_text_opa; +extern const bcstring be_const_str_ALIGN_CENTER; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_title_get_alignment; +extern const bcstring be_const_str_EVENT_LONG_PRESSED; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_STYLE_PATTERN_OPA; +extern const bcstring be_const_str_draw_arc; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_set_scale_end_border_width; +extern const bcstring be_const_str_add_state; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_set_style_local_value_align; +extern const bcstring be_const_str_set_text_letter_space; +extern const bcstring be_const_str_set_value_ofs_y; +extern const bcstring be_const_str_ANIM_OFF; +extern const bcstring be_const_str_STYLE_BG_BLEND_MODE; +extern const bcstring be_const_str_get_options; +extern const bcstring be_const_str_set_style_local_pad_top; +extern const bcstring be_const_str_OBJ_PART_VIRTUAL_FIRST; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_set_anim_time; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_set_digit_format; +extern const bcstring be_const_str_set_secondary_y_tick_texts; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_FS_RES_HW_ERR; +extern const bcstring be_const_str_OPA_COVER; +extern const bcstring be_const_str_get_style_pad_top; +extern const bcstring be_const_str_set_height; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_get_header_height; +extern const bcstring be_const_str_set_x_start_point; +extern const bcstring be_const_str_DROPDOWN_PART_MAIN; +extern const bcstring be_const_str_KEY_ESC; +extern const bcstring be_const_str_set_checked; +extern const bcstring be_const_str_TXT_FLAG_RIGHT; +extern const bcstring be_const_str_set_style_local_text_blend_mode; +extern const bcstring be_const_str_blur_ver; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_set_y_range; +extern const bcstring be_const_str_PROTECT_NONE; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_get_next_btn; +extern const bcstring be_const_str_remove_all_objs; +extern const bcstring be_const_str_set_x_tick_texts; +extern const bcstring be_const_str_LIST_PART_EDGE_FLASH; +extern const bcstring be_const_str_WHITE; +extern const bcstring be_const_str_get_scrl_fit_bottom; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_STYLE_TEXT_BLEND_MODE; +extern const bcstring be_const_str_STYLE_MARGIN_BOTTOM; +extern const bcstring be_const_str_get_screen; +extern const bcstring be_const_str_set_border_color; +extern const bcstring be_const_str_SCROLLBAR_MODE_AUTO; +extern const bcstring be_const_str_STATE_PRESSED; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_set_cursor_blink_time; +extern const bcstring be_const_str_clear_btn_ctrl_all; +extern const bcstring be_const_str_set_pattern_opa; +extern const bcstring be_const_str_set_bg_main_stop; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_set_end_angle; +extern const bcstring be_const_str_CHART_UPDATE_MODE_SHIFT; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_ALIGN_OUT_RIGHT_MID; +extern const bcstring be_const_str_set_header_height; +extern const bcstring be_const_str_LAYOUT_PRETTY_TOP; +extern const bcstring be_const_str_keys; extern const bcstring be_const_str_set_buffer; +extern const bcstring be_const_str_ROLLER_MODE_NORMAL; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_set_click_focus; +extern const bcstring be_const_str_set_user_data; +extern const bcstring be_const_str_KEY_NEXT; +extern const bcstring be_const_str_get_cell_crop; +extern const bcstring be_const_str_clear_series; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_set_style_local_pad_right; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_set_cell_crop; +extern const bcstring be_const_str_set_text_color; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_focus_btn; +extern const bcstring be_const_str_CHART_CURSOR_UP; +extern const bcstring be_const_str_is_checked; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_STATE_EDITED; +extern const bcstring be_const_str_ALIGN_IN_RIGHT_MID; +extern const bcstring be_const_str_get_style_line_width; +extern const bcstring be_const_str_start_auto_close; +extern const bcstring be_const_str_get_point_count; +extern const bcstring be_const_str_is_inactive; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_set_radius; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_get_style_transition_prop_2; +extern const bcstring be_const_str_GESTURE_DIR_LEFT; +extern const bcstring be_const_str_scroll_hor; +extern const bcstring be_const_str_BORDER_SIDE_TOP; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_STATE_FOCUSED; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_set_shadow_ofs_x; +extern const bcstring be_const_str_get_gesture_parent; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_add_tab; +extern const bcstring be_const_str_STYLE_PAD_RIGHT; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_set_cursor_pos; +extern const bcstring be_const_str_PROTECT_PARENT; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_get_scroll_propagation; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_DISP_SIZE_EXTRA_LARGE; +extern const bcstring be_const_str_get_series_area; +extern const bcstring be_const_str_get_style_clip_corner; +extern const bcstring be_const_str_get_style_transition_prop_5; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_LABEL_LONG_CROP; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_get_ext_click_pad_top; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_scr_act; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_get_style_bg_grad_color; +extern const bcstring be_const_str_get_ver_res; +extern const bcstring be_const_str_focus; +extern const bcstring be_const_str_set_scrollbar_mode; +extern const bcstring be_const_str_get_focus_parent; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_get_arc_length; +extern const bcstring be_const_str_set_div_line_count; +extern const bcstring be_const_str_BLEND_MODE_ADDITIVE; +extern const bcstring be_const_str_set_drag_throw; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_STYLE_BORDER_POST; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_BTN_STATE_CHECKED_PRESSED; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_get_highlighted_dates_num; +extern const bcstring be_const_str_set_textarea; +extern const bcstring be_const_str_set_clip_corner; +extern const bcstring be_const_str_set_cursor_manage; +extern const bcstring be_const_str_set_style_local_border_width; +extern const bcstring be_const_str_set_base_dir; +extern const bcstring be_const_str_STYLE_PAD_TOP; +extern const bcstring be_const_str_KEYBOARD_MODE_TEXT_LOWER; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_set_style_local_bg_main_stop; +extern const bcstring be_const_str_MAROON; +extern const bcstring be_const_str_STYLE_TRANSFORM_ZOOM; +extern const bcstring be_const_str_get_focused_obj; +extern const bcstring be_const_str_get_value; +extern const bcstring be_const_str_set_margin_left; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_get_hsv; +extern const bcstring be_const_str_get_prev_btn; +extern const bcstring be_const_str_set_outline_blend_mode; +extern const bcstring be_const_str_CHART_PART_CURSOR; +extern const bcstring be_const_str_set_mirror; +extern const bcstring be_const_str_set_pad_left; +extern const bcstring be_const_str_set_style_local_bg_color; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_create; +extern const bcstring be_const_str_get_style_value_str; +extern const bcstring be_const_str_set_cell_value; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_get_style_pattern_image; +extern const bcstring be_const_str_set_cell_type; +extern const bcstring be_const_str_STYLE_VALUE_LETTER_SPACE; +extern const bcstring be_const_str_set_btn_ctrl; +extern const bcstring be_const_str_set_style_local_value_color; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_set_padding_left; extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_SPINNER_DIR_FORWARD; +extern const bcstring be_const_str_get_one_line; +extern const bcstring be_const_str_off; +extern const bcstring be_const_str_set_style_local_value_ofs_y; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_get_recolor; +extern const bcstring be_const_str_set_col_width; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_set_ext_click_area; +extern const bcstring be_const_str_set_transition_delay; +extern const bcstring be_const_str_get_accepted_chars; +extern const bcstring be_const_str_set_transform_width; +extern const bcstring be_const_str_get_style_pattern_recolor_opa; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_get_btn_ctrl; +extern const bcstring be_const_str_set_value_align; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_CPICKER_TYPE_RECT; +extern const bcstring be_const_str_EVENT_DRAG_BEGIN; +extern const bcstring be_const_str_EVENT_DRAG_END; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_set_line_opa; +extern const bcstring be_const_str_set_range; +extern const bcstring be_const_str_STYLE_TRANSITION_PATH; +extern const bcstring be_const_str_get_style_shadow_spread; +extern const bcstring be_const_str_STYLE_TEXT_OPA; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_FS_RES_NOT_IMP; +extern const bcstring be_const_str_GRAD_DIR_HOR; +extern const bcstring be_const_str_get_ext_draw_pad; +extern const bcstring be_const_str_get_max_value; +extern const bcstring be_const_str_set_cell_value_fmt; +extern const bcstring be_const_str_KEY_RIGHT; +extern const bcstring be_const_str_get_pwd_show_time; +extern const bcstring be_const_str_set_next; +extern const bcstring be_const_str_set_start_angle; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_STATE_CHECKED; +extern const bcstring be_const_str_get_y; +extern const bcstring be_const_str_set_bg_color; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_set_one_line; +extern const bcstring be_const_str_DROPDOWN_PART_SCROLLBAR; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_set_line_color; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_STYLE_PATTERN_REPEAT; +extern const bcstring be_const_str_get_style_shadow_opa; +extern const bcstring be_const_str_init_draw_img_dsc; +extern const bcstring be_const_str_handle_get_type_signal; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_STYLE_IMAGE_RECOLOR_OPA; +extern const bcstring be_const_str_set_auto_fit; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_set_style_local_margin_bottom; +extern const bcstring be_const_str_set_style_local_pattern_blend_mode; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_STYLE_TRANSFORM_HEIGHT; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_get_style_line_color; +extern const bcstring be_const_str_on_edge; +extern const bcstring be_const_str_CPICKER_COLOR_MODE_SATURATION; +extern const bcstring be_const_str_LABEL_LONG_SROLL_CIRC; +extern const bcstring be_const_str_STYLE_BORDER_BLEND_MODE; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_set_btns_pos; +extern const bcstring be_const_str_text_is_selected; +extern const bcstring be_const_str_STATE_HOVERED; +extern const bcstring be_const_str_set_style_local_line_rounded; +extern const bcstring be_const_str_set_style_local_value_font; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_set_symbol; +extern const bcstring be_const_str_set_wrap; +extern const bcstring be_const_str_STYLE_IMAGE_RECOLOR; +extern const bcstring be_const_str_STYLE_TRANSITION_PROP_1; +extern const bcstring be_const_str_get_style_value_ofs_x; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_SPINNER_DIR_BACKWARD; +extern const bcstring be_const_str_init_points; +extern const bcstring be_const_str_GESTURE_DIR_RIGHT; +extern const bcstring be_const_str_TEMPL_STYLE_Y; +extern const bcstring be_const_str_set_shadow_opa; +extern const bcstring be_const_str_set_style_local_radius; +extern const bcstring be_const_str_hide_series; +extern const bcstring be_const_str_set_text_sel_bg_color; +extern const bcstring be_const_str_KEY_UP; +extern const bcstring be_const_str_PAGE_EDGE_LEFT; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_TXT_CMD_STATE_PAR; +extern const bcstring be_const_str_LABEL_LONG_SROLL; +extern const bcstring be_const_str_CHART_TYPE_NONE; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_set_event_cb; +extern const bcstring be_const_str_set_style_local_pad_left; +extern const bcstring be_const_str_STYLE_TRANSFORM_WIDTH; +extern const bcstring be_const_str_set_style_local_shadow_ofs_x; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_ALIGN_OUT_BOTTOM_LEFT; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_BORDER_SIDE_FULL; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_get_symbol; +extern const bcstring be_const_str_get_style_margin_left; +extern const bcstring be_const_str_get_style_scale_grad_color; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_STYLE_OPA_SCALE; +extern const bcstring be_const_str_STYLE_TRANSITION_PROP_2; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_add_option; +extern const bcstring be_const_str_get_needle_img_pivot_x; +extern const bcstring be_const_str_set_transform_height; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_clear_options; +extern const bcstring be_const_str_set_antialias; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_set_scrl_layout; +extern const bcstring be_const_str_GAUGE_PART_NEEDLE; +extern const bcstring be_const_str_BORDER_SIDE_NONE; +extern const bcstring be_const_str_get_tab_act; +extern const bcstring be_const_str_get_click_focus; +extern const bcstring be_const_str_get_style_opa_scale; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_set_design_cb; +extern const bcstring be_const_str_CHART_UPDATE_MODE_CIRCULAR; +extern const bcstring be_const_str_OPA_10; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_get_style_shadow_color; +extern const bcstring be_const_str_SPINNER_TYPE_CONSTANT_ARC; +extern const bcstring be_const_str_set_needle_img; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_set_rollover; +extern const bcstring be_const_str_set_color_mode_fixed; +extern const bcstring be_const_str_set_fit2; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_get_max_height; +extern const bcstring be_const_str_set_one_check; +extern const bcstring be_const_str_EVENT_CLICKED; +extern const bcstring be_const_str_EVENT_FOCUSED; +extern const bcstring be_const_str_OPA_30; +extern const bcstring be_const_str_get_layout; +extern const bcstring be_const_str_KEYBOARD_MODE_SPECIAL; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_STATE_DISABLED; +extern const bcstring be_const_str_STYLE_BG_OPA; +extern const bcstring be_const_str_set_style_local_transition_prop_4; +extern const bcstring be_const_str_get_auto_fit; +extern const bcstring be_const_str_GESTURE_DIR_TOP; +extern const bcstring be_const_str_get_style_line_dash_gap; +extern const bcstring be_const_str_def_event_cb; +extern const bcstring be_const_str_set_px; +extern const bcstring be_const_str_list_get_local_style; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_set_cell_align; +extern const bcstring be_const_str_get_style_text_color; +extern const bcstring be_const_str_list_get_style; +extern const bcstring be_const_str_BTNMATRIX_CTRL_CHECKABLE; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_get_style_outline_pad; +extern const bcstring be_const_str_set_style_local_transition_delay; +extern const bcstring be_const_str_set_update_mode; +extern const bcstring be_const_str_FIT_PARENT; +extern const bcstring be_const_str_fade_out; +extern const bcstring be_const_str_get_style_margin_right; +extern const bcstring be_const_str_ALIGN_OUT_LEFT_BOTTOM; +extern const bcstring be_const_str_LIST_PART_BG; +extern const bcstring be_const_str_STYLE_TEXT_SEL_BG_COLOR; +extern const bcstring be_const_str_add_btn_right; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_STYLE_BORDER_COLOR; +extern const bcstring be_const_str_STYLE_OUTLINE_OPA; +extern const bcstring be_const_str_get_placeholder_text; +extern const bcstring be_const_str_CPICKER_TYPE_DISC; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_STYLE_SHADOW_BLEND_MODE; +extern const bcstring be_const_str_get_style_bg_grad_stop; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_get_cursor_click_pos; +extern const bcstring be_const_str_get_drag; +extern const bcstring be_const_str_get_style_shadow_width; +extern const bcstring be_const_str_is_char_under_pos; +extern const bcstring be_const_str_ALIGN_OUT_LEFT_MID; +extern const bcstring be_const_str_STYLE_VALUE_ALIGN; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_set_style_local_transform_width; +extern const bcstring be_const_str_set_cursor_point; +extern const bcstring be_const_str_get_style_transition_delay; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_STYLE_TEXT_LINE_SPACE; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_get_style_value_opa; +extern const bcstring be_const_str_EVENT_PRESSED; +extern const bcstring be_const_str_STYLE_LINE_DASH_WIDTH; +extern const bcstring be_const_str_clean_tab; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_get_tab; +extern const bcstring be_const_str_set_style_local_outline_pad; +extern const bcstring be_const_str_set_style_local_transition_prop_2; +extern const bcstring be_const_str_GRAD_DIR_NONE; +extern const bcstring be_const_str_SLIDER_TYPE_RANGE; +extern const bcstring be_const_str_LAYOUT_COLUMN_MID; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_get_style_pad_inner; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_get_y_from_index; +extern const bcstring be_const_str_set_pad_bottom; +extern const bcstring be_const_str_set_showed_date; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_get_bg_angle_start; +extern const bcstring be_const_str_stop_auto_close; +extern const bcstring be_const_str_STYLE_MARGIN_TOP; +extern const bcstring be_const_str_set_y_tick_texts; +extern const bcstring be_const_str_CALENDAR_PART_HEADER; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_clean; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_ALIGN_IN_TOP_RIGHT; +extern const bcstring be_const_str_ARC_TYPE_NORMAL; +extern const bcstring be_const_str_STYLE_BORDER_WIDTH; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_align_mid_y; +extern const bcstring be_const_str_set_image_blend_mode; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_get_point_id; +extern const bcstring be_const_str_set_ext_array; +extern const bcstring be_const_str_EVENT_DELETE; +extern const bcstring be_const_str_get_from_btn; +extern const bcstring be_const_str_ARC_PART_KNOB; +extern const bcstring be_const_str_STYLE_OUTLINE_COLOR; +extern const bcstring be_const_str_set_critical_value; +extern const bcstring be_const_str_set_value_blend_mode; +extern const bcstring be_const_str_get_protect; +extern const bcstring be_const_str_set_style_local_line_dash_width; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_GESTURE_DIR_BOTTOM; +extern const bcstring be_const_str_LAYOUT_ROW_MID; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_add_style; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_STYLE_SHADOW_SPREAD; +extern const bcstring be_const_str_set_cursor_hidden; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_ALIGN_OUT_TOP_MID; +extern const bcstring be_const_str_KEYBOARD_MODE_NUM; +extern const bcstring be_const_str_get_draw_rect_ext_pad_size; +extern const bcstring be_const_str_LABEL_LONG_EXPAND; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_set_value_line_space; +extern const bcstring be_const_str_set_y; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_STYLE_BG_GRAD_COLOR; +extern const bcstring be_const_str_STYLE_TRANSITION_TIME; +extern const bcstring be_const_str_TEXT_DECOR_UNDERLINE; +extern const bcstring be_const_str_get_fit_left; +extern const bcstring be_const_str_ALIGN_OUT_TOP_LEFT; +extern const bcstring be_const_str_EVENT_CANCEL; +extern const bcstring be_const_str_get_cursor_manage; +extern const bcstring be_const_str_set_bg_start_angle; +extern const bcstring be_const_str_set_options; +extern const bcstring be_const_str_set_style_local_bg_opa; +extern const bcstring be_const_str_set_style_local_value_letter_space; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_BTN_STATE_CHECKED_DISABLED; +extern const bcstring be_const_str_LABEL_ALIGN_RIGHT; +extern const bcstring be_const_str_set_content_size; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_set_text_blend_mode; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_get_style_shadow_ofs_x; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_set_pattern_repeat; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_is_protected; +extern const bcstring be_const_str_get_cell_type; +extern const bcstring be_const_str_set_scale_end_color; +extern const bcstring be_const_str_set_style_local_border_blend_mode; +extern const bcstring be_const_str_init_draw_label_dsc; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_STYLE_TRANSFORM_ANGLE; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_set_line_width; +extern const bcstring be_const_str_CHART_PART_BG; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_get_letter_on; +extern const bcstring be_const_str_set_rotation; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_OBJ_PART_REAL_FIRST; +extern const bcstring be_const_str_set_style_local_image_recolor; +extern const bcstring be_const_str_get_color_mode; +extern const bcstring be_const_str_FS_RES_TOUT; +extern const bcstring be_const_str_KEY_BACKSPACE; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_get_style_border_opa; +extern const bcstring be_const_str_get_left_value; +extern const bcstring be_const_str_get_parent_event; +extern const bcstring be_const_str_CPICKER_PART_MAIN; +extern const bcstring be_const_str_get_group; +extern const bcstring be_const_str_KEY_DOWN; +extern const bcstring be_const_str_PROTECT_EVENT_TO_DISABLED; +extern const bcstring be_const_str_STYLE_SCALE_END_LINE_WIDTH; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_set_style_local_outline_opa; +extern const bcstring be_const_str_start_edge_flash; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_STYLE_OUTLINE_WIDTH; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_down; +extern const bcstring be_const_str_get_cell_align; +extern const bcstring be_const_str_remove_obj; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_set_scrollable_fit2; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_set_style_local_border_post; +extern const bcstring be_const_str_set_style_local_bg_grad_color; +extern const bcstring be_const_str_get_mirror; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index aea00d40e..faa964c88 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,2437 +1,2440 @@ -be_define_const_str(ARC_TYPE_NORMAL, "ARC_TYPE_NORMAL", 1554666574u, 0, 15, &be_const_str_SPINNER_DIR_BACKWARD); -be_define_const_str(SPINNER_DIR_BACKWARD, "SPINNER_DIR_BACKWARD", 4078587842u, 0, 20, &be_const_str_set_clip_corner); -be_define_const_str(set_clip_corner, "set_clip_corner", 2280572814u, 0, 15, &be_const_str_set_pad_right); -be_define_const_str(set_pad_right, "set_pad_right", 4274005568u, 0, 13, &be_const_str_set_x); -be_define_const_str(set_x, "set_x", 1849400772u, 0, 5, NULL); -be_define_const_str(set_anim_time, "set_anim_time", 1473685427u, 0, 13, NULL); -be_define_const_str(KEYBOARD_PART_BG, "KEYBOARD_PART_BG", 3167702710u, 0, 16, &be_const_str_get_min_value); -be_define_const_str(get_min_value, "get_min_value", 3238705374u, 0, 13, &be_const_str_set_style_local_scale_end_line_width); -be_define_const_str(set_style_local_scale_end_line_width, "set_style_local_scale_end_line_width", 2316920258u, 0, 36, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(LAYOUT_PRETTY_BOTTOM, "LAYOUT_PRETTY_BOTTOM", 2090319170u, 0, 20, &be_const_str_get_x); -be_define_const_str(get_x, "get_x", 1188742048u, 0, 5, NULL); -be_define_const_str(reset_style_list, "reset_style_list", 4135460875u, 0, 16, NULL); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(GESTURE_DIR_BOTTOM, "GESTURE_DIR_BOTTOM", 336208834u, 0, 18, &be_const_str_get_style_shadow_ofs_x); -be_define_const_str(get_style_shadow_ofs_x, "get_style_shadow_ofs_x", 2320381696u, 0, 22, NULL); -be_define_const_str(fade_in, "fade_in", 3410278043u, 0, 7, &be_const_str_get_tab_count); -be_define_const_str(get_tab_count, "get_tab_count", 218245863u, 0, 13, NULL); -be_define_const_str(get_cell_merge_right, "get_cell_merge_right", 207626582u, 0, 20, &be_const_str_get_start_value); -be_define_const_str(get_start_value, "get_start_value", 2039237390u, 0, 15, NULL); -be_define_const_str(get_style_outline_pad, "get_style_outline_pad", 4225397162u, 0, 21, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_SR04_TRIG); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_STYLE_SCALE_END_COLOR); -be_define_const_str(STYLE_SCALE_END_COLOR, "STYLE_SCALE_END_COLOR", 1403682869u, 0, 21, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_set_angle); -be_define_const_str(set_angle, "set_angle", 2542866927u, 0, 9, &be_const_str_set_text_align); -be_define_const_str(set_text_align, "set_text_align", 2734674049u, 0, 14, NULL); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_CALENDAR_PART_HEADER); -be_define_const_str(CALENDAR_PART_HEADER, "CALENDAR_PART_HEADER", 1199188911u, 0, 20, &be_const_str_get_critical_value); -be_define_const_str(get_critical_value, "get_critical_value", 4180625515u, 0, 18, &be_const_str_set_cursor_hidden); -be_define_const_str(set_cursor_hidden, "set_cursor_hidden", 647911755u, 0, 17, &be_const_str_set_height); -be_define_const_str(set_height, "set_height", 1080207399u, 0, 10, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(LIST_PART_SCROLLBAR, "LIST_PART_SCROLLBAR", 3690731034u, 0, 19, &be_const_str_get_angle_start); -be_define_const_str(get_angle_start, "get_angle_start", 99415936u, 0, 15, NULL); -be_define_const_str(KEYBOARD_PART_BTN, "KEYBOARD_PART_BTN", 875459207u, 0, 17, &be_const_str_set_style_local_pad_top); -be_define_const_str(set_style_local_pad_top, "set_style_local_pad_top", 785256663u, 0, 23, NULL); -be_define_const_str(set_row_cnt, "set_row_cnt", 3198609400u, 0, 11, NULL); -be_define_const_str(FIT_TIGHT, "FIT_TIGHT", 2710930043u, 0, 9, &be_const_str_down); -be_define_const_str(down, "down", 1035581717u, 0, 4, &be_const_str_get_drag_parent); -be_define_const_str(get_drag_parent, "get_drag_parent", 1546081183u, 0, 15, &be_const_str_get_show_selected); -be_define_const_str(get_show_selected, "get_show_selected", 3185075651u, 0, 17, &be_const_str_set_style_local_transition_prop_1); -be_define_const_str(set_style_local_transition_prop_1, "set_style_local_transition_prop_1", 2585537343u, 0, 33, NULL); -be_define_const_str(RED, "RED", 2211354620u, 0, 3, &be_const_str_set_style_local_pattern_image); -be_define_const_str(set_style_local_pattern_image, "set_style_local_pattern_image", 350348106u, 0, 29, NULL); -be_define_const_str(get_zoom, "get_zoom", 2259829907u, 0, 8, &be_const_str_move_background); -be_define_const_str(move_background, "move_background", 3375135217u, 0, 15, NULL); -be_define_const_str(add_btn_right, "add_btn_right", 2154922694u, 0, 13, NULL); -be_define_const_str(align_x, "align_x", 3735213169u, 0, 7, &be_const_str_get_style_pad_left); -be_define_const_str(get_style_pad_left, "get_style_pad_left", 2843013833u, 0, 18, &be_const_str_set_auto_size); -be_define_const_str(set_auto_size, "set_auto_size", 903259741u, 0, 13, &be_const_str_update_mask); -be_define_const_str(update_mask, "update_mask", 833922029u, 0, 11, NULL); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_list_get_style); -be_define_const_str(list_get_style, "list_get_style", 2060904236u, 0, 14, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, NULL); -be_define_const_str(BAR_TYPE_SYMMETRICAL, "BAR_TYPE_SYMMETRICAL", 1357819710u, 0, 20, &be_const_str_get_style_image_opa); -be_define_const_str(get_style_image_opa, "get_style_image_opa", 111986494u, 0, 19, &be_const_str_set_scale_end_line_width); -be_define_const_str(set_scale_end_line_width, "set_scale_end_line_width", 1121812764u, 0, 24, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); -be_define_const_str(get_btn_text, "get_btn_text", 1417317686u, 0, 12, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_SHELLY_DIMMER_RST_INV); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_get_placeholder_text); -be_define_const_str(get_placeholder_text, "get_placeholder_text", 1148345333u, 0, 20, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_set_margin_right); -be_define_const_str(set_margin_right, "set_margin_right", 283278459u, 0, 16, NULL); -be_define_const_str(SSPI, "SSPI", 2469416576u, 0, 4, &be_const_str_area_is_visible); -be_define_const_str(area_is_visible, "area_is_visible", 4009415372u, 0, 15, NULL); -be_define_const_str(DISP_SIZE_MEDIUM, "DISP_SIZE_MEDIUM", 3336923135u, 0, 16, &be_const_str_HALLEFFECT); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_set_scale_width); -be_define_const_str(set_scale_width, "set_scale_width", 2442490229u, 0, 15, NULL); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_get_style_clip_corner); -be_define_const_str(get_style_clip_corner, "get_style_clip_corner", 352453368u, 0, 21, &be_const_str_set_style_local_border_side); -be_define_const_str(set_style_local_border_side, "set_style_local_border_side", 2699338750u, 0, 27, NULL); -be_define_const_str(STYLE_MARGIN_TOP, "STYLE_MARGIN_TOP", 4150683665u, 0, 16, &be_const_str_SYMBOL_IMAGE); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, NULL); -be_define_const_str(get_fit_right, "get_fit_right", 2037949402u, 0, 13, NULL); -be_define_const_str(PURPLE, "PURPLE", 2539335743u, 0, 6, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_get_parent); -be_define_const_str(get_parent, "get_parent", 350250280u, 0, 10, &be_const_str_get_text_sel_en); -be_define_const_str(get_text_sel_en, "get_text_sel_en", 500051850u, 0, 15, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(FIT_MAX, "FIT_MAX", 361794269u, 0, 7, &be_const_str_get_series_area); -be_define_const_str(get_series_area, "get_series_area", 1561258251u, 0, 15, &be_const_str_set_day_names); -be_define_const_str(set_day_names, "set_day_names", 1217780097u, 0, 13, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_LINEMETER_PART_MAIN); -be_define_const_str(LINEMETER_PART_MAIN, "LINEMETER_PART_MAIN", 1524851464u, 0, 19, &be_const_str_set_event_cb); -be_define_const_str(set_event_cb, "set_event_cb", 3611711604u, 0, 12, NULL); -be_define_const_str(GRAD_DIR_VER, "GRAD_DIR_VER", 1112540859u, 0, 12, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_set_style_local_transform_zoom); -be_define_const_str(set_style_local_transform_zoom, "set_style_local_transform_zoom", 3474945744u, 0, 30, NULL); -be_define_const_str(STYLE_VALUE_OFS_Y, "STYLE_VALUE_OFS_Y", 1374857417u, 0, 17, &be_const_str_set_max_length); -be_define_const_str(set_max_length, "set_max_length", 2269400999u, 0, 14, NULL); -be_define_const_str(EVENT_LONG_PRESSED_REPEAT, "EVENT_LONG_PRESSED_REPEAT", 1734201539u, 0, 25, &be_const_str_get_letter_pos); -be_define_const_str(get_letter_pos, "get_letter_pos", 1477814169u, 0, 14, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_del); -be_define_const_str(del, "del", 3478752842u, 0, 3, NULL); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(get_needle_img_pivot_y, "get_needle_img_pivot_y", 1504958664u, 0, 22, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_set_x_start_point); -be_define_const_str(set_x_start_point, "set_x_start_point", 257195034u, 0, 17, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(set_base_dir, "set_base_dir", 1813064609u, 0, 12, &be_const_str_set_style_local_value_color); -be_define_const_str(set_style_local_value_color, "set_style_local_value_color", 2695342403u, 0, 27, NULL); -be_define_const_str(get_style_transition_prop_2, "get_style_transition_prop_2", 3421169246u, 0, 27, &be_const_str_set_start_angle); -be_define_const_str(set_start_angle, "set_start_angle", 3152567416u, 0, 15, NULL); -be_define_const_str(STYLE_SHADOW_BLEND_MODE, "STYLE_SHADOW_BLEND_MODE", 4197731411u, 0, 23, &be_const_str_get_y_from_index); -be_define_const_str(get_y_from_index, "get_y_from_index", 2777682943u, 0, 16, &be_const_str_set_auto_fit); -be_define_const_str(set_auto_fit, "set_auto_fit", 1407948747u, 0, 12, NULL); -be_define_const_str(report_style_mod, "report_style_mod", 4174977870u, 0, 16, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_SLIDER_TYPE_RANGE); -be_define_const_str(SLIDER_TYPE_RANGE, "SLIDER_TYPE_RANGE", 1380197143u, 0, 17, &be_const_str_set_line_width); -be_define_const_str(set_line_width, "set_line_width", 908110269u, 0, 14, NULL); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_STYLE_BG_MAIN_STOP); -be_define_const_str(STYLE_BG_MAIN_STOP, "STYLE_BG_MAIN_STOP", 376609633u, 0, 18, &be_const_str_focus); -be_define_const_str(focus, "focus", 337658899u, 0, 5, NULL); -be_define_const_str(get_style_pattern_image, "get_style_pattern_image", 2402970102u, 0, 23, &be_const_str_set_shadow_spread); -be_define_const_str(set_shadow_spread, "set_shadow_spread", 3535503174u, 0, 17, NULL); -be_define_const_str(EVENT_INSERT, "EVENT_INSERT", 3754467621u, 0, 12, &be_const_str_MCP39F5_RX); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_get_color_mode); -be_define_const_str(get_color_mode, "get_color_mode", 833403171u, 0, 14, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_SYMBOL_PLUS); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_get_style_transform_angle); -be_define_const_str(get_style_transform_angle, "get_style_transform_angle", 1307352290u, 0, 25, &be_const_str_layer_top); -be_define_const_str(layer_top, "layer_top", 645939682u, 0, 9, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_set_y_range); -be_define_const_str(set_y_range, "set_y_range", 1531043725u, 0, 11, NULL); -be_define_const_str(PAGE_EDGE_TOP, "PAGE_EDGE_TOP", 869728962u, 0, 13, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_set_width); -be_define_const_str(set_width, "set_width", 484671920u, 0, 9, NULL); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_push); -be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_set_options_static); -be_define_const_str(set_options_static, "set_options_static", 652047717u, 0, 18, NULL); -be_define_const_str(CHECKBOX_PART_BG, "CHECKBOX_PART_BG", 1308611434u, 0, 16, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, NULL); -be_define_const_str(PROTECT_FOLLOW, "PROTECT_FOLLOW", 44354676u, 0, 14, &be_const_str_STYLE_TRANSITION_PROP_3); -be_define_const_str(STYLE_TRANSITION_PROP_3, "STYLE_TRANSITION_PROP_3", 962719262u, 0, 23, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_set_style_local_transform_height); -be_define_const_str(set_style_local_transform_height, "set_style_local_transform_height", 2823225328u, 0, 32, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(align_mid_y, "align_mid_y", 1664201395u, 0, 11, &be_const_str_get_style_shadow_opa); -be_define_const_str(get_style_shadow_opa, "get_style_shadow_opa", 2392646767u, 0, 20, &be_const_str_set_digit_format); -be_define_const_str(set_digit_format, "set_digit_format", 293274625u, 0, 16, NULL); -be_define_const_str(focus_btn, "focus_btn", 1087954772u, 0, 9, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, &be_const_str_set_transform_height); -be_define_const_str(set_transform_height, "set_transform_height", 3869973274u, 0, 20, NULL); -be_define_const_str(BAR_TYPE_CUSTOM, "BAR_TYPE_CUSTOM", 895647203u, 0, 15, &be_const_str_set_line_opa); -be_define_const_str(set_line_opa, "set_line_opa", 2983219519u, 0, 12, NULL); -be_define_const_str(ALIGN_OUT_BOTTOM_MID, "ALIGN_OUT_BOTTOM_MID", 2853556972u, 0, 20, &be_const_str_ETH_PHY_POWER); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_STATE_CHECKED); -be_define_const_str(STATE_CHECKED, "STATE_CHECKED", 136056964u, 0, 13, &be_const_str_get_ext_click_pad_top); -be_define_const_str(get_ext_click_pad_top, "get_ext_click_pad_top", 284862450u, 0, 21, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(get_base_dir, "get_base_dir", 1814851485u, 0, 12, NULL); -be_define_const_str(STYLE_SCALE_WIDTH, "STYLE_SCALE_WIDTH", 3756994736u, 0, 17, &be_const_str_STYLE_VALUE_STR); -be_define_const_str(STYLE_VALUE_STR, "STYLE_VALUE_STR", 144639168u, 0, 15, &be_const_str_SWT1); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_set_transform_angle); -be_define_const_str(set_transform_angle, "set_transform_angle", 2657176848u, 0, 19, NULL); -be_define_const_str(LABEL_ALIGN_LEFT, "LABEL_ALIGN_LEFT", 49345529u, 0, 16, &be_const_str_remove_obj); -be_define_const_str(remove_obj, "remove_obj", 2093082931u, 0, 10, NULL); -be_define_const_str(CHART_UPDATE_MODE_CIRCULAR, "CHART_UPDATE_MODE_CIRCULAR", 776810859u, 0, 26, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_TXT_FLAG_RIGHT); -be_define_const_str(TXT_FLAG_RIGHT, "TXT_FLAG_RIGHT", 3664649251u, 0, 14, &be_const_str_del_char_forward); -be_define_const_str(del_char_forward, "del_char_forward", 400381733u, 0, 16, NULL); -be_define_const_str(ANIM_ON, "ANIM_ON", 1377334024u, 0, 7, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_STYLE_SHADOW_WIDTH); -be_define_const_str(STYLE_SHADOW_WIDTH, "STYLE_SHADOW_WIDTH", 629491480u, 0, 18, &be_const_str_WEBCAM_PSCLK); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); -be_define_const_str(get_color, "get_color", 754086191u, 0, 9, &be_const_str_get_hsv); -be_define_const_str(get_hsv, "get_hsv", 774943805u, 0, 7, NULL); -be_define_const_str(set_col_cnt, "set_col_cnt", 3803893298u, 0, 11, NULL); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, NULL); be_define_const_str(set_edge_flash, "set_edge_flash", 1114840232u, 0, 14, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_get_cursor_pos); -be_define_const_str(get_cursor_pos, "get_cursor_pos", 3695280847u, 0, 14, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, NULL); -be_define_const_str(TEAL, "TEAL", 1728307679u, 0, 4, &be_const_str_get_selected); -be_define_const_str(get_selected, "get_selected", 2280142225u, 0, 12, &be_const_str_set_needle_count); -be_define_const_str(set_needle_count, "set_needle_count", 2611099555u, 0, 16, NULL); -be_define_const_str(STYLE_BG_GRAD_STOP, "STYLE_BG_GRAD_STOP", 1591142422u, 0, 18, &be_const_str_TXT_CMD_STATE_PAR); -be_define_const_str(TXT_CMD_STATE_PAR, "TXT_CMD_STATE_PAR", 159232374u, 0, 17, &be_const_str_set_transition_prop_6); -be_define_const_str(set_transition_prop_6, "set_transition_prop_6", 3050678964u, 0, 21, NULL); -be_define_const_str(get_style_bg_grad_stop, "get_style_bg_grad_stop", 1023453943u, 0, 22, &be_const_str_set_bg_blend_mode); -be_define_const_str(set_bg_blend_mode, "set_bg_blend_mode", 2432224687u, 0, 17, &be_const_str_set_hsv); -be_define_const_str(set_hsv, "set_hsv", 545841289u, 0, 7, NULL); -be_define_const_str(set_style_local_bg_grad_color, "set_style_local_bg_grad_color", 3774593842u, 0, 29, NULL); -be_define_const_str(STYLE_BG_GRAD_DIR, "STYLE_BG_GRAD_DIR", 2986594357u, 0, 17, &be_const_str_step_prev); -be_define_const_str(step_prev, "step_prev", 2831593421u, 0, 9, NULL); -be_define_const_str(set_today_date, "set_today_date", 3983571786u, 0, 14, NULL); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_get_series_axis); -be_define_const_str(get_series_axis, "get_series_axis", 524215363u, 0, 15, &be_const_str_get_width_grid); -be_define_const_str(get_width_grid, "get_width_grid", 2821365517u, 0, 14, &be_const_str_set_style_local_transition_path); -be_define_const_str(set_style_local_transition_path, "set_style_local_transition_path", 1414572505u, 0, 31, NULL); -be_define_const_str(CALENDAR_PART_DATE, "CALENDAR_PART_DATE", 1097756842u, 0, 18, &be_const_str_KEY1_INV_NP); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_set_style_local_text_sel_bg_color); -be_define_const_str(set_style_local_text_sel_bg_color, "set_style_local_text_sel_bg_color", 501411296u, 0, 33, &be_const_str_set_y_invert); -be_define_const_str(set_y_invert, "set_y_invert", 4003140588u, 0, 12, NULL); -be_define_const_str(CPICKER_COLOR_MODE_HUE, "CPICKER_COLOR_MODE_HUE", 1583032607u, 0, 22, &be_const_str_EVENT_DELETE); -be_define_const_str(EVENT_DELETE, "EVENT_DELETE", 282828603u, 0, 12, &be_const_str_ILI9341_CS); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, NULL); -be_define_const_str(get_style_line_width, "get_style_line_width", 1172338835u, 0, 20, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, NULL); -be_define_const_str(get_dir, "get_dir", 1037382287u, 0, 7, &be_const_str_get_group); -be_define_const_str(get_group, "get_group", 1497401467u, 0, 9, &be_const_str_set_value_letter_space); -be_define_const_str(set_value_letter_space, "set_value_letter_space", 1113519355u, 0, 22, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_STYLE_OUTLINE_WIDTH); -be_define_const_str(STYLE_OUTLINE_WIDTH, "STYLE_OUTLINE_WIDTH", 2786055068u, 0, 19, &be_const_str_increment); -be_define_const_str(increment, "increment", 940762942u, 0, 9, NULL); -be_define_const_str(get_style_margin_right, "get_style_margin_right", 2672767757u, 0, 22, &be_const_str_get_style_text_color); -be_define_const_str(get_style_text_color, "get_style_text_color", 1013168305u, 0, 20, &be_const_str_set_show_selected); -be_define_const_str(set_show_selected, "set_show_selected", 1276300495u, 0, 17, &be_const_str_set_style_local_transition_prop_5); -be_define_const_str(set_style_local_transition_prop_5, "set_style_local_transition_prop_5", 2518426867u, 0, 33, NULL); -be_define_const_str(set_style_local_bg_opa, "set_style_local_bg_opa", 1720245992u, 0, 22, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(get_ext_attr, "get_ext_attr", 2125271231u, 0, 12, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_GREEN); -be_define_const_str(GREEN, "GREEN", 2875364188u, 0, 5, &be_const_str_set_color_mode_fixed); -be_define_const_str(set_color_mode_fixed, "set_color_mode_fixed", 802591178u, 0, 20, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_NRF24_DC); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_SSD1351_DC); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, &be_const_str_set_mode); -be_define_const_str(set_mode, "set_mode", 4109106455u, 0, 8, NULL); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(get_selected_str, "get_selected_str", 1743823997u, 0, 16, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, &be_const_str_set_style_local_bg_blend_mode); -be_define_const_str(set_style_local_bg_blend_mode, "set_style_local_bg_blend_mode", 2691986893u, 0, 29, NULL); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(draw_line, "draw_line", 1634465686u, 0, 9, NULL); -be_define_const_str(FS_RES_DENIED, "FS_RES_DENIED", 63556207u, 0, 13, &be_const_str_LABEL_LONG_CROP); -be_define_const_str(LABEL_LONG_CROP, "LABEL_LONG_CROP", 4057484127u, 0, 15, &be_const_str_RXD); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_set_pattern_recolor); -be_define_const_str(set_pattern_recolor, "set_pattern_recolor", 3136030237u, 0, 19, &be_const_str_set_text_blend_mode); -be_define_const_str(set_text_blend_mode, "set_text_blend_mode", 1236604715u, 0, 19, NULL); -be_define_const_str(SLIDER_TYPE_SYMMETRICAL, "SLIDER_TYPE_SYMMETRICAL", 768283232u, 0, 23, &be_const_str_set_click); -be_define_const_str(set_click, "set_click", 2550101068u, 0, 9, NULL); -be_define_const_str(EVENT_DEFOCUSED, "EVENT_DEFOCUSED", 1034310644u, 0, 15, &be_const_str_get_btn_selected); -be_define_const_str(get_btn_selected, "get_btn_selected", 1715353004u, 0, 16, NULL); -be_define_const_str(FIT_NONE, "FIT_NONE", 692142959u, 0, 8, &be_const_str_set_style_local_text_decor); -be_define_const_str(set_style_local_text_decor, "set_style_local_text_decor", 2615974143u, 0, 26, NULL); -be_define_const_str(set_spin_time, "set_spin_time", 1386363784u, 0, 13, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_MIEL_HVAC_RX); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_set_line_rounded); -be_define_const_str(set_line_rounded, "set_line_rounded", 1057786792u, 0, 16, NULL); -be_define_const_str(get_child_back, "get_child_back", 3815628204u, 0, 14, &be_const_str_get_scrl_height); -be_define_const_str(get_scrl_height, "get_scrl_height", 1933731194u, 0, 15, &be_const_str_set_margin_top); -be_define_const_str(set_margin_top, "set_margin_top", 805678094u, 0, 14, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_ins_text); -be_define_const_str(ins_text, "ins_text", 2467863999u, 0, 8, &be_const_str_set_scrollable_fit); -be_define_const_str(set_scrollable_fit, "set_scrollable_fit", 4068661613u, 0, 18, &be_const_str_set_visible_row_count); -be_define_const_str(set_visible_row_count, "set_visible_row_count", 840407905u, 0, 21, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(get_title, "get_title", 1263271230u, 0, 9, &be_const_str_set_drag_dir); -be_define_const_str(set_drag_dir, "set_drag_dir", 2315801594u, 0, 12, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_TABVIEW_TAB_POS_NONE); -be_define_const_str(TABVIEW_TAB_POS_NONE, "TABVIEW_TAB_POS_NONE", 3094416879u, 0, 20, &be_const_str_get_content); -be_define_const_str(get_content, "get_content", 2390895261u, 0, 11, &be_const_str_get_offset_y); -be_define_const_str(get_offset_y, "get_offset_y", 3939359167u, 0, 12, &be_const_str_set_style_local_text_blend_mode); -be_define_const_str(set_style_local_text_blend_mode, "set_style_local_text_blend_mode", 3467626777u, 0, 31, NULL); -be_define_const_str(set_options, "set_options", 2975436170u, 0, 11, NULL); -be_define_const_str(get_tab, "get_tab", 2415176615u, 0, 7, NULL); -be_define_const_str(finish_transitions, "finish_transitions", 1663237457u, 0, 18, NULL); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_get_angle_offset); -be_define_const_str(get_angle_offset, "get_angle_offset", 2775374871u, 0, 16, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); -be_define_const_str(OPA_COVER, "OPA_COVER", 3000088857u, 0, 9, &be_const_str_SAIR_TX); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_add_element); -be_define_const_str(add_element, "add_element", 940011507u, 0, 11, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, NULL); -be_define_const_str(DISP_SIZE_SMALL, "DISP_SIZE_SMALL", 722343095u, 0, 15, &be_const_str_DYP_RX); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(DRAG_DIR_VER, "DRAG_DIR_VER", 3097064297u, 0, 12, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_BTN_STATE_CHECKED_PRESSED); -be_define_const_str(BTN_STATE_CHECKED_PRESSED, "BTN_STATE_CHECKED_PRESSED", 2837756846u, 0, 25, &be_const_str_get_saturation); -be_define_const_str(get_saturation, "get_saturation", 3458845696u, 0, 14, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_set_layout); -be_define_const_str(set_layout, "set_layout", 3108581018u, 0, 10, &be_const_str_set_pivot); -be_define_const_str(set_pivot, "set_pivot", 2329940872u, 0, 9, NULL); -be_define_const_str(set_style_local_scale_width, "set_style_local_scale_width", 2071128255u, 0, 27, NULL); -be_define_const_str(CHART_CURSOR_LEFT, "CHART_CURSOR_LEFT", 2003546122u, 0, 17, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_get_hidden); -be_define_const_str(get_hidden, "get_hidden", 2608152268u, 0, 10, &be_const_str_get_hor_res); -be_define_const_str(get_hor_res, "get_hor_res", 37131144u, 0, 11, &be_const_str_get_recolor); -be_define_const_str(get_recolor, "get_recolor", 4128330436u, 0, 11, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_get_fit_top); -be_define_const_str(get_fit_top, "get_fit_top", 1805788963u, 0, 11, NULL); -be_define_const_str(CHART_AXIS_PRIMARY_Y, "CHART_AXIS_PRIMARY_Y", 2499204580u, 0, 20, &be_const_str_KEY_UP); -be_define_const_str(KEY_UP, "KEY_UP", 1961213356u, 0, 6, NULL); -be_define_const_str(set_top, "set_top", 1234335895u, 0, 7, NULL); -be_define_const_str(get_style_scale_end_color, "get_style_scale_end_color", 142275754u, 0, 25, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); -be_define_const_str(set_bg_grad_stop, "set_bg_grad_stop", 1329650389u, 0, 16, &be_const_str_set_style_local_pattern_recolor); -be_define_const_str(set_style_local_pattern_recolor, "set_style_local_pattern_recolor", 2810797623u, 0, 31, NULL); -be_define_const_str(BLACK, "BLACK", 1750494276u, 0, 5, &be_const_str_PULLDOWN); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SYMBOL_CUT); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_get_ver_res); -be_define_const_str(get_ver_res, "get_ver_res", 4160557208u, 0, 11, &be_const_str_set_cell_value_fmt); -be_define_const_str(set_cell_value_fmt, "set_cell_value_fmt", 355090466u, 0, 18, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(DROPDOWN_DIR_DOWN, "DROPDOWN_DIR_DOWN", 214322625u, 0, 17, &be_const_str_STYLE_PATTERN_RECOLOR_OPA); -be_define_const_str(STYLE_PATTERN_RECOLOR_OPA, "STYLE_PATTERN_RECOLOR_OPA", 3355859281u, 0, 25, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_TXT_CMD_STATE_IN); -be_define_const_str(TXT_CMD_STATE_IN, "TXT_CMD_STATE_IN", 2162626840u, 0, 16, &be_const_str_set_antialias); -be_define_const_str(set_antialias, "set_antialias", 1998560096u, 0, 13, NULL); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_set_value_str); -be_define_const_str(set_value_str, "set_value_str", 2950562969u, 0, 13, NULL); -be_define_const_str(get_drag, "get_drag", 1996600010u, 0, 8, &be_const_str_set_tab_act); -be_define_const_str(set_tab_act, "set_tab_act", 2505737680u, 0, 11, &be_const_str_set_transform_zoom); -be_define_const_str(set_transform_zoom, "set_transform_zoom", 140970906u, 0, 18, NULL); -be_define_const_str(get_adv_hittest, "get_adv_hittest", 1985963887u, 0, 15, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_on_edge); -be_define_const_str(on_edge, "on_edge", 1159443540u, 0, 7, &be_const_str_set_bg_opa); -be_define_const_str(set_bg_opa, "set_bg_opa", 3379539138u, 0, 10, NULL); -be_define_const_str(ALIGN_OUT_LEFT_BOTTOM, "ALIGN_OUT_LEFT_BOTTOM", 1578004935u, 0, 21, &be_const_str_RISING); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_get_style_line_opa); -be_define_const_str(get_style_line_opa, "get_style_line_opa", 3653868853u, 0, 18, NULL); -be_define_const_str(get_style_text_sel_bg_color, "get_style_text_sel_bg_color", 1889477676u, 0, 27, NULL); -be_define_const_str(set_checked, "set_checked", 1119609005u, 0, 11, NULL); -be_define_const_str(get_antialias, "get_antialias", 220729812u, 0, 13, NULL); -be_define_const_str(def_event_cb, "def_event_cb", 3544166485u, 0, 12, NULL); -be_define_const_str(set_refocus_policy, "set_refocus_policy", 3274550126u, 0, 18, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_get_inner_coords); -be_define_const_str(get_inner_coords, "get_inner_coords", 985433607u, 0, 16, &be_const_str_get_style_text_letter_space); -be_define_const_str(get_style_text_letter_space, "get_style_text_letter_space", 772735187u, 0, 27, NULL); -be_define_const_str(ALIGN_OUT_TOP_RIGHT, "ALIGN_OUT_TOP_RIGHT", 1193969648u, 0, 19, &be_const_str_IRSEND); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_PAGE_EDGE_LEFT); -be_define_const_str(PAGE_EDGE_LEFT, "PAGE_EDGE_LEFT", 4240364242u, 0, 14, &be_const_str_set_transition_prop_2); -be_define_const_str(set_transition_prop_2, "set_transition_prop_2", 2983568488u, 0, 21, NULL); -be_define_const_str(close_event_cb, "close_event_cb", 1180945172u, 0, 14, &be_const_str_get_bg_angle_start); -be_define_const_str(get_bg_angle_start, "get_bg_angle_start", 1794378932u, 0, 18, NULL); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(set_margin_bottom, "set_margin_bottom", 1238288976u, 0, 17, NULL); -be_define_const_str(set_chg_rate, "set_chg_rate", 1522157679u, 0, 12, NULL); -be_define_const_str(LABEL_ALIGN_RIGHT, "LABEL_ALIGN_RIGHT", 3127457722u, 0, 17, NULL); -be_define_const_str(get_style_shadow_width, "get_style_shadow_width", 4237112141u, 0, 22, &be_const_str_get_style_text_line_space); -be_define_const_str(get_style_text_line_space, "get_style_text_line_space", 1588877665u, 0, 25, NULL); -be_define_const_str(FS_RES_OK, "FS_RES_OK", 223294622u, 0, 9, &be_const_str_PROTECT_CHILD_CHG); -be_define_const_str(PROTECT_CHILD_CHG, "PROTECT_CHILD_CHG", 998079554u, 0, 17, &be_const_str_PZEM004_RX); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, NULL); -be_define_const_str(CHART_UPDATE_MODE_SHIFT, "CHART_UPDATE_MODE_SHIFT", 1343723110u, 0, 23, NULL); -be_define_const_str(OPA_70, "OPA_70", 2109709301u, 0, 6, &be_const_str_STYLE_SHADOW_SPREAD); -be_define_const_str(STYLE_SHADOW_SPREAD, "STYLE_SHADOW_SPREAD", 3685821355u, 0, 19, &be_const_str_get_cell_crop); -be_define_const_str(get_cell_crop, "get_cell_crop", 2916382555u, 0, 13, &be_const_str_get_focused_obj); -be_define_const_str(get_focused_obj, "get_focused_obj", 208302839u, 0, 15, &be_const_str_get_one_line); -be_define_const_str(get_one_line, "get_one_line", 3981525171u, 0, 12, NULL); -be_define_const_str(SPINNER_TYPE_SPINNING_ARC, "SPINNER_TYPE_SPINNING_ARC", 3298556409u, 0, 25, &be_const_str_set_style_local_bg_color); -be_define_const_str(set_style_local_bg_color, "set_style_local_bg_color", 3796704273u, 0, 24, NULL); -be_define_const_str(OBJ_PART_MAIN, "OBJ_PART_MAIN", 658062838u, 0, 13, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_LABEL_LONG_EXPAND); -be_define_const_str(LABEL_LONG_EXPAND, "LABEL_LONG_EXPAND", 2357238585u, 0, 17, NULL); -be_define_const_str(STYLE_TEXT_DECOR, "STYLE_TEXT_DECOR", 2624841926u, 0, 16, &be_const_str_add_option); -be_define_const_str(add_option, "add_option", 3444380864u, 0, 10, &be_const_str_get_hue); -be_define_const_str(get_hue, "get_hue", 1060457518u, 0, 7, NULL); -be_define_const_str(get_active_btn, "get_active_btn", 3720382749u, 0, 14, &be_const_str_get_rollover); -be_define_const_str(get_rollover, "get_rollover", 2637132577u, 0, 12, NULL); -be_define_const_str(get_style_pad_right, "get_style_pad_right", 3150287466u, 0, 19, &be_const_str_send_data); -be_define_const_str(send_data, "send_data", 4178328760u, 0, 9, &be_const_str_set_scale_end_color); -be_define_const_str(set_scale_end_color, "set_scale_end_color", 355018320u, 0, 19, NULL); -be_define_const_str(get_pwd_show_time, "get_pwd_show_time", 2965915687u, 0, 17, NULL); -be_define_const_str(clear_series, "clear_series", 3353669054u, 0, 12, &be_const_str_get_auto_realign); -be_define_const_str(get_auto_realign, "get_auto_realign", 4029512850u, 0, 16, &be_const_str_refr_text); -be_define_const_str(refr_text, "refr_text", 3162090502u, 0, 9, NULL); -be_define_const_str(CHART_TYPE_NONE, "CHART_TYPE_NONE", 1127256103u, 0, 15, &be_const_str_get_scrl_fit_right); -be_define_const_str(get_scrl_fit_right, "get_scrl_fit_right", 4214186985u, 0, 18, &be_const_str_get_style_transition_prop_5); -be_define_const_str(get_style_transition_prop_5, "get_style_transition_prop_5", 3471502103u, 0, 27, NULL); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_set_max_height); -be_define_const_str(set_max_height, "set_max_height", 394927448u, 0, 14, NULL); -be_define_const_str(VSPI, "VSPI", 790634249u, 0, 4, &be_const_str_set_end_angle); -be_define_const_str(set_end_angle, "set_end_angle", 2783087761u, 0, 13, NULL); -be_define_const_str(clean, "clean", 1349386046u, 0, 5, &be_const_str_get_cursor_manage); -be_define_const_str(get_cursor_manage, "get_cursor_manage", 2216849296u, 0, 17, &be_const_str_set_cell_align); -be_define_const_str(set_cell_align, "set_cell_align", 3036710638u, 0, 14, &be_const_str_set_line_blend_mode); -be_define_const_str(set_line_blend_mode, "set_line_blend_mode", 350784568u, 0, 19, NULL); -be_define_const_str(GRAD_DIR_HOR, "GRAD_DIR_HOR", 2383101491u, 0, 12, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_set_text_fmt); -be_define_const_str(set_text_fmt, "set_text_fmt", 699875119u, 0, 12, NULL); -be_define_const_str(set_height_margin, "set_height_margin", 3083248294u, 0, 17, &be_const_str_set_style_local_outline_pad); -be_define_const_str(set_style_local_outline_pad, "set_style_local_outline_pad", 3480414734u, 0, 27, NULL); -be_define_const_str(get_nearest_index_from_coord, "get_nearest_index_from_coord", 847963620u, 0, 28, &be_const_str_is_char_under_pos); -be_define_const_str(is_char_under_pos, "is_char_under_pos", 2744967102u, 0, 17, &be_const_str_set_value_ofs_y); -be_define_const_str(set_value_ofs_y, "set_value_ofs_y", 95673184u, 0, 15, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, NULL); -be_define_const_str(set_one_line, "set_one_line", 3397406135u, 0, 12, NULL); -be_define_const_str(EVENT_DRAG_END, "EVENT_DRAG_END", 3617672228u, 0, 14, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_set_pattern_image); -be_define_const_str(set_pattern_image, "set_pattern_image", 1204394880u, 0, 17, NULL); -be_define_const_str(DISP_ROT_270, "DISP_ROT_270", 3187294969u, 0, 12, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_set_fit2); -be_define_const_str(set_fit2, "set_fit2", 4226206571u, 0, 8, &be_const_str_set_needle_img); -be_define_const_str(set_needle_img, "set_needle_img", 1214192915u, 0, 14, &be_const_str_set_width_margin); -be_define_const_str(set_width_margin, "set_width_margin", 2313657923u, 0, 16, NULL); -be_define_const_str(get_file_name, "get_file_name", 3239886120u, 0, 13, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_DHT22); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_ETH_PHY_MDC); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_STYLE_TEXT_SEL_COLOR); -be_define_const_str(STYLE_TEXT_SEL_COLOR, "STYLE_TEXT_SEL_COLOR", 1096559567u, 0, 20, &be_const_str_STYLE_TRANSITION_PROP_4); -be_define_const_str(STYLE_TRANSITION_PROP_4, "STYLE_TRANSITION_PROP_4", 1013052119u, 0, 23, NULL); -be_define_const_str(invalidate_area, "invalidate_area", 1904223292u, 0, 15, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, &be_const_str_set_text_sel_color); -be_define_const_str(set_text_sel_color, "set_text_sel_color", 1561573604u, 0, 18, NULL); -be_define_const_str(count_children_recursive, "count_children_recursive", 497030885u, 0, 24, &be_const_str_get_anim_time); -be_define_const_str(get_anim_time, "get_anim_time", 641972335u, 0, 13, &be_const_str_get_header_height); -be_define_const_str(get_header_height, "get_header_height", 3313773581u, 0, 17, &be_const_str_set_accepted_chars); -be_define_const_str(set_accepted_chars, "set_accepted_chars", 3900817531u, 0, 18, NULL); -be_define_const_str(FS_RES_OUT_OF_MEM, "FS_RES_OUT_OF_MEM", 802499854u, 0, 17, &be_const_str_STATE_HOVERED); -be_define_const_str(STATE_HOVERED, "STATE_HOVERED", 1864667050u, 0, 13, NULL); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_TXD); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_get_style_transition_delay); -be_define_const_str(get_style_transition_delay, "get_style_transition_delay", 1536173465u, 0, 26, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_set_style_local_pad_right); -be_define_const_str(set_style_local_pad_right, "set_style_local_pad_right", 1126712366u, 0, 25, NULL); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, NULL); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_get_options); -be_define_const_str(get_options, "get_options", 1198221094u, 0, 11, &be_const_str_layer_sys); -be_define_const_str(layer_sys, "layer_sys", 593658256u, 0, 9, &be_const_str_remove_mask); -be_define_const_str(remove_mask, "remove_mask", 1680723542u, 0, 11, NULL); -be_define_const_str(STYLE_SHADOW_OFS_X, "STYLE_SHADOW_OFS_X", 2707391813u, 0, 18, NULL); -be_define_const_str(LABEL_LONG_DOT, "LABEL_LONG_DOT", 1312457976u, 0, 14, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_set_parent); -be_define_const_str(set_parent, "set_parent", 1528807100u, 0, 10, &be_const_str_set_text_sel_bg_color); -be_define_const_str(set_text_sel_bg_color, "set_text_sel_bg_color", 3929347886u, 0, 21, NULL); -be_define_const_str(get_style_pad_bottom, "get_style_pad_bottom", 1749510283u, 0, 20, NULL); -be_define_const_str(CHART_PART_CURSOR, "CHART_PART_CURSOR", 2123603184u, 0, 17, &be_const_str_MAX7219CS); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_set_pattern_blend_mode); -be_define_const_str(set_pattern_blend_mode, "set_pattern_blend_mode", 4267769432u, 0, 22, NULL); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_get_anim_speed); -be_define_const_str(get_anim_speed, "get_anim_speed", 1731518217u, 0, 14, NULL); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_get_color_mode_fixed); -be_define_const_str(get_color_mode_fixed, "get_color_mode_fixed", 2272722254u, 0, 20, NULL); -be_define_const_str(PROTECT_NONE, "PROTECT_NONE", 2861685391u, 0, 12, &be_const_str_TUYA_RX); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_set_recolor); -be_define_const_str(set_recolor, "set_recolor", 2750390248u, 0, 11, NULL); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_set_secondary_y_tick_texts); -be_define_const_str(set_secondary_y_tick_texts, "set_secondary_y_tick_texts", 2165523729u, 0, 26, NULL); -be_define_const_str(get_style_bg_opa, "get_style_bg_opa", 1274566692u, 0, 16, NULL); -be_define_const_str(set_size, "set_size", 2183165325u, 0, 8, NULL); -be_define_const_str(set_pad_bottom, "set_pad_bottom", 900543569u, 0, 14, &be_const_str_set_transition_prop_5); -be_define_const_str(set_transition_prop_5, "set_transition_prop_5", 3101011821u, 0, 21, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_get_style_scale_grad_color); -be_define_const_str(get_style_scale_grad_color, "get_style_scale_grad_color", 715761969u, 0, 26, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_set_drag); -be_define_const_str(set_drag, "set_drag", 2586329126u, 0, 8, NULL); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_STYLE_BORDER_WIDTH); -be_define_const_str(STYLE_BORDER_WIDTH, "STYLE_BORDER_WIDTH", 2777818658u, 0, 18, &be_const_str_SYMBOL_DRIVE); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_set_map); -be_define_const_str(set_map, "set_map", 4012856954u, 0, 7, NULL); -be_define_const_str(get_btns_pos, "get_btns_pos", 2951340984u, 0, 12, &be_const_str_get_style_bg_main_stop); -be_define_const_str(get_style_bg_main_stop, "get_style_bg_main_stop", 3096799724u, 0, 22, NULL); -be_define_const_str(get_text, "get_text", 3133031679u, 0, 8, NULL); -be_define_const_str(LAYOUT_PRETTY_TOP, "LAYOUT_PRETTY_TOP", 725519108u, 0, 17, &be_const_str_get_label_count); -be_define_const_str(get_label_count, "get_label_count", 1700997322u, 0, 15, NULL); -be_define_const_str(BTNMATRIX_CTRL_CHECKABLE, "BTNMATRIX_CTRL_CHECKABLE", 2892484613u, 0, 24, &be_const_str_LIST_PART_BG); -be_define_const_str(LIST_PART_BG, "LIST_PART_BG", 1920031543u, 0, 12, NULL); -be_define_const_str(CPICKER_TYPE_RECT, "CPICKER_TYPE_RECT", 126543004u, 0, 17, &be_const_str_init_draw_line_dsc); -be_define_const_str(init_draw_line_dsc, "init_draw_line_dsc", 2507936040u, 0, 18, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_set_style_local_margin_bottom); -be_define_const_str(set_style_local_margin_bottom, "set_style_local_margin_bottom", 3687231326u, 0, 29, NULL); -be_define_const_str(ARC_PART_INDIC, "ARC_PART_INDIC", 1749778975u, 0, 14, &be_const_str_add_char); -be_define_const_str(add_char, "add_char", 2276421097u, 0, 8, &be_const_str_set_drag_parent); -be_define_const_str(set_drag_parent, "set_drag_parent", 3979167347u, 0, 15, NULL); -be_define_const_str(decrement, "decrement", 432748210u, 0, 9, &be_const_str_get_style_border_color); -be_define_const_str(get_style_border_color, "get_style_border_color", 4173187188u, 0, 22, NULL); -be_define_const_str(draw_img, "draw_img", 3217263339u, 0, 8, &be_const_str_set_style_local_text_letter_space); -be_define_const_str(set_style_local_text_letter_space, "set_style_local_text_letter_space", 2313398111u, 0, 33, NULL); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(OPA_100, "OPA_100", 3698564393u, 0, 7, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(SCROLLBAR_MODE_HIDE, "SCROLLBAR_MODE_HIDE", 3451699170u, 0, 19, NULL); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_set_offset_y); -be_define_const_str(set_offset_y, "set_offset_y", 437927531u, 0, 12, NULL); -be_define_const_str(ALIGN_IN_TOP_LEFT, "ALIGN_IN_TOP_LEFT", 1231214604u, 0, 17, &be_const_str_align_y); -be_define_const_str(align_y, "align_y", 3718435550u, 0, 7, &be_const_str_allocate_ext_attr); -be_define_const_str(allocate_ext_attr, "allocate_ext_attr", 915956424u, 0, 17, NULL); -be_define_const_str(SPI, "SPI", 1746663213u, 0, 3, &be_const_str_STYLE_PATTERN_BLEND_MODE); -be_define_const_str(STYLE_PATTERN_BLEND_MODE, "STYLE_PATTERN_BLEND_MODE", 2331743867u, 0, 24, &be_const_str_TM1637CLK); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, NULL); -be_define_const_str(CHART_CURSOR_UP, "CHART_CURSOR_UP", 2345195814u, 0, 15, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_STYLE_VALUE_COLOR); -be_define_const_str(STYLE_VALUE_COLOR, "STYLE_VALUE_COLOR", 2491635400u, 0, 17, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, NULL); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, NULL); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(BLUE, "BLUE", 750204685u, 0, 4, &be_const_str_SPI_DC); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_set_style_local_line_opa); -be_define_const_str(set_style_local_line_opa, "set_style_local_line_opa", 909807497u, 0, 24, NULL); -be_define_const_str(draw_polygon, "draw_polygon", 271325674u, 0, 12, NULL); -be_define_const_str(DROPDOWN_DIR_RIGHT, "DROPDOWN_DIR_RIGHT", 103533641u, 0, 18, &be_const_str_set_pwd_show_time); -be_define_const_str(set_pwd_show_time, "set_pwd_show_time", 2699027795u, 0, 17, &be_const_str_set_shadow_opa); -be_define_const_str(set_shadow_opa, "set_shadow_opa", 1336611849u, 0, 14, NULL); -be_define_const_str(STATE_DEFAULT, "STATE_DEFAULT", 712406428u, 0, 13, &be_const_str_STYLE_OUTLINE_OPA); -be_define_const_str(STYLE_OUTLINE_OPA, "STYLE_OUTLINE_OPA", 1357184754u, 0, 17, &be_const_str_STYLE_TEXT_LINE_SPACE); -be_define_const_str(STYLE_TEXT_LINE_SPACE, "STYLE_TEXT_LINE_SPACE", 4185649482u, 0, 21, &be_const_str_get_point_id); -be_define_const_str(get_point_id, "get_point_id", 2837084878u, 0, 12, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_LAYOUT_PRETTY_MID); -be_define_const_str(LAYOUT_PRETTY_MID, "LAYOUT_PRETTY_MID", 2040633917u, 0, 17, &be_const_str_STYLE_PAD_INNER); -be_define_const_str(STYLE_PAD_INNER, "STYLE_PAD_INNER", 1651002267u, 0, 15, &be_const_str_get_cell_type); -be_define_const_str(get_cell_type, "get_cell_type", 3348412009u, 0, 13, &be_const_str_get_style_border_width); -be_define_const_str(get_style_border_width, "get_style_border_width", 3436292763u, 0, 22, &be_const_str_get_value); -be_define_const_str(get_value, "get_value", 3844420137u, 0, 9, &be_const_str_set_style_local_size); -be_define_const_str(set_style_local_size, "set_style_local_size", 1442450187u, 0, 20, NULL); -be_define_const_str(DRAG_DIR_HOR, "DRAG_DIR_HOR", 1213227361u, 0, 12, &be_const_str_KEY1_TC); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_RC522_RST); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_set_style_local_border_post); -be_define_const_str(set_style_local_border_post, "set_style_local_border_post", 4148896231u, 0, 27, NULL); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_get_style_margin_top); -be_define_const_str(get_style_margin_top, "get_style_margin_top", 2201799028u, 0, 20, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); -be_define_const_str(SCROLLBAR_MODE_DRAG, "SCROLLBAR_MODE_DRAG", 2145885996u, 0, 19, &be_const_str_get_cell_value); -be_define_const_str(get_cell_value, "get_cell_value", 3068122638u, 0, 14, NULL); -be_define_const_str(ALIGN_IN_LEFT_MID, "ALIGN_IN_LEFT_MID", 60432565u, 0, 17, &be_const_str_set_value_blend_mode); -be_define_const_str(set_value_blend_mode, "set_value_blend_mode", 86539269u, 0, 20, NULL); -be_define_const_str(set_hue, "set_hue", 830075074u, 0, 7, &be_const_str_set_radius); -be_define_const_str(set_radius, "set_radius", 1362452298u, 0, 10, NULL); -be_define_const_str(LABEL_ALIGN_AUTO, "LABEL_ALIGN_AUTO", 1755016863u, 0, 16, &be_const_str_set_style_local_scale_grad_color); -be_define_const_str(set_style_local_scale_grad_color, "set_style_local_scale_grad_color", 1682685285u, 0, 32, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_get_scale_angle); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_TXT_FLAG_NONE); +be_define_const_str(TXT_FLAG_NONE, "TXT_FLAG_NONE", 3092237369u, 0, 13, &be_const_str_align_mid); +be_define_const_str(align_mid, "align_mid", 497514711u, 0, 9, &be_const_str_get_scale_angle); be_define_const_str(get_scale_angle, "get_scale_angle", 845147062u, 0, 15, NULL); -be_define_const_str(FS_MODE_RD, "FS_MODE_RD", 2906271023u, 0, 10, NULL); -be_define_const_str(STYLE_VALUE_OFS_X, "STYLE_VALUE_OFS_X", 1358079798u, 0, 17, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); -be_define_const_str(ALIGN_IN_TOP_RIGHT, "ALIGN_IN_TOP_RIGHT", 3273089785u, 0, 18, &be_const_str_get_fit_left); -be_define_const_str(get_fit_left, "get_fit_left", 2671576953u, 0, 12, NULL); -be_define_const_str(CPICKER_PART_MAIN, "CPICKER_PART_MAIN", 4275135052u, 0, 17, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_copy_buf); -be_define_const_str(copy_buf, "copy_buf", 2209552774u, 0, 8, &be_const_str_set_image_recolor); -be_define_const_str(set_image_recolor, "set_image_recolor", 271208598u, 0, 17, NULL); -be_define_const_str(CHART_PART_BG, "CHART_PART_BG", 990069269u, 0, 13, &be_const_str_CHART_TYPE_LINE); -be_define_const_str(CHART_TYPE_LINE, "CHART_TYPE_LINE", 1459459819u, 0, 15, &be_const_str_STYLE_BG_OPA); -be_define_const_str(STYLE_BG_OPA, "STYLE_BG_OPA", 1487941245u, 0, 12, NULL); -be_define_const_str(ARC_PART_KNOB, "ARC_PART_KNOB", 1431875030u, 0, 13, &be_const_str_FS_RES_UNKNOWN); -be_define_const_str(FS_RES_UNKNOWN, "FS_RES_UNKNOWN", 352331702u, 0, 14, &be_const_str_MAGENTA); -be_define_const_str(MAGENTA, "MAGENTA", 1444046984u, 0, 7, &be_const_str_SYMBOL_EDIT); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_is_dragged); -be_define_const_str(is_dragged, "is_dragged", 1443807988u, 0, 10, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); -be_define_const_str(get_style_image_recolor_opa, "get_style_image_recolor_opa", 1049713209u, 0, 27, NULL); -be_define_const_str(get_style_transition_prop_1, "get_style_transition_prop_1", 3404391627u, 0, 27, NULL); -be_define_const_str(ALIGN_OUT_LEFT_MID, "ALIGN_OUT_LEFT_MID", 4283557662u, 0, 18, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_get_pressed_cell); -be_define_const_str(get_pressed_cell, "get_pressed_cell", 2707217039u, 0, 16, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(get_user_data, "get_user_data", 1175796436u, 0, 13, &be_const_str_move_foreground); -be_define_const_str(move_foreground, "move_foreground", 2558800524u, 0, 15, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(set_mirror, "set_mirror", 1608447367u, 0, 10, NULL); -be_define_const_str(set_text_static, "set_text_static", 3831207210u, 0, 15, NULL); -be_define_const_str(CPICKER_COLOR_MODE_VALUE, "CPICKER_COLOR_MODE_VALUE", 980055508u, 0, 24, &be_const_str_get_x_start_point); -be_define_const_str(get_x_start_point, "get_x_start_point", 4100384878u, 0, 17, &be_const_str_set_wrap); -be_define_const_str(set_wrap, "set_wrap", 776352320u, 0, 8, NULL); -be_define_const_str(STYLE_BORDER_SIDE, "STYLE_BORDER_SIDE", 3876109589u, 0, 17, &be_const_str_get_size); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, NULL); -be_define_const_str(BORDER_SIDE_NONE, "BORDER_SIDE_NONE", 3808959734u, 0, 16, &be_const_str_get_spin_time); -be_define_const_str(get_spin_time, "get_spin_time", 1036768940u, 0, 13, NULL); -be_define_const_str(TXT_FLAG_RECOLOR, "TXT_FLAG_RECOLOR", 2017218753u, 0, 16, &be_const_str_set_left_value); -be_define_const_str(set_left_value, "set_left_value", 731130751u, 0, 14, NULL); -be_define_const_str(is_protected, "is_protected", 1864002268u, 0, 12, &be_const_str_set_border_side); -be_define_const_str(set_border_side, "set_border_side", 466446692u, 0, 15, NULL); -be_define_const_str(DISP_ROT_180, "DISP_ROT_180", 1300448899u, 0, 12, &be_const_str_PZEM016_RX); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_STYLE_OUTLINE_COLOR); -be_define_const_str(STYLE_OUTLINE_COLOR, "STYLE_OUTLINE_COLOR", 2723763111u, 0, 19, &be_const_str_get_btn_width); -be_define_const_str(get_btn_width, "get_btn_width", 254956887u, 0, 13, &be_const_str_set_style_local_value_ofs_x); -be_define_const_str(set_style_local_value_ofs_x, "set_style_local_value_ofs_x", 3057670197u, 0, 27, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_get_cursor_click_pos); -be_define_const_str(get_cursor_click_pos, "get_cursor_click_pos", 3249294464u, 0, 20, &be_const_str_set_style_local_pattern_recolor_opa); -be_define_const_str(set_style_local_pattern_recolor_opa, "set_style_local_pattern_recolor_opa", 2215956762u, 0, 35, NULL); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_add_btns); -be_define_const_str(add_btns, "add_btns", 828629896u, 0, 8, &be_const_str_align_mid_x); -be_define_const_str(align_mid_x, "align_mid_x", 1647423776u, 0, 11, NULL); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); -be_define_const_str(get_width, "get_width", 3293417300u, 0, 9, &be_const_str_set_style_local_pattern_repeat); -be_define_const_str(set_style_local_pattern_repeat, "set_style_local_pattern_repeat", 2930402426u, 0, 30, &be_const_str_set_symbol); -be_define_const_str(set_symbol, "set_symbol", 2254998928u, 0, 10, NULL); -be_define_const_str(FIT_PARENT, "FIT_PARENT", 3852740121u, 0, 10, &be_const_str_SDS0X1_RX); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_STYLE_MARGIN_BOTTOM); -be_define_const_str(STYLE_MARGIN_BOTTOM, "STYLE_MARGIN_BOTTOM", 4176801053u, 0, 19, NULL); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); -be_define_const_str(get_focus_parent, "get_focus_parent", 1187935525u, 0, 16, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); -be_define_const_str(set_line_dash_gap, "set_line_dash_gap", 3499494412u, 0, 17, NULL); -be_define_const_str(EVENT_RELEASED, "EVENT_RELEASED", 4173795963u, 0, 14, &be_const_str_cursor_up); -be_define_const_str(cursor_up, "cursor_up", 4142217213u, 0, 9, &be_const_str_get_style_value_ofs_x); -be_define_const_str(get_style_value_ofs_x, "get_style_value_ofs_x", 4017645761u, 0, 21, NULL); -be_define_const_str(KEY_BACKSPACE, "KEY_BACKSPACE", 269443424u, 0, 13, &be_const_str_NEOPOOL_RX); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, NULL); -be_define_const_str(PROTECT_POS, "PROTECT_POS", 1960404285u, 0, 11, NULL); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_set_btns_pos); -be_define_const_str(set_btns_pos, "set_btns_pos", 3991891940u, 0, 12, &be_const_str_set_formatter_cb); -be_define_const_str(set_formatter_cb, "set_formatter_cb", 1245371562u, 0, 16, &be_const_str_set_gesture_parent); -be_define_const_str(set_gesture_parent, "set_gesture_parent", 3726242272u, 0, 18, NULL); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_del_async); -be_define_const_str(del_async, "del_async", 2148432385u, 0, 9, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_up); -be_define_const_str(up, "up", 1128467232u, 0, 2, NULL); -be_define_const_str(CPICKER_PART_KNOB, "CPICKER_PART_KNOB", 4094649797u, 0, 17, &be_const_str_set_one_check); -be_define_const_str(set_one_check, "set_one_check", 1355948919u, 0, 13, NULL); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_get_style_radius); -be_define_const_str(get_style_radius, "get_style_radius", 1315526516u, 0, 16, &be_const_str_set_ctrl_map); -be_define_const_str(set_ctrl_map, "set_ctrl_map", 305774832u, 0, 12, NULL); -be_define_const_str(FS_RES_FS_ERR, "FS_RES_FS_ERR", 3587821087u, 0, 13, &be_const_str_get_angle_end); -be_define_const_str(get_angle_end, "get_angle_end", 2420725825u, 0, 13, &be_const_str_set_style_local_transition_delay); -be_define_const_str(set_style_local_transition_delay, "set_style_local_transition_delay", 958588397u, 0, 32, NULL); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_get_scrl_fit_left); -be_define_const_str(get_scrl_fit_left, "get_scrl_fit_left", 1227937692u, 0, 17, NULL); -be_define_const_str(get_style_outline_opa, "get_style_outline_opa", 1286010513u, 0, 21, &be_const_str_set_rollover); -be_define_const_str(set_rollover, "set_rollover", 1838959037u, 0, 12, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, NULL); -be_define_const_str(CHART_PART_SERIES, "CHART_PART_SERIES", 3401824459u, 0, 17, &be_const_str_STYLE_SCALE_END_BORDER_WIDTH); -be_define_const_str(STYLE_SCALE_END_BORDER_WIDTH, "STYLE_SCALE_END_BORDER_WIDTH", 763958239u, 0, 28, &be_const_str_set_transition_prop_1); -be_define_const_str(set_transition_prop_1, "set_transition_prop_1", 3033901345u, 0, 21, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); -be_define_const_str(get_scrl_width, "get_scrl_width", 1498509239u, 0, 14, NULL); -be_define_const_str(set_bright, "set_bright", 499797888u, 0, 10, NULL); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_set_pattern_opa); -be_define_const_str(set_pattern_opa, "set_pattern_opa", 3749193119u, 0, 15, NULL); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, NULL); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_STYLE_TEXT_FONT); -be_define_const_str(STYLE_TEXT_FONT, "STYLE_TEXT_FONT", 75931268u, 0, 15, &be_const_str_get_max_value); -be_define_const_str(get_max_value, "get_max_value", 2625343304u, 0, 13, NULL); -be_define_const_str(cursor_right, "cursor_right", 2216262354u, 0, 12, &be_const_str_set_design_cb); -be_define_const_str(set_design_cb, "set_design_cb", 1469311634u, 0, 13, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_LE01MR_TX); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_get_mirror); -be_define_const_str(get_mirror, "get_mirror", 2155743435u, 0, 10, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, &be_const_str_set_text_color); -be_define_const_str(set_text_color, "set_text_color", 2780604091u, 0, 14, NULL); -be_define_const_str(OBJ_PART_REAL_FIRST, "OBJ_PART_REAL_FIRST", 819443818u, 0, 19, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_fade_out); -be_define_const_str(fade_out, "fade_out", 215415112u, 0, 8, &be_const_str_set_border_blend_mode); -be_define_const_str(set_border_blend_mode, "set_border_blend_mode", 882247636u, 0, 21, NULL); -be_define_const_str(CHECKBOX_PART_BULLET, "CHECKBOX_PART_BULLET", 3413099789u, 0, 20, &be_const_str_LE01MR_RX); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_STYLE_TRANSFORM_ANGLE); -be_define_const_str(STYLE_TRANSFORM_ANGLE, "STYLE_TRANSFORM_ANGLE", 411149629u, 0, 21, NULL); -be_define_const_str(get_px, "get_px", 1651889344u, 0, 6, NULL); -be_define_const_str(set_points, "set_points", 1252105979u, 0, 10, NULL); -be_define_const_str(set_outline_blend_mode, "set_outline_blend_mode", 4273381132u, 0, 22, &be_const_str_set_style_local_transition_prop_4); -be_define_const_str(set_style_local_transition_prop_4, "set_style_local_transition_prop_4", 2501649248u, 0, 33, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_set_scrollable_fit2); -be_define_const_str(set_scrollable_fit2, "set_scrollable_fit2", 586952845u, 0, 19, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_get_scrl_fit_bottom); -be_define_const_str(get_scrl_fit_bottom, "get_scrl_fit_bottom", 446102398u, 0, 19, &be_const_str_get_style_line_color); -be_define_const_str(get_style_line_color, "get_style_line_color", 805371932u, 0, 20, &be_const_str_set_style_local_bg_grad_dir); -be_define_const_str(set_style_local_bg_grad_dir, "set_style_local_bg_grad_dir", 946802226u, 0, 27, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_get_day_of_week); -be_define_const_str(get_day_of_week, "get_day_of_week", 3301373175u, 0, 15, NULL); -be_define_const_str(set_text_sel, "set_text_sel", 1928405316u, 0, 12, NULL); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_TEMPL_STYLE_Y); -be_define_const_str(TEMPL_STYLE_Y, "TEMPL_STYLE_Y", 1997423835u, 0, 13, &be_const_str_set_style_local_border_width); -be_define_const_str(set_style_local_border_width, "set_style_local_border_width", 4234107199u, 0, 28, &be_const_str_set_text_font); -be_define_const_str(set_text_font, "set_text_font", 724363521u, 0, 13, &be_const_str_set_tile_act); -be_define_const_str(set_tile_act, "set_tile_act", 1400046115u, 0, 12, NULL); -be_define_const_str(get_style_text_sel_color, "get_style_text_sel_color", 1751096754u, 0, 24, NULL); -be_define_const_str(get_symbol, "get_symbol", 2697453548u, 0, 10, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_NRG_SEL_INV); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_SCROLLBAR_MODE_AUTO); -be_define_const_str(SCROLLBAR_MODE_AUTO, "SCROLLBAR_MODE_AUTO", 2882381917u, 0, 19, NULL); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); -be_define_const_str(set_style_local_outline_opa, "set_style_local_outline_opa", 1280559349u, 0, 27, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_IEM3000_TX); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, NULL); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_TABVIEW_TAB_POS_LEFT); -be_define_const_str(TABVIEW_TAB_POS_LEFT, "TABVIEW_TAB_POS_LEFT", 897772772u, 0, 20, &be_const_str_set_cursor_manage); -be_define_const_str(set_cursor_manage, "set_cursor_manage", 2587391084u, 0, 17, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, NULL); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_get_max_height); -be_define_const_str(get_max_height, "get_max_height", 3803847844u, 0, 14, &be_const_str_get_tab_act); -be_define_const_str(get_tab_act, "get_tab_act", 2665251652u, 0, 11, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); -be_define_const_str(set_y_tick_texts, "set_y_tick_texts", 1388790058u, 0, 16, NULL); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_is_checked); -be_define_const_str(is_checked, "is_checked", 3623625615u, 0, 10, &be_const_str_set_knob_colored); -be_define_const_str(set_knob_colored, "set_knob_colored", 2285165409u, 0, 16, NULL); -be_define_const_str(DROPDOWN_PART_SELECTED, "DROPDOWN_PART_SELECTED", 1685473920u, 0, 22, NULL); -be_define_const_str(HSPI, "HSPI", 2263006151u, 0, 4, NULL); -be_define_const_str(set_bg_grad_dir, "set_bg_grad_dir", 1390928996u, 0, 15, NULL); -be_define_const_str(CHART_CURSOR_DOWN, "CHART_CURSOR_DOWN", 790177263u, 0, 17, &be_const_str_set_style_local_text_line_space); -be_define_const_str(set_style_local_text_line_space, "set_style_local_text_line_space", 3775207629u, 0, 31, NULL); -be_define_const_str(get_scrl_fit_top, "get_scrl_fit_top", 3432048672u, 0, 16, NULL); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_set_outline_width); -be_define_const_str(set_outline_width, "set_outline_width", 2428704969u, 0, 17, &be_const_str_set_scrl_width); -be_define_const_str(set_scrl_width, "set_scrl_width", 2522533355u, 0, 14, &be_const_str_set_value_line_space); -be_define_const_str(set_value_line_space, "set_value_line_space", 355798025u, 0, 20, NULL); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_get_offset_x); -be_define_const_str(get_offset_x, "get_offset_x", 3922581548u, 0, 12, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_set_checkable); -be_define_const_str(set_checkable, "set_checkable", 3024222852u, 0, 13, &be_const_str_set_point_count); -be_define_const_str(set_point_count, "set_point_count", 1721576758u, 0, 15, &be_const_str_set_style_local_outline_color); -be_define_const_str(set_style_local_outline_color, "set_style_local_outline_color", 2290216412u, 0, 29, NULL); -be_define_const_str(add_btn_left, "add_btn_left", 3984572941u, 0, 12, NULL); -be_define_const_str(set_line_color, "set_line_color", 2944146362u, 0, 14, NULL); -be_define_const_str(STYLE_LINE_DASH_GAP, "STYLE_LINE_DASH_GAP", 1823312065u, 0, 19, &be_const_str_set_header_height); -be_define_const_str(set_header_height, "set_header_height", 2913303849u, 0, 17, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_get_style_shadow_color); -be_define_const_str(get_style_shadow_color, "get_style_shadow_color", 920648234u, 0, 22, NULL); -be_define_const_str(DROPDOWN_PART_SCROLLBAR, "DROPDOWN_PART_SCROLLBAR", 699787861u, 0, 23, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, NULL); -be_define_const_str(get_row_cnt, "get_row_cnt", 541121788u, 0, 11, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_PROTECT_PRESS_LOST); -be_define_const_str(PROTECT_PRESS_LOST, "PROTECT_PRESS_LOST", 2967498203u, 0, 18, &be_const_str_STYLE_SCALE_BORDER_WIDTH); -be_define_const_str(STYLE_SCALE_BORDER_WIDTH, "STYLE_SCALE_BORDER_WIDTH", 4091410577u, 0, 24, NULL); -be_define_const_str(BORDER_SIDE_BOTTOM, "BORDER_SIDE_BOTTOM", 1006865647u, 0, 18, &be_const_str_LABEL_LONG_SROLL_CIRC); -be_define_const_str(LABEL_LONG_SROLL_CIRC, "LABEL_LONG_SROLL_CIRC", 179427009u, 0, 21, &be_const_str_screenshot); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_RC522_CS); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_screenshot); be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_count_children); -be_define_const_str(count_children, "count_children", 1689969950u, 0, 14, &be_const_str_set_width_fit); -be_define_const_str(set_width_fit, "set_width_fit", 703845988u, 0, 13, NULL); -be_define_const_str(set_padding_left, "set_padding_left", 1230478487u, 0, 16, NULL); -be_define_const_str(add_text, "add_text", 2433225858u, 0, 8, NULL); -be_define_const_str(set_ext_click_area, "set_ext_click_area", 1298742324u, 0, 18, NULL); -be_define_const_str(set_style_local_value_line_space, "set_style_local_value_line_space", 987261567u, 0, 32, NULL); -be_define_const_str(set_px, "set_px", 1137035068u, 0, 6, NULL); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_STYLE_LINE_DASH_WIDTH); -be_define_const_str(STYLE_LINE_DASH_WIDTH, "STYLE_LINE_DASH_WIDTH", 1366928369u, 0, 21, &be_const_str_get_adjustable); -be_define_const_str(get_adjustable, "get_adjustable", 982674931u, 0, 14, &be_const_str_set_border_post); -be_define_const_str(set_border_post, "set_border_post", 2318575153u, 0, 15, NULL); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_set_textarea); -be_define_const_str(set_textarea, "set_textarea", 1978833518u, 0, 12, NULL); -be_define_const_str(get_parent_event, "get_parent_event", 102705295u, 0, 16, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_set_showed_date); -be_define_const_str(set_showed_date, "set_showed_date", 158767501u, 0, 15, NULL); -be_define_const_str(STYLE_BG_COLOR, "STYLE_BG_COLOR", 2207533444u, 0, 14, &be_const_str_print); -be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_set_cell_merge_right); -be_define_const_str(set_cell_merge_right, "set_cell_merge_right", 3174593866u, 0, 20, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_get_style_size); -be_define_const_str(get_style_size, "get_style_size", 3698157111u, 0, 14, NULL); -be_define_const_str(OPA_60, "OPA_60", 2008896492u, 0, 6, NULL); -be_define_const_str(KEY_ENTER, "KEY_ENTER", 2614103337u, 0, 9, &be_const_str_LAYOUT_ROW_MID); -be_define_const_str(LAYOUT_ROW_MID, "LAYOUT_ROW_MID", 932854697u, 0, 14, NULL); -be_define_const_str(KEY_DEL, "KEY_DEL", 1749022830u, 0, 7, &be_const_str_STYLE_MARGIN_RIGHT); -be_define_const_str(STYLE_MARGIN_RIGHT, "STYLE_MARGIN_RIGHT", 1123385036u, 0, 18, &be_const_str_SYMBOL_OK); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, NULL); -be_define_const_str(BORDER_SIDE_FULL, "BORDER_SIDE_FULL", 703648713u, 0, 16, &be_const_str_get_text_sel_start); -be_define_const_str(get_text_sel_start, "get_text_sel_start", 1075131103u, 0, 18, &be_const_str_set_style_local_transition_prop_3); -be_define_const_str(set_style_local_transition_prop_3, "set_style_local_transition_prop_3", 2619092581u, 0, 33, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, NULL); -be_define_const_str(STYLE_BORDER_BLEND_MODE, "STYLE_BORDER_BLEND_MODE", 3752388357u, 0, 23, NULL); -be_define_const_str(BLEND_MODE_NORMAL, "BLEND_MODE_NORMAL", 1282739232u, 0, 17, &be_const_str_set_title); -be_define_const_str(set_title, "set_title", 793032418u, 0, 9, NULL); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_set_shadow_ofs_y); -be_define_const_str(set_shadow_ofs_y, "set_shadow_ofs_y", 3086758033u, 0, 16, NULL); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_STYLE_OPA_SCALE); -be_define_const_str(STYLE_OPA_SCALE, "STYLE_OPA_SCALE", 4014485970u, 0, 15, &be_const_str_get_style_line_rounded); -be_define_const_str(get_style_line_rounded, "get_style_line_rounded", 2936625238u, 0, 22, &be_const_str_set_style_local_text_sel_color); -be_define_const_str(set_style_local_text_sel_color, "set_style_local_text_sel_color", 3749375246u, 0, 30, NULL); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_get_style_value_str); -be_define_const_str(get_style_value_str, "get_style_value_str", 967747319u, 0, 19, NULL); -be_define_const_str(STYLE_TEXT_COLOR, "STYLE_TEXT_COLOR", 2549754876u, 0, 16, &be_const_str_set_style_local_transform_angle); -be_define_const_str(set_style_local_transform_angle, "set_style_local_transform_angle", 3618600326u, 0, 31, NULL); -be_define_const_str(ALIGN_IN_BOTTOM_RIGHT, "ALIGN_IN_BOTTOM_RIGHT", 1575436355u, 0, 21, &be_const_str_focus_obj); -be_define_const_str(focus_obj, "focus_obj", 1075574617u, 0, 9, &be_const_str_set_content_size); -be_define_const_str(set_content_size, "set_content_size", 10638115u, 0, 16, &be_const_str_set_style_local_shadow_opa); -be_define_const_str(set_style_local_shadow_opa, "set_style_local_shadow_opa", 2192328339u, 0, 26, NULL); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_SYMBOL_WARNING); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_get_cell_align); -be_define_const_str(get_cell_align, "get_cell_align", 2284605658u, 0, 14, &be_const_str_set_pattern_recolor_opa); -be_define_const_str(set_pattern_recolor_opa, "set_pattern_recolor_opa", 1479951840u, 0, 23, NULL); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_remove_style_local_prop); -be_define_const_str(remove_style_local_prop, "remove_style_local_prop", 1160046873u, 0, 23, NULL); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(SCROLLBAR_MODE_ON, "SCROLLBAR_MODE_ON", 1562259499u, 0, 17, &be_const_str_get_accepted_chars); -be_define_const_str(get_accepted_chars, "get_accepted_chars", 2210030087u, 0, 18, NULL); -be_define_const_str(EVENT_CANCEL, "EVENT_CANCEL", 3703374138u, 0, 12, &be_const_str_STYLE_PATTERN_RECOLOR); -be_define_const_str(STYLE_PATTERN_RECOLOR, "STYLE_PATTERN_RECOLOR", 2178713592u, 0, 21, &be_const_str_fill_bg); -be_define_const_str(fill_bg, "fill_bg", 1581152214u, 0, 7, &be_const_str_title_set_alignment); -be_define_const_str(title_set_alignment, "title_set_alignment", 192669664u, 0, 19, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_remove_style); -be_define_const_str(remove_style, "remove_style", 3826054475u, 0, 12, NULL); -be_define_const_str(KEY_END, "KEY_END", 1131758734u, 0, 7, &be_const_str_SYMBOL_SD_CARD); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); -be_define_const_str(AQUA, "AQUA", 1203273877u, 0, 4, NULL); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_set_step); -be_define_const_str(set_step, "set_step", 2114390790u, 0, 8, NULL); -be_define_const_str(BTNMATRIX_CTRL_DISABLED, "BTNMATRIX_CTRL_DISABLED", 2790045315u, 0, 23, &be_const_str_del_char); -be_define_const_str(del_char, "del_char", 3624762103u, 0, 8, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_set_angle_offset); -be_define_const_str(set_angle_offset, "set_angle_offset", 1203695731u, 0, 16, NULL); -be_define_const_str(STYLE_TRANSITION_TIME, "STYLE_TRANSITION_TIME", 3058729752u, 0, 21, &be_const_str_TXT_CMD_STATE_WAIT); -be_define_const_str(TXT_CMD_STATE_WAIT, "TXT_CMD_STATE_WAIT", 1721068338u, 0, 18, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL); -be_define_const_str(DISP_ROT_90, "DISP_ROT_90", 3961393585u, 0, 11, &be_const_str_PROTECT_PARENT); -be_define_const_str(PROTECT_PARENT, "PROTECT_PARENT", 3109095353u, 0, 14, &be_const_str_SCROLLBAR_MODE_UNHIDE); -be_define_const_str(SCROLLBAR_MODE_UNHIDE, "SCROLLBAR_MODE_UNHIDE", 827854473u, 0, 21, &be_const_str_set_pwd_mode); -be_define_const_str(set_pwd_mode, "set_pwd_mode", 1333849907u, 0, 12, NULL); -be_define_const_str(DROPDOWN_DIR_LEFT, "DROPDOWN_DIR_LEFT", 3057408860u, 0, 17, NULL); -be_define_const_str(get_height, "get_height", 3571755523u, 0, 10, NULL); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(set_bg_angles, "set_bg_angles", 2873640992u, 0, 13, &be_const_str_set_style_local_shadow_spread); -be_define_const_str(set_style_local_shadow_spread, "set_style_local_shadow_spread", 850759600u, 0, 29, NULL); -be_define_const_str(get_max_length, "get_max_length", 13029699u, 0, 14, NULL); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(set_style_local_outline_width, "set_style_local_outline_width", 3081743955u, 0, 29, NULL); -be_define_const_str(SPINNER_TYPE_FILLSPIN_ARC, "SPINNER_TYPE_FILLSPIN_ARC", 2324275006u, 0, 25, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); -be_define_const_str(get_cursor_blink_time, "get_cursor_blink_time", 1960576829u, 0, 21, &be_const_str_get_style_bg_color); -be_define_const_str(get_style_bg_color, "get_style_bg_color", 964794381u, 0, 18, &be_const_str_set_color); -be_define_const_str(set_color, "set_color", 3381219579u, 0, 9, NULL); -be_define_const_str(get_style_transition_prop_4, "get_style_transition_prop_4", 3454724484u, 0, 27, NULL); -be_define_const_str(DISP_SIZE_LARGE, "DISP_SIZE_LARGE", 3377069231u, 0, 15, &be_const_str_STYLE_LINE_BLEND_MODE); -be_define_const_str(STYLE_LINE_BLEND_MODE, "STYLE_LINE_BLEND_MODE", 1400961281u, 0, 21, &be_const_str_draw_text); -be_define_const_str(draw_text, "draw_text", 25865715u, 0, 9, &be_const_str_set_next); -be_define_const_str(set_next, "set_next", 1039873613u, 0, 8, NULL); -be_define_const_str(add_style, "add_style", 2931235026u, 0, 9, &be_const_str_get_style_bg_grad_color); -be_define_const_str(get_style_bg_grad_color, "get_style_bg_grad_color", 4149817886u, 0, 23, NULL); -be_define_const_str(set_style_local_image_recolor_opa, "set_style_local_image_recolor_opa", 1752356781u, 0, 33, NULL); -be_define_const_str(OPA_0, "OPA_0", 3351018670u, 0, 5, NULL); -be_define_const_str(PAGE_EDGE_RIGHT, "PAGE_EDGE_RIGHT", 1268763615u, 0, 15, &be_const_str_hide_series); -be_define_const_str(hide_series, "hide_series", 3053662735u, 0, 11, NULL); -be_define_const_str(STYLE_PAD_TOP, "STYLE_PAD_TOP", 2731711064u, 0, 13, &be_const_str_set_text_sel_end); -be_define_const_str(set_text_sel_end, "set_text_sel_end", 3422399078u, 0, 16, NULL); -be_define_const_str(get_style_transition_time, "get_style_transition_time", 3928047247u, 0, 25, NULL); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, NULL); -be_define_const_str(ALIGN_OUT_TOP_LEFT, "ALIGN_OUT_TOP_LEFT", 1073920927u, 0, 18, &be_const_str_SYMBOL_BELL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_set_style_local_value_str); -be_define_const_str(set_style_local_value_str, "set_style_local_value_str", 3984127099u, 0, 25, NULL); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_off); -be_define_const_str(off, "off", 2872740362u, 0, 3, NULL); -be_define_const_str(init_points, "init_points", 718504203u, 0, 11, NULL); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_get_ext_click_pad_bottom); -be_define_const_str(get_ext_click_pad_bottom, "get_ext_click_pad_bottom", 1405930484u, 0, 24, &be_const_str_set_auto_realign); -be_define_const_str(set_auto_realign, "set_auto_realign", 3175723934u, 0, 16, NULL); -be_define_const_str(KEYBOARD_MODE_NUM, "KEYBOARD_MODE_NUM", 2625982609u, 0, 17, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_STYLE_TRANSITION_PROP_5); -be_define_const_str(STYLE_TRANSITION_PROP_5, "STYLE_TRANSITION_PROP_5", 996274500u, 0, 23, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_SYMBOL_RIGHT); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_get_height_margin); -be_define_const_str(get_height_margin, "get_height_margin", 4277714442u, 0, 17, NULL); -be_define_const_str(align_mid, "align_mid", 497514711u, 0, 9, NULL); -be_define_const_str(STYLE_TRANSITION_PATH, "STYLE_TRANSITION_PATH", 3341574330u, 0, 21, &be_const_str_set_style_local_clip_corner); -be_define_const_str(set_style_local_clip_corner, "set_style_local_clip_corner", 1588926036u, 0, 27, NULL); -be_define_const_str(EVENT_KEY, "EVENT_KEY", 2739613983u, 0, 9, NULL); -be_define_const_str(ARC_TYPE_SYMMETRIC, "ARC_TYPE_SYMMETRIC", 3784955220u, 0, 18, &be_const_str_DRAG_DIR_ONE); -be_define_const_str(DRAG_DIR_ONE, "DRAG_DIR_ONE", 2088479808u, 0, 12, &be_const_str_HRXL_RX); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_STYLE_VALUE_BLEND_MODE); -be_define_const_str(STYLE_VALUE_BLEND_MODE, "STYLE_VALUE_BLEND_MODE", 930238626u, 0, 22, &be_const_str_blur_hor); -be_define_const_str(blur_hor, "blur_hor", 346002478u, 0, 8, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); -be_define_const_str(get_drag_throw, "get_drag_throw", 2409838001u, 0, 14, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_FS_RES_NOT_EX); -be_define_const_str(FS_RES_NOT_EX, "FS_RES_NOT_EX", 3124641355u, 0, 13, &be_const_str_MGC3130_XFER); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SAIR_RX); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); -be_define_const_str(STYLE_SHADOW_OFS_Y, "STYLE_SHADOW_OFS_Y", 2690614194u, 0, 18, NULL); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_SPI_CS); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_set_scale_border_width); -be_define_const_str(set_scale_border_width, "set_scale_border_width", 3210684730u, 0, 22, &be_const_str_set_scrl_height); -be_define_const_str(set_scrl_height, "set_scrl_height", 3462735686u, 0, 15, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, NULL); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, NULL); -be_define_const_str(CHART_PART_SERIES_BG, "CHART_PART_SERIES_BG", 4240790375u, 0, 20, &be_const_str_focus_freeze); -be_define_const_str(focus_freeze, "focus_freeze", 3394722079u, 0, 12, NULL); -be_define_const_str(EVENT_SHORT_CLICKED, "EVENT_SHORT_CLICKED", 2804944112u, 0, 19, &be_const_str_GAUGE_PART_NEEDLE); -be_define_const_str(GAUGE_PART_NEEDLE, "GAUGE_PART_NEEDLE", 154997366u, 0, 17, &be_const_str_get_point_count); -be_define_const_str(get_point_count, "get_point_count", 617480290u, 0, 15, NULL); -be_define_const_str(STYLE_TEXT_BLEND_MODE, "STYLE_TEXT_BLEND_MODE", 44336606u, 0, 21, NULL); -be_define_const_str(CHART_AXIS_DRAW_LAST_TICK, "CHART_AXIS_DRAW_LAST_TICK", 811055023u, 0, 25, &be_const_str_set_height_fit); -be_define_const_str(set_height_fit, "set_height_fit", 4033083607u, 0, 14, NULL); -be_define_const_str(set_src, "set_src", 1156089058u, 0, 7, NULL); -be_define_const_str(BORDER_SIDE_INTERNAL, "BORDER_SIDE_INTERNAL", 4209377645u, 0, 20, &be_const_str_LABEL_LONG_SROLL); -be_define_const_str(LABEL_LONG_SROLL, "LABEL_LONG_SROLL", 3854826277u, 0, 16, &be_const_str_clear_options); -be_define_const_str(clear_options, "clear_options", 1509347603u, 0, 13, NULL); -be_define_const_str(ANIM_OFF, "ANIM_OFF", 3664307970u, 0, 8, &be_const_str_draw_arc); -be_define_const_str(draw_arc, "draw_arc", 1828251676u, 0, 8, &be_const_str_set_transition_prop_4); -be_define_const_str(set_transition_prop_4, "set_transition_prop_4", 3084234202u, 0, 21, &be_const_str_set_value_opa); -be_define_const_str(set_value_opa, "set_value_opa", 1055786128u, 0, 13, NULL); -be_define_const_str(NAVY, "NAVY", 1719816465u, 0, 4, &be_const_str_TELEINFO_ENABLE); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, NULL); -be_define_const_str(OBJ_PART_ALL, "OBJ_PART_ALL", 3502425074u, 0, 12, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_get_scrl_layout); -be_define_const_str(get_scrl_layout, "get_scrl_layout", 2842797719u, 0, 15, NULL); -be_define_const_str(get_active_btn_text, "get_active_btn_text", 2709356149u, 0, 19, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); -be_define_const_str(STYLE_SHADOW_OPA, "STYLE_SHADOW_OPA", 3011667646u, 0, 16, &be_const_str_get_line_count); -be_define_const_str(get_line_count, "get_line_count", 4160991390u, 0, 14, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_BOILER_OT_RX); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_TXT_FLAG_NONE); -be_define_const_str(TXT_FLAG_NONE, "TXT_FLAG_NONE", 3092237369u, 0, 13, &be_const_str_realign); -be_define_const_str(realign, "realign", 170046109u, 0, 7, NULL); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_RDM6300_RX); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_set_style_local_scale_end_border_width); -be_define_const_str(set_style_local_scale_end_border_width, "set_style_local_scale_end_border_width", 3774452254u, 0, 38, &be_const_str_set_style_local_text_opa); -be_define_const_str(set_style_local_text_opa, "set_style_local_text_opa", 1391350156u, 0, 24, NULL); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SYMBOL_KEYBOARD); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_get_ext_draw_pad); -be_define_const_str(get_ext_draw_pad, "get_ext_draw_pad", 3775653652u, 0, 16, &be_const_str_set_scale); -be_define_const_str(set_scale, "set_scale", 3828634574u, 0, 9, NULL); -be_define_const_str(get_btnmatrix, "get_btnmatrix", 1628630681u, 0, 13, &be_const_str_get_protect); -be_define_const_str(get_protect, "get_protect", 4241180167u, 0, 11, &be_const_str_get_scrollable); -be_define_const_str(get_scrollable, "get_scrollable", 1510903497u, 0, 14, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_GAUGE_PART_MAIN); -be_define_const_str(GAUGE_PART_MAIN, "GAUGE_PART_MAIN", 3145322556u, 0, 15, &be_const_str_HX711_SCK); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, NULL); -be_define_const_str(STYLE_PAD_RIGHT, "STYLE_PAD_RIGHT", 4135691505u, 0, 15, NULL); -be_define_const_str(set_highlighted_dates, "set_highlighted_dates", 344528435u, 0, 21, &be_const_str_set_parent_event); -be_define_const_str(set_parent_event, "set_parent_event", 49610579u, 0, 16, NULL); -be_define_const_str(set_offset_x, "set_offset_x", 421149912u, 0, 12, NULL); -be_define_const_str(GRAD_DIR_NONE, "GRAD_DIR_NONE", 1627825480u, 0, 13, &be_const_str_KEY_PREV); -be_define_const_str(KEY_PREV, "KEY_PREV", 3127352148u, 0, 8, NULL); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SYMBOL_AUDIO); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(STYLE_RADIUS, "STYLE_RADIUS", 1029481353u, 0, 12, NULL); -be_define_const_str(STYLE_PAD_BOTTOM, "STYLE_PAD_BOTTOM", 3910623046u, 0, 16, &be_const_str_STYLE_SCALE_GRAD_COLOR); -be_define_const_str(STYLE_SCALE_GRAD_COLOR, "STYLE_SCALE_GRAD_COLOR", 3981239948u, 0, 22, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_set_bg_main_stop); -be_define_const_str(set_bg_main_stop, "set_bg_main_stop", 1702668926u, 0, 16, &be_const_str_set_style_local_image_recolor); -be_define_const_str(set_style_local_image_recolor, "set_style_local_image_recolor", 43538644u, 0, 29, NULL); -be_define_const_str(set_user_data, "set_user_data", 3596043360u, 0, 13, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_add_obj); -be_define_const_str(add_obj, "add_obj", 3846256134u, 0, 7, &be_const_str_get_height_grid); -be_define_const_str(get_height_grid, "get_height_grid", 1178822580u, 0, 15, &be_const_str_get_screen); -be_define_const_str(get_screen, "get_screen", 2759490796u, 0, 10, &be_const_str_set_bg_start_angle); -be_define_const_str(set_bg_start_angle, "set_bg_start_angle", 2285338772u, 0, 18, NULL); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_set_style_local_margin_right); -be_define_const_str(set_style_local_margin_right, "set_style_local_margin_right", 2606287945u, 0, 28, NULL); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_get_highlighted_dates_num); -be_define_const_str(get_highlighted_dates_num, "get_highlighted_dates_num", 82319360u, 0, 25, &be_const_str_set_focus_cb); -be_define_const_str(set_focus_cb, "set_focus_cb", 4094066116u, 0, 12, &be_const_str_set_style_local_bg_main_stop); -be_define_const_str(set_style_local_bg_main_stop, "set_style_local_bg_main_stop", 2599091600u, 0, 28, NULL); -be_define_const_str(STYLE_TEXT_LETTER_SPACE, "STYLE_TEXT_LETTER_SPACE", 2264289484u, 0, 23, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); -be_define_const_str(init_draw_img_dsc, "init_draw_img_dsc", 1278847223u, 0, 17, NULL); -be_define_const_str(BTN_STATE_DISABLED, "BTN_STATE_DISABLED", 496829054u, 0, 18, &be_const_str_EVENT_PRESS_LOST); -be_define_const_str(EVENT_PRESS_LOST, "EVENT_PRESS_LOST", 3685074190u, 0, 16, &be_const_str_get_style_shadow_spread); -be_define_const_str(get_style_shadow_spread, "get_style_shadow_spread", 1343265468u, 0, 23, NULL); -be_define_const_str(get_bg_angle_end, "get_bg_angle_end", 602326541u, 0, 16, NULL); -be_define_const_str(set_style_local_margin_top, "set_style_local_margin_top", 2065926016u, 0, 26, &be_const_str_start_edge_flash); -be_define_const_str(start_edge_flash, "start_edge_flash", 305008300u, 0, 16, NULL); -be_define_const_str(set_dir, "set_dir", 331967531u, 0, 7, NULL); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_ALIGN_CENTER); -be_define_const_str(ALIGN_CENTER, "ALIGN_CENTER", 622705366u, 0, 12, &be_const_str_set_style_local_line_dash_gap); -be_define_const_str(set_style_local_line_dash_gap, "set_style_local_line_dash_gap", 923588498u, 0, 29, NULL); -be_define_const_str(set_border_color, "set_border_color", 2628124814u, 0, 16, NULL); -be_define_const_str(TABVIEW_TAB_POS_RIGHT, "TABVIEW_TAB_POS_RIGHT", 3809644849u, 0, 21, &be_const_str_get_state); -be_define_const_str(get_state, "get_state", 3804504029u, 0, 9, NULL); -be_define_const_str(CYAN, "CYAN", 1196590906u, 0, 4, &be_const_str_set_style_local_line_dash_width); -be_define_const_str(set_style_local_line_dash_width, "set_style_local_line_dash_width", 3177951154u, 0, 31, NULL); -be_define_const_str(set_secondary_y_tick_length, "set_secondary_y_tick_length", 4022147583u, 0, 27, &be_const_str_set_x_tick_length); -be_define_const_str(set_x_tick_length, "set_x_tick_length", 3530536821u, 0, 17, NULL); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_get_btn_ctrl); -be_define_const_str(get_btn_ctrl, "get_btn_ctrl", 370184444u, 0, 12, NULL); -be_define_const_str(LAYOUT_COLUMN_RIGHT, "LAYOUT_COLUMN_RIGHT", 912913083u, 0, 19, &be_const_str_STYLE_PATTERN_REPEAT); -be_define_const_str(STYLE_PATTERN_REPEAT, "STYLE_PATTERN_REPEAT", 721793275u, 0, 20, &be_const_str_YELLOW); -be_define_const_str(YELLOW, "YELLOW", 2964049737u, 0, 6, NULL); -be_define_const_str(get_coords, "get_coords", 1044089006u, 0, 10, &be_const_str_handle_get_type_signal); -be_define_const_str(handle_get_type_signal, "handle_get_type_signal", 3735097350u, 0, 22, &be_const_str_set_pos); -be_define_const_str(set_pos, "set_pos", 4146975678u, 0, 7, NULL); -be_define_const_str(STYLE_BORDER_COLOR, "STYLE_BORDER_COLOR", 809973177u, 0, 18, &be_const_str_is_focused); -be_define_const_str(is_focused, "is_focused", 2171112339u, 0, 10, NULL); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_get_ext_click_pad_left); -be_define_const_str(get_ext_click_pad_left, "get_ext_click_pad_left", 1709871714u, 0, 22, &be_const_str_set_start_value); -be_define_const_str(set_start_value, "set_start_value", 1399674154u, 0, 15, NULL); -be_define_const_str(LABEL_ALIGN_CENTER, "LABEL_ALIGN_CENTER", 3698850161u, 0, 18, &be_const_str___upper__); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_text_is_selected); -be_define_const_str(text_is_selected, "text_is_selected", 3422750433u, 0, 16, NULL); -be_define_const_str(KEY_HOME, "KEY_HOME", 2722222682u, 0, 8, &be_const_str_SM2135_DAT); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, NULL); -be_define_const_str(TEXT_DECOR_STRIKETHROUGH, "TEXT_DECOR_STRIKETHROUGH", 2875711852u, 0, 24, &be_const_str_get_y_invert); -be_define_const_str(get_y_invert, "get_y_invert", 2518095240u, 0, 12, &be_const_str_set_scrollbar_mode); -be_define_const_str(set_scrollbar_mode, "set_scrollbar_mode", 3373216512u, 0, 18, NULL); -be_define_const_str(FS_RES_BUSY, "FS_RES_BUSY", 3847519313u, 0, 11, &be_const_str_SDCARD_CS); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, NULL); -be_define_const_str(GAUGE_PART_MAJOR, "GAUGE_PART_MAJOR", 3656186174u, 0, 16, &be_const_str_STYLE_PAD_LEFT); -be_define_const_str(STYLE_PAD_LEFT, "STYLE_PAD_LEFT", 1524023460u, 0, 14, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(LAYOUT_COLUMN_MID, "LAYOUT_COLUMN_MID", 669575067u, 0, 17, NULL); -be_define_const_str(DISP_ROT_NONE, "DISP_ROT_NONE", 1805190226u, 0, 13, &be_const_str_get_style_pattern_recolor_opa); -be_define_const_str(get_style_pattern_recolor_opa, "get_style_pattern_recolor_opa", 1906150798u, 0, 29, &be_const_str_set_style_local_value_ofs_y); -be_define_const_str(set_style_local_value_ofs_y, "set_style_local_value_ofs_y", 3040892578u, 0, 27, NULL); -be_define_const_str(get_fit_bottom, "get_fit_bottom", 664659611u, 0, 14, NULL); -be_define_const_str(STYLE_BG_BLEND_MODE, "STYLE_BG_BLEND_MODE", 1458637206u, 0, 19, &be_const_str_STYLE_IMAGE_RECOLOR_OPA); -be_define_const_str(STYLE_IMAGE_RECOLOR_OPA, "STYLE_IMAGE_RECOLOR_OPA", 3785340258u, 0, 23, &be_const_str_STYLE_TRANSITION_PROP_1); -be_define_const_str(STYLE_TRANSITION_PROP_1, "STYLE_TRANSITION_PROP_1", 929164024u, 0, 23, &be_const_str_get_style_transform_zoom); -be_define_const_str(get_style_transform_zoom, "get_style_transform_zoom", 380604044u, 0, 24, &be_const_str_remove_all_objs); -be_define_const_str(remove_all_objs, "remove_all_objs", 2136122696u, 0, 15, &be_const_str_set_cell_value); -be_define_const_str(set_cell_value, "set_cell_value", 3982436570u, 0, 14, NULL); -be_define_const_str(EVENT_LEAVE, "EVENT_LEAVE", 2218217823u, 0, 11, &be_const_str_STYLE_MARGIN_LEFT); -be_define_const_str(STYLE_MARGIN_LEFT, "STYLE_MARGIN_LEFT", 671809443u, 0, 17, &be_const_str_set_month_names); -be_define_const_str(set_month_names, "set_month_names", 158482125u, 0, 15, &be_const_str_set_style_local_value_align); -be_define_const_str(set_style_local_value_align, "set_style_local_value_align", 17354185u, 0, 27, NULL); -be_define_const_str(set_type, "set_type", 4284078396u, 0, 8, NULL); -be_define_const_str(get_local_style, "get_local_style", 2060541417u, 0, 15, NULL); -be_define_const_str(FS_RES_LOCKED, "FS_RES_LOCKED", 3948147866u, 0, 13, &be_const_str_OLIVE); -be_define_const_str(OLIVE, "OLIVE", 1722893804u, 0, 5, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_SYMBOL_EYE_CLOSE); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, NULL); -be_define_const_str(CPICKER_TYPE_DISC, "CPICKER_TYPE_DISC", 2110878147u, 0, 17, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); -be_define_const_str(ALIGN_OUT_RIGHT_TOP, "ALIGN_OUT_RIGHT_TOP", 1142849712u, 0, 19, &be_const_str_get_drag_dir); -be_define_const_str(get_drag_dir, "get_drag_dir", 3921105230u, 0, 12, &be_const_str_init_draw_rect_dsc); -be_define_const_str(init_draw_rect_dsc, "init_draw_rect_dsc", 4242061620u, 0, 18, &be_const_str_set_style_local_shadow_blend_mode); -be_define_const_str(set_style_local_shadow_blend_mode, "set_style_local_shadow_blend_mode", 2580830900u, 0, 33, NULL); -be_define_const_str(clear_selection, "clear_selection", 4157132227u, 0, 15, &be_const_str_set_value_font); -be_define_const_str(set_value_font, "set_value_font", 3846644343u, 0, 14, NULL); -be_define_const_str(STYLE_PATTERN_OPA, "STYLE_PATTERN_OPA", 1423872118u, 0, 17, &be_const_str_get_style_value_ofs_y); -be_define_const_str(get_style_value_ofs_y, "get_style_value_ofs_y", 4000868142u, 0, 21, &be_const_str_set_focused_btn); -be_define_const_str(set_focused_btn, "set_focused_btn", 4211166978u, 0, 15, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_get_src); -be_define_const_str(get_src, "get_src", 403557294u, 0, 7, &be_const_str_set_outline_pad); -be_define_const_str(set_outline_pad, "set_outline_pad", 2845869448u, 0, 15, NULL); -be_define_const_str(ARC_TYPE_REVERSE, "ARC_TYPE_REVERSE", 3290331433u, 0, 16, &be_const_str_INPUT_PULLDOWN); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_set_bg_end_angle); -be_define_const_str(set_bg_end_angle, "set_bg_end_angle", 569028341u, 0, 16, NULL); -be_define_const_str(STYLE_VALUE_LINE_SPACE, "STYLE_VALUE_LINE_SPACE", 2028376414u, 0, 22, &be_const_str_get_pivot); -be_define_const_str(get_pivot, "get_pivot", 2963122652u, 0, 9, &be_const_str_set_btn_ctrl_all); -be_define_const_str(set_btn_ctrl_all, "set_btn_ctrl_all", 274690332u, 0, 16, NULL); -be_define_const_str(OPA_50, "OPA_50", 163902855u, 0, 6, &be_const_str_STYLE_OUTLINE_PAD); -be_define_const_str(STYLE_OUTLINE_PAD, "STYLE_OUTLINE_PAD", 2090004501u, 0, 17, &be_const_str_STYLE_TRANSFORM_HEIGHT); -be_define_const_str(STYLE_TRANSFORM_HEIGHT, "STYLE_TRANSFORM_HEIGHT", 953009101u, 0, 22, NULL); -be_define_const_str(LAYOUT_ROW_BOTTOM, "LAYOUT_ROW_BOTTOM", 1098190350u, 0, 17, &be_const_str_LIST_PART_EDGE_FLASH); -be_define_const_str(LIST_PART_EDGE_FLASH, "LIST_PART_EDGE_FLASH", 549302352u, 0, 20, &be_const_str_get_prev_btn); -be_define_const_str(get_prev_btn, "get_prev_btn", 4150536586u, 0, 12, &be_const_str_get_style_text_opa); -be_define_const_str(get_style_text_opa, "get_style_text_opa", 2378295432u, 0, 18, NULL); -be_define_const_str(OPA_30, "OPA_30", 95806641u, 0, 6, &be_const_str_STATE_DISABLED); -be_define_const_str(STATE_DISABLED, "STATE_DISABLED", 3398267003u, 0, 14, &be_const_str_STYLE_TEXT_OPA); -be_define_const_str(STYLE_TEXT_OPA, "STYLE_TEXT_OPA", 3094351509u, 0, 14, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(set_image_opa, "set_image_opa", 517268068u, 0, 13, NULL); -be_define_const_str(OPA_90, "OPA_90", 27710427u, 0, 6, &be_const_str_STATE_PRESSED); -be_define_const_str(STATE_PRESSED, "STATE_PRESSED", 2471016259u, 0, 13, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, NULL); -be_define_const_str(FS_RES_HW_ERR, "FS_RES_HW_ERR", 1676324085u, 0, 13, NULL); -be_define_const_str(get_style_value_opa, "get_style_value_opa", 1671026074u, 0, 19, NULL); -be_define_const_str(get_one_check, "get_one_check", 2649478907u, 0, 13, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_I2C); -be_define_const_str(I2C, "I2C", 4096783347u, 0, 3, &be_const_str_get_cursor_point); -be_define_const_str(get_cursor_point, "get_cursor_point", 2365780231u, 0, 16, NULL); -be_define_const_str(FS_MODE_WR, "FS_MODE_WR", 2839601832u, 0, 10, &be_const_str_STATE_EDITED); -be_define_const_str(STATE_EDITED, "STATE_EDITED", 46966454u, 0, 12, &be_const_str_STYLE_TRANSITION_DELAY); -be_define_const_str(STYLE_TRANSITION_DELAY, "STYLE_TRANSITION_DELAY", 251340916u, 0, 22, &be_const_str_glue_obj); -be_define_const_str(glue_obj, "glue_obj", 1757706238u, 0, 8, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, NULL); -be_define_const_str(set_cursor_point, "set_cursor_point", 4201331267u, 0, 16, NULL); -be_define_const_str(del_anim_ready_cb, "del_anim_ready_cb", 1276516666u, 0, 17, NULL); -be_define_const_str(EVENT_LONG_PRESSED, "EVENT_LONG_PRESSED", 1806426939u, 0, 18, &be_const_str_set_color_mode); -be_define_const_str(set_color_mode, "set_color_mode", 1155621583u, 0, 14, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, NULL); -be_define_const_str(set_adjustable, "set_adjustable", 1573073815u, 0, 14, NULL); -be_define_const_str(BTNMATRIX_CTRL_HIDDEN, "BTNMATRIX_CTRL_HIDDEN", 2766999187u, 0, 21, &be_const_str_char); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(align, "align", 1613521886u, 0, 5, &be_const_str_set_pattern_repeat); -be_define_const_str(set_pattern_repeat, "set_pattern_repeat", 553014028u, 0, 18, NULL); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_refresh_ext_draw_pad); -be_define_const_str(refresh_ext_draw_pad, "refresh_ext_draw_pad", 3485714697u, 0, 20, NULL); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_WHITE); -be_define_const_str(WHITE, "WHITE", 2856149510u, 0, 5, &be_const_str_set_margin_left); -be_define_const_str(set_margin_left, "set_margin_left", 4194347462u, 0, 15, &be_const_str_set_saturation); -be_define_const_str(set_saturation, "set_saturation", 2225192852u, 0, 14, &be_const_str_set_style_local_pad_inner); -be_define_const_str(set_style_local_pad_inner, "set_style_local_pad_inner", 3980353812u, 0, 25, NULL); -be_define_const_str(get_tile_act, "get_tile_act", 3705631119u, 0, 12, &be_const_str_set_style_local_border_opa); -be_define_const_str(set_style_local_border_opa, "set_style_local_border_opa", 2125961393u, 0, 26, &be_const_str_set_style_local_shadow_ofs_y); -be_define_const_str(set_style_local_shadow_ofs_y, "set_style_local_shadow_ofs_y", 1635871223u, 0, 28, NULL); -be_define_const_str(BTNMATRIX_CTRL_CLICK_TRIG, "BTNMATRIX_CTRL_CLICK_TRIG", 2305639872u, 0, 25, &be_const_str_KEY_ESC); -be_define_const_str(KEY_ESC, "KEY_ESC", 915768258u, 0, 7, &be_const_str_SYMBOL_USB); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(clear_btn_ctrl, "clear_btn_ctrl", 2659827935u, 0, 14, &be_const_str_get_style_scale_width); -be_define_const_str(get_style_scale_width, "get_style_scale_width", 2556361915u, 0, 21, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_PROTECT_CLICK_FOCUS); -be_define_const_str(PROTECT_CLICK_FOCUS, "PROTECT_CLICK_FOCUS", 293740268u, 0, 19, &be_const_str_TEMPL_STYLE_X); -be_define_const_str(TEMPL_STYLE_X, "TEMPL_STYLE_X", 1980646216u, 0, 13, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SDM120_RX); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, NULL); -be_define_const_str(scroll_hor, "scroll_hor", 4153158354u, 0, 10, &be_const_str_set_style_local_outline_blend_mode); -be_define_const_str(set_style_local_outline_blend_mode, "set_style_local_outline_blend_mode", 3321200446u, 0, 34, &be_const_str_set_style_local_shadow_color); -be_define_const_str(set_style_local_shadow_color, "set_style_local_shadow_color", 2778451758u, 0, 28, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_LEDLNK_INV); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_get_align); -be_define_const_str(get_align, "get_align", 1275859045u, 0, 9, &be_const_str_set_image_blend_mode); -be_define_const_str(set_image_blend_mode, "set_image_blend_mode", 2083195553u, 0, 20, &be_const_str_set_palette); -be_define_const_str(set_palette, "set_palette", 4093380483u, 0, 11, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, NULL); -be_define_const_str(CALENDAR_PART_BG, "CALENDAR_PART_BG", 562605961u, 0, 16, &be_const_str_SYMBOL_BATTERY_3); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, NULL); -be_define_const_str(GESTURE_DIR_TOP, "GESTURE_DIR_TOP", 84881028u, 0, 15, &be_const_str_GPS_RX); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_get_letter_on); -be_define_const_str(get_letter_on, "get_letter_on", 3272656192u, 0, 13, NULL); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_SYMBOL_COPY); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_set_style_local_value_font); -be_define_const_str(set_style_local_value_font, "set_style_local_value_font", 117758217u, 0, 26, NULL); -be_define_const_str(ALIGN_OUT_BOTTOM_RIGHT, "ALIGN_OUT_BOTTOM_RIGHT", 3680861364u, 0, 22, &be_const_str_clean_tab); -be_define_const_str(clean_tab, "clean_tab", 3280421962u, 0, 9, &be_const_str_cursor_down); -be_define_const_str(cursor_down, "cursor_down", 657234748u, 0, 11, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_set_state); -be_define_const_str(set_state, "set_state", 905808233u, 0, 9, NULL); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_set_div_line_count); -be_define_const_str(set_div_line_count, "set_div_line_count", 918956222u, 0, 18, NULL); -be_define_const_str(get_left_value, "get_left_value", 1136489099u, 0, 14, NULL); -be_define_const_str(KEY_LEFT, "KEY_LEFT", 3050288868u, 0, 8, &be_const_str_get_scrollbar_mode); -be_define_const_str(get_scrollbar_mode, "get_scrollbar_mode", 1258717108u, 0, 18, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_EVENT_FOCUSED); -be_define_const_str(EVENT_FOCUSED, "EVENT_FOCUSED", 3253401785u, 0, 13, &be_const_str_STYLE_TRANSITION_PROP_6); -be_define_const_str(STYLE_TRANSITION_PROP_6, "STYLE_TRANSITION_PROP_6", 1046607357u, 0, 23, &be_const_str_SYMBOL_MUTE); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_set_transition_delay); -be_define_const_str(set_transition_delay, "set_transition_delay", 2787845599u, 0, 20, NULL); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_set_style_local_scale_border_width); -be_define_const_str(set_style_local_scale_border_width, "set_style_local_scale_border_width", 285010516u, 0, 34, NULL); -be_define_const_str(ALIGN_IN_BOTTOM_MID, "ALIGN_IN_BOTTOM_MID", 4192809251u, 0, 19, &be_const_str_ALIGN_OUT_BOTTOM_LEFT); -be_define_const_str(ALIGN_OUT_BOTTOM_LEFT, "ALIGN_OUT_BOTTOM_LEFT", 1302083659u, 0, 21, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_set_value_color); -be_define_const_str(set_value_color, "set_value_color", 2148821625u, 0, 15, NULL); -be_define_const_str(BLEND_MODE_SUBTRACTIVE, "BLEND_MODE_SUBTRACTIVE", 3202763511u, 0, 22, &be_const_str_OPA_10); -be_define_const_str(OPA_10, "OPA_10", 1908083683u, 0, 6, &be_const_str_TEXTAREA_CURSOR_LAST); -be_define_const_str(TEXTAREA_CURSOR_LAST, "TEXTAREA_CURSOR_LAST", 1393995267u, 0, 20, &be_const_str_set_scale_grad_color); -be_define_const_str(set_scale_grad_color, "set_scale_grad_color", 818937207u, 0, 20, &be_const_str_transform); -be_define_const_str(transform, "transform", 3786248987u, 0, 9, NULL); -be_define_const_str(EVENT_VALUE_CHANGED, "EVENT_VALUE_CHANGED", 1871067374u, 0, 19, &be_const_str_OPA_20); -be_define_const_str(OPA_20, "OPA_20", 4289961128u, 0, 6, &be_const_str_get_style_line_dash_width); -be_define_const_str(get_style_line_dash_width, "get_style_line_dash_width", 4191923846u, 0, 25, NULL); -be_define_const_str(EVENT_GESTURE, "EVENT_GESTURE", 2506519243u, 0, 13, &be_const_str_list_copy); -be_define_const_str(list_copy, "list_copy", 680267399u, 0, 9, NULL); -be_define_const_str(OPA_80, "OPA_80", 4221864914u, 0, 6, &be_const_str_lv_tabview); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(SCROLLBAR_MODE_OFF, "SCROLLBAR_MODE_OFF", 3547490383u, 0, 18, NULL); -be_define_const_str(BTNMATRIX_CTRL_NO_REPEAT, "BTNMATRIX_CTRL_NO_REPEAT", 2228999978u, 0, 24, &be_const_str_STYLE_VALUE_LETTER_SPACE); -be_define_const_str(STYLE_VALUE_LETTER_SPACE, "STYLE_VALUE_LETTER_SPACE", 2129682704u, 0, 24, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_get_x_from_index); -be_define_const_str(get_x_from_index, "get_x_from_index", 2843960746u, 0, 16, &be_const_str_set_btn_ctrl); -be_define_const_str(set_btn_ctrl, "set_btn_ctrl", 3999876128u, 0, 12, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_set_scroll_propagation); -be_define_const_str(set_scroll_propagation, "set_scroll_propagation", 2960260372u, 0, 22, &be_const_str_set_style_local_margin_left); -be_define_const_str(set_style_local_margin_left, "set_style_local_margin_left", 3162175100u, 0, 27, NULL); -be_define_const_str(FS_RES_FULL, "FS_RES_FULL", 3987964025u, 0, 11, &be_const_str_set_style_local_pad_bottom); -be_define_const_str(set_style_local_pad_bottom, "set_style_local_pad_bottom", 1362436575u, 0, 26, NULL); -be_define_const_str(CHART_AXIS_SECONDARY_Y, "CHART_AXIS_SECONDARY_Y", 755580820u, 0, 22, &be_const_str_get_text_sel_end); -be_define_const_str(get_text_sel_end, "get_text_sel_end", 3650450346u, 0, 16, NULL); -be_define_const_str(get_col_width, "get_col_width", 638670073u, 0, 13, &be_const_str_set_y); -be_define_const_str(set_y, "set_y", 1866178391u, 0, 5, NULL); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, NULL); -be_define_const_str(set_text_letter_space, "set_text_letter_space", 4274937273u, 0, 21, NULL); -be_define_const_str(get_y, "get_y", 1205519667u, 0, 5, &be_const_str_set_text); -be_define_const_str(set_text, "set_text", 1849641155u, 0, 8, NULL); -be_define_const_str(hittest, "hittest", 4018046250u, 0, 7, &be_const_str_set_insert_replace); -be_define_const_str(set_insert_replace, "set_insert_replace", 1439171942u, 0, 18, NULL); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_set_pad_top); -be_define_const_str(set_pad_top, "set_pad_top", 193376421u, 0, 11, NULL); -be_define_const_str(get_col_cnt, "get_col_cnt", 2182323590u, 0, 11, &be_const_str_get_width_fit); -be_define_const_str(get_width_fit, "get_width_fit", 416240192u, 0, 13, NULL); -be_define_const_str(SPINNER_TYPE_CONSTANT_ARC, "SPINNER_TYPE_CONSTANT_ARC", 2728560979u, 0, 25, &be_const_str_get_style_shadow_ofs_y); -be_define_const_str(get_style_shadow_ofs_y, "get_style_shadow_ofs_y", 2337159315u, 0, 22, &be_const_str_set_selected); -be_define_const_str(set_selected, "set_selected", 386442685u, 0, 12, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(set_y_tick_length, "set_y_tick_length", 1194305306u, 0, 17, &be_const_str_start_auto_close); -be_define_const_str(start_auto_close, "start_auto_close", 2189620188u, 0, 16, NULL); -be_define_const_str(STYLE_CLIP_CORNER, "STYLE_CLIP_CORNER", 2883973343u, 0, 17, &be_const_str_get_arc_length); -be_define_const_str(get_arc_length, "get_arc_length", 2763412693u, 0, 14, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, NULL); -be_define_const_str(LAYOUT_OFF, "LAYOUT_OFF", 3375414885u, 0, 10, &be_const_str_ROLLER_MODE_NORMAL); -be_define_const_str(ROLLER_MODE_NORMAL, "ROLLER_MODE_NORMAL", 72783697u, 0, 18, &be_const_str_set_series_axis); -be_define_const_str(set_series_axis, "set_series_axis", 3828439823u, 0, 15, NULL); -be_define_const_str(set_transform_width, "set_transform_width", 3190371031u, 0, 19, NULL); -be_define_const_str(FS_RES_TOUT, "FS_RES_TOUT", 733368644u, 0, 11, &be_const_str_anim_cb); -be_define_const_str(anim_cb, "anim_cb", 2120778920u, 0, 7, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_get_pwd_mode); -be_define_const_str(get_pwd_mode, "get_pwd_mode", 364593807u, 0, 12, &be_const_str_set_text_decor); -be_define_const_str(set_text_decor, "set_text_decor", 768023065u, 0, 14, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(OPA_TRANSP, "OPA_TRANSP", 2652293196u, 0, 10, &be_const_str_TXT_FLAG_CENTER); -be_define_const_str(TXT_FLAG_CENTER, "TXT_FLAG_CENTER", 1125425546u, 0, 15, &be_const_str_set_point_id); -be_define_const_str(set_point_id, "set_point_id", 388814210u, 0, 12, &be_const_str_set_style_local_transition_prop_2); -be_define_const_str(set_style_local_transition_prop_2, "set_style_local_transition_prop_2", 2602314962u, 0, 33, NULL); -be_define_const_str(FS_RES_INV_PARAM, "FS_RES_INV_PARAM", 2676717305u, 0, 16, &be_const_str_STYLE_IMAGE_RECOLOR); -be_define_const_str(STYLE_IMAGE_RECOLOR, "STYLE_IMAGE_RECOLOR", 1769022527u, 0, 19, NULL); -be_define_const_str(get_style_transform_height, "get_style_transform_height", 3736737548u, 0, 26, NULL); -be_define_const_str(TEXT_DECOR_NONE, "TEXT_DECOR_NONE", 2700466131u, 0, 15, NULL); -be_define_const_str(GESTURE_DIR_LEFT, "GESTURE_DIR_LEFT", 1888875816u, 0, 16, &be_const_str_RC522_CS); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_STYLE_BORDER_POST); -be_define_const_str(STYLE_BORDER_POST, "STYLE_BORDER_POST", 1815444696u, 0, 17, &be_const_str_WEBCAM_RESET); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_set_editing); -be_define_const_str(set_editing, "set_editing", 1742905400u, 0, 11, &be_const_str_set_shadow_ofs_x); -be_define_const_str(set_shadow_ofs_x, "set_shadow_ofs_x", 3069980414u, 0, 16, NULL); -be_define_const_str(set_style_local_value_blend_mode, "set_style_local_value_blend_mode", 1178211587u, 0, 32, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_set_bg_grad_color); -be_define_const_str(set_bg_grad_color, "set_bg_grad_color", 51037480u, 0, 17, NULL); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); -be_define_const_str(KEY_NEXT, "KEY_NEXT", 4124880692u, 0, 8, &be_const_str_SR04_ECHO); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, NULL); -be_define_const_str(EVENT_DRAG_THROW_BEGIN, "EVENT_DRAG_THROW_BEGIN", 977261671u, 0, 22, &be_const_str_HRE_CLOCK); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_set_style_local_pad_left); -be_define_const_str(set_style_local_pad_left, "set_style_local_pad_left", 279437461u, 0, 24, NULL); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_get_style_outline_width); -be_define_const_str(get_style_outline_width, "get_style_outline_width", 1118345503u, 0, 23, &be_const_str_set_click_focus); -be_define_const_str(set_click_focus, "set_click_focus", 3544636103u, 0, 15, &be_const_str_set_value_align); -be_define_const_str(set_value_align, "set_value_align", 1467667831u, 0, 15, NULL); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_add_tab); -be_define_const_str(add_tab, "add_tab", 1821901608u, 0, 7, NULL); -be_define_const_str(BTN_STATE_CHECKED_RELEASED, "BTN_STATE_CHECKED_RELEASED", 571978995u, 0, 26, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_set_tab_name); -be_define_const_str(set_tab_name, "set_tab_name", 2075400175u, 0, 12, NULL); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, NULL); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_DROPDOWN_DIR_UP); -be_define_const_str(DROPDOWN_DIR_UP, "DROPDOWN_DIR_UP", 2415359156u, 0, 15, &be_const_str_STYLE_LINE_OPA); -be_define_const_str(STYLE_LINE_OPA, "STYLE_LINE_OPA", 1080991556u, 0, 14, NULL); -be_define_const_str(SLIDER_TYPE_NORMAL, "SLIDER_TYPE_NORMAL", 613555481u, 0, 18, NULL); -be_define_const_str(ALIGN_OUT_RIGHT_BOTTOM, "ALIGN_OUT_RIGHT_BOTTOM", 3786852942u, 0, 22, &be_const_str_HM10_RX); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_add_protect); -be_define_const_str(add_protect, "add_protect", 175601728u, 0, 11, &be_const_str_get_layout); -be_define_const_str(get_layout, "get_layout", 2537311278u, 0, 10, &be_const_str_set_outline_color); -be_define_const_str(set_outline_color, "set_outline_color", 3028574774u, 0, 17, NULL); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); -be_define_const_str(ALIGN_IN_BOTTOM_LEFT, "ALIGN_IN_BOTTOM_LEFT", 3951704846u, 0, 20, &be_const_str_RA8876_CS); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, NULL); -be_define_const_str(ALIGN_OUT_LEFT_TOP, "ALIGN_OUT_LEFT_TOP", 2335540111u, 0, 18, &be_const_str_set_bg_color); -be_define_const_str(set_bg_color, "set_bg_color", 3381646455u, 0, 12, NULL); -be_define_const_str(KEYBOARD_MODE_TEXT_LOWER, "KEYBOARD_MODE_TEXT_LOWER", 3755201214u, 0, 24, NULL); -be_define_const_str(get_height_fit, "get_height_fit", 2561566971u, 0, 14, &be_const_str_set_adv_hittest); -be_define_const_str(set_adv_hittest, "set_adv_hittest", 2312818651u, 0, 15, NULL); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(CALENDAR_PART_DAY_NAMES, "CALENDAR_PART_DAY_NAMES", 1761763651u, 0, 23, &be_const_str_ILI9488_CS); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_get_auto_size); -be_define_const_str(get_auto_size, "get_auto_size", 241966433u, 0, 13, &be_const_str_get_focused); -be_define_const_str(get_focused, "get_focused", 973974289u, 0, 11, &be_const_str_set_fit4); -be_define_const_str(set_fit4, "set_fit4", 31904989u, 0, 8, NULL); -be_define_const_str(SILVER, "SILVER", 1471925664u, 0, 6, NULL); -be_define_const_str(set_cell_type, "set_cell_type", 1502464221u, 0, 13, NULL); -be_define_const_str(ALIGN_OUT_RIGHT_MID, "ALIGN_OUT_RIGHT_MID", 2298501353u, 0, 19, &be_const_str_BTN_STATE_RELEASED); -be_define_const_str(BTN_STATE_RELEASED, "BTN_STATE_RELEASED", 4133711537u, 0, 18, &be_const_str_DROPDOWN_PART_LIST); -be_define_const_str(DROPDOWN_PART_LIST, "DROPDOWN_PART_LIST", 2923479101u, 0, 18, &be_const_str_get_needle_img_pivot_x); -be_define_const_str(get_needle_img_pivot_x, "get_needle_img_pivot_x", 1521736283u, 0, 22, &be_const_str_get_width_margin); -be_define_const_str(get_width_margin, "get_width_margin", 872387359u, 0, 16, &be_const_str_set_update_mode); -be_define_const_str(set_update_mode, "set_update_mode", 2089081509u, 0, 15, &be_const_str_step_next); -be_define_const_str(step_next, "step_next", 3163156801u, 0, 9, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_P9813_CLK); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_get_style_transition_prop_3); -be_define_const_str(get_style_transition_prop_3, "get_style_transition_prop_3", 3437946865u, 0, 27, &be_const_str_remove_prop); -be_define_const_str(remove_prop, "remove_prop", 4280941095u, 0, 11, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(BORDER_SIDE_LEFT, "BORDER_SIDE_LEFT", 1415977349u, 0, 16, NULL); -be_define_const_str(set_style_local_border_blend_mode, "set_style_local_border_blend_mode", 3453690930u, 0, 33, &be_const_str_set_style_local_pattern_blend_mode); -be_define_const_str(set_style_local_pattern_blend_mode, "set_style_local_pattern_blend_mode", 3861434146u, 0, 34, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(LAYOUT_CENTER, "LAYOUT_CENTER", 1686380473u, 0, 13, NULL); -be_define_const_str(TABVIEW_TAB_POS_BOTTOM, "TABVIEW_TAB_POS_BOTTOM", 3095544198u, 0, 22, NULL); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_create); -be_define_const_str(create, "create", 649812317u, 0, 6, &be_const_str_set_style_local_pattern_opa); -be_define_const_str(set_style_local_pattern_opa, "set_style_local_pattern_opa", 3467015361u, 0, 27, NULL); -be_define_const_str(TABVIEW_TAB_POS_TOP, "TABVIEW_TAB_POS_TOP", 4224766616u, 0, 19, NULL); -be_define_const_str(KEY_DOWN, "KEY_DOWN", 2353719865u, 0, 8, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_get_cursor_hidden); -be_define_const_str(get_cursor_hidden, "get_cursor_hidden", 3032264799u, 0, 17, NULL); -be_define_const_str(BORDER_SIDE_RIGHT, "BORDER_SIDE_RIGHT", 1842095998u, 0, 17, &be_const_str_set_style_local_line_color); -be_define_const_str(set_style_local_line_color, "set_style_local_line_color", 1174390096u, 0, 26, NULL); -be_define_const_str(BLEND_MODE_ADDITIVE, "BLEND_MODE_ADDITIVE", 3732684283u, 0, 19, &be_const_str_STYLE_TEXT_SEL_BG_COLOR); -be_define_const_str(STYLE_TEXT_SEL_BG_COLOR, "STYLE_TEXT_SEL_BG_COLOR", 2758212579u, 0, 23, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(clear_state, "clear_state", 2113290696u, 0, 11, NULL); -be_define_const_str(STYLE_TRANSITION_PROP_2, "STYLE_TRANSITION_PROP_2", 979496881u, 0, 23, NULL); -be_define_const_str(DISP_SIZE_EXTRA_LARGE, "DISP_SIZE_EXTRA_LARGE", 3382996246u, 0, 21, &be_const_str_SYMBOL_LIST); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); -be_define_const_str(STYLE_BG_GRAD_COLOR, "STYLE_BG_GRAD_COLOR", 444266945u, 0, 19, &be_const_str_set_cursor_pos); -be_define_const_str(set_cursor_pos, "set_cursor_pos", 1354380555u, 0, 14, NULL); -be_define_const_str(EVENT_DRAG_BEGIN, "EVENT_DRAG_BEGIN", 25766504u, 0, 16, NULL); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_set_style_local_text_color); -be_define_const_str(set_style_local_text_color, "set_style_local_text_color", 2285935637u, 0, 26, NULL); -be_define_const_str(draw_scale, "draw_scale", 3602887006u, 0, 10, &be_const_str_init_draw_label_dsc); -be_define_const_str(init_draw_label_dsc, "init_draw_label_dsc", 3549659870u, 0, 19, &be_const_str_set_style_local_image_opa); -be_define_const_str(set_style_local_image_opa, "set_style_local_image_opa", 3630403626u, 0, 25, NULL); -be_define_const_str(set_anim_speed, "set_anim_speed", 3709305189u, 0, 14, &be_const_str_set_btn_width); -be_define_const_str(set_btn_width, "set_btn_width", 2736013227u, 0, 13, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_focus_prev); -be_define_const_str(focus_prev, "focus_prev", 2639915985u, 0, 10, &be_const_str_get_sb_mode); -be_define_const_str(get_sb_mode, "get_sb_mode", 2283093353u, 0, 11, &be_const_str_set_cell_crop); -be_define_const_str(set_cell_crop, "set_cell_crop", 1055583431u, 0, 13, NULL); -be_define_const_str(get_style_opa_scale, "get_style_opa_scale", 568621865u, 0, 19, NULL); -be_define_const_str(CHART_AXIS_SKIP_LAST_TICK, "CHART_AXIS_SKIP_LAST_TICK", 3664086830u, 0, 25, &be_const_str_PMS5003_TX); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, NULL); -be_define_const_str(BORDER_SIDE_TOP, "BORDER_SIDE_TOP", 3643834727u, 0, 15, &be_const_str_close); -be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_set_border_width); -be_define_const_str(set_border_width, "set_border_width", 2740080977u, 0, 16, &be_const_str_set_style_local_shadow_width); -be_define_const_str(set_style_local_shadow_width, "set_style_local_shadow_width", 2466053617u, 0, 28, &be_const_str_set_x_tick_texts); -be_define_const_str(set_x_tick_texts, "set_x_tick_texts", 481792535u, 0, 16, NULL); -be_define_const_str(get_style_pattern_repeat, "get_style_pattern_repeat", 3530119950u, 0, 24, NULL); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_TEXT_DECOR_UNDERLINE); -be_define_const_str(TEXT_DECOR_UNDERLINE, "TEXT_DECOR_UNDERLINE", 1425097719u, 0, 20, &be_const_str_get_draw_rect_ext_pad_size); -be_define_const_str(get_draw_rect_ext_pad_size, "get_draw_rect_ext_pad_size", 3223809685u, 0, 26, NULL); -be_define_const_str(cut_text, "cut_text", 3023853443u, 0, 8, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_get_wrap); -be_define_const_str(get_wrap, "get_wrap", 52299084u, 0, 8, NULL); -be_define_const_str(focus_next, "focus_next", 2510018461u, 0, 10, NULL); -be_define_const_str(BTN_STATE_PRESSED, "BTN_STATE_PRESSED", 1194269292u, 0, 17, &be_const_str_get_focused_btn); -be_define_const_str(get_focused_btn, "get_focused_btn", 1271435326u, 0, 15, NULL); -be_define_const_str(OBJ_PART_VIRTUAL_FIRST, "OBJ_PART_VIRTUAL_FIRST", 1744058739u, 0, 22, NULL); -be_define_const_str(set_disabled, "set_disabled", 3892741852u, 0, 12, NULL); -be_define_const_str(TXT_FLAG_EXPAND, "TXT_FLAG_EXPAND", 964598951u, 0, 15, NULL); -be_define_const_str(set_hidden, "set_hidden", 2478665880u, 0, 10, &be_const_str_set_shadow_color); -be_define_const_str(set_shadow_color, "set_shadow_color", 1565203920u, 0, 16, NULL); -be_define_const_str(STYLE_IMAGE_OPA, "STYLE_IMAGE_OPA", 1064316425u, 0, 15, &be_const_str_get_top); -be_define_const_str(get_top, "get_top", 1711502355u, 0, 7, &be_const_str_set_focus_parent); -be_define_const_str(set_focus_parent, "set_focus_parent", 2829293865u, 0, 16, &be_const_str_toggle); -be_define_const_str(toggle, "toggle", 1076453893u, 0, 6, NULL); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SWT1_NP); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_WEBCAM_SIOC); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); -be_define_const_str(LED_PART_MAIN, "LED_PART_MAIN", 3314442918u, 0, 13, NULL); -be_define_const_str(CPICKER_COLOR_MODE_SATURATION, "CPICKER_COLOR_MODE_SATURATION", 1463184715u, 0, 29, &be_const_str_get_needle_img); -be_define_const_str(get_needle_img, "get_needle_img", 477560399u, 0, 14, &be_const_str_set_transition_time); -be_define_const_str(set_transition_time, "set_transition_time", 887720041u, 0, 19, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_NRF24_CS); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, NULL); -be_define_const_str(add_btn, "add_btn", 1053483819u, 0, 7, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_get_edge_flash); -be_define_const_str(get_edge_flash, "get_edge_flash", 3226611892u, 0, 14, &be_const_str_get_focus_cb); -be_define_const_str(get_focus_cb, "get_focus_cb", 3115584616u, 0, 12, &be_const_str_get_style_image_recolor); -be_define_const_str(get_style_image_recolor, "get_style_image_recolor", 2369811232u, 0, 23, &be_const_str_set_line_dash_width); -be_define_const_str(set_line_dash_width, "set_line_dash_width", 347528132u, 0, 19, NULL); -be_define_const_str(get_style_border_opa, "get_style_border_opa", 140307373u, 0, 20, NULL); -be_define_const_str(get_style_outline_color, "get_style_outline_color", 3936324952u, 0, 23, &be_const_str_set_style_local_line_rounded); -be_define_const_str(set_style_local_line_rounded, "set_style_local_line_rounded", 3167871810u, 0, 28, &be_const_str_set_style_local_transition_prop_6); -be_define_const_str(set_style_local_transition_prop_6, "set_style_local_transition_prop_6", 2535204486u, 0, 33, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(cursor_left, "cursor_left", 785231665u, 0, 11, &be_const_str_get_style_value_line_space); -be_define_const_str(get_style_value_line_space, "get_style_value_line_space", 592322595u, 0, 26, &be_const_str_set_align); -be_define_const_str(set_align, "set_align", 2592958913u, 0, 9, &be_const_str_set_drag_throw); -be_define_const_str(set_drag_throw, "set_drag_throw", 2511679421u, 0, 14, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_PWM1); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_STYLE_TRANSFORM_WIDTH); -be_define_const_str(STYLE_TRANSFORM_WIDTH, "STYLE_TRANSFORM_WIDTH", 2096880210u, 0, 21, &be_const_str_set_rotation); -be_define_const_str(set_rotation, "set_rotation", 2130936338u, 0, 12, NULL); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, NULL); -be_define_const_str(BTN_STATE_CHECKED_DISABLED, "BTN_STATE_CHECKED_DISABLED", 1537172432u, 0, 26, &be_const_str_LAYOUT_GRID); -be_define_const_str(LAYOUT_GRID, "LAYOUT_GRID", 1755252272u, 0, 11, NULL); -be_define_const_str(ALIGN_OUT_TOP_MID, "ALIGN_OUT_TOP_MID", 1680148984u, 0, 17, &be_const_str_get_textarea); -be_define_const_str(get_textarea, "get_textarea", 839445266u, 0, 12, NULL); -be_define_const_str(get_btn_label, "get_btn_label", 3300200213u, 0, 13, NULL); -be_define_const_str(OBJMASK_PART_MAIN, "OBJMASK_PART_MAIN", 1960600366u, 0, 17, &be_const_str_STYLE_IMAGE_BLEND_MODE); -be_define_const_str(STYLE_IMAGE_BLEND_MODE, "STYLE_IMAGE_BLEND_MODE", 3457971258u, 0, 22, &be_const_str_blur_ver); -be_define_const_str(blur_ver, "blur_ver", 2584500226u, 0, 8, NULL); -be_define_const_str(LABEL_LONG_BREAK, "LABEL_LONG_BREAK", 3669129840u, 0, 16, &be_const_str_get_child); -be_define_const_str(get_child, "get_child", 1282595182u, 0, 9, NULL); -be_define_const_str(get_from_btn, "get_from_btn", 2802016263u, 0, 12, &be_const_str_get_style_value_letter_space); -be_define_const_str(get_style_value_letter_space, "get_style_value_letter_space", 193712565u, 0, 28, NULL); -be_define_const_str(LAYOUT_ROW_TOP, "LAYOUT_ROW_TOP", 4030593648u, 0, 14, &be_const_str_set_cursor_click_pos); -be_define_const_str(set_cursor_click_pos, "set_cursor_click_pos", 641192476u, 0, 20, &be_const_str_stop_auto_close); -be_define_const_str(stop_auto_close, "stop_auto_close", 3282451958u, 0, 15, NULL); -be_define_const_str(KEYBOARD_MODE_TEXT_UPPER, "KEYBOARD_MODE_TEXT_UPPER", 2335009259u, 0, 24, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_get_auto_fit); -be_define_const_str(get_auto_fit, "get_auto_fit", 2158692767u, 0, 12, &be_const_str_get_click_focus); -be_define_const_str(get_click_focus, "get_click_focus", 1418740299u, 0, 15, &be_const_str_get_style_pattern_recolor); -be_define_const_str(get_style_pattern_recolor, "get_style_pattern_recolor", 1808910091u, 0, 25, &be_const_str_set_cursor_blink_time); -be_define_const_str(set_cursor_blink_time, "set_cursor_blink_time", 3508000825u, 0, 21, &be_const_str_set_scrl_layout); -be_define_const_str(set_scrl_layout, "set_scrl_layout", 2051800603u, 0, 15, NULL); -be_define_const_str(EVENT_APPLY, "EVENT_APPLY", 1983056372u, 0, 11, &be_const_str_get_scroll_propagation); -be_define_const_str(get_scroll_propagation, "get_scroll_propagation", 431556896u, 0, 22, &be_const_str_scroll_ver); -be_define_const_str(scroll_ver, "scroll_ver", 3241545950u, 0, 10, NULL); -be_define_const_str(is_point_on_coords, "is_point_on_coords", 2479052471u, 0, 18, NULL); -be_define_const_str(get_style_scale_end_line_width, "get_style_scale_end_line_width", 1969204230u, 0, 30, &be_const_str_scr_act); -be_define_const_str(scr_act, "scr_act", 2080211456u, 0, 7, NULL); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_WEBCAM_PWDN); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_set_long_mode); -be_define_const_str(set_long_mode, "set_long_mode", 1177453792u, 0, 13, NULL); -be_define_const_str(EVENT_REFRESH, "EVENT_REFRESH", 741028651u, 0, 13, &be_const_str_clear_btn_ctrl_all); -be_define_const_str(clear_btn_ctrl_all, "clear_btn_ctrl_all", 895272499u, 0, 18, &be_const_str_is_inactive); -be_define_const_str(is_inactive, "is_inactive", 2737113619u, 0, 11, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, &be_const_str_set_arc_length); -be_define_const_str(set_arc_length, "set_arc_length", 2972977809u, 0, 14, NULL); -be_define_const_str(get_label, "get_label", 3416266470u, 0, 9, &be_const_str_refresh); -be_define_const_str(refresh, "refresh", 3572655668u, 0, 7, NULL); -be_define_const_str(get_style_value_color, "get_style_value_color", 76857167u, 0, 21, &be_const_str_lv_spinner); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); -be_define_const_str(FS_RES_NOT_IMP, "FS_RES_NOT_IMP", 3493778168u, 0, 14, &be_const_str_RF_SENSOR); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_set_style_local_value_opa); -be_define_const_str(set_style_local_value_opa, "set_style_local_value_opa", 3003874062u, 0, 25, NULL); -be_define_const_str(CHART_AXIS_INVERSE_LABELS_ORDER, "CHART_AXIS_INVERSE_LABELS_ORDER", 1279914111u, 0, 31, &be_const_str_set_critical_value); -be_define_const_str(set_critical_value, "set_critical_value", 1194587727u, 0, 18, NULL); -be_define_const_str(PROTECT_EVENT_TO_DISABLED, "PROTECT_EVENT_TO_DISABLED", 330306814u, 0, 25, NULL); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(set_style_local_text_font, "set_style_local_text_font", 954295699u, 0, 25, NULL); -be_define_const_str(get_editing, "get_editing", 281870028u, 0, 11, &be_const_str_get_long_mode); -be_define_const_str(get_long_mode, "get_long_mode", 2750961764u, 0, 13, &be_const_str_invalidate); -be_define_const_str(invalidate, "invalidate", 2649734928u, 0, 10, &be_const_str_title_get_alignment); -be_define_const_str(title_get_alignment, "title_get_alignment", 3374080476u, 0, 19, NULL); -be_define_const_str(clean_style_list, "clean_style_list", 1108481805u, 0, 16, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, NULL); -be_define_const_str(ALIGN_IN_RIGHT_MID, "ALIGN_IN_RIGHT_MID", 1518023108u, 0, 18, NULL); -be_define_const_str(CHART_CURSOR_RIGHT, "CHART_CURSOR_RIGHT", 2464313335u, 0, 18, &be_const_str_TFMINIPLUS_RX); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_KEYBOARD_MODE_SPECIAL); -be_define_const_str(KEYBOARD_MODE_SPECIAL, "KEYBOARD_MODE_SPECIAL", 968590554u, 0, 21, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); -be_define_const_str(ARC_PART_BG, "ARC_PART_BG", 3149008005u, 0, 11, &be_const_str_ELECTRIQ_MOODL_TX); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SM16716_CLK); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_get_next_btn); -be_define_const_str(get_next_btn, "get_next_btn", 1221160406u, 0, 12, NULL); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_remove_series); -be_define_const_str(remove_series, "remove_series", 2007033791u, 0, 13, NULL); -be_define_const_str(get_step, "get_step", 2497148826u, 0, 8, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_set_placeholder_text); -be_define_const_str(set_placeholder_text, "set_placeholder_text", 1413918705u, 0, 20, NULL); -be_define_const_str(get_style_margin_left, "get_style_margin_left", 1765248440u, 0, 21, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); -be_define_const_str(get_angle, "get_angle", 1113203995u, 0, 9, NULL); -be_define_const_str(refresh_style, "refresh_style", 3029800338u, 0, 13, NULL); -be_define_const_str(set_fit, "set_fit", 4009334267u, 0, 7, NULL); -be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); -be_define_const_str(DROPDOWN_PART_MAIN, "DROPDOWN_PART_MAIN", 1806576308u, 0, 18, &be_const_str_IRRECV); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(draw_rect, "draw_rect", 1619240338u, 0, 9, &be_const_str_set_style_local_scale_end_color); -be_define_const_str(set_style_local_scale_end_color, "set_style_local_scale_end_color", 2968375966u, 0, 31, NULL); -be_define_const_str(get_ext_click_pad_right, "get_ext_click_pad_right", 3976528463u, 0, 23, &be_const_str_get_style_border_post); -be_define_const_str(get_style_border_post, "get_style_border_post", 3537874563u, 0, 21, NULL); -be_define_const_str(set_style_local_line_width, "set_style_local_line_width", 1133761671u, 0, 26, &be_const_str_set_text_sel_start); -be_define_const_str(set_text_sel_start, "set_text_sel_start", 886455347u, 0, 18, NULL); -be_define_const_str(STYLE_BORDER_OPA, "STYLE_BORDER_OPA", 2705633552u, 0, 16, &be_const_str_STYLE_VALUE_ALIGN); -be_define_const_str(STYLE_VALUE_ALIGN, "STYLE_VALUE_ALIGN", 3531731246u, 0, 17, &be_const_str_get_type); -be_define_const_str(get_type, "get_type", 2996227024u, 0, 8, NULL); -be_define_const_str(CHART_TYPE_COLUMN, "CHART_TYPE_COLUMN", 385586299u, 0, 17, &be_const_str_LOW); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(set_style_local_line_blend_mode, "set_style_local_line_blend_mode", 2166063994u, 0, 31, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_DRAG_DIR_BOTH); -be_define_const_str(DRAG_DIR_BOTH, "DRAG_DIR_BOTH", 740935659u, 0, 13, &be_const_str_set_col_width); -be_define_const_str(set_col_width, "set_col_width", 28420413u, 0, 13, NULL); -be_define_const_str(set_image_recolor_opa, "set_image_recolor_opa", 558003471u, 0, 21, NULL); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_SM2135_CLK); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_STYLE_LINE_ROUNDED); -be_define_const_str(STYLE_LINE_ROUNDED, "STYLE_LINE_ROUNDED", 3677440219u, 0, 18, &be_const_str_set_outline_opa); -be_define_const_str(set_outline_opa, "set_outline_opa", 1167424027u, 0, 15, NULL); -be_define_const_str(MAROON, "MAROON", 770976181u, 0, 6, &be_const_str_NRG_CF1); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_atan); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_set_transition_prop_3); -be_define_const_str(set_transition_prop_3, "set_transition_prop_3", 3000346107u, 0, 21, NULL); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_get_style_pad_inner); -be_define_const_str(get_style_pad_inner, "get_style_pad_inner", 213811544u, 0, 19, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_list_get_local_style); -be_define_const_str(list_get_local_style, "list_get_local_style", 2313938368u, 0, 20, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); -be_define_const_str(get_style_transform_width, "get_style_transform_width", 713115893u, 0, 25, &be_const_str_set_text_line_space); -be_define_const_str(set_text_line_space, "set_text_line_space", 3186151063u, 0, 19, NULL); -be_define_const_str(ROLLER_MODE_INFINITE, "ROLLER_MODE_INFINITE", 288931678u, 0, 20, &be_const_str_add_state); -be_define_const_str(add_state, "add_state", 934613858u, 0, 9, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); -be_define_const_str(STYLE_SHADOW_COLOR, "STYLE_SHADOW_COLOR", 368908723u, 0, 18, &be_const_str_set_transition_path); -be_define_const_str(set_transition_path, "set_transition_path", 689428023u, 0, 19, NULL); -be_define_const_str(get_bright, "get_bright", 203831460u, 0, 10, NULL); -be_define_const_str(get_needle_count, "get_needle_count", 2722615919u, 0, 16, &be_const_str_set_ext_array); -be_define_const_str(set_ext_array, "set_ext_array", 3579382093u, 0, 13, &be_const_str_set_style_local_value_letter_space); -be_define_const_str(set_style_local_value_letter_space, "set_style_local_value_letter_space", 826246017u, 0, 34, &be_const_str_set_tasmota_logo); -be_define_const_str(set_tasmota_logo, "set_tasmota_logo", 4090375591u, 0, 16, NULL); -be_define_const_str(SPINNER_DIR_FORWARD, "SPINNER_DIR_FORWARD", 660203948u, 0, 19, &be_const_str_clear_protect); -be_define_const_str(clear_protect, "clear_protect", 2408863094u, 0, 13, &be_const_str_get_style_scale_border_width); -be_define_const_str(get_style_scale_border_width, "get_style_scale_border_width", 206289592u, 0, 28, &be_const_str_set_scale_end_border_width); -be_define_const_str(set_scale_end_border_width, "set_scale_end_border_width", 3280087724u, 0, 26, NULL); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); -be_define_const_str(get_gesture_parent, "get_gesture_parent", 2610282188u, 0, 18, &be_const_str_list_init); -be_define_const_str(list_init, "list_init", 2798529232u, 0, 9, NULL); -be_define_const_str(KEY_RIGHT, "KEY_RIGHT", 3690237745u, 0, 9, NULL); -be_define_const_str(STYLE_SIZE, "STYLE_SIZE", 2268500266u, 0, 10, NULL); -be_define_const_str(EVENT_CLICKED, "EVENT_CLICKED", 243475129u, 0, 13, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_set_border_opa); +be_define_const_str(get_min_value, "get_min_value", 3238705374u, 0, 13, &be_const_str_set_max_height); +be_define_const_str(set_max_height, "set_max_height", 394927448u, 0, 14, NULL); +be_define_const_str(draw_polygon, "draw_polygon", 271325674u, 0, 12, &be_const_str_set_point_id); +be_define_const_str(set_point_id, "set_point_id", 388814210u, 0, 12, NULL); +be_define_const_str(get_zoom, "get_zoom", 2259829907u, 0, 8, NULL); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, NULL); +be_define_const_str(BORDER_SIDE_BOTTOM, "BORDER_SIDE_BOTTOM", 1006865647u, 0, 18, &be_const_str_MHZ_RXD); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_set_style_local_image_blend_mode); +be_define_const_str(set_style_local_image_blend_mode, "set_style_local_image_blend_mode", 1792244615u, 0, 32, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_get_col_width); +be_define_const_str(get_col_width, "get_col_width", 638670073u, 0, 13, &be_const_str_get_src); +be_define_const_str(get_src, "get_src", 403557294u, 0, 7, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, &be_const_str_set_border_opa); be_define_const_str(set_border_opa, "set_border_opa", 3722959347u, 0, 14, NULL); -be_define_const_str(LAYOUT_COLUMN_LEFT, "LAYOUT_COLUMN_LEFT", 3178094182u, 0, 18, NULL); -be_define_const_str(CHART_CURSOR_NONE, "CHART_CURSOR_NONE", 2955624997u, 0, 17, &be_const_str_IBEACON_RX); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_STYLE_SCALE_END_LINE_WIDTH); -be_define_const_str(STYLE_SCALE_END_LINE_WIDTH, "STYLE_SCALE_END_LINE_WIDTH", 2154819175u, 0, 26, &be_const_str_set_shadow_width); -be_define_const_str(set_shadow_width, "set_shadow_width", 1524575495u, 0, 16, NULL); -be_define_const_str(STYLE_VALUE_FONT, "STYLE_VALUE_FONT", 1861540608u, 0, 16, NULL); -be_define_const_str(BAR_TYPE_NORMAL, "BAR_TYPE_NORMAL", 3652519691u, 0, 15, &be_const_str_STYLE_LINE_COLOR); -be_define_const_str(STYLE_LINE_COLOR, "STYLE_LINE_COLOR", 623603885u, 0, 16, &be_const_str_STYLE_TRANSFORM_ZOOM); -be_define_const_str(STYLE_TRANSFORM_ZOOM, "STYLE_TRANSFORM_ZOOM", 224871941u, 0, 20, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_set_style_local_border_color); -be_define_const_str(set_style_local_border_color, "set_style_local_border_color", 2798696056u, 0, 28, &be_const_str_set_style_local_shadow_ofs_x); -be_define_const_str(set_style_local_shadow_ofs_x, "set_style_local_shadow_ofs_x", 1619093604u, 0, 28, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_LMT01); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_SYMBOL_BLUETOOTH); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str_TXT_FLAG_FIT); -be_define_const_str(TXT_FLAG_FIT, "TXT_FLAG_FIT", 3174579022u, 0, 12, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_set_angles); -be_define_const_str(set_angles, "set_angles", 895400084u, 0, 10, NULL); -be_define_const_str(get_btn_index, "get_btn_index", 1289059379u, 0, 13, NULL); -be_define_const_str(STYLE_LINE_WIDTH, "STYLE_LINE_WIDTH", 537342374u, 0, 16, &be_const_str_SYMBOL_BULLET); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, NULL); -be_define_const_str(get_style_transition_prop_6, "get_style_transition_prop_6", 3488279722u, 0, 27, NULL); -be_define_const_str(STYLE_OUTLINE_BLEND_MODE, "STYLE_OUTLINE_BLEND_MODE", 3861262655u, 0, 24, NULL); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_get_btn_img); -be_define_const_str(get_btn_img, "get_btn_img", 177039868u, 0, 11, &be_const_str_set_style_local_radius); -be_define_const_str(set_style_local_radius, "set_style_local_radius", 1410446896u, 0, 22, NULL); -be_define_const_str(EVENT_PRESSING, "EVENT_PRESSING", 2840400065u, 0, 14, &be_const_str_NRG_SEL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_STYLE_VALUE_OPA); -be_define_const_str(STYLE_VALUE_OPA, "STYLE_VALUE_OPA", 2917777025u, 0, 15, &be_const_str_set_zoom); -be_define_const_str(set_zoom, "set_zoom", 1925134407u, 0, 8, NULL); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); -be_define_const_str(get_click, "get_click", 1755279632u, 0, 9, &be_const_str_get_style_line_dash_gap); -be_define_const_str(get_style_line_dash_gap, "get_style_line_dash_gap", 1205629734u, 0, 23, NULL); -be_define_const_str(get_style_pad_top, "get_style_pad_top", 2896917811u, 0, 17, &be_const_str_set_style_local_image_blend_mode); -be_define_const_str(set_style_local_image_blend_mode, "set_style_local_image_blend_mode", 1792244615u, 0, 32, &be_const_str_set_value_ofs_x); -be_define_const_str(set_value_ofs_x, "set_value_ofs_x", 112450803u, 0, 15, NULL); -be_define_const_str(get_style_margin_bottom, "get_style_margin_bottom", 2589475122u, 0, 23, &be_const_str_lv_calendar); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_set_hidden); +be_define_const_str(set_hidden, "set_hidden", 2478665880u, 0, 10, &be_const_str_set_style_local_pattern_image); +be_define_const_str(set_style_local_pattern_image, "set_style_local_pattern_image", 350348106u, 0, 29, NULL); +be_define_const_str(PURPLE, "PURPLE", 2539335743u, 0, 6, &be_const_str_set_insert_replace); +be_define_const_str(set_insert_replace, "set_insert_replace", 1439171942u, 0, 18, &be_const_str_set_series_axis); +be_define_const_str(set_series_axis, "set_series_axis", 3828439823u, 0, 15, NULL); +be_define_const_str(DROPDOWN_DIR_LEFT, "DROPDOWN_DIR_LEFT", 3057408860u, 0, 17, NULL); +be_define_const_str(CPICKER_COLOR_MODE_HUE, "CPICKER_COLOR_MODE_HUE", 1583032607u, 0, 22, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_get_label_count); +be_define_const_str(get_label_count, "get_label_count", 1700997322u, 0, 15, &be_const_str_set_text_sel); +be_define_const_str(set_text_sel, "set_text_sel", 1928405316u, 0, 12, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_add_btn); +be_define_const_str(add_btn, "add_btn", 1053483819u, 0, 7, NULL); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_set_cell_merge_right); +be_define_const_str(set_cell_merge_right, "set_cell_merge_right", 3174593866u, 0, 20, NULL); +be_define_const_str(init_draw_line_dsc, "init_draw_line_dsc", 2507936040u, 0, 18, NULL); +be_define_const_str(SCROLLBAR_MODE_UNHIDE, "SCROLLBAR_MODE_UNHIDE", 827854473u, 0, 21, NULL); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_get_base_dir); +be_define_const_str(get_base_dir, "get_base_dir", 1814851485u, 0, 12, NULL); +be_define_const_str(TXT_FLAG_EXPAND, "TXT_FLAG_EXPAND", 964598951u, 0, 15, NULL); +be_define_const_str(STYLE_VALUE_LINE_SPACE, "STYLE_VALUE_LINE_SPACE", 2028376414u, 0, 22, &be_const_str_TFMINIPLUS_TX); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_allocate_ext_attr); +be_define_const_str(allocate_ext_attr, "allocate_ext_attr", 915956424u, 0, 17, &be_const_str_cursor_right); +be_define_const_str(cursor_right, "cursor_right", 2216262354u, 0, 12, &be_const_str_get_drag_dir); +be_define_const_str(get_drag_dir, "get_drag_dir", 3921105230u, 0, 12, &be_const_str_lv_calendar); be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); -be_define_const_str(get_knob_colored, "get_knob_colored", 2664754853u, 0, 16, NULL); -be_define_const_str(GRAY, "GRAY", 4159498394u, 0, 4, &be_const_str_LIME); -be_define_const_str(LIME, "LIME", 87366652u, 0, 4, NULL); -be_define_const_str(STATE_FOCUSED, "STATE_FOCUSED", 3780463572u, 0, 13, NULL); -be_define_const_str(set_range, "set_range", 228092793u, 0, 9, NULL); -be_define_const_str(EVENT_PRESSED, "EVENT_PRESSED", 3734627670u, 0, 13, NULL); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_get_style_pattern_opa); +be_define_const_str(STYLE_RADIUS, "STYLE_RADIUS", 1029481353u, 0, 12, &be_const_str_get_style_pattern_recolor); +be_define_const_str(get_style_pattern_recolor, "get_style_pattern_recolor", 1808910091u, 0, 25, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_SM16716_DAT); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(get_focus_cb, "get_focus_cb", 3115584616u, 0, 12, NULL); +be_define_const_str(get_text_sel_start, "get_text_sel_start", 1075131103u, 0, 18, NULL); +be_define_const_str(FS_RES_LOCKED, "FS_RES_LOCKED", 3948147866u, 0, 13, &be_const_str_HIGH); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(set_adjustable, "set_adjustable", 1573073815u, 0, 14, NULL); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str_del_char); +be_define_const_str(del_char, "del_char", 3624762103u, 0, 8, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, NULL); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SYMBOL_WIFI); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, NULL); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(BTN_STATE_RELEASED, "BTN_STATE_RELEASED", 4133711537u, 0, 18, NULL); +be_define_const_str(get_style_size, "get_style_size", 3698157111u, 0, 14, NULL); +be_define_const_str(get_style_text_line_space, "get_style_text_line_space", 1588877665u, 0, 25, NULL); +be_define_const_str(DISP_ROT_180, "DISP_ROT_180", 1300448899u, 0, 12, &be_const_str_get_style_transform_angle); +be_define_const_str(get_style_transform_angle, "get_style_transform_angle", 1307352290u, 0, 25, NULL); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); +be_define_const_str(ALIGN_OUT_RIGHT_TOP, "ALIGN_OUT_RIGHT_TOP", 1142849712u, 0, 19, &be_const_str_get_inner_coords); +be_define_const_str(get_inner_coords, "get_inner_coords", 985433607u, 0, 16, NULL); +be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); +be_define_const_str(MAGENTA, "MAGENTA", 1444046984u, 0, 7, &be_const_str_get_ext_attr); +be_define_const_str(get_ext_attr, "get_ext_attr", 2125271231u, 0, 12, NULL); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_get_state); +be_define_const_str(get_state, "get_state", 3804504029u, 0, 9, &be_const_str_set_style_local_value_str); +be_define_const_str(set_style_local_value_str, "set_style_local_value_str", 3984127099u, 0, 25, NULL); +be_define_const_str(get_style_image_recolor, "get_style_image_recolor", 2369811232u, 0, 23, NULL); +be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); +be_define_const_str(SLIDER_TYPE_NORMAL, "SLIDER_TYPE_NORMAL", 613555481u, 0, 18, &be_const_str_TXT_CMD_STATE_WAIT); +be_define_const_str(TXT_CMD_STATE_WAIT, "TXT_CMD_STATE_WAIT", 1721068338u, 0, 18, &be_const_str_TXT_FLAG_RECOLOR); +be_define_const_str(TXT_FLAG_RECOLOR, "TXT_FLAG_RECOLOR", 2017218753u, 0, 16, &be_const_str_set_scale_border_width); +be_define_const_str(set_scale_border_width, "set_scale_border_width", 3210684730u, 0, 22, &be_const_str_set_transition_prop_3); +be_define_const_str(set_transition_prop_3, "set_transition_prop_3", 3000346107u, 0, 21, NULL); +be_define_const_str(BLACK, "BLACK", 1750494276u, 0, 5, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_set_height_fit); +be_define_const_str(set_height_fit, "set_height_fit", 4033083607u, 0, 14, NULL); +be_define_const_str(NAVY, "NAVY", 1719816465u, 0, 4, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_LAYOUT_COLUMN_RIGHT); +be_define_const_str(LAYOUT_COLUMN_RIGHT, "LAYOUT_COLUMN_RIGHT", 912913083u, 0, 19, &be_const_str_OBJ_PART_ALL); +be_define_const_str(OBJ_PART_ALL, "OBJ_PART_ALL", 3502425074u, 0, 12, &be_const_str_get_auto_size); +be_define_const_str(get_auto_size, "get_auto_size", 241966433u, 0, 13, &be_const_str_get_btn_img); +be_define_const_str(get_btn_img, "get_btn_img", 177039868u, 0, 11, &be_const_str_set_outline_color); +be_define_const_str(set_outline_color, "set_outline_color", 3028574774u, 0, 17, &be_const_str_set_value_color); +be_define_const_str(set_value_color, "set_value_color", 2148821625u, 0, 15, NULL); +be_define_const_str(align_x, "align_x", 3735213169u, 0, 7, &be_const_str_set_style_local_pad_inner); +be_define_const_str(set_style_local_pad_inner, "set_style_local_pad_inner", 3980353812u, 0, 25, &be_const_str_elif); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_get_col_cnt); +be_define_const_str(get_col_cnt, "get_col_cnt", 2182323590u, 0, 11, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(set_border_side, "set_border_side", 466446692u, 0, 15, NULL); +be_define_const_str(LAYOUT_COLUMN_LEFT, "LAYOUT_COLUMN_LEFT", 3178094182u, 0, 18, &be_const_str_TABVIEW_TAB_POS_RIGHT); +be_define_const_str(TABVIEW_TAB_POS_RIGHT, "TABVIEW_TAB_POS_RIGHT", 3809644849u, 0, 21, &be_const_str_get_style_transition_prop_1); +be_define_const_str(get_style_transition_prop_1, "get_style_transition_prop_1", 3404391627u, 0, 27, &be_const_str_set_knob_colored); +be_define_const_str(set_knob_colored, "set_knob_colored", 2285165409u, 0, 16, &be_const_str_set_left_value); +be_define_const_str(set_left_value, "set_left_value", 731130751u, 0, 14, NULL); +be_define_const_str(get_local_style, "get_local_style", 2060541417u, 0, 15, NULL); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); +be_define_const_str(get_style_value_letter_space, "get_style_value_letter_space", 193712565u, 0, 28, &be_const_str_set_bg_end_angle); +be_define_const_str(set_bg_end_angle, "set_bg_end_angle", 569028341u, 0, 16, &be_const_str_set_style_local_bg_blend_mode); +be_define_const_str(set_style_local_bg_blend_mode, "set_style_local_bg_blend_mode", 2691986893u, 0, 29, &be_const_str_set_title); +be_define_const_str(set_title, "set_title", 793032418u, 0, 9, NULL); +be_define_const_str(AQUA, "AQUA", 1203273877u, 0, 4, &be_const_str_layer_top); +be_define_const_str(layer_top, "layer_top", 645939682u, 0, 9, &be_const_str_set_transition_prop_6); +be_define_const_str(set_transition_prop_6, "set_transition_prop_6", 3050678964u, 0, 21, &be_const_str_set_value_letter_space); +be_define_const_str(set_value_letter_space, "set_value_letter_space", 1113519355u, 0, 22, NULL); +be_define_const_str(set_style_local_text_font, "set_style_local_text_font", 954295699u, 0, 25, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); +be_define_const_str(set_anim_speed, "set_anim_speed", 3709305189u, 0, 14, &be_const_str_set_border_width); +be_define_const_str(set_border_width, "set_border_width", 2740080977u, 0, 16, &be_const_str_set_transform_angle); +be_define_const_str(set_transform_angle, "set_transform_angle", 2657176848u, 0, 19, NULL); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, NULL); +be_define_const_str(STYLE_VALUE_BLEND_MODE, "STYLE_VALUE_BLEND_MODE", 930238626u, 0, 22, NULL); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(set_scale_grad_color, "set_scale_grad_color", 818937207u, 0, 20, NULL); +be_define_const_str(DISP_ROT_270, "DISP_ROT_270", 3187294969u, 0, 12, &be_const_str___lower__); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, NULL); +be_define_const_str(get_style_transition_prop_4, "get_style_transition_prop_4", 3454724484u, 0, 27, NULL); +be_define_const_str(EVENT_SHORT_CLICKED, "EVENT_SHORT_CLICKED", 2804944112u, 0, 19, &be_const_str_LEDLNK); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_OPA_80); +be_define_const_str(OPA_80, "OPA_80", 4221864914u, 0, 6, &be_const_str_get_style_margin_bottom); +be_define_const_str(get_style_margin_bottom, "get_style_margin_bottom", 2589475122u, 0, 23, &be_const_str_set_scroll_propagation); +be_define_const_str(set_scroll_propagation, "set_scroll_propagation", 2960260372u, 0, 22, NULL); +be_define_const_str(EVENT_DEFOCUSED, "EVENT_DEFOCUSED", 1034310644u, 0, 15, NULL); +be_define_const_str(CALENDAR_PART_BG, "CALENDAR_PART_BG", 562605961u, 0, 16, &be_const_str_move_foreground); +be_define_const_str(move_foreground, "move_foreground", 2558800524u, 0, 15, NULL); +be_define_const_str(BORDER_SIDE_LEFT, "BORDER_SIDE_LEFT", 1415977349u, 0, 16, &be_const_str_set_style_local_pattern_repeat); +be_define_const_str(set_style_local_pattern_repeat, "set_style_local_pattern_repeat", 2930402426u, 0, 30, &be_const_str_set_transition_prop_5); +be_define_const_str(set_transition_prop_5, "set_transition_prop_5", 3101011821u, 0, 21, NULL); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_set_pattern_image); +be_define_const_str(set_pattern_image, "set_pattern_image", 1204394880u, 0, 17, NULL); +be_define_const_str(CHECKBOX_PART_BG, "CHECKBOX_PART_BG", 1308611434u, 0, 16, &be_const_str_OPA_60); +be_define_const_str(OPA_60, "OPA_60", 2008896492u, 0, 6, &be_const_str_TM1638CLK); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_get_style_pattern_opa); be_define_const_str(get_style_pattern_opa, "get_style_pattern_opa", 865471869u, 0, 21, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_OPA_40); -be_define_const_str(OPA_40, "OPA_40", 2210522110u, 0, 6, &be_const_str_PAGE_EDGE_BOTTOM); -be_define_const_str(PAGE_EDGE_BOTTOM, "PAGE_EDGE_BOTTOM", 3735543556u, 0, 16, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); -be_define_const_str(set_style_local_opa_scale, "set_style_local_opa_scale", 2718681341u, 0, 25, &be_const_str_set_style_local_transform_width); -be_define_const_str(set_style_local_transform_width, "set_style_local_transform_width", 3850555169u, 0, 31, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_OUTPUT); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_get_style_scale_end_border_width); -be_define_const_str(get_style_scale_end_border_width, "get_style_scale_end_border_width", 2717605058u, 0, 32, &be_const_str_set_shadow_blend_mode); -be_define_const_str(set_shadow_blend_mode, "set_shadow_blend_mode", 3767233786u, 0, 21, &be_const_str_set_text_opa); -be_define_const_str(set_text_opa, "set_text_opa", 3995853510u, 0, 12, NULL); -be_define_const_str(BTNMATRIX_CTRL_CHECK_STATE, "BTNMATRIX_CTRL_CHECK_STATE", 377731u, 0, 26, &be_const_str_set_style_local_bg_grad_stop); -be_define_const_str(set_style_local_bg_grad_stop, "set_style_local_bg_grad_stop", 1180238427u, 0, 28, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_is_visible); -be_define_const_str(is_visible, "is_visible", 597904624u, 0, 10, NULL); -be_define_const_str(GESTURE_DIR_RIGHT, "GESTURE_DIR_RIGHT", 3761728861u, 0, 17, &be_const_str_ROT1B); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_STYLE_PATTERN_IMAGE); -be_define_const_str(STYLE_PATTERN_IMAGE, "STYLE_PATTERN_IMAGE", 3293741009u, 0, 19, &be_const_str_set_style_local_transition_time); -be_define_const_str(set_style_local_transition_time, "set_style_local_transition_time", 1761097355u, 0, 31, NULL); +be_define_const_str(TABVIEW_TAB_POS_BOTTOM, "TABVIEW_TAB_POS_BOTTOM", 3095544198u, 0, 22, NULL); +be_define_const_str(CHART_PART_SERIES, "CHART_PART_SERIES", 3401824459u, 0, 17, &be_const_str_KEY1_NP); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_YELLOW); +be_define_const_str(YELLOW, "YELLOW", 2964049737u, 0, 6, &be_const_str_set_pad_inner); be_define_const_str(set_pad_inner, "set_pad_inner", 1662755314u, 0, 13, NULL); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_get_option_cnt); -be_define_const_str(get_option_cnt, "get_option_cnt", 2922481u, 0, 14, NULL); -be_define_const_str(get_checkable, "get_checkable", 2811548136u, 0, 13, NULL); -be_define_const_str(ALIGN_IN_TOP_MID, "ALIGN_IN_TOP_MID", 717802025u, 0, 16, &be_const_str_set_opa_scale); +be_define_const_str(get_day_of_week, "get_day_of_week", 3301373175u, 0, 15, NULL); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_set_style_local_text_letter_space); +be_define_const_str(set_style_local_text_letter_space, "set_style_local_text_letter_space", 2313398111u, 0, 33, &be_const_str_step_next); +be_define_const_str(step_next, "step_next", 3163156801u, 0, 9, NULL); +be_define_const_str(set_secondary_y_tick_length, "set_secondary_y_tick_length", 4022147583u, 0, 27, NULL); +be_define_const_str(STYLE_MARGIN_RIGHT, "STYLE_MARGIN_RIGHT", 1123385036u, 0, 18, NULL); +be_define_const_str(add_protect, "add_protect", 175601728u, 0, 11, NULL); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_SYMBOL_PREV); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_TASMOTACLIENT_RXD); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_set_day_names); +be_define_const_str(set_day_names, "set_day_names", 1217780097u, 0, 13, &be_const_str_set_scale_end_line_width); +be_define_const_str(set_scale_end_line_width, "set_scale_end_line_width", 1121812764u, 0, 24, NULL); +be_define_const_str(STYLE_SHADOW_COLOR, "STYLE_SHADOW_COLOR", 368908723u, 0, 18, &be_const_str_get_style_value_line_space); +be_define_const_str(get_style_value_line_space, "get_style_value_line_space", 592322595u, 0, 26, &be_const_str_ins_text); +be_define_const_str(ins_text, "ins_text", 2467863999u, 0, 8, NULL); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_SM16716_CLK); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_STATE_DEFAULT); +be_define_const_str(STATE_DEFAULT, "STATE_DEFAULT", 712406428u, 0, 13, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); +be_define_const_str(STYLE_SHADOW_OPA, "STYLE_SHADOW_OPA", 3011667646u, 0, 16, &be_const_str_set_style_local_text_opa); +be_define_const_str(set_style_local_text_opa, "set_style_local_text_opa", 1391350156u, 0, 24, NULL); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_SYMBOL_CHARGE); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_SYMBOL_USB); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, NULL); +be_define_const_str(KEYBOARD_MODE_TEXT_UPPER, "KEYBOARD_MODE_TEXT_UPPER", 2335009259u, 0, 24, &be_const_str_TXT_CMD_STATE_IN); +be_define_const_str(TXT_CMD_STATE_IN, "TXT_CMD_STATE_IN", 2162626840u, 0, 16, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); +be_define_const_str(set_margin_top, "set_margin_top", 805678094u, 0, 14, NULL); +be_define_const_str(set_style_local_text_decor, "set_style_local_text_decor", 2615974143u, 0, 26, &be_const_str_up); +be_define_const_str(up, "up", 1128467232u, 0, 2, NULL); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); +be_define_const_str(CHART_TYPE_LINE, "CHART_TYPE_LINE", 1459459819u, 0, 15, &be_const_str_SSD1351_CS); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_set_btn_ctrl_all); +be_define_const_str(set_btn_ctrl_all, "set_btn_ctrl_all", 274690332u, 0, 16, NULL); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, NULL); +be_define_const_str(CHART_CURSOR_LEFT, "CHART_CURSOR_LEFT", 2003546122u, 0, 17, &be_const_str_LABEL_ALIGN_CENTER); +be_define_const_str(LABEL_ALIGN_CENTER, "LABEL_ALIGN_CENTER", 3698850161u, 0, 18, NULL); +be_define_const_str(KEY_END, "KEY_END", 1131758734u, 0, 7, &be_const_str_set_y_invert); +be_define_const_str(set_y_invert, "set_y_invert", 4003140588u, 0, 12, NULL); +be_define_const_str(DRAG_DIR_VER, "DRAG_DIR_VER", 3097064297u, 0, 12, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); +be_define_const_str(SPI, "SPI", 1746663213u, 0, 3, NULL); +be_define_const_str(OPA_0, "OPA_0", 3351018670u, 0, 5, NULL); +be_define_const_str(STYLE_SCALE_END_BORDER_WIDTH, "STYLE_SCALE_END_BORDER_WIDTH", 763958239u, 0, 28, &be_const_str_get_tab_count); +be_define_const_str(get_tab_count, "get_tab_count", 218245863u, 0, 13, NULL); +be_define_const_str(LIST_PART_SCROLLBAR, "LIST_PART_SCROLLBAR", 3690731034u, 0, 19, &be_const_str_get_cursor_point); +be_define_const_str(get_cursor_point, "get_cursor_point", 2365780231u, 0, 16, &be_const_str_get_series_axis); +be_define_const_str(get_series_axis, "get_series_axis", 524215363u, 0, 15, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(set_tab_name, "set_tab_name", 2075400175u, 0, 12, NULL); +be_define_const_str(get_style_transition_time, "get_style_transition_time", 3928047247u, 0, 25, &be_const_str_refresh_ext_draw_pad); +be_define_const_str(refresh_ext_draw_pad, "refresh_ext_draw_pad", 3485714697u, 0, 20, NULL); +be_define_const_str(ALIGN_OUT_BOTTOM_RIGHT, "ALIGN_OUT_BOTTOM_RIGHT", 3680861364u, 0, 22, &be_const_str_get_style_scale_end_line_width); +be_define_const_str(get_style_scale_end_line_width, "get_style_scale_end_line_width", 1969204230u, 0, 30, NULL); +be_define_const_str(STYLE_LINE_BLEND_MODE, "STYLE_LINE_BLEND_MODE", 1400961281u, 0, 21, &be_const_str_set_dir); +be_define_const_str(set_dir, "set_dir", 331967531u, 0, 7, NULL); +be_define_const_str(update_mask, "update_mask", 833922029u, 0, 11, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(BTNMATRIX_CTRL_HIDDEN, "BTNMATRIX_CTRL_HIDDEN", 2766999187u, 0, 21, &be_const_str_BTN_STATE_DISABLED); +be_define_const_str(BTN_STATE_DISABLED, "BTN_STATE_DISABLED", 496829054u, 0, 18, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, NULL); +be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_get_height_grid); +be_define_const_str(get_height_grid, "get_height_grid", 1178822580u, 0, 15, NULL); +be_define_const_str(ALIGN_OUT_BOTTOM_MID, "ALIGN_OUT_BOTTOM_MID", 2853556972u, 0, 20, NULL); +be_define_const_str(get_style_scale_end_border_width, "get_style_scale_end_border_width", 2717605058u, 0, 32, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_CC1101_GDO0); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_CSE7766_RX); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_get_style_image_opa); +be_define_const_str(get_style_image_opa, "get_style_image_opa", 111986494u, 0, 19, NULL); +be_define_const_str(TEXTAREA_CURSOR_LAST, "TEXTAREA_CURSOR_LAST", 1393995267u, 0, 20, &be_const_str_get_cursor_pos); +be_define_const_str(get_cursor_pos, "get_cursor_pos", 3695280847u, 0, 14, NULL); +be_define_const_str(OPA_50, "OPA_50", 163902855u, 0, 6, &be_const_str_set_accepted_chars); +be_define_const_str(set_accepted_chars, "set_accepted_chars", 3900817531u, 0, 18, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, NULL); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, NULL); +be_define_const_str(CALENDAR_PART_DAY_NAMES, "CALENDAR_PART_DAY_NAMES", 1761763651u, 0, 23, &be_const_str_get_x); +be_define_const_str(get_x, "get_x", 1188742048u, 0, 5, &be_const_str_set_style_local_scale_border_width); +be_define_const_str(set_style_local_scale_border_width, "set_style_local_scale_border_width", 285010516u, 0, 34, NULL); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, NULL); +be_define_const_str(set_value_opa, "set_value_opa", 1055786128u, 0, 13, NULL); +be_define_const_str(FS_RES_OUT_OF_MEM, "FS_RES_OUT_OF_MEM", 802499854u, 0, 17, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, NULL); +be_define_const_str(STYLE_PAD_LEFT, "STYLE_PAD_LEFT", 1524023460u, 0, 14, &be_const_str_get_style_bg_opa); +be_define_const_str(get_style_bg_opa, "get_style_bg_opa", 1274566692u, 0, 16, &be_const_str_get_width_grid); +be_define_const_str(get_width_grid, "get_width_grid", 2821365517u, 0, 14, &be_const_str_set_points); +be_define_const_str(set_points, "set_points", 1252105979u, 0, 10, NULL); +be_define_const_str(cursor_down, "cursor_down", 657234748u, 0, 11, &be_const_str_set_style_local_pad_bottom); +be_define_const_str(set_style_local_pad_bottom, "set_style_local_pad_bottom", 1362436575u, 0, 26, NULL); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_SYMBOL_CUT); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_get_width_margin); +be_define_const_str(get_width_margin, "get_width_margin", 872387359u, 0, 16, NULL); +be_define_const_str(CHART_AXIS_DRAW_LAST_TICK, "CHART_AXIS_DRAW_LAST_TICK", 811055023u, 0, 25, &be_const_str_SYMBOL_WARNING); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, NULL); +be_define_const_str(get_color, "get_color", 754086191u, 0, 9, &be_const_str_get_label); +be_define_const_str(get_label, "get_label", 3416266470u, 0, 9, NULL); +be_define_const_str(BTNMATRIX_CTRL_DISABLED, "BTNMATRIX_CTRL_DISABLED", 2790045315u, 0, 23, &be_const_str_OUTPUT_OPEN_DRAIN); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_SLIDER_TYPE_SYMMETRICAL); +be_define_const_str(SLIDER_TYPE_SYMMETRICAL, "SLIDER_TYPE_SYMMETRICAL", 768283232u, 0, 23, &be_const_str_get_cursor_blink_time); +be_define_const_str(get_cursor_blink_time, "get_cursor_blink_time", 1960576829u, 0, 21, &be_const_str_set_margin_right); +be_define_const_str(set_margin_right, "set_margin_right", 283278459u, 0, 16, NULL); +be_define_const_str(LABEL_ALIGN_AUTO, "LABEL_ALIGN_AUTO", 1755016863u, 0, 16, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(draw_line, "draw_line", 1634465686u, 0, 9, &be_const_str_get_style_value_ofs_y); +be_define_const_str(get_style_value_ofs_y, "get_style_value_ofs_y", 4000868142u, 0, 21, &be_const_str_set_text_decor); +be_define_const_str(set_text_decor, "set_text_decor", 768023065u, 0, 14, NULL); +be_define_const_str(set_max_length, "set_max_length", 2269400999u, 0, 14, NULL); +be_define_const_str(ALIGN_IN_BOTTOM_RIGHT, "ALIGN_IN_BOTTOM_RIGHT", 1575436355u, 0, 21, &be_const_str_NEOPOOL_RX); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_set_style_local_scale_width); +be_define_const_str(set_style_local_scale_width, "set_style_local_scale_width", 2071128255u, 0, 27, NULL); +be_define_const_str(TEMPL_STYLE_X, "TEMPL_STYLE_X", 1980646216u, 0, 13, &be_const_str_set_style_local_shadow_blend_mode); +be_define_const_str(set_style_local_shadow_blend_mode, "set_style_local_shadow_blend_mode", 2580830900u, 0, 33, NULL); +be_define_const_str(ARC_PART_BG, "ARC_PART_BG", 3149008005u, 0, 11, &be_const_str_set_outline_opa); +be_define_const_str(set_outline_opa, "set_outline_opa", 1167424027u, 0, 15, &be_const_str_set_state); +be_define_const_str(set_state, "set_state", 905808233u, 0, 9, NULL); +be_define_const_str(get_height_margin, "get_height_margin", 4277714442u, 0, 17, NULL); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); +be_define_const_str(move_background, "move_background", 3375135217u, 0, 15, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_get_parent); +be_define_const_str(get_parent, "get_parent", 350250280u, 0, 10, NULL); +be_define_const_str(GRAY, "GRAY", 4159498394u, 0, 4, &be_const_str_STYLE_IMAGE_OPA); +be_define_const_str(STYLE_IMAGE_OPA, "STYLE_IMAGE_OPA", 1064316425u, 0, 15, &be_const_str_remove_style_local_prop); +be_define_const_str(remove_style_local_prop, "remove_style_local_prop", 1160046873u, 0, 23, &be_const_str_set_visible_row_count); +be_define_const_str(set_visible_row_count, "set_visible_row_count", 840407905u, 0, 21, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(add_text, "add_text", 2433225858u, 0, 8, NULL); +be_define_const_str(set_outline_width, "set_outline_width", 2428704969u, 0, 17, NULL); +be_define_const_str(CHART_TYPE_COLUMN, "CHART_TYPE_COLUMN", 385586299u, 0, 17, &be_const_str_STYLE_TRANSITION_PROP_3); +be_define_const_str(STYLE_TRANSITION_PROP_3, "STYLE_TRANSITION_PROP_3", 962719262u, 0, 23, NULL); +be_define_const_str(get_fit_top, "get_fit_top", 1805788963u, 0, 11, &be_const_str_get_needle_img_pivot_y); +be_define_const_str(get_needle_img_pivot_y, "get_needle_img_pivot_y", 1504958664u, 0, 22, &be_const_str_get_scrollbar_mode); +be_define_const_str(get_scrollbar_mode, "get_scrollbar_mode", 1258717108u, 0, 18, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, NULL); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_SYMBOL_EYE_CLOSE); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_get_knob_colored); +be_define_const_str(get_knob_colored, "get_knob_colored", 2664754853u, 0, 16, &be_const_str_set_style_local_border_color); +be_define_const_str(set_style_local_border_color, "set_style_local_border_color", 2798696056u, 0, 28, NULL); +be_define_const_str(ALIGN_OUT_LEFT_TOP, "ALIGN_OUT_LEFT_TOP", 2335540111u, 0, 18, &be_const_str_SYMBOL_BULLET); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(ALIGN_IN_BOTTOM_MID, "ALIGN_IN_BOTTOM_MID", 4192809251u, 0, 19, NULL); +be_define_const_str(LAYOUT_PRETTY_BOTTOM, "LAYOUT_PRETTY_BOTTOM", 2090319170u, 0, 20, &be_const_str_SSPI_MAX31865_CS1); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, NULL); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_add_obj); +be_define_const_str(add_obj, "add_obj", 3846256134u, 0, 7, NULL); +be_define_const_str(get_offset_y, "get_offset_y", 3939359167u, 0, 12, &be_const_str_set_map); +be_define_const_str(set_map, "set_map", 4012856954u, 0, 7, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(get_cell_value, "get_cell_value", 3068122638u, 0, 14, &be_const_str_get_row_cnt); +be_define_const_str(get_row_cnt, "get_row_cnt", 541121788u, 0, 11, NULL); +be_define_const_str(STYLE_VALUE_OFS_Y, "STYLE_VALUE_OFS_Y", 1374857417u, 0, 17, &be_const_str_lv_spinner); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_refr_text); +be_define_const_str(refr_text, "refr_text", 3162090502u, 0, 9, NULL); +be_define_const_str(SILVER, "SILVER", 1471925664u, 0, 6, &be_const_str_get_editing); +be_define_const_str(get_editing, "get_editing", 281870028u, 0, 11, &be_const_str_set_point_count); +be_define_const_str(set_point_count, "set_point_count", 1721576758u, 0, 15, NULL); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_send_data); +be_define_const_str(send_data, "send_data", 4178328760u, 0, 9, &be_const_str_set_image_recolor); +be_define_const_str(set_image_recolor, "set_image_recolor", 271208598u, 0, 17, NULL); +be_define_const_str(STYLE_TRANSITION_PROP_4, "STYLE_TRANSITION_PROP_4", 1013052119u, 0, 23, NULL); +be_define_const_str(EVENT_INSERT, "EVENT_INSERT", 3754467621u, 0, 12, &be_const_str_PROTECT_FOLLOW); +be_define_const_str(PROTECT_FOLLOW, "PROTECT_FOLLOW", 44354676u, 0, 14, &be_const_str_TXT_FLAG_CENTER); +be_define_const_str(TXT_FLAG_CENTER, "TXT_FLAG_CENTER", 1125425546u, 0, 15, NULL); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_TABVIEW_TAB_POS_NONE); +be_define_const_str(TABVIEW_TAB_POS_NONE, "TABVIEW_TAB_POS_NONE", 3094416879u, 0, 20, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_set_shadow_spread); +be_define_const_str(set_shadow_spread, "set_shadow_spread", 3535503174u, 0, 17, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_set_line_dash_width); +be_define_const_str(set_line_dash_width, "set_line_dash_width", 347528132u, 0, 19, NULL); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); +be_define_const_str(LAYOUT_CENTER, "LAYOUT_CENTER", 1686380473u, 0, 13, &be_const_str_get_scrl_fit_top); +be_define_const_str(get_scrl_fit_top, "get_scrl_fit_top", 3432048672u, 0, 16, &be_const_str_get_style_scale_width); +be_define_const_str(get_style_scale_width, "get_style_scale_width", 2556361915u, 0, 21, NULL); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL); +be_define_const_str(EVENT_REFRESH, "EVENT_REFRESH", 741028651u, 0, 13, &be_const_str_get_style_outline_width); +be_define_const_str(get_style_outline_width, "get_style_outline_width", 1118345503u, 0, 23, NULL); +be_define_const_str(set_color, "set_color", 3381219579u, 0, 9, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_SPI_DC); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, NULL); +be_define_const_str(EVENT_LONG_PRESSED_REPEAT, "EVENT_LONG_PRESSED_REPEAT", 1734201539u, 0, 25, &be_const_str_SSD1351_DC); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_set_border_post); +be_define_const_str(set_border_post, "set_border_post", 2318575153u, 0, 15, NULL); +be_define_const_str(set_style_local_transform_zoom, "set_style_local_transform_zoom", 3474945744u, 0, 30, NULL); +be_define_const_str(STYLE_LINE_OPA, "STYLE_LINE_OPA", 1080991556u, 0, 14, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_get_height_fit); +be_define_const_str(get_height_fit, "get_height_fit", 2561566971u, 0, 14, &be_const_str_set_drag_dir); +be_define_const_str(set_drag_dir, "set_drag_dir", 2315801594u, 0, 12, &be_const_str_set_style_local_bg_grad_dir); +be_define_const_str(set_style_local_bg_grad_dir, "set_style_local_bg_grad_dir", 946802226u, 0, 27, NULL); +be_define_const_str(EVENT_LEAVE, "EVENT_LEAVE", 2218217823u, 0, 11, NULL); +be_define_const_str(align, "align", 1613521886u, 0, 5, NULL); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_set_start_value); +be_define_const_str(set_start_value, "set_start_value", 1399674154u, 0, 15, NULL); +be_define_const_str(get_color_mode_fixed, "get_color_mode_fixed", 2272722254u, 0, 20, &be_const_str_set_style_local_line_color); +be_define_const_str(set_style_local_line_color, "set_style_local_line_color", 1174390096u, 0, 26, &be_const_str_set_style_local_outline_color); +be_define_const_str(set_style_local_outline_color, "set_style_local_outline_color", 2290216412u, 0, 29, &be_const_str_set_style_local_transform_height); +be_define_const_str(set_style_local_transform_height, "set_style_local_transform_height", 2823225328u, 0, 32, NULL); +be_define_const_str(SCROLLBAR_MODE_DRAG, "SCROLLBAR_MODE_DRAG", 2145885996u, 0, 19, &be_const_str_set_cursor_click_pos); +be_define_const_str(set_cursor_click_pos, "set_cursor_click_pos", 641192476u, 0, 20, &be_const_str_set_style_local_transition_prop_6); +be_define_const_str(set_style_local_transition_prop_6, "set_style_local_transition_prop_6", 2535204486u, 0, 33, NULL); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, NULL); +be_define_const_str(ALIGN_OUT_TOP_RIGHT, "ALIGN_OUT_TOP_RIGHT", 1193969648u, 0, 19, &be_const_str_STYLE_LINE_DASH_GAP); +be_define_const_str(STYLE_LINE_DASH_GAP, "STYLE_LINE_DASH_GAP", 1823312065u, 0, 19, NULL); +be_define_const_str(LAYOUT_ROW_TOP, "LAYOUT_ROW_TOP", 4030593648u, 0, 14, &be_const_str_set_layout); +be_define_const_str(set_layout, "set_layout", 3108581018u, 0, 10, &be_const_str_set_style_local_outline_width); +be_define_const_str(set_style_local_outline_width, "set_style_local_outline_width", 3081743955u, 0, 29, NULL); +be_define_const_str(LED_PART_MAIN, "LED_PART_MAIN", 3314442918u, 0, 13, &be_const_str_MAX31855CS); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_get_ext_click_pad_right); +be_define_const_str(get_ext_click_pad_right, "get_ext_click_pad_right", 3976528463u, 0, 23, &be_const_str_set_color_mode); +be_define_const_str(set_color_mode, "set_color_mode", 1155621583u, 0, 14, &be_const_str_set_fit4); +be_define_const_str(set_fit4, "set_fit4", 31904989u, 0, 8, NULL); +be_define_const_str(OPA_100, "OPA_100", 3698564393u, 0, 7, &be_const_str_set_y_tick_length); +be_define_const_str(set_y_tick_length, "set_y_tick_length", 1194305306u, 0, 17, NULL); +be_define_const_str(FS_RES_UNKNOWN, "FS_RES_UNKNOWN", 352331702u, 0, 14, &be_const_str_SCROLLBAR_MODE_OFF); +be_define_const_str(SCROLLBAR_MODE_OFF, "SCROLLBAR_MODE_OFF", 3547490383u, 0, 18, &be_const_str_report_style_mod); +be_define_const_str(report_style_mod, "report_style_mod", 4174977870u, 0, 16, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, NULL); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); +be_define_const_str(STYLE_PAD_BOTTOM, "STYLE_PAD_BOTTOM", 3910623046u, 0, 16, NULL); +be_define_const_str(DROPDOWN_DIR_UP, "DROPDOWN_DIR_UP", 2415359156u, 0, 15, &be_const_str_get_long_mode); +be_define_const_str(get_long_mode, "get_long_mode", 2750961764u, 0, 13, NULL); +be_define_const_str(get_top, "get_top", 1711502355u, 0, 7, NULL); +be_define_const_str(set_style_local_value_blend_mode, "set_style_local_value_blend_mode", 1178211587u, 0, 32, NULL); +be_define_const_str(get_btn_text, "get_btn_text", 1417317686u, 0, 12, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, &be_const_str_set_style_local_transition_prop_1); +be_define_const_str(set_style_local_transition_prop_1, "set_style_local_transition_prop_1", 2585537343u, 0, 33, NULL); +be_define_const_str(get_style_border_color, "get_style_border_color", 4173187188u, 0, 22, NULL); +be_define_const_str(KEYBOARD_PART_BG, "KEYBOARD_PART_BG", 3167702710u, 0, 16, &be_const_str_set_style_local_text_color); +be_define_const_str(set_style_local_text_color, "set_style_local_text_color", 2285935637u, 0, 26, NULL); +be_define_const_str(I2C, "I2C", 4096783347u, 0, 3, NULL); +be_define_const_str(DROPDOWN_PART_SELECTED, "DROPDOWN_PART_SELECTED", 1685473920u, 0, 22, &be_const_str_get_style_text_sel_bg_color); +be_define_const_str(get_style_text_sel_bg_color, "get_style_text_sel_bg_color", 1889477676u, 0, 27, NULL); +be_define_const_str(set_disabled, "set_disabled", 3892741852u, 0, 12, NULL); +be_define_const_str(FIT_MAX, "FIT_MAX", 361794269u, 0, 7, NULL); +be_define_const_str(DROPDOWN_PART_LIST, "DROPDOWN_PART_LIST", 2923479101u, 0, 18, &be_const_str_PN532_RXD); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, NULL); +be_define_const_str(get_style_scale_end_color, "get_style_scale_end_color", 142275754u, 0, 25, NULL); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); +be_define_const_str(STYLE_OUTLINE_BLEND_MODE, "STYLE_OUTLINE_BLEND_MODE", 3861262655u, 0, 24, &be_const_str_add_btn_left); +be_define_const_str(add_btn_left, "add_btn_left", 3984572941u, 0, 12, &be_const_str_blur_hor); +be_define_const_str(blur_hor, "blur_hor", 346002478u, 0, 8, &be_const_str_step_prev); +be_define_const_str(step_prev, "step_prev", 2831593421u, 0, 9, NULL); +be_define_const_str(STYLE_TEXT_COLOR, "STYLE_TEXT_COLOR", 2549754876u, 0, 16, &be_const_str_align_mid_x); +be_define_const_str(align_mid_x, "align_mid_x", 1647423776u, 0, 11, &be_const_str_set_valid_positions); +be_define_const_str(set_valid_positions, "set_valid_positions", 358534097u, 0, 19, NULL); +be_define_const_str(ARC_PART_INDIC, "ARC_PART_INDIC", 1749778975u, 0, 14, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, &be_const_str_set_pos); +be_define_const_str(set_pos, "set_pos", 4146975678u, 0, 7, NULL); +be_define_const_str(FS_RES_BUSY, "FS_RES_BUSY", 3847519313u, 0, 11, &be_const_str_KEY_LEFT); +be_define_const_str(KEY_LEFT, "KEY_LEFT", 3050288868u, 0, 8, &be_const_str_get_child); +be_define_const_str(get_child, "get_child", 1282595182u, 0, 9, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_get_checkable); +be_define_const_str(get_checkable, "get_checkable", 2811548136u, 0, 13, &be_const_str_get_max_length); +be_define_const_str(get_max_length, "get_max_length", 13029699u, 0, 14, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_RED); +be_define_const_str(RED, "RED", 2211354620u, 0, 3, &be_const_str_TEXT_DECOR_STRIKETHROUGH); +be_define_const_str(TEXT_DECOR_STRIKETHROUGH, "TEXT_DECOR_STRIKETHROUGH", 2875711852u, 0, 24, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(set_style_local_shadow_opa, "set_style_local_shadow_opa", 2192328339u, 0, 26, NULL); +be_define_const_str(FS_RES_FS_ERR, "FS_RES_FS_ERR", 3587821087u, 0, 13, &be_const_str_STYLE_BG_MAIN_STOP); +be_define_const_str(STYLE_BG_MAIN_STOP, "STYLE_BG_MAIN_STOP", 376609633u, 0, 18, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_RISING); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_STYLE_PATTERN_RECOLOR_OPA); +be_define_const_str(STYLE_PATTERN_RECOLOR_OPA, "STYLE_PATTERN_RECOLOR_OPA", 3355859281u, 0, 25, &be_const_str_STYLE_SHADOW_OFS_X); +be_define_const_str(STYLE_SHADOW_OFS_X, "STYLE_SHADOW_OFS_X", 2707391813u, 0, 18, &be_const_str_set_style_local_clip_corner); +be_define_const_str(set_style_local_clip_corner, "set_style_local_clip_corner", 1588926036u, 0, 27, NULL); +be_define_const_str(CPICKER_PART_KNOB, "CPICKER_PART_KNOB", 4094649797u, 0, 17, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_set_drag); +be_define_const_str(set_drag, "set_drag", 2586329126u, 0, 8, &be_const_str_set_style_local_pattern_opa); +be_define_const_str(set_style_local_pattern_opa, "set_style_local_pattern_opa", 3467015361u, 0, 27, NULL); +be_define_const_str(set_row_cnt, "set_row_cnt", 3198609400u, 0, 11, NULL); +be_define_const_str(set_text_sel_end, "set_text_sel_end", 3422399078u, 0, 16, &be_const_str_set_x); +be_define_const_str(set_x, "set_x", 1849400772u, 0, 5, NULL); +be_define_const_str(get_auto_realign, "get_auto_realign", 4029512850u, 0, 16, NULL); +be_define_const_str(EVENT_DRAG_THROW_BEGIN, "EVENT_DRAG_THROW_BEGIN", 977261671u, 0, 22, &be_const_str_FS_RES_FULL); +be_define_const_str(FS_RES_FULL, "FS_RES_FULL", 3987964025u, 0, 11, &be_const_str_focus_freeze); +be_define_const_str(focus_freeze, "focus_freeze", 3394722079u, 0, 12, NULL); +be_define_const_str(ROLLER_MODE_INFINITE, "ROLLER_MODE_INFINITE", 288931678u, 0, 20, NULL); +be_define_const_str(LINEMETER_PART_MAIN, "LINEMETER_PART_MAIN", 1524851464u, 0, 19, &be_const_str_PROTECT_POS); +be_define_const_str(PROTECT_POS, "PROTECT_POS", 1960404285u, 0, 11, &be_const_str_refresh_style); +be_define_const_str(refresh_style, "refresh_style", 3029800338u, 0, 13, &be_const_str_set_fit); +be_define_const_str(set_fit, "set_fit", 4009334267u, 0, 7, NULL); +be_define_const_str(SPINNER_TYPE_SPINNING_ARC, "SPINNER_TYPE_SPINNING_ARC", 3298556409u, 0, 25, NULL); +be_define_const_str(area_is_visible, "area_is_visible", 4009415372u, 0, 15, &be_const_str_get_active_btn); +be_define_const_str(get_active_btn, "get_active_btn", 3720382749u, 0, 14, &be_const_str_set_pivot); +be_define_const_str(set_pivot, "set_pivot", 2329940872u, 0, 9, NULL); +be_define_const_str(get_dir, "get_dir", 1037382287u, 0, 7, &be_const_str_get_hidden); +be_define_const_str(get_hidden, "get_hidden", 2608152268u, 0, 10, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); +be_define_const_str(CHART_AXIS_SKIP_LAST_TICK, "CHART_AXIS_SKIP_LAST_TICK", 3664086830u, 0, 25, &be_const_str_SPI_MOSI); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_get_needle_img); +be_define_const_str(get_needle_img, "get_needle_img", 477560399u, 0, 14, &be_const_str_set_offset_y); +be_define_const_str(set_offset_y, "set_offset_y", 437927531u, 0, 12, &be_const_str_set_shadow_blend_mode); +be_define_const_str(set_shadow_blend_mode, "set_shadow_blend_mode", 3767233786u, 0, 21, NULL); +be_define_const_str(STYLE_VALUE_OPA, "STYLE_VALUE_OPA", 2917777025u, 0, 15, &be_const_str_SYMBOL_NEXT); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_count_children); +be_define_const_str(count_children, "count_children", 1689969950u, 0, 14, &be_const_str_get_drag_parent); +be_define_const_str(get_drag_parent, "get_drag_parent", 1546081183u, 0, 15, NULL); +be_define_const_str(get_show_selected, "get_show_selected", 3185075651u, 0, 17, &be_const_str_set_transform_zoom); +be_define_const_str(set_transform_zoom, "set_transform_zoom", 140970906u, 0, 18, NULL); +be_define_const_str(STYLE_SCALE_WIDTH, "STYLE_SCALE_WIDTH", 3756994736u, 0, 17, &be_const_str_set_size); +be_define_const_str(set_size, "set_size", 2183165325u, 0, 8, &be_const_str_set_text_opa); +be_define_const_str(set_text_opa, "set_text_opa", 3995853510u, 0, 12, NULL); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); +be_define_const_str(fill_bg, "fill_bg", 1581152214u, 0, 7, NULL); +be_define_const_str(LABEL_LONG_DOT, "LABEL_LONG_DOT", 1312457976u, 0, 14, NULL); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_set_step); +be_define_const_str(set_step, "set_step", 2114390790u, 0, 8, NULL); +be_define_const_str(OPA_70, "OPA_70", 2109709301u, 0, 6, &be_const_str_set_bright); +be_define_const_str(set_bright, "set_bright", 499797888u, 0, 10, NULL); +be_define_const_str(set_show_selected, "set_show_selected", 1276300495u, 0, 17, NULL); +be_define_const_str(LIME, "LIME", 87366652u, 0, 4, NULL); +be_define_const_str(BORDER_SIDE_INTERNAL, "BORDER_SIDE_INTERNAL", 4209377645u, 0, 20, &be_const_str_char); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_title_set_alignment); +be_define_const_str(title_set_alignment, "title_set_alignment", 192669664u, 0, 19, NULL); +be_define_const_str(get_needle_count, "get_needle_count", 2722615919u, 0, 16, NULL); +be_define_const_str(set_pwd_show_time, "set_pwd_show_time", 2699027795u, 0, 17, NULL); +be_define_const_str(OPA_TRANSP, "OPA_TRANSP", 2652293196u, 0, 10, &be_const_str_get_bg_angle_end); +be_define_const_str(get_bg_angle_end, "get_bg_angle_end", 602326541u, 0, 16, &be_const_str_get_child_back); +be_define_const_str(get_child_back, "get_child_back", 3815628204u, 0, 14, &be_const_str_get_scrl_layout); +be_define_const_str(get_scrl_layout, "get_scrl_layout", 2842797719u, 0, 15, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(GREEN, "GREEN", 2875364188u, 0, 5, &be_const_str_LEDLNK_INV); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_del); +be_define_const_str(del, "del", 3478752842u, 0, 3, &be_const_str_draw_scale); +be_define_const_str(draw_scale, "draw_scale", 3602887006u, 0, 10, &be_const_str_get_style_text_letter_space); +be_define_const_str(get_style_text_letter_space, "get_style_text_letter_space", 772735187u, 0, 27, NULL); +be_define_const_str(focus_next, "focus_next", 2510018461u, 0, 10, &be_const_str_get_style_pattern_repeat); +be_define_const_str(get_style_pattern_repeat, "get_style_pattern_repeat", 3530119950u, 0, 24, &be_const_str_set_pwd_mode); +be_define_const_str(set_pwd_mode, "set_pwd_mode", 1333849907u, 0, 12, NULL); +be_define_const_str(DISP_ROT_90, "DISP_ROT_90", 3961393585u, 0, 11, &be_const_str_WEBCAM_RESET); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_set_text_static); +be_define_const_str(set_text_static, "set_text_static", 3831207210u, 0, 15, NULL); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(increment, "increment", 940762942u, 0, 9, &be_const_str_set_auto_realign); +be_define_const_str(set_auto_realign, "set_auto_realign", 3175723934u, 0, 16, NULL); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_refresh); +be_define_const_str(refresh, "refresh", 3572655668u, 0, 7, NULL); +be_define_const_str(clear_state, "clear_state", 2113290696u, 0, 11, &be_const_str_del_async); +be_define_const_str(del_async, "del_async", 2148432385u, 0, 9, NULL); +be_define_const_str(ARC_TYPE_SYMMETRIC, "ARC_TYPE_SYMMETRIC", 3784955220u, 0, 18, &be_const_str_STYLE_OUTLINE_PAD); +be_define_const_str(STYLE_OUTLINE_PAD, "STYLE_OUTLINE_PAD", 2090004501u, 0, 17, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_glue_obj); +be_define_const_str(glue_obj, "glue_obj", 1757706238u, 0, 8, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_get_btn_index); +be_define_const_str(get_btn_index, "get_btn_index", 1289059379u, 0, 13, NULL); +be_define_const_str(LAYOUT_GRID, "LAYOUT_GRID", 1755252272u, 0, 11, &be_const_str_MCP39F5_RST); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_MCP39F5_RX); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_decrement); +be_define_const_str(decrement, "decrement", 432748210u, 0, 9, &be_const_str_set_style_local_scale_end_line_width); +be_define_const_str(set_style_local_scale_end_line_width, "set_style_local_scale_end_line_width", 2316920258u, 0, 36, NULL); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_set_gesture_parent); +be_define_const_str(set_gesture_parent, "set_gesture_parent", 3726242272u, 0, 18, &be_const_str_set_style_local_bg_grad_stop); +be_define_const_str(set_style_local_bg_grad_stop, "set_style_local_bg_grad_stop", 1180238427u, 0, 28, NULL); +be_define_const_str(set_tab_act, "set_tab_act", 2505737680u, 0, 11, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_get_letter_pos); +be_define_const_str(get_letter_pos, "get_letter_pos", 1477814169u, 0, 14, NULL); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_toggle); +be_define_const_str(toggle, "toggle", 1076453893u, 0, 6, NULL); +be_define_const_str(KEY_ENTER, "KEY_ENTER", 2614103337u, 0, 9, &be_const_str_ROT1B); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, NULL); +be_define_const_str(BAR_TYPE_CUSTOM, "BAR_TYPE_CUSTOM", 895647203u, 0, 15, &be_const_str_get_style_text_sel_color); +be_define_const_str(get_style_text_sel_color, "get_style_text_sel_color", 1751096754u, 0, 24, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(STYLE_VALUE_COLOR, "STYLE_VALUE_COLOR", 2491635400u, 0, 17, NULL); +be_define_const_str(OPA_20, "OPA_20", 4289961128u, 0, 6, &be_const_str_PZEM016_RX); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_get_angle); +be_define_const_str(get_angle, "get_angle", 1113203995u, 0, 9, &be_const_str_get_rollover); +be_define_const_str(get_rollover, "get_rollover", 2637132577u, 0, 12, NULL); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_get_height); +be_define_const_str(get_height, "get_height", 3571755523u, 0, 10, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(draw_text, "draw_text", 25865715u, 0, 9, &be_const_str_focus_obj); +be_define_const_str(focus_obj, "focus_obj", 1075574617u, 0, 9, &be_const_str_get_x_start_point); +be_define_const_str(get_x_start_point, "get_x_start_point", 4100384878u, 0, 17, NULL); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, NULL); +be_define_const_str(get_saturation, "get_saturation", 3458845696u, 0, 14, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_CHART_CURSOR_RIGHT); +be_define_const_str(CHART_CURSOR_RIGHT, "CHART_CURSOR_RIGHT", 2464313335u, 0, 18, &be_const_str_EVENT_VALUE_CHANGED); +be_define_const_str(EVENT_VALUE_CHANGED, "EVENT_VALUE_CHANGED", 1871067374u, 0, 19, &be_const_str_is_focused); +be_define_const_str(is_focused, "is_focused", 2171112339u, 0, 10, NULL); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); +be_define_const_str(get_cursor_hidden, "get_cursor_hidden", 3032264799u, 0, 17, &be_const_str_get_selected_str); +be_define_const_str(get_selected_str, "get_selected_str", 1743823997u, 0, 16, &be_const_str_set_pattern_blend_mode); +be_define_const_str(set_pattern_blend_mode, "set_pattern_blend_mode", 4267769432u, 0, 22, &be_const_str_set_value_ofs_x); +be_define_const_str(set_value_ofs_x, "set_value_ofs_x", 112450803u, 0, 15, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); +be_define_const_str(OLIVE, "OLIVE", 1722893804u, 0, 5, &be_const_str_set_style_local_shadow_color); +be_define_const_str(set_style_local_shadow_color, "set_style_local_shadow_color", 2778451758u, 0, 28, NULL); +be_define_const_str(get_style_image_recolor_opa, "get_style_image_recolor_opa", 1049713209u, 0, 27, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_set_style_local_text_line_space); +be_define_const_str(set_style_local_text_line_space, "set_style_local_text_line_space", 3775207629u, 0, 31, NULL); +be_define_const_str(set_parent, "set_parent", 1528807100u, 0, 10, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, NULL); +be_define_const_str(get_btn_label, "get_btn_label", 3300200213u, 0, 13, &be_const_str_set_bg_angles); +be_define_const_str(set_bg_angles, "set_bg_angles", 2873640992u, 0, 13, NULL); +be_define_const_str(GAUGE_PART_MAJOR, "GAUGE_PART_MAJOR", 3656186174u, 0, 16, &be_const_str_get_style_border_post); +be_define_const_str(get_style_border_post, "get_style_border_post", 3537874563u, 0, 21, NULL); +be_define_const_str(get_coords, "get_coords", 1044089006u, 0, 10, &be_const_str_get_text_sel_end); +be_define_const_str(get_text_sel_end, "get_text_sel_end", 3650450346u, 0, 16, NULL); +be_define_const_str(TABVIEW_TAB_POS_LEFT, "TABVIEW_TAB_POS_LEFT", 897772772u, 0, 20, &be_const_str_get_px); +be_define_const_str(get_px, "get_px", 1651889344u, 0, 6, NULL); +be_define_const_str(EVENT_RELEASED, "EVENT_RELEASED", 4173795963u, 0, 14, &be_const_str_SM2135_DAT); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_get_step); +be_define_const_str(get_step, "get_step", 2497148826u, 0, 8, NULL); +be_define_const_str(get_text, "get_text", 3133031679u, 0, 8, NULL); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); +be_define_const_str(set_transition_prop_2, "set_transition_prop_2", 2983568488u, 0, 21, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_HPMA_TX); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_copy_buf); +be_define_const_str(copy_buf, "copy_buf", 2209552774u, 0, 8, &be_const_str_get_textarea); +be_define_const_str(get_textarea, "get_textarea", 839445266u, 0, 12, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_pow); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(FS_MODE_WR, "FS_MODE_WR", 2839601832u, 0, 10, &be_const_str_SR04_TRIG); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_STYLE_SCALE_BORDER_WIDTH); +be_define_const_str(STYLE_SCALE_BORDER_WIDTH, "STYLE_SCALE_BORDER_WIDTH", 4091410577u, 0, 24, NULL); +be_define_const_str(STYLE_TRANSITION_DELAY, "STYLE_TRANSITION_DELAY", 251340916u, 0, 22, &be_const_str_set_btn_width); +be_define_const_str(set_btn_width, "set_btn_width", 2736013227u, 0, 13, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_NRF24_DC); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_set_scale_width); +be_define_const_str(set_scale_width, "set_scale_width", 2442490229u, 0, 15, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_STYLE_VALUE_FONT); +be_define_const_str(STYLE_VALUE_FONT, "STYLE_VALUE_FONT", 1861540608u, 0, 16, &be_const_str_del_char_forward); +be_define_const_str(del_char_forward, "del_char_forward", 400381733u, 0, 16, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_STYLE_IMAGE_BLEND_MODE); +be_define_const_str(STYLE_IMAGE_BLEND_MODE, "STYLE_IMAGE_BLEND_MODE", 3457971258u, 0, 22, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_align_y); +be_define_const_str(align_y, "align_y", 3718435550u, 0, 7, NULL); +be_define_const_str(set_style_local_transition_time, "set_style_local_transition_time", 1761097355u, 0, 31, NULL); +be_define_const_str(BAR_TYPE_NORMAL, "BAR_TYPE_NORMAL", 3652519691u, 0, 15, &be_const_str_BTN_STATE_PRESSED); +be_define_const_str(BTN_STATE_PRESSED, "BTN_STATE_PRESSED", 1194269292u, 0, 17, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_PROJECTOR_CTRL_RX); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_PWM1); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, NULL); +be_define_const_str(FS_RES_INV_PARAM, "FS_RES_INV_PARAM", 2676717305u, 0, 16, &be_const_str_set_click); +be_define_const_str(set_click, "set_click", 2550101068u, 0, 9, NULL); +be_define_const_str(ANIM_ON, "ANIM_ON", 1377334024u, 0, 7, &be_const_str_DROPDOWN_DIR_DOWN); +be_define_const_str(DROPDOWN_DIR_DOWN, "DROPDOWN_DIR_DOWN", 214322625u, 0, 17, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_get_style_bg_color); +be_define_const_str(get_style_bg_color, "get_style_bg_color", 964794381u, 0, 18, &be_const_str_set_placeholder_text); +be_define_const_str(set_placeholder_text, "set_placeholder_text", 1413918705u, 0, 20, NULL); +be_define_const_str(BTNMATRIX_CTRL_CHECK_STATE, "BTNMATRIX_CTRL_CHECK_STATE", 377731u, 0, 26, &be_const_str_FIT_NONE); +be_define_const_str(FIT_NONE, "FIT_NONE", 692142959u, 0, 8, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_set_bg_blend_mode); +be_define_const_str(set_bg_blend_mode, "set_bg_blend_mode", 2432224687u, 0, 17, &be_const_str_set_transition_prop_1); +be_define_const_str(set_transition_prop_1, "set_transition_prop_1", 3033901345u, 0, 21, NULL); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_set_src); +be_define_const_str(set_src, "set_src", 1156089058u, 0, 7, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_LAYOUT_ROW_BOTTOM); +be_define_const_str(LAYOUT_ROW_BOTTOM, "LAYOUT_ROW_BOTTOM", 1098190350u, 0, 17, &be_const_str_OBJ_PART_MAIN); +be_define_const_str(OBJ_PART_MAIN, "OBJ_PART_MAIN", 658062838u, 0, 13, &be_const_str_PMS5003_TX); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_set_hue); +be_define_const_str(set_hue, "set_hue", 830075074u, 0, 7, &be_const_str_set_type); +be_define_const_str(set_type, "set_type", 4284078396u, 0, 8, NULL); +be_define_const_str(get_width_fit, "get_width_fit", 416240192u, 0, 13, &be_const_str_set_editing); +be_define_const_str(set_editing, "set_editing", 1742905400u, 0, 11, NULL); +be_define_const_str(ALIGN_IN_TOP_MID, "ALIGN_IN_TOP_MID", 717802025u, 0, 16, &be_const_str_STYLE_SCALE_END_COLOR); +be_define_const_str(STYLE_SCALE_END_COLOR, "STYLE_SCALE_END_COLOR", 1403682869u, 0, 21, NULL); +be_define_const_str(get_click, "get_click", 1755279632u, 0, 9, NULL); +be_define_const_str(get_width, "get_width", 3293417300u, 0, 9, &be_const_str_set_focus_cb); +be_define_const_str(set_focus_cb, "set_focus_cb", 4094066116u, 0, 12, &be_const_str_set_pad_right); +be_define_const_str(set_pad_right, "set_pad_right", 4274005568u, 0, 13, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_PAGE_EDGE_RIGHT); +be_define_const_str(PAGE_EDGE_RIGHT, "PAGE_EDGE_RIGHT", 1268763615u, 0, 15, &be_const_str_list_copy); +be_define_const_str(list_copy, "list_copy", 680267399u, 0, 9, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_set_transition_path); +be_define_const_str(set_transition_path, "set_transition_path", 689428023u, 0, 19, NULL); +be_define_const_str(BLUE, "BLUE", 750204685u, 0, 4, &be_const_str_SWT1_NP); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_set_transition_time); +be_define_const_str(set_transition_time, "set_transition_time", 887720041u, 0, 19, NULL); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_get_style_margin_top); +be_define_const_str(get_style_margin_top, "get_style_margin_top", 2201799028u, 0, 20, NULL); +be_define_const_str(STYLE_BG_GRAD_STOP, "STYLE_BG_GRAD_STOP", 1591142422u, 0, 18, &be_const_str_get_style_transition_prop_3); +be_define_const_str(get_style_transition_prop_3, "get_style_transition_prop_3", 3437946865u, 0, 27, NULL); +be_define_const_str(DRAG_DIR_BOTH, "DRAG_DIR_BOTH", 740935659u, 0, 13, &be_const_str_HRE_CLOCK); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_cursor_up); +be_define_const_str(cursor_up, "cursor_up", 4142217213u, 0, 9, &be_const_str_get_focused); +be_define_const_str(get_focused, "get_focused", 973974289u, 0, 11, NULL); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, NULL); +be_define_const_str(get_anim_time, "get_anim_time", 641972335u, 0, 13, &be_const_str_invalidate_area); +be_define_const_str(invalidate_area, "invalidate_area", 1904223292u, 0, 15, &be_const_str_remove_series); +be_define_const_str(remove_series, "remove_series", 2007033791u, 0, 13, NULL); +be_define_const_str(get_style_transform_height, "get_style_transform_height", 3736737548u, 0, 26, &be_const_str_set_scrollable_fit); +be_define_const_str(set_scrollable_fit, "set_scrollable_fit", 4068661613u, 0, 18, &be_const_str_set_shadow_color); +be_define_const_str(set_shadow_color, "set_shadow_color", 1565203920u, 0, 16, &be_const_str_set_transition_prop_4); +be_define_const_str(set_transition_prop_4, "set_transition_prop_4", 3084234202u, 0, 21, NULL); +be_define_const_str(is_dragged, "is_dragged", 1443807988u, 0, 10, &be_const_str_set_angle_offset); +be_define_const_str(set_angle_offset, "set_angle_offset", 1203695731u, 0, 16, &be_const_str_set_line_dash_gap); +be_define_const_str(set_line_dash_gap, "set_line_dash_gap", 3499494412u, 0, 17, &be_const_str_set_shadow_ofs_y); +be_define_const_str(set_shadow_ofs_y, "set_shadow_ofs_y", 3086758033u, 0, 16, NULL); +be_define_const_str(SPINNER_TYPE_FILLSPIN_ARC, "SPINNER_TYPE_FILLSPIN_ARC", 2324275006u, 0, 25, &be_const_str_get_file_name); +be_define_const_str(get_file_name, "get_file_name", 3239886120u, 0, 13, NULL); +be_define_const_str(PROTECT_CHILD_CHG, "PROTECT_CHILD_CHG", 998079554u, 0, 17, &be_const_str_TEAL); +be_define_const_str(TEAL, "TEAL", 1728307679u, 0, 4, NULL); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_STYLE_PATTERN_RECOLOR); +be_define_const_str(STYLE_PATTERN_RECOLOR, "STYLE_PATTERN_RECOLOR", 2178713592u, 0, 21, &be_const_str_get_critical_value); +be_define_const_str(get_critical_value, "get_critical_value", 4180625515u, 0, 18, NULL); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_set_margin_bottom); +be_define_const_str(set_margin_bottom, "set_margin_bottom", 1238288976u, 0, 17, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_get_ext_click_pad_bottom); +be_define_const_str(get_ext_click_pad_bottom, "get_ext_click_pad_bottom", 1405930484u, 0, 24, &be_const_str_remove_prop); +be_define_const_str(remove_prop, "remove_prop", 4280941095u, 0, 11, NULL); +be_define_const_str(STYLE_TEXT_DECOR, "STYLE_TEXT_DECOR", 2624841926u, 0, 16, &be_const_str_set_spin_time); +be_define_const_str(set_spin_time, "set_spin_time", 1386363784u, 0, 13, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_get_style_transition_prop_6); +be_define_const_str(get_style_transition_prop_6, "get_style_transition_prop_6", 3488279722u, 0, 27, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_invalidate); +be_define_const_str(invalidate, "invalidate", 2649734928u, 0, 10, NULL); +be_define_const_str(BORDER_SIDE_RIGHT, "BORDER_SIDE_RIGHT", 1842095998u, 0, 17, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_get_adv_hittest); +be_define_const_str(get_adv_hittest, "get_adv_hittest", 1985963887u, 0, 15, NULL); +be_define_const_str(get_bright, "get_bright", 203831460u, 0, 10, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_set_style_local_line_width); +be_define_const_str(set_style_local_line_width, "set_style_local_line_width", 1133761671u, 0, 26, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_get_type); +be_define_const_str(get_type, "get_type", 2996227024u, 0, 8, NULL); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_set_saturation); +be_define_const_str(set_saturation, "set_saturation", 2225192852u, 0, 14, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(layer_sys, "layer_sys", 593658256u, 0, 9, &be_const_str_list_init); +be_define_const_str(list_init, "list_init", 2798529232u, 0, 9, &be_const_str_set_pattern_recolor_opa); +be_define_const_str(set_pattern_recolor_opa, "set_pattern_recolor_opa", 1479951840u, 0, 23, NULL); +be_define_const_str(DRAG_DIR_HOR, "DRAG_DIR_HOR", 1213227361u, 0, 12, &be_const_str_is_point_on_coords); +be_define_const_str(is_point_on_coords, "is_point_on_coords", 2479052471u, 0, 18, NULL); +be_define_const_str(cut_text, "cut_text", 3023853443u, 0, 8, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, &be_const_str_set_tile_act); +be_define_const_str(set_tile_act, "set_tile_act", 1400046115u, 0, 12, NULL); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(EVENT_PRESSING, "EVENT_PRESSING", 2840400065u, 0, 14, &be_const_str_set_text_sel_start); +be_define_const_str(set_text_sel_start, "set_text_sel_start", 886455347u, 0, 18, NULL); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_set_image_opa); +be_define_const_str(set_image_opa, "set_image_opa", 517268068u, 0, 13, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(FS_RES_DENIED, "FS_RES_DENIED", 63556207u, 0, 13, &be_const_str_get_style_pad_left); +be_define_const_str(get_style_pad_left, "get_style_pad_left", 2843013833u, 0, 18, NULL); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_get_option_cnt); +be_define_const_str(get_option_cnt, "get_option_cnt", 2922481u, 0, 14, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(CHART_AXIS_INVERSE_LABELS_ORDER, "CHART_AXIS_INVERSE_LABELS_ORDER", 1279914111u, 0, 31, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); +be_define_const_str(scroll_ver, "scroll_ver", 3241545950u, 0, 10, NULL); +be_define_const_str(get_antialias, "get_antialias", 220729812u, 0, 13, &be_const_str_get_line_count); +be_define_const_str(get_line_count, "get_line_count", 4160991390u, 0, 14, &be_const_str_set_border_blend_mode); +be_define_const_str(set_border_blend_mode, "set_border_blend_mode", 882247636u, 0, 21, &be_const_str_set_style_local_value_line_space); +be_define_const_str(set_style_local_value_line_space, "set_style_local_value_line_space", 987261567u, 0, 32, NULL); +be_define_const_str(CHART_CURSOR_DOWN, "CHART_CURSOR_DOWN", 790177263u, 0, 17, &be_const_str_LAYOUT_OFF); +be_define_const_str(LAYOUT_OFF, "LAYOUT_OFF", 3375414885u, 0, 10, &be_const_str_set_pad_top); +be_define_const_str(set_pad_top, "set_pad_top", 193376421u, 0, 11, NULL); +be_define_const_str(STYLE_MARGIN_LEFT, "STYLE_MARGIN_LEFT", 671809443u, 0, 17, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, &be_const_str_set_style_local_pattern_recolor_opa); +be_define_const_str(set_style_local_pattern_recolor_opa, "set_style_local_pattern_recolor_opa", 2215956762u, 0, 35, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_KEY1_INV_NP); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_get_btn_width); +be_define_const_str(get_btn_width, "get_btn_width", 254956887u, 0, 13, &be_const_str_set_style_local_shadow_spread); +be_define_const_str(set_style_local_shadow_spread, "set_style_local_shadow_spread", 850759600u, 0, 29, &be_const_str_set_x_tick_length); +be_define_const_str(set_x_tick_length, "set_x_tick_length", 3530536821u, 0, 17, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_STYLE_SIZE); +be_define_const_str(STYLE_SIZE, "STYLE_SIZE", 2268500266u, 0, 10, &be_const_str_set_auto_size); +be_define_const_str(set_auto_size, "set_auto_size", 903259741u, 0, 13, &be_const_str_set_style_local_value_ofs_x); +be_define_const_str(set_style_local_value_ofs_x, "set_style_local_value_ofs_x", 3057670197u, 0, 27, NULL); +be_define_const_str(close_event_cb, "close_event_cb", 1180945172u, 0, 14, NULL); +be_define_const_str(remove_style, "remove_style", 3826054475u, 0, 12, NULL); +be_define_const_str(LABEL_ALIGN_LEFT, "LABEL_ALIGN_LEFT", 49345529u, 0, 16, &be_const_str_set_style_local_opa_scale); +be_define_const_str(set_style_local_opa_scale, "set_style_local_opa_scale", 2718681341u, 0, 25, NULL); +be_define_const_str(remove_mask, "remove_mask", 1680723542u, 0, 11, &be_const_str_set_image_recolor_opa); +be_define_const_str(set_image_recolor_opa, "set_image_recolor_opa", 558003471u, 0, 21, NULL); +be_define_const_str(CHART_AXIS_PRIMARY_Y, "CHART_AXIS_PRIMARY_Y", 2499204580u, 0, 20, &be_const_str_get_scrollable); +be_define_const_str(get_scrollable, "get_scrollable", 1510903497u, 0, 14, NULL); +be_define_const_str(CHART_AXIS_SECONDARY_Y, "CHART_AXIS_SECONDARY_Y", 755580820u, 0, 22, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, NULL); +be_define_const_str(set_style_local_line_dash_gap, "set_style_local_line_dash_gap", 923588498u, 0, 29, &be_const_str_set_text_sel_color); +be_define_const_str(set_text_sel_color, "set_text_sel_color", 1561573604u, 0, 18, NULL); +be_define_const_str(get_spin_time, "get_spin_time", 1036768940u, 0, 13, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(HSPI, "HSPI", 2263006151u, 0, 4, &be_const_str_OBJMASK_PART_MAIN); +be_define_const_str(OBJMASK_PART_MAIN, "OBJMASK_PART_MAIN", 1960600366u, 0, 17, &be_const_str_count_children_recursive); +be_define_const_str(count_children_recursive, "count_children_recursive", 497030885u, 0, 24, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_OUTPUT_LO); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_SYMBOL_CLOSE); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_set_adv_hittest); +be_define_const_str(set_adv_hittest, "set_adv_hittest", 2312818651u, 0, 15, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, NULL); +be_define_const_str(set_checkable, "set_checkable", 3024222852u, 0, 13, NULL); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL); +be_define_const_str(ARC_TYPE_REVERSE, "ARC_TYPE_REVERSE", 3290331433u, 0, 16, NULL); +be_define_const_str(set_tasmota_logo, "set_tasmota_logo", 4090375591u, 0, 16, NULL); +be_define_const_str(ALIGN_IN_LEFT_MID, "ALIGN_IN_LEFT_MID", 60432565u, 0, 17, &be_const_str_CC1101_GDO2); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_EVENT_PRESS_LOST); +be_define_const_str(EVENT_PRESS_LOST, "EVENT_PRESS_LOST", 3685074190u, 0, 16, &be_const_str_STYLE_TEXT_FONT); +be_define_const_str(STYLE_TEXT_FONT, "STYLE_TEXT_FONT", 75931268u, 0, 15, &be_const_str_set_style_local_scale_grad_color); +be_define_const_str(set_style_local_scale_grad_color, "set_style_local_scale_grad_color", 1682685285u, 0, 32, NULL); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_get_style_outline_opa); +be_define_const_str(get_style_outline_opa, "get_style_outline_opa", 1286010513u, 0, 21, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, &be_const_str_set_col_cnt); +be_define_const_str(set_col_cnt, "set_col_cnt", 3803893298u, 0, 11, &be_const_str_set_width); +be_define_const_str(set_width, "set_width", 484671920u, 0, 9, NULL); +be_define_const_str(KEY_PREV, "KEY_PREV", 3127352148u, 0, 8, NULL); +be_define_const_str(set_text_fmt, "set_text_fmt", 699875119u, 0, 12, NULL); +be_define_const_str(get_scrl_height, "get_scrl_height", 1933731194u, 0, 15, &be_const_str_set_arc_length); +be_define_const_str(set_arc_length, "set_arc_length", 2972977809u, 0, 14, &be_const_str_set_style_local_image_recolor_opa); +be_define_const_str(set_style_local_image_recolor_opa, "set_style_local_image_recolor_opa", 1752356781u, 0, 33, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_FS_RES_OK); +be_define_const_str(FS_RES_OK, "FS_RES_OK", 223294622u, 0, 9, &be_const_str_set_scrl_width); +be_define_const_str(set_scrl_width, "set_scrl_width", 2522533355u, 0, 14, NULL); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_STYLE_VALUE_STR); +be_define_const_str(STYLE_VALUE_STR, "STYLE_VALUE_STR", 144639168u, 0, 15, NULL); +be_define_const_str(ALIGN_IN_TOP_LEFT, "ALIGN_IN_TOP_LEFT", 1231214604u, 0, 17, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_transform); +be_define_const_str(transform, "transform", 3786248987u, 0, 9, NULL); +be_define_const_str(set_style_local_line_blend_mode, "set_style_local_line_blend_mode", 2166063994u, 0, 31, NULL); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_set_angle); +be_define_const_str(set_angle, "set_angle", 2542866927u, 0, 9, &be_const_str_set_today_date); +be_define_const_str(set_today_date, "set_today_date", 3983571786u, 0, 14, NULL); +be_define_const_str(PAGE_EDGE_BOTTOM, "PAGE_EDGE_BOTTOM", 3735543556u, 0, 16, NULL); +be_define_const_str(get_btns_pos, "get_btns_pos", 2951340984u, 0, 12, NULL); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_set_bg_grad_color); +be_define_const_str(set_bg_grad_color, "set_bg_grad_color", 51037480u, 0, 17, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(clear_protect, "clear_protect", 2408863094u, 0, 13, NULL); +be_define_const_str(LABEL_LONG_BREAK, "LABEL_LONG_BREAK", 3669129840u, 0, 16, &be_const_str_SDM630_RX); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_get_style_border_width); +be_define_const_str(get_style_border_width, "get_style_border_width", 3436292763u, 0, 22, &be_const_str_set_style_local_size); +be_define_const_str(set_style_local_size, "set_style_local_size", 1442450187u, 0, 20, NULL); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, NULL); +be_define_const_str(add_char, "add_char", 2276421097u, 0, 8, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(CHART_CURSOR_NONE, "CHART_CURSOR_NONE", 2955624997u, 0, 17, NULL); +be_define_const_str(EVENT_KEY, "EVENT_KEY", 2739613983u, 0, 9, &be_const_str_del_anim_ready_cb); +be_define_const_str(del_anim_ready_cb, "del_anim_ready_cb", 1276516666u, 0, 17, NULL); +be_define_const_str(set_bg_opa, "set_bg_opa", 3379539138u, 0, 10, NULL); +be_define_const_str(TEXT_DECOR_NONE, "TEXT_DECOR_NONE", 2700466131u, 0, 15, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_GRAD_DIR_VER); +be_define_const_str(GRAD_DIR_VER, "GRAD_DIR_VER", 1112540859u, 0, 12, &be_const_str_get_angle_end); +be_define_const_str(get_angle_end, "get_angle_end", 2420725825u, 0, 13, &be_const_str_set_drag_parent); +be_define_const_str(set_drag_parent, "set_drag_parent", 3979167347u, 0, 15, &be_const_str_set_recolor); +be_define_const_str(set_recolor, "set_recolor", 2750390248u, 0, 11, &be_const_str_set_style_local_text_sel_color); +be_define_const_str(set_style_local_text_sel_color, "set_style_local_text_sel_color", 3749375246u, 0, 30, NULL); +be_define_const_str(BLEND_MODE_SUBTRACTIVE, "BLEND_MODE_SUBTRACTIVE", 3202763511u, 0, 22, &be_const_str_finish_transitions); +be_define_const_str(finish_transitions, "finish_transitions", 1663237457u, 0, 18, &be_const_str_realign); +be_define_const_str(realign, "realign", 170046109u, 0, 7, &be_const_str_set_style_local_value_opa); +be_define_const_str(set_style_local_value_opa, "set_style_local_value_opa", 3003874062u, 0, 25, NULL); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_get_start_value); +be_define_const_str(get_start_value, "get_start_value", 2039237390u, 0, 15, NULL); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(OPA_40, "OPA_40", 2210522110u, 0, 6, &be_const_str_get_active_btn_text); +be_define_const_str(get_active_btn_text, "get_active_btn_text", 2709356149u, 0, 19, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(clear_selection, "clear_selection", 4157132227u, 0, 15, &be_const_str_get_hor_res); +be_define_const_str(get_hor_res, "get_hor_res", 37131144u, 0, 11, &be_const_str_get_offset_x); +be_define_const_str(get_offset_x, "get_offset_x", 3922581548u, 0, 12, &be_const_str_set_style_local_border_opa); +be_define_const_str(set_style_local_border_opa, "set_style_local_border_opa", 2125961393u, 0, 26, NULL); +be_define_const_str(DISP_SIZE_MEDIUM, "DISP_SIZE_MEDIUM", 3336923135u, 0, 16, &be_const_str_FS_MODE_RD); +be_define_const_str(FS_MODE_RD, "FS_MODE_RD", 2906271023u, 0, 10, &be_const_str_get_scrl_width); +be_define_const_str(get_scrl_width, "get_scrl_width", 1498509239u, 0, 14, &be_const_str_get_style_pad_right); +be_define_const_str(get_style_pad_right, "get_style_pad_right", 3150287466u, 0, 19, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); +be_define_const_str(BTNMATRIX_CTRL_CLICK_TRIG, "BTNMATRIX_CTRL_CLICK_TRIG", 2305639872u, 0, 25, &be_const_str_CHART_PART_SERIES_BG); +be_define_const_str(CHART_PART_SERIES_BG, "CHART_PART_SERIES_BG", 4240790375u, 0, 20, &be_const_str_DDSU666_RX); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_get_scrl_fit_right); +be_define_const_str(get_scrl_fit_right, "get_scrl_fit_right", 4214186985u, 0, 18, &be_const_str_set_style_local_shadow_ofs_y); +be_define_const_str(set_style_local_shadow_ofs_y, "set_style_local_shadow_ofs_y", 1635871223u, 0, 28, NULL); +be_define_const_str(STYLE_PATTERN_IMAGE, "STYLE_PATTERN_IMAGE", 3293741009u, 0, 19, &be_const_str_STYLE_VALUE_OFS_X); +be_define_const_str(STYLE_VALUE_OFS_X, "STYLE_VALUE_OFS_X", 1358079798u, 0, 17, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_TXT_FLAG_FIT); +be_define_const_str(TXT_FLAG_FIT, "TXT_FLAG_FIT", 3174579022u, 0, 12, &be_const_str_set_width_fit); +be_define_const_str(set_width_fit, "set_width_fit", 703845988u, 0, 13, NULL); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); +be_define_const_str(DISP_SIZE_SMALL, "DISP_SIZE_SMALL", 722343095u, 0, 15, &be_const_str_STYLE_TRANSITION_PROP_5); +be_define_const_str(STYLE_TRANSITION_PROP_5, "STYLE_TRANSITION_PROP_5", 996274500u, 0, 23, &be_const_str_set_bg_grad_stop); +be_define_const_str(set_bg_grad_stop, "set_bg_grad_stop", 1329650389u, 0, 16, &be_const_str_set_style_local_text_sel_bg_color); +be_define_const_str(set_style_local_text_sel_bg_color, "set_style_local_text_sel_bg_color", 501411296u, 0, 33, &be_const_str_set_top); +be_define_const_str(set_top, "set_top", 1234335895u, 0, 7, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_get_style_value_color); +be_define_const_str(get_style_value_color, "get_style_value_color", 76857167u, 0, 21, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_CPICKER_COLOR_MODE_VALUE); +be_define_const_str(CPICKER_COLOR_MODE_VALUE, "CPICKER_COLOR_MODE_VALUE", 980055508u, 0, 24, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_STYLE_TEXT_SEL_COLOR); +be_define_const_str(STYLE_TEXT_SEL_COLOR, "STYLE_TEXT_SEL_COLOR", 1096559567u, 0, 20, &be_const_str_set_hsv); +be_define_const_str(set_hsv, "set_hsv", 545841289u, 0, 7, NULL); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(CALENDAR_PART_DATE, "CALENDAR_PART_DATE", 1097756842u, 0, 18, &be_const_str_add_element); +be_define_const_str(add_element, "add_element", 940011507u, 0, 11, &be_const_str_set_scale); +be_define_const_str(set_scale, "set_scale", 3828634574u, 0, 9, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_WEBCAM_HREF); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_reset_style_list); +be_define_const_str(reset_style_list, "reset_style_list", 4135460875u, 0, 16, &be_const_str_set_parent_event); +be_define_const_str(set_parent_event, "set_parent_event", 49610579u, 0, 16, &be_const_str_set_text_line_space); +be_define_const_str(set_text_line_space, "set_text_line_space", 3186151063u, 0, 19, NULL); +be_define_const_str(FIT_TIGHT, "FIT_TIGHT", 2710930043u, 0, 9, &be_const_str_SYMBOL_DRIVE); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_get_style_line_opa); +be_define_const_str(get_style_line_opa, "get_style_line_opa", 3653868853u, 0, 18, &be_const_str_get_style_line_rounded); +be_define_const_str(get_style_line_rounded, "get_style_line_rounded", 2936625238u, 0, 22, NULL); +be_define_const_str(get_nearest_index_from_coord, "get_nearest_index_from_coord", 847963620u, 0, 28, &be_const_str_get_selected); +be_define_const_str(get_selected, "get_selected", 2280142225u, 0, 12, &be_const_str_set_long_mode); +be_define_const_str(set_long_mode, "set_long_mode", 1177453792u, 0, 13, NULL); +be_define_const_str(set_month_names, "set_month_names", 158482125u, 0, 15, NULL); +be_define_const_str(set_refocus_policy, "set_refocus_policy", 3274550126u, 0, 18, NULL); +be_define_const_str(DROPDOWN_DIR_RIGHT, "DROPDOWN_DIR_RIGHT", 103533641u, 0, 18, &be_const_str_set_line_blend_mode); +be_define_const_str(set_line_blend_mode, "set_line_blend_mode", 350784568u, 0, 19, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_STYLE_TRANSITION_PROP_6); +be_define_const_str(STYLE_TRANSITION_PROP_6, "STYLE_TRANSITION_PROP_6", 1046607357u, 0, 23, NULL); +be_define_const_str(get_fit_right, "get_fit_right", 2037949402u, 0, 13, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_clear_btn_ctrl); +be_define_const_str(clear_btn_ctrl, "clear_btn_ctrl", 2659827935u, 0, 14, &be_const_str_set_align); +be_define_const_str(set_align, "set_align", 2592958913u, 0, 9, NULL); +be_define_const_str(set_style_local_margin_left, "set_style_local_margin_left", 3162175100u, 0, 27, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, NULL); +be_define_const_str(STYLE_CLIP_CORNER, "STYLE_CLIP_CORNER", 2883973343u, 0, 17, &be_const_str_VSPI); +be_define_const_str(VSPI, "VSPI", 790634249u, 0, 4, &be_const_str_cursor_left); +be_define_const_str(cursor_left, "cursor_left", 785231665u, 0, 11, &be_const_str_set_style_local_border_side); +be_define_const_str(set_style_local_border_side, "set_style_local_border_side", 2699338750u, 0, 27, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_get_align); +be_define_const_str(get_align, "get_align", 1275859045u, 0, 9, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_get_fit_bottom); +be_define_const_str(get_fit_bottom, "get_fit_bottom", 664659611u, 0, 14, &be_const_str_set_style_local_transition_prop_5); +be_define_const_str(set_style_local_transition_prop_5, "set_style_local_transition_prop_5", 2518426867u, 0, 33, NULL); +be_define_const_str(get_ext_click_pad_left, "get_ext_click_pad_left", 1709871714u, 0, 22, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_set_focus_parent); +be_define_const_str(set_focus_parent, "set_focus_parent", 2829293865u, 0, 16, NULL); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(DISP_ROT_NONE, "DISP_ROT_NONE", 1805190226u, 0, 13, &be_const_str_DSB); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_set_opa_scale); be_define_const_str(set_opa_scale, "set_opa_scale", 1694654867u, 0, 13, NULL); -be_define_const_str(set_signal_cb, "set_signal_cb", 1476300744u, 0, 13, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_set_pad_left); -be_define_const_str(set_pad_left, "set_pad_left", 3931796175u, 0, 12, &be_const_str_set_valid_positions); -be_define_const_str(set_valid_positions, "set_valid_positions", 358534097u, 0, 19, &be_const_str_set_value); +be_define_const_str(CYAN, "CYAN", 1196590906u, 0, 4, &be_const_str_set_palette); +be_define_const_str(set_palette, "set_palette", 4093380483u, 0, 11, NULL); +be_define_const_str(get_pivot, "get_pivot", 2963122652u, 0, 9, NULL); +be_define_const_str(BTNMATRIX_CTRL_NO_REPEAT, "BTNMATRIX_CTRL_NO_REPEAT", 2228999978u, 0, 24, &be_const_str_SCROLLBAR_MODE_HIDE); +be_define_const_str(SCROLLBAR_MODE_HIDE, "SCROLLBAR_MODE_HIDE", 3451699170u, 0, 19, &be_const_str_get_focused_btn); +be_define_const_str(get_focused_btn, "get_focused_btn", 1271435326u, 0, 15, NULL); +be_define_const_str(PROTECT_CLICK_FOCUS, "PROTECT_CLICK_FOCUS", 293740268u, 0, 19, NULL); +be_define_const_str(is_visible, "is_visible", 597904624u, 0, 10, NULL); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_PROTECT_PRESS_LOST); +be_define_const_str(PROTECT_PRESS_LOST, "PROTECT_PRESS_LOST", 2967498203u, 0, 18, &be_const_str_get_hue); +be_define_const_str(get_hue, "get_hue", 1060457518u, 0, 7, &be_const_str_set_pattern_recolor); +be_define_const_str(set_pattern_recolor, "set_pattern_recolor", 3136030237u, 0, 19, NULL); +be_define_const_str(SSPI, "SSPI", 2469416576u, 0, 4, &be_const_str_get_style_line_dash_width); +be_define_const_str(get_style_line_dash_width, "get_style_line_dash_width", 4191923846u, 0, 25, &be_const_str_set_ctrl_map); +be_define_const_str(set_ctrl_map, "set_ctrl_map", 305774832u, 0, 12, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_get_text_sel_en); +be_define_const_str(get_text_sel_en, "get_text_sel_en", 500051850u, 0, 15, &be_const_str_get_title); +be_define_const_str(get_title, "get_title", 1263271230u, 0, 9, &be_const_str_get_y_invert); +be_define_const_str(get_y_invert, "get_y_invert", 2518095240u, 0, 12, NULL); +be_define_const_str(GAUGE_PART_MAIN, "GAUGE_PART_MAIN", 3145322556u, 0, 15, &be_const_str_get_btn_selected); +be_define_const_str(get_btn_selected, "get_btn_selected", 1715353004u, 0, 16, NULL); +be_define_const_str(PAGE_EDGE_TOP, "PAGE_EDGE_TOP", 869728962u, 0, 13, NULL); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); +be_define_const_str(set_style_local_line_opa, "set_style_local_line_opa", 909807497u, 0, 24, &be_const_str_set_style_local_shadow_width); +be_define_const_str(set_style_local_shadow_width, "set_style_local_shadow_width", 2466053617u, 0, 28, NULL); +be_define_const_str(set_formatter_cb, "set_formatter_cb", 1245371562u, 0, 16, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(get_adjustable, "get_adjustable", 982674931u, 0, 14, NULL); +be_define_const_str(DRAG_DIR_ONE, "DRAG_DIR_ONE", 2088479808u, 0, 12, &be_const_str_STYLE_LINE_WIDTH); +be_define_const_str(STYLE_LINE_WIDTH, "STYLE_LINE_WIDTH", 537342374u, 0, 16, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_hittest); +be_define_const_str(hittest, "hittest", 4018046250u, 0, 7, NULL); +be_define_const_str(STYLE_BG_GRAD_DIR, "STYLE_BG_GRAD_DIR", 2986594357u, 0, 17, &be_const_str_get_drag_throw); +be_define_const_str(get_drag_throw, "get_drag_throw", 2409838001u, 0, 14, NULL); +be_define_const_str(set_style_local_transform_angle, "set_style_local_transform_angle", 3618600326u, 0, 31, NULL); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_RF_SENSOR); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_draw_rect); +be_define_const_str(draw_rect, "draw_rect", 1619240338u, 0, 9, &be_const_str_get_user_data); +be_define_const_str(get_user_data, "get_user_data", 1175796436u, 0, 13, NULL); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_set_options_static); +be_define_const_str(set_options_static, "set_options_static", 652047717u, 0, 18, &be_const_str_set_value); be_define_const_str(set_value, "set_value", 2288413965u, 0, 9, NULL); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_set_buffer); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_set_mode); +be_define_const_str(set_mode, "set_mode", 4109106455u, 0, 8, &be_const_str_set_style_local_image_opa); +be_define_const_str(set_style_local_image_opa, "set_style_local_image_opa", 3630403626u, 0, 25, &be_const_str_set_style_local_outline_blend_mode); +be_define_const_str(set_style_local_outline_blend_mode, "set_style_local_outline_blend_mode", 3321200446u, 0, 34, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_STYLE_SCALE_GRAD_COLOR); +be_define_const_str(STYLE_SCALE_GRAD_COLOR, "STYLE_SCALE_GRAD_COLOR", 3981239948u, 0, 22, &be_const_str_draw_img); +be_define_const_str(draw_img, "draw_img", 3217263339u, 0, 8, NULL); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_set_style_local_transition_path); +be_define_const_str(set_style_local_transition_path, "set_style_local_transition_path", 1414572505u, 0, 31, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(set_style_local_transition_prop_3, "set_style_local_transition_prop_3", 2619092581u, 0, 33, NULL); +be_define_const_str(fade_in, "fade_in", 3410278043u, 0, 7, &be_const_str_set_angles); +be_define_const_str(set_angles, "set_angles", 895400084u, 0, 10, NULL); +be_define_const_str(set_style_local_margin_right, "set_style_local_margin_right", 2606287945u, 0, 28, NULL); +be_define_const_str(get_one_check, "get_one_check", 2649478907u, 0, 13, &be_const_str_set_highlighted_dates); +be_define_const_str(set_highlighted_dates, "set_highlighted_dates", 344528435u, 0, 21, NULL); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_get_style_outline_color); +be_define_const_str(get_style_outline_color, "get_style_outline_color", 3936324952u, 0, 23, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(CHECKBOX_PART_BULLET, "CHECKBOX_PART_BULLET", 3413099789u, 0, 20, &be_const_str_STYLE_BORDER_SIDE); +be_define_const_str(STYLE_BORDER_SIDE, "STYLE_BORDER_SIDE", 3876109589u, 0, 17, &be_const_str_get_anim_speed); +be_define_const_str(get_anim_speed, "get_anim_speed", 1731518217u, 0, 14, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, NULL); +be_define_const_str(KEY_HOME, "KEY_HOME", 2722222682u, 0, 8, &be_const_str_focus_prev); +be_define_const_str(focus_prev, "focus_prev", 2639915985u, 0, 10, NULL); +be_define_const_str(STYLE_SHADOW_OFS_Y, "STYLE_SHADOW_OFS_Y", 2690614194u, 0, 18, NULL); +be_define_const_str(BTN_STATE_CHECKED_RELEASED, "BTN_STATE_CHECKED_RELEASED", 571978995u, 0, 26, NULL); +be_define_const_str(get_pwd_mode, "get_pwd_mode", 364593807u, 0, 12, NULL); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); +be_define_const_str(get_cell_merge_right, "get_cell_merge_right", 207626582u, 0, 20, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(EVENT_APPLY, "EVENT_APPLY", 1983056372u, 0, 11, &be_const_str_ROT1A_NP); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, NULL); +be_define_const_str(STYLE_PATTERN_BLEND_MODE, "STYLE_PATTERN_BLEND_MODE", 2331743867u, 0, 24, &be_const_str_get_wrap); +be_define_const_str(get_wrap, "get_wrap", 52299084u, 0, 8, &be_const_str_set_value_str); +be_define_const_str(set_value_str, "set_value_str", 2950562969u, 0, 13, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_get_style_scale_border_width); +be_define_const_str(get_style_scale_border_width, "get_style_scale_border_width", 206289592u, 0, 28, &be_const_str_set_shadow_width); +be_define_const_str(set_shadow_width, "set_shadow_width", 1524575495u, 0, 16, NULL); +be_define_const_str(ALIGN_OUT_RIGHT_BOTTOM, "ALIGN_OUT_RIGHT_BOTTOM", 3786852942u, 0, 22, NULL); +be_define_const_str(KEY_DEL, "KEY_DEL", 1749022830u, 0, 7, &be_const_str_get_angle_offset); +be_define_const_str(get_angle_offset, "get_angle_offset", 2775374871u, 0, 16, NULL); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_get_style_transform_width); +be_define_const_str(get_style_transform_width, "get_style_transform_width", 713115893u, 0, 25, &be_const_str_set_bg_grad_dir); +be_define_const_str(set_bg_grad_dir, "set_bg_grad_dir", 1390928996u, 0, 15, &be_const_str_set_signal_cb); +be_define_const_str(set_signal_cb, "set_signal_cb", 1476300744u, 0, 13, NULL); +be_define_const_str(KEYBOARD_PART_BTN, "KEYBOARD_PART_BTN", 875459207u, 0, 17, &be_const_str_get_content); +be_define_const_str(get_content, "get_content", 2390895261u, 0, 11, &be_const_str_set_focused_btn); +be_define_const_str(set_focused_btn, "set_focused_btn", 4211166978u, 0, 15, &be_const_str_set_offset_x); +be_define_const_str(set_offset_x, "set_offset_x", 421149912u, 0, 12, NULL); +be_define_const_str(OPA_90, "OPA_90", 27710427u, 0, 6, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); +be_define_const_str(get_edge_flash, "get_edge_flash", 3226611892u, 0, 14, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(get_pressed_cell, "get_pressed_cell", 2707217039u, 0, 16, NULL); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, NULL); +be_define_const_str(STYLE_SHADOW_WIDTH, "STYLE_SHADOW_WIDTH", 629491480u, 0, 18, &be_const_str_set_text_font); +be_define_const_str(set_text_font, "set_text_font", 724363521u, 0, 13, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_STYLE_LINE_COLOR); +be_define_const_str(STYLE_LINE_COLOR, "STYLE_LINE_COLOR", 623603885u, 0, 16, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_set_outline_pad); +be_define_const_str(set_outline_pad, "set_outline_pad", 2845869448u, 0, 15, NULL); +be_define_const_str(BAR_TYPE_SYMMETRICAL, "BAR_TYPE_SYMMETRICAL", 1357819710u, 0, 20, &be_const_str_set_height_margin); +be_define_const_str(set_height_margin, "set_height_margin", 3083248294u, 0, 17, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_TXD); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_anim_cb); +be_define_const_str(anim_cb, "anim_cb", 2120778920u, 0, 7, &be_const_str_get_style_bg_main_stop); +be_define_const_str(get_style_bg_main_stop, "get_style_bg_main_stop", 3096799724u, 0, 22, &be_const_str_get_style_shadow_ofs_y); +be_define_const_str(get_style_shadow_ofs_y, "get_style_shadow_ofs_y", 2337159315u, 0, 22, &be_const_str_get_style_transform_zoom); +be_define_const_str(get_style_transform_zoom, "get_style_transform_zoom", 380604044u, 0, 24, &be_const_str_set_line_rounded); +be_define_const_str(set_line_rounded, "set_line_rounded", 1057786792u, 0, 16, &be_const_str_set_style_local_pattern_recolor); +be_define_const_str(set_style_local_pattern_recolor, "set_style_local_pattern_recolor", 2810797623u, 0, 31, NULL); +be_define_const_str(EVENT_GESTURE, "EVENT_GESTURE", 2506519243u, 0, 13, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, NULL); +be_define_const_str(SCROLLBAR_MODE_ON, "SCROLLBAR_MODE_ON", 1562259499u, 0, 17, &be_const_str_set_chg_rate); +be_define_const_str(set_chg_rate, "set_chg_rate", 1522157679u, 0, 12, &be_const_str_set_needle_count); +be_define_const_str(set_needle_count, "set_needle_count", 2611099555u, 0, 16, NULL); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_set_text); +be_define_const_str(set_text, "set_text", 1849641155u, 0, 8, NULL); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, NULL); +be_define_const_str(ALIGN_IN_BOTTOM_LEFT, "ALIGN_IN_BOTTOM_LEFT", 3951704846u, 0, 20, NULL); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(get_tile_act, "get_tile_act", 3705631119u, 0, 12, &be_const_str_set_value_font); +be_define_const_str(set_value_font, "set_value_font", 3846644343u, 0, 14, NULL); +be_define_const_str(get_angle_start, "get_angle_start", 99415936u, 0, 15, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(init_draw_rect_dsc, "init_draw_rect_dsc", 4242061620u, 0, 18, &be_const_str_set_width_margin); +be_define_const_str(set_width_margin, "set_width_margin", 2313657923u, 0, 16, NULL); +be_define_const_str(STYLE_BG_COLOR, "STYLE_BG_COLOR", 2207533444u, 0, 14, &be_const_str_STYLE_TEXT_LETTER_SPACE); +be_define_const_str(STYLE_TEXT_LETTER_SPACE, "STYLE_TEXT_LETTER_SPACE", 2264289484u, 0, 23, NULL); +be_define_const_str(get_style_radius, "get_style_radius", 1315526516u, 0, 16, NULL); +be_define_const_str(set_zoom, "set_zoom", 1925134407u, 0, 8, NULL); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); +be_define_const_str(FS_RES_NOT_EX, "FS_RES_NOT_EX", 3124641355u, 0, 13, &be_const_str_SYMBOL_POWER); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); +be_define_const_str(clean_style_list, "clean_style_list", 1108481805u, 0, 16, NULL); +be_define_const_str(LAYOUT_PRETTY_MID, "LAYOUT_PRETTY_MID", 2040633917u, 0, 17, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_get_scrl_fit_left); +be_define_const_str(get_scrl_fit_left, "get_scrl_fit_left", 1227937692u, 0, 17, NULL); +be_define_const_str(TABVIEW_TAB_POS_TOP, "TABVIEW_TAB_POS_TOP", 4224766616u, 0, 19, &be_const_str_get_style_pad_bottom); +be_define_const_str(get_style_pad_bottom, "get_style_pad_bottom", 1749510283u, 0, 20, NULL); +be_define_const_str(BLEND_MODE_NORMAL, "BLEND_MODE_NORMAL", 1282739232u, 0, 17, NULL); +be_define_const_str(STYLE_BORDER_OPA, "STYLE_BORDER_OPA", 2705633552u, 0, 16, &be_const_str_asstring); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, NULL); +be_define_const_str(get_btnmatrix, "get_btnmatrix", 1628630681u, 0, 13, NULL); +be_define_const_str(DISP_SIZE_LARGE, "DISP_SIZE_LARGE", 3377069231u, 0, 15, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_set_text_align); +be_define_const_str(set_text_align, "set_text_align", 2734674049u, 0, 14, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, NULL); +be_define_const_str(get_x_from_index, "get_x_from_index", 2843960746u, 0, 16, &be_const_str_set_style_local_margin_top); +be_define_const_str(set_style_local_margin_top, "set_style_local_margin_top", 2065926016u, 0, 26, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_set_style_local_scale_end_border_width); +be_define_const_str(set_style_local_scale_end_border_width, "set_style_local_scale_end_border_width", 3774452254u, 0, 38, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_STYLE_LINE_ROUNDED); +be_define_const_str(STYLE_LINE_ROUNDED, "STYLE_LINE_ROUNDED", 3677440219u, 0, 18, &be_const_str_STYLE_PAD_INNER); +be_define_const_str(STYLE_PAD_INNER, "STYLE_PAD_INNER", 1651002267u, 0, 15, &be_const_str_get_sb_mode); +be_define_const_str(get_sb_mode, "get_sb_mode", 2283093353u, 0, 11, &be_const_str_set_selected); +be_define_const_str(set_selected, "set_selected", 386442685u, 0, 12, NULL); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_set_scrl_height); +be_define_const_str(set_scrl_height, "set_scrl_height", 3462735686u, 0, 15, NULL); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(add_btns, "add_btns", 828629896u, 0, 8, &be_const_str_set_style_local_scale_end_color); +be_define_const_str(set_style_local_scale_end_color, "set_style_local_scale_end_color", 2968375966u, 0, 31, NULL); +be_define_const_str(get_style_text_opa, "get_style_text_opa", 2378295432u, 0, 18, NULL); +be_define_const_str(ALIGN_CENTER, "ALIGN_CENTER", 622705366u, 0, 12, &be_const_str_PROJECTOR_CTRL_TX); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_title_get_alignment); +be_define_const_str(title_get_alignment, "title_get_alignment", 3374080476u, 0, 19, NULL); +be_define_const_str(EVENT_LONG_PRESSED, "EVENT_LONG_PRESSED", 1806426939u, 0, 18, &be_const_str_MGC3130_XFER); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_STYLE_PATTERN_OPA); +be_define_const_str(STYLE_PATTERN_OPA, "STYLE_PATTERN_OPA", 1423872118u, 0, 17, &be_const_str_draw_arc); +be_define_const_str(draw_arc, "draw_arc", 1828251676u, 0, 8, NULL); +be_define_const_str(print, "print", 372738696u, 0, 5, NULL); +be_define_const_str(set_scale_end_border_width, "set_scale_end_border_width", 3280087724u, 0, 26, NULL); +be_define_const_str(add_state, "add_state", 934613858u, 0, 9, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, &be_const_str_set_style_local_value_align); +be_define_const_str(set_style_local_value_align, "set_style_local_value_align", 17354185u, 0, 27, &be_const_str_set_text_letter_space); +be_define_const_str(set_text_letter_space, "set_text_letter_space", 4274937273u, 0, 21, &be_const_str_set_value_ofs_y); +be_define_const_str(set_value_ofs_y, "set_value_ofs_y", 95673184u, 0, 15, NULL); +be_define_const_str(ANIM_OFF, "ANIM_OFF", 3664307970u, 0, 8, &be_const_str_STYLE_BG_BLEND_MODE); +be_define_const_str(STYLE_BG_BLEND_MODE, "STYLE_BG_BLEND_MODE", 1458637206u, 0, 19, &be_const_str_get_options); +be_define_const_str(get_options, "get_options", 1198221094u, 0, 11, &be_const_str_set_style_local_pad_top); +be_define_const_str(set_style_local_pad_top, "set_style_local_pad_top", 785256663u, 0, 23, NULL); +be_define_const_str(OBJ_PART_VIRTUAL_FIRST, "OBJ_PART_VIRTUAL_FIRST", 1744058739u, 0, 22, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_set_anim_time); +be_define_const_str(set_anim_time, "set_anim_time", 1473685427u, 0, 13, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_set_digit_format); +be_define_const_str(set_digit_format, "set_digit_format", 293274625u, 0, 16, &be_const_str_set_secondary_y_tick_texts); +be_define_const_str(set_secondary_y_tick_texts, "set_secondary_y_tick_texts", 2165523729u, 0, 26, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_FS_RES_HW_ERR); +be_define_const_str(FS_RES_HW_ERR, "FS_RES_HW_ERR", 1676324085u, 0, 13, &be_const_str_OPA_COVER); +be_define_const_str(OPA_COVER, "OPA_COVER", 3000088857u, 0, 9, &be_const_str_get_style_pad_top); +be_define_const_str(get_style_pad_top, "get_style_pad_top", 2896917811u, 0, 17, &be_const_str_set_height); +be_define_const_str(set_height, "set_height", 1080207399u, 0, 10, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_get_header_height); +be_define_const_str(get_header_height, "get_header_height", 3313773581u, 0, 17, &be_const_str_set_x_start_point); +be_define_const_str(set_x_start_point, "set_x_start_point", 257195034u, 0, 17, NULL); +be_define_const_str(DROPDOWN_PART_MAIN, "DROPDOWN_PART_MAIN", 1806576308u, 0, 18, &be_const_str_KEY_ESC); +be_define_const_str(KEY_ESC, "KEY_ESC", 915768258u, 0, 7, &be_const_str_set_checked); +be_define_const_str(set_checked, "set_checked", 1119609005u, 0, 11, NULL); +be_define_const_str(TXT_FLAG_RIGHT, "TXT_FLAG_RIGHT", 3664649251u, 0, 14, &be_const_str_set_style_local_text_blend_mode); +be_define_const_str(set_style_local_text_blend_mode, "set_style_local_text_blend_mode", 3467626777u, 0, 31, NULL); +be_define_const_str(blur_ver, "blur_ver", 2584500226u, 0, 8, NULL); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_set_y_range); +be_define_const_str(set_y_range, "set_y_range", 1531043725u, 0, 11, NULL); +be_define_const_str(PROTECT_NONE, "PROTECT_NONE", 2861685391u, 0, 12, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_get_next_btn); +be_define_const_str(get_next_btn, "get_next_btn", 1221160406u, 0, 12, &be_const_str_remove_all_objs); +be_define_const_str(remove_all_objs, "remove_all_objs", 2136122696u, 0, 15, &be_const_str_set_x_tick_texts); +be_define_const_str(set_x_tick_texts, "set_x_tick_texts", 481792535u, 0, 16, NULL); +be_define_const_str(LIST_PART_EDGE_FLASH, "LIST_PART_EDGE_FLASH", 549302352u, 0, 20, &be_const_str_WHITE); +be_define_const_str(WHITE, "WHITE", 2856149510u, 0, 5, &be_const_str_get_scrl_fit_bottom); +be_define_const_str(get_scrl_fit_bottom, "get_scrl_fit_bottom", 446102398u, 0, 19, NULL); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_STYLE_TEXT_BLEND_MODE); +be_define_const_str(STYLE_TEXT_BLEND_MODE, "STYLE_TEXT_BLEND_MODE", 44336606u, 0, 21, NULL); +be_define_const_str(STYLE_MARGIN_BOTTOM, "STYLE_MARGIN_BOTTOM", 4176801053u, 0, 19, &be_const_str_get_screen); +be_define_const_str(get_screen, "get_screen", 2759490796u, 0, 10, &be_const_str_set_border_color); +be_define_const_str(set_border_color, "set_border_color", 2628124814u, 0, 16, NULL); +be_define_const_str(SCROLLBAR_MODE_AUTO, "SCROLLBAR_MODE_AUTO", 2882381917u, 0, 19, &be_const_str_STATE_PRESSED); +be_define_const_str(STATE_PRESSED, "STATE_PRESSED", 2471016259u, 0, 13, NULL); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, NULL); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_set_cursor_blink_time); +be_define_const_str(set_cursor_blink_time, "set_cursor_blink_time", 3508000825u, 0, 21, NULL); +be_define_const_str(clear_btn_ctrl_all, "clear_btn_ctrl_all", 895272499u, 0, 18, NULL); +be_define_const_str(set_pattern_opa, "set_pattern_opa", 3749193119u, 0, 15, NULL); +be_define_const_str(set_bg_main_stop, "set_bg_main_stop", 1702668926u, 0, 16, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_SDS0X1_TX); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_set_end_angle); +be_define_const_str(set_end_angle, "set_end_angle", 2783087761u, 0, 13, NULL); +be_define_const_str(CHART_UPDATE_MODE_SHIFT, "CHART_UPDATE_MODE_SHIFT", 1343723110u, 0, 23, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(ALIGN_OUT_RIGHT_MID, "ALIGN_OUT_RIGHT_MID", 2298501353u, 0, 19, &be_const_str_set_header_height); +be_define_const_str(set_header_height, "set_header_height", 2913303849u, 0, 17, NULL); +be_define_const_str(LAYOUT_PRETTY_TOP, "LAYOUT_PRETTY_TOP", 725519108u, 0, 17, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_set_buffer); be_define_const_str(set_buffer, "set_buffer", 311233742u, 0, 10, NULL); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_WEBCAM_PCLK); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, NULL); +be_define_const_str(ROLLER_MODE_NORMAL, "ROLLER_MODE_NORMAL", 72783697u, 0, 18, &be_const_str_ST7789_DC); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_set_click_focus); +be_define_const_str(set_click_focus, "set_click_focus", 3544636103u, 0, 15, &be_const_str_set_user_data); +be_define_const_str(set_user_data, "set_user_data", 3596043360u, 0, 13, NULL); +be_define_const_str(KEY_NEXT, "KEY_NEXT", 4124880692u, 0, 8, &be_const_str_get_cell_crop); +be_define_const_str(get_cell_crop, "get_cell_crop", 2916382555u, 0, 13, NULL); +be_define_const_str(clear_series, "clear_series", 3353669054u, 0, 12, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_set_style_local_pad_right); +be_define_const_str(set_style_local_pad_right, "set_style_local_pad_right", 1126712366u, 0, 25, NULL); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); +be_define_const_str(set_cell_crop, "set_cell_crop", 1055583431u, 0, 13, &be_const_str_set_text_color); +be_define_const_str(set_text_color, "set_text_color", 2780604091u, 0, 14, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SYMBOL_DUMMY); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); +be_define_const_str(focus_btn, "focus_btn", 1087954772u, 0, 9, NULL); +be_define_const_str(CHART_CURSOR_UP, "CHART_CURSOR_UP", 2345195814u, 0, 15, &be_const_str_is_checked); +be_define_const_str(is_checked, "is_checked", 3623625615u, 0, 10, NULL); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_STATE_EDITED); +be_define_const_str(STATE_EDITED, "STATE_EDITED", 46966454u, 0, 12, NULL); +be_define_const_str(ALIGN_IN_RIGHT_MID, "ALIGN_IN_RIGHT_MID", 1518023108u, 0, 18, &be_const_str_get_style_line_width); +be_define_const_str(get_style_line_width, "get_style_line_width", 1172338835u, 0, 20, &be_const_str_start_auto_close); +be_define_const_str(start_auto_close, "start_auto_close", 2189620188u, 0, 16, NULL); +be_define_const_str(get_point_count, "get_point_count", 617480290u, 0, 15, &be_const_str_is_inactive); +be_define_const_str(is_inactive, "is_inactive", 2737113619u, 0, 11, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_set_radius); +be_define_const_str(set_radius, "set_radius", 1362452298u, 0, 10, NULL); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, NULL); +be_define_const_str(get_style_transition_prop_2, "get_style_transition_prop_2", 3421169246u, 0, 27, NULL); +be_define_const_str(GESTURE_DIR_LEFT, "GESTURE_DIR_LEFT", 1888875816u, 0, 16, NULL); +be_define_const_str(scroll_hor, "scroll_hor", 4153158354u, 0, 10, NULL); +be_define_const_str(BORDER_SIDE_TOP, "BORDER_SIDE_TOP", 3643834727u, 0, 15, &be_const_str_ELECTRIQ_MOODL_TX); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SR04_ECHO); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, NULL); +be_define_const_str(STATE_FOCUSED, "STATE_FOCUSED", 3780463572u, 0, 13, &be_const_str_SYMBOL_GPS); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_SYMBOL_KEYBOARD); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_set_shadow_ofs_x); +be_define_const_str(set_shadow_ofs_x, "set_shadow_ofs_x", 3069980414u, 0, 16, NULL); +be_define_const_str(get_gesture_parent, "get_gesture_parent", 2610282188u, 0, 18, NULL); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_push); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_add_tab); +be_define_const_str(add_tab, "add_tab", 1821901608u, 0, 7, NULL); +be_define_const_str(STYLE_PAD_RIGHT, "STYLE_PAD_RIGHT", 4135691505u, 0, 15, &be_const_str_SWT1); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_set_cursor_pos); +be_define_const_str(set_cursor_pos, "set_cursor_pos", 1354380555u, 0, 14, NULL); +be_define_const_str(PROTECT_PARENT, "PROTECT_PARENT", 3109095353u, 0, 14, &be_const_str_SI7021); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_get_scroll_propagation); +be_define_const_str(get_scroll_propagation, "get_scroll_propagation", 431556896u, 0, 22, NULL); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); +be_define_const_str(DISP_SIZE_EXTRA_LARGE, "DISP_SIZE_EXTRA_LARGE", 3382996246u, 0, 21, &be_const_str_get_series_area); +be_define_const_str(get_series_area, "get_series_area", 1561258251u, 0, 15, &be_const_str_get_style_clip_corner); +be_define_const_str(get_style_clip_corner, "get_style_clip_corner", 352453368u, 0, 21, &be_const_str_get_style_transition_prop_5); +be_define_const_str(get_style_transition_prop_5, "get_style_transition_prop_5", 3471502103u, 0, 27, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_LABEL_LONG_CROP); +be_define_const_str(LABEL_LONG_CROP, "LABEL_LONG_CROP", 4057484127u, 0, 15, &be_const_str_NRF24_CS); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_get_ext_click_pad_top); +be_define_const_str(get_ext_click_pad_top, "get_ext_click_pad_top", 284862450u, 0, 21, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_scr_act); +be_define_const_str(scr_act, "scr_act", 2080211456u, 0, 7, NULL); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_get_style_bg_grad_color); +be_define_const_str(get_style_bg_grad_color, "get_style_bg_grad_color", 4149817886u, 0, 23, &be_const_str_get_ver_res); +be_define_const_str(get_ver_res, "get_ver_res", 4160557208u, 0, 11, NULL); +be_define_const_str(focus, "focus", 337658899u, 0, 5, &be_const_str_set_scrollbar_mode); +be_define_const_str(set_scrollbar_mode, "set_scrollbar_mode", 3373216512u, 0, 18, NULL); +be_define_const_str(get_focus_parent, "get_focus_parent", 1187935525u, 0, 16, NULL); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_get_arc_length); +be_define_const_str(get_arc_length, "get_arc_length", 2763412693u, 0, 14, &be_const_str_set_div_line_count); +be_define_const_str(set_div_line_count, "set_div_line_count", 918956222u, 0, 18, NULL); +be_define_const_str(BLEND_MODE_ADDITIVE, "BLEND_MODE_ADDITIVE", 3732684283u, 0, 19, &be_const_str_set_drag_throw); +be_define_const_str(set_drag_throw, "set_drag_throw", 2511679421u, 0, 14, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_RXD); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_STYLE_BORDER_POST); +be_define_const_str(STYLE_BORDER_POST, "STYLE_BORDER_POST", 1815444696u, 0, 17, NULL); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); +be_define_const_str(BTN_STATE_CHECKED_PRESSED, "BTN_STATE_CHECKED_PRESSED", 2837756846u, 0, 25, &be_const_str_SSD1331_CS); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(get_highlighted_dates_num, "get_highlighted_dates_num", 82319360u, 0, 25, &be_const_str_set_textarea); +be_define_const_str(set_textarea, "set_textarea", 1978833518u, 0, 12, NULL); +be_define_const_str(set_clip_corner, "set_clip_corner", 2280572814u, 0, 15, &be_const_str_set_cursor_manage); +be_define_const_str(set_cursor_manage, "set_cursor_manage", 2587391084u, 0, 17, &be_const_str_set_style_local_border_width); +be_define_const_str(set_style_local_border_width, "set_style_local_border_width", 4234107199u, 0, 28, NULL); +be_define_const_str(set_base_dir, "set_base_dir", 1813064609u, 0, 12, NULL); +be_define_const_str(STYLE_PAD_TOP, "STYLE_PAD_TOP", 2731711064u, 0, 13, NULL); +be_define_const_str(KEYBOARD_MODE_TEXT_LOWER, "KEYBOARD_MODE_TEXT_LOWER", 3755201214u, 0, 24, &be_const_str_PULLDOWN); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_set_style_local_bg_main_stop); +be_define_const_str(set_style_local_bg_main_stop, "set_style_local_bg_main_stop", 2599091600u, 0, 28, NULL); +be_define_const_str(MAROON, "MAROON", 770976181u, 0, 6, &be_const_str_STYLE_TRANSFORM_ZOOM); +be_define_const_str(STYLE_TRANSFORM_ZOOM, "STYLE_TRANSFORM_ZOOM", 224871941u, 0, 20, &be_const_str_get_focused_obj); +be_define_const_str(get_focused_obj, "get_focused_obj", 208302839u, 0, 15, &be_const_str_get_value); +be_define_const_str(get_value, "get_value", 3844420137u, 0, 9, &be_const_str_set_margin_left); +be_define_const_str(set_margin_left, "set_margin_left", 4194347462u, 0, 15, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_get_hsv); +be_define_const_str(get_hsv, "get_hsv", 774943805u, 0, 7, &be_const_str_get_prev_btn); +be_define_const_str(get_prev_btn, "get_prev_btn", 4150536586u, 0, 12, &be_const_str_set_outline_blend_mode); +be_define_const_str(set_outline_blend_mode, "set_outline_blend_mode", 4273381132u, 0, 22, NULL); +be_define_const_str(CHART_PART_CURSOR, "CHART_PART_CURSOR", 2123603184u, 0, 17, &be_const_str_set_mirror); +be_define_const_str(set_mirror, "set_mirror", 1608447367u, 0, 10, &be_const_str_set_pad_left); +be_define_const_str(set_pad_left, "set_pad_left", 3931796175u, 0, 12, &be_const_str_set_style_local_bg_color); +be_define_const_str(set_style_local_bg_color, "set_style_local_bg_color", 3796704273u, 0, 24, NULL); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_create); +be_define_const_str(create, "create", 649812317u, 0, 6, &be_const_str_get_style_value_str); +be_define_const_str(get_style_value_str, "get_style_value_str", 967747319u, 0, 19, NULL); +be_define_const_str(set_cell_value, "set_cell_value", 3982436570u, 0, 14, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(get_style_pattern_image, "get_style_pattern_image", 2402970102u, 0, 23, &be_const_str_set_cell_type); +be_define_const_str(set_cell_type, "set_cell_type", 1502464221u, 0, 13, NULL); +be_define_const_str(STYLE_VALUE_LETTER_SPACE, "STYLE_VALUE_LETTER_SPACE", 2129682704u, 0, 24, &be_const_str_set_btn_ctrl); +be_define_const_str(set_btn_ctrl, "set_btn_ctrl", 3999876128u, 0, 12, &be_const_str_set_style_local_value_color); +be_define_const_str(set_style_local_value_color, "set_style_local_value_color", 2695342403u, 0, 27, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_set_padding_left); +be_define_const_str(set_padding_left, "set_padding_left", 1230478487u, 0, 16, NULL); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_SPINNER_DIR_FORWARD); +be_define_const_str(SPINNER_DIR_FORWARD, "SPINNER_DIR_FORWARD", 660203948u, 0, 19, &be_const_str_get_one_line); +be_define_const_str(get_one_line, "get_one_line", 3981525171u, 0, 12, &be_const_str_off); +be_define_const_str(off, "off", 2872740362u, 0, 3, NULL); +be_define_const_str(set_style_local_value_ofs_y, "set_style_local_value_ofs_y", 3040892578u, 0, 27, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_get_recolor); +be_define_const_str(get_recolor, "get_recolor", 4128330436u, 0, 11, &be_const_str_set_col_width); +be_define_const_str(set_col_width, "set_col_width", 28420413u, 0, 13, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_set_ext_click_area); +be_define_const_str(set_ext_click_area, "set_ext_click_area", 1298742324u, 0, 18, &be_const_str_set_transition_delay); +be_define_const_str(set_transition_delay, "set_transition_delay", 2787845599u, 0, 20, NULL); +be_define_const_str(get_accepted_chars, "get_accepted_chars", 2210030087u, 0, 18, &be_const_str_set_transform_width); +be_define_const_str(set_transform_width, "set_transform_width", 3190371031u, 0, 19, NULL); +be_define_const_str(get_style_pattern_recolor_opa, "get_style_pattern_recolor_opa", 1906150798u, 0, 29, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(get_btn_ctrl, "get_btn_ctrl", 370184444u, 0, 12, &be_const_str_set_value_align); +be_define_const_str(set_value_align, "set_value_align", 1467667831u, 0, 15, NULL); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); +be_define_const_str(CPICKER_TYPE_RECT, "CPICKER_TYPE_RECT", 126543004u, 0, 17, &be_const_str_EVENT_DRAG_BEGIN); +be_define_const_str(EVENT_DRAG_BEGIN, "EVENT_DRAG_BEGIN", 25766504u, 0, 16, &be_const_str_EVENT_DRAG_END); +be_define_const_str(EVENT_DRAG_END, "EVENT_DRAG_END", 3617672228u, 0, 14, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_set_line_opa); +be_define_const_str(set_line_opa, "set_line_opa", 2983219519u, 0, 12, &be_const_str_set_range); +be_define_const_str(set_range, "set_range", 228092793u, 0, 9, NULL); +be_define_const_str(STYLE_TRANSITION_PATH, "STYLE_TRANSITION_PATH", 3341574330u, 0, 21, &be_const_str_get_style_shadow_spread); +be_define_const_str(get_style_shadow_spread, "get_style_shadow_spread", 1343265468u, 0, 23, NULL); +be_define_const_str(STYLE_TEXT_OPA, "STYLE_TEXT_OPA", 3094351509u, 0, 14, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, NULL); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(FS_RES_NOT_IMP, "FS_RES_NOT_IMP", 3493778168u, 0, 14, &be_const_str_GRAD_DIR_HOR); +be_define_const_str(GRAD_DIR_HOR, "GRAD_DIR_HOR", 2383101491u, 0, 12, &be_const_str_get_ext_draw_pad); +be_define_const_str(get_ext_draw_pad, "get_ext_draw_pad", 3775653652u, 0, 16, &be_const_str_get_max_value); +be_define_const_str(get_max_value, "get_max_value", 2625343304u, 0, 13, NULL); +be_define_const_str(set_cell_value_fmt, "set_cell_value_fmt", 355090466u, 0, 18, NULL); +be_define_const_str(KEY_RIGHT, "KEY_RIGHT", 3690237745u, 0, 9, NULL); +be_define_const_str(get_pwd_show_time, "get_pwd_show_time", 2965915687u, 0, 17, &be_const_str_set_next); +be_define_const_str(set_next, "set_next", 1039873613u, 0, 8, &be_const_str_set_start_angle); +be_define_const_str(set_start_angle, "set_start_angle", 3152567416u, 0, 15, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(STATE_CHECKED, "STATE_CHECKED", 136056964u, 0, 13, NULL); +be_define_const_str(get_y, "get_y", 1205519667u, 0, 5, &be_const_str_set_bg_color); +be_define_const_str(set_bg_color, "set_bg_color", 3381646455u, 0, 12, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, NULL); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_set_one_line); +be_define_const_str(set_one_line, "set_one_line", 3397406135u, 0, 12, NULL); +be_define_const_str(DROPDOWN_PART_SCROLLBAR, "DROPDOWN_PART_SCROLLBAR", 699787861u, 0, 23, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_set_line_color); +be_define_const_str(set_line_color, "set_line_color", 2944146362u, 0, 14, NULL); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, NULL); +be_define_const_str(STYLE_PATTERN_REPEAT, "STYLE_PATTERN_REPEAT", 721793275u, 0, 20, &be_const_str_get_style_shadow_opa); +be_define_const_str(get_style_shadow_opa, "get_style_shadow_opa", 2392646767u, 0, 20, &be_const_str_init_draw_img_dsc); +be_define_const_str(init_draw_img_dsc, "init_draw_img_dsc", 1278847223u, 0, 17, NULL); +be_define_const_str(handle_get_type_signal, "handle_get_type_signal", 3735097350u, 0, 22, NULL); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_STYLE_IMAGE_RECOLOR_OPA); +be_define_const_str(STYLE_IMAGE_RECOLOR_OPA, "STYLE_IMAGE_RECOLOR_OPA", 3785340258u, 0, 23, &be_const_str_set_auto_fit); +be_define_const_str(set_auto_fit, "set_auto_fit", 1407948747u, 0, 12, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, NULL); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_set_style_local_margin_bottom); +be_define_const_str(set_style_local_margin_bottom, "set_style_local_margin_bottom", 3687231326u, 0, 29, &be_const_str_set_style_local_pattern_blend_mode); +be_define_const_str(set_style_local_pattern_blend_mode, "set_style_local_pattern_blend_mode", 3861434146u, 0, 34, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, NULL); +be_define_const_str(STYLE_TRANSFORM_HEIGHT, "STYLE_TRANSFORM_HEIGHT", 953009101u, 0, 22, NULL); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_get_style_line_color); +be_define_const_str(get_style_line_color, "get_style_line_color", 805371932u, 0, 20, &be_const_str_on_edge); +be_define_const_str(on_edge, "on_edge", 1159443540u, 0, 7, NULL); +be_define_const_str(CPICKER_COLOR_MODE_SATURATION, "CPICKER_COLOR_MODE_SATURATION", 1463184715u, 0, 29, &be_const_str_LABEL_LONG_SROLL_CIRC); +be_define_const_str(LABEL_LONG_SROLL_CIRC, "LABEL_LONG_SROLL_CIRC", 179427009u, 0, 21, &be_const_str_STYLE_BORDER_BLEND_MODE); +be_define_const_str(STYLE_BORDER_BLEND_MODE, "STYLE_BORDER_BLEND_MODE", 3752388357u, 0, 23, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_set_btns_pos); +be_define_const_str(set_btns_pos, "set_btns_pos", 3991891940u, 0, 12, &be_const_str_text_is_selected); +be_define_const_str(text_is_selected, "text_is_selected", 3422750433u, 0, 16, NULL); +be_define_const_str(STATE_HOVERED, "STATE_HOVERED", 1864667050u, 0, 13, &be_const_str_set_style_local_line_rounded); +be_define_const_str(set_style_local_line_rounded, "set_style_local_line_rounded", 3167871810u, 0, 28, NULL); +be_define_const_str(set_style_local_value_font, "set_style_local_value_font", 117758217u, 0, 26, NULL); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_set_symbol); +be_define_const_str(set_symbol, "set_symbol", 2254998928u, 0, 10, NULL); +be_define_const_str(set_wrap, "set_wrap", 776352320u, 0, 8, NULL); +be_define_const_str(STYLE_IMAGE_RECOLOR, "STYLE_IMAGE_RECOLOR", 1769022527u, 0, 19, &be_const_str_STYLE_TRANSITION_PROP_1); +be_define_const_str(STYLE_TRANSITION_PROP_1, "STYLE_TRANSITION_PROP_1", 929164024u, 0, 23, &be_const_str_get_style_value_ofs_x); +be_define_const_str(get_style_value_ofs_x, "get_style_value_ofs_x", 4017645761u, 0, 21, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_OLED_RESET); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_DEEPSLEEP); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_SPINNER_DIR_BACKWARD); +be_define_const_str(SPINNER_DIR_BACKWARD, "SPINNER_DIR_BACKWARD", 4078587842u, 0, 20, &be_const_str_init_points); +be_define_const_str(init_points, "init_points", 718504203u, 0, 11, NULL); +be_define_const_str(GESTURE_DIR_RIGHT, "GESTURE_DIR_RIGHT", 3761728861u, 0, 17, &be_const_str_TEMPL_STYLE_Y); +be_define_const_str(TEMPL_STYLE_Y, "TEMPL_STYLE_Y", 1997423835u, 0, 13, NULL); +be_define_const_str(set_shadow_opa, "set_shadow_opa", 1336611849u, 0, 14, &be_const_str_set_style_local_radius); +be_define_const_str(set_style_local_radius, "set_style_local_radius", 1410446896u, 0, 22, NULL); +be_define_const_str(hide_series, "hide_series", 3053662735u, 0, 11, &be_const_str_set_text_sel_bg_color); +be_define_const_str(set_text_sel_bg_color, "set_text_sel_bg_color", 3929347886u, 0, 21, NULL); +be_define_const_str(KEY_UP, "KEY_UP", 1961213356u, 0, 6, NULL); +be_define_const_str(PAGE_EDGE_LEFT, "PAGE_EDGE_LEFT", 4240364242u, 0, 14, &be_const_str_SYMBOL_OK); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_TXT_CMD_STATE_PAR); +be_define_const_str(TXT_CMD_STATE_PAR, "TXT_CMD_STATE_PAR", 159232374u, 0, 17, NULL); +be_define_const_str(LABEL_LONG_SROLL, "LABEL_LONG_SROLL", 3854826277u, 0, 16, NULL); +be_define_const_str(CHART_TYPE_NONE, "CHART_TYPE_NONE", 1127256103u, 0, 15, &be_const_str_RFRECV); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_SSPI_SCLK); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_set_event_cb); +be_define_const_str(set_event_cb, "set_event_cb", 3611711604u, 0, 12, &be_const_str_set_style_local_pad_left); +be_define_const_str(set_style_local_pad_left, "set_style_local_pad_left", 279437461u, 0, 24, NULL); +be_define_const_str(STYLE_TRANSFORM_WIDTH, "STYLE_TRANSFORM_WIDTH", 2096880210u, 0, 21, &be_const_str_set_style_local_shadow_ofs_x); +be_define_const_str(set_style_local_shadow_ofs_x, "set_style_local_shadow_ofs_x", 1619093604u, 0, 28, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(ALIGN_OUT_BOTTOM_LEFT, "ALIGN_OUT_BOTTOM_LEFT", 1302083659u, 0, 21, &be_const_str_MIEL_HVAC_RX); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, NULL); +be_define_const_str(BORDER_SIDE_FULL, "BORDER_SIDE_FULL", 703648713u, 0, 16, &be_const_str_DSB_OUT); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_get_symbol); +be_define_const_str(get_symbol, "get_symbol", 2697453548u, 0, 10, NULL); +be_define_const_str(get_style_margin_left, "get_style_margin_left", 1765248440u, 0, 21, &be_const_str_get_style_scale_grad_color); +be_define_const_str(get_style_scale_grad_color, "get_style_scale_grad_color", 715761969u, 0, 26, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_STYLE_OPA_SCALE); +be_define_const_str(STYLE_OPA_SCALE, "STYLE_OPA_SCALE", 4014485970u, 0, 15, &be_const_str_STYLE_TRANSITION_PROP_2); +be_define_const_str(STYLE_TRANSITION_PROP_2, "STYLE_TRANSITION_PROP_2", 979496881u, 0, 23, &be_const_str_lv_tabview); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(add_option, "add_option", 3444380864u, 0, 10, &be_const_str_get_needle_img_pivot_x); +be_define_const_str(get_needle_img_pivot_x, "get_needle_img_pivot_x", 1521736283u, 0, 22, NULL); +be_define_const_str(set_transform_height, "set_transform_height", 3869973274u, 0, 20, NULL); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, NULL); +be_define_const_str(clear_options, "clear_options", 1509347603u, 0, 13, &be_const_str_set_antialias); +be_define_const_str(set_antialias, "set_antialias", 1998560096u, 0, 13, NULL); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_set_scrl_layout); +be_define_const_str(set_scrl_layout, "set_scrl_layout", 2051800603u, 0, 15, NULL); +be_define_const_str(GAUGE_PART_NEEDLE, "GAUGE_PART_NEEDLE", 154997366u, 0, 17, NULL); +be_define_const_str(BORDER_SIDE_NONE, "BORDER_SIDE_NONE", 3808959734u, 0, 16, &be_const_str_get_tab_act); +be_define_const_str(get_tab_act, "get_tab_act", 2665251652u, 0, 11, NULL); +be_define_const_str(get_click_focus, "get_click_focus", 1418740299u, 0, 15, &be_const_str_get_style_opa_scale); +be_define_const_str(get_style_opa_scale, "get_style_opa_scale", 568621865u, 0, 19, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); +be_define_const_str(set_design_cb, "set_design_cb", 1469311634u, 0, 13, NULL); +be_define_const_str(CHART_UPDATE_MODE_CIRCULAR, "CHART_UPDATE_MODE_CIRCULAR", 776810859u, 0, 26, &be_const_str_OPA_10); +be_define_const_str(OPA_10, "OPA_10", 1908083683u, 0, 6, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_get_style_shadow_color); +be_define_const_str(get_style_shadow_color, "get_style_shadow_color", 920648234u, 0, 22, NULL); +be_define_const_str(SPINNER_TYPE_CONSTANT_ARC, "SPINNER_TYPE_CONSTANT_ARC", 2728560979u, 0, 25, &be_const_str_set_needle_img); +be_define_const_str(set_needle_img, "set_needle_img", 1214192915u, 0, 14, NULL); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_set_rollover); +be_define_const_str(set_rollover, "set_rollover", 1838959037u, 0, 12, NULL); +be_define_const_str(set_color_mode_fixed, "set_color_mode_fixed", 802591178u, 0, 20, &be_const_str_set_fit2); +be_define_const_str(set_fit2, "set_fit2", 4226206571u, 0, 8, NULL); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_get_max_height); +be_define_const_str(get_max_height, "get_max_height", 3803847844u, 0, 14, NULL); +be_define_const_str(set_one_check, "set_one_check", 1355948919u, 0, 13, NULL); +be_define_const_str(EVENT_CLICKED, "EVENT_CLICKED", 243475129u, 0, 13, &be_const_str_EVENT_FOCUSED); +be_define_const_str(EVENT_FOCUSED, "EVENT_FOCUSED", 3253401785u, 0, 13, &be_const_str_OPA_30); +be_define_const_str(OPA_30, "OPA_30", 95806641u, 0, 6, &be_const_str_get_layout); +be_define_const_str(get_layout, "get_layout", 2537311278u, 0, 10, NULL); +be_define_const_str(KEYBOARD_MODE_SPECIAL, "KEYBOARD_MODE_SPECIAL", 968590554u, 0, 21, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_OUTPUT_HI); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SYMBOL_DOWN); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, NULL); +be_define_const_str(STATE_DISABLED, "STATE_DISABLED", 3398267003u, 0, 14, &be_const_str_STYLE_BG_OPA); +be_define_const_str(STYLE_BG_OPA, "STYLE_BG_OPA", 1487941245u, 0, 12, &be_const_str_set_style_local_transition_prop_4); +be_define_const_str(set_style_local_transition_prop_4, "set_style_local_transition_prop_4", 2501649248u, 0, 33, NULL); +be_define_const_str(get_auto_fit, "get_auto_fit", 2158692767u, 0, 12, NULL); +be_define_const_str(GESTURE_DIR_TOP, "GESTURE_DIR_TOP", 84881028u, 0, 15, &be_const_str_get_style_line_dash_gap); +be_define_const_str(get_style_line_dash_gap, "get_style_line_dash_gap", 1205629734u, 0, 23, NULL); +be_define_const_str(def_event_cb, "def_event_cb", 3544166485u, 0, 12, NULL); +be_define_const_str(set_px, "set_px", 1137035068u, 0, 6, NULL); +be_define_const_str(list_get_local_style, "list_get_local_style", 2313938368u, 0, 20, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_set_cell_align); +be_define_const_str(set_cell_align, "set_cell_align", 3036710638u, 0, 14, NULL); +be_define_const_str(get_style_text_color, "get_style_text_color", 1013168305u, 0, 20, &be_const_str_list_get_style); +be_define_const_str(list_get_style, "list_get_style", 2060904236u, 0, 14, NULL); +be_define_const_str(BTNMATRIX_CTRL_CHECKABLE, "BTNMATRIX_CTRL_CHECKABLE", 2892484613u, 0, 24, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(get_style_outline_pad, "get_style_outline_pad", 4225397162u, 0, 21, &be_const_str_set_style_local_transition_delay); +be_define_const_str(set_style_local_transition_delay, "set_style_local_transition_delay", 958588397u, 0, 32, NULL); +be_define_const_str(set_update_mode, "set_update_mode", 2089081509u, 0, 15, NULL); +be_define_const_str(FIT_PARENT, "FIT_PARENT", 3852740121u, 0, 10, NULL); +be_define_const_str(fade_out, "fade_out", 215415112u, 0, 8, &be_const_str_get_style_margin_right); +be_define_const_str(get_style_margin_right, "get_style_margin_right", 2672767757u, 0, 22, NULL); +be_define_const_str(ALIGN_OUT_LEFT_BOTTOM, "ALIGN_OUT_LEFT_BOTTOM", 1578004935u, 0, 21, &be_const_str_LIST_PART_BG); +be_define_const_str(LIST_PART_BG, "LIST_PART_BG", 1920031543u, 0, 12, &be_const_str_STYLE_TEXT_SEL_BG_COLOR); +be_define_const_str(STYLE_TEXT_SEL_BG_COLOR, "STYLE_TEXT_SEL_BG_COLOR", 2758212579u, 0, 23, &be_const_str_add_btn_right); +be_define_const_str(add_btn_right, "add_btn_right", 2154922694u, 0, 13, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, NULL); +be_define_const_str(STYLE_BORDER_COLOR, "STYLE_BORDER_COLOR", 809973177u, 0, 18, &be_const_str_STYLE_OUTLINE_OPA); +be_define_const_str(STYLE_OUTLINE_OPA, "STYLE_OUTLINE_OPA", 1357184754u, 0, 17, NULL); +be_define_const_str(get_placeholder_text, "get_placeholder_text", 1148345333u, 0, 20, NULL); +be_define_const_str(CPICKER_TYPE_DISC, "CPICKER_TYPE_DISC", 2110878147u, 0, 17, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(STYLE_SHADOW_BLEND_MODE, "STYLE_SHADOW_BLEND_MODE", 4197731411u, 0, 23, NULL); +be_define_const_str(get_style_bg_grad_stop, "get_style_bg_grad_stop", 1023453943u, 0, 22, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, NULL); +be_define_const_str(get_cursor_click_pos, "get_cursor_click_pos", 3249294464u, 0, 20, &be_const_str_get_drag); +be_define_const_str(get_drag, "get_drag", 1996600010u, 0, 8, &be_const_str_get_style_shadow_width); +be_define_const_str(get_style_shadow_width, "get_style_shadow_width", 4237112141u, 0, 22, &be_const_str_is_char_under_pos); +be_define_const_str(is_char_under_pos, "is_char_under_pos", 2744967102u, 0, 17, NULL); +be_define_const_str(ALIGN_OUT_LEFT_MID, "ALIGN_OUT_LEFT_MID", 4283557662u, 0, 18, &be_const_str_STYLE_VALUE_ALIGN); +be_define_const_str(STYLE_VALUE_ALIGN, "STYLE_VALUE_ALIGN", 3531731246u, 0, 17, &be_const_str_TASMOTACLIENT_TXD); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_set_style_local_transform_width); +be_define_const_str(set_style_local_transform_width, "set_style_local_transform_width", 3850555169u, 0, 31, NULL); +be_define_const_str(set_cursor_point, "set_cursor_point", 4201331267u, 0, 16, NULL); +be_define_const_str(get_style_transition_delay, "get_style_transition_delay", 1536173465u, 0, 26, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_STYLE_TEXT_LINE_SPACE); +be_define_const_str(STYLE_TEXT_LINE_SPACE, "STYLE_TEXT_LINE_SPACE", 4185649482u, 0, 21, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_get_style_value_opa); +be_define_const_str(get_style_value_opa, "get_style_value_opa", 1671026074u, 0, 19, NULL); +be_define_const_str(EVENT_PRESSED, "EVENT_PRESSED", 3734627670u, 0, 13, &be_const_str_STYLE_LINE_DASH_WIDTH); +be_define_const_str(STYLE_LINE_DASH_WIDTH, "STYLE_LINE_DASH_WIDTH", 1366928369u, 0, 21, &be_const_str_clean_tab); +be_define_const_str(clean_tab, "clean_tab", 3280421962u, 0, 9, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_get_tab); +be_define_const_str(get_tab, "get_tab", 2415176615u, 0, 7, &be_const_str_set_style_local_outline_pad); +be_define_const_str(set_style_local_outline_pad, "set_style_local_outline_pad", 3480414734u, 0, 27, &be_const_str_set_style_local_transition_prop_2); +be_define_const_str(set_style_local_transition_prop_2, "set_style_local_transition_prop_2", 2602314962u, 0, 33, NULL); +be_define_const_str(GRAD_DIR_NONE, "GRAD_DIR_NONE", 1627825480u, 0, 13, &be_const_str_SLIDER_TYPE_RANGE); +be_define_const_str(SLIDER_TYPE_RANGE, "SLIDER_TYPE_RANGE", 1380197143u, 0, 17, NULL); +be_define_const_str(LAYOUT_COLUMN_MID, "LAYOUT_COLUMN_MID", 669575067u, 0, 17, NULL); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(get_style_pad_inner, "get_style_pad_inner", 213811544u, 0, 19, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_get_y_from_index); +be_define_const_str(get_y_from_index, "get_y_from_index", 2777682943u, 0, 16, &be_const_str_set_pad_bottom); +be_define_const_str(set_pad_bottom, "set_pad_bottom", 900543569u, 0, 14, &be_const_str_set_showed_date); +be_define_const_str(set_showed_date, "set_showed_date", 158767501u, 0, 15, NULL); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); +be_define_const_str(get_bg_angle_start, "get_bg_angle_start", 1794378932u, 0, 18, &be_const_str_stop_auto_close); +be_define_const_str(stop_auto_close, "stop_auto_close", 3282451958u, 0, 15, NULL); +be_define_const_str(STYLE_MARGIN_TOP, "STYLE_MARGIN_TOP", 4150683665u, 0, 16, &be_const_str_set_y_tick_texts); +be_define_const_str(set_y_tick_texts, "set_y_tick_texts", 1388790058u, 0, 16, NULL); +be_define_const_str(CALENDAR_PART_HEADER, "CALENDAR_PART_HEADER", 1199188911u, 0, 20, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_clean); +be_define_const_str(clean, "clean", 1349386046u, 0, 5, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(ALIGN_IN_TOP_RIGHT, "ALIGN_IN_TOP_RIGHT", 3273089785u, 0, 18, NULL); +be_define_const_str(ARC_TYPE_NORMAL, "ARC_TYPE_NORMAL", 1554666574u, 0, 15, &be_const_str_STYLE_BORDER_WIDTH); +be_define_const_str(STYLE_BORDER_WIDTH, "STYLE_BORDER_WIDTH", 2777818658u, 0, 18, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_align_mid_y); +be_define_const_str(align_mid_y, "align_mid_y", 1664201395u, 0, 11, &be_const_str_set_image_blend_mode); +be_define_const_str(set_image_blend_mode, "set_image_blend_mode", 2083195553u, 0, 20, NULL); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); +be_define_const_str(get_point_id, "get_point_id", 2837084878u, 0, 12, &be_const_str_set_ext_array); +be_define_const_str(set_ext_array, "set_ext_array", 3579382093u, 0, 13, NULL); +be_define_const_str(EVENT_DELETE, "EVENT_DELETE", 282828603u, 0, 12, &be_const_str_get_from_btn); +be_define_const_str(get_from_btn, "get_from_btn", 2802016263u, 0, 12, NULL); +be_define_const_str(ARC_PART_KNOB, "ARC_PART_KNOB", 1431875030u, 0, 13, &be_const_str_STYLE_OUTLINE_COLOR); +be_define_const_str(STYLE_OUTLINE_COLOR, "STYLE_OUTLINE_COLOR", 2723763111u, 0, 19, &be_const_str_set_critical_value); +be_define_const_str(set_critical_value, "set_critical_value", 1194587727u, 0, 18, &be_const_str_set_value_blend_mode); +be_define_const_str(set_value_blend_mode, "set_value_blend_mode", 86539269u, 0, 20, NULL); +be_define_const_str(get_protect, "get_protect", 4241180167u, 0, 11, &be_const_str_set_style_local_line_dash_width); +be_define_const_str(set_style_local_line_dash_width, "set_style_local_line_dash_width", 3177951154u, 0, 31, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_GESTURE_DIR_BOTTOM); +be_define_const_str(GESTURE_DIR_BOTTOM, "GESTURE_DIR_BOTTOM", 336208834u, 0, 18, &be_const_str_LAYOUT_ROW_MID); +be_define_const_str(LAYOUT_ROW_MID, "LAYOUT_ROW_MID", 932854697u, 0, 14, &be_const_str_RFSEND); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_SYMBOL_MINUS); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_add_style); +be_define_const_str(add_style, "add_style", 2931235026u, 0, 9, NULL); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(STYLE_SHADOW_SPREAD, "STYLE_SHADOW_SPREAD", 3685821355u, 0, 19, &be_const_str_set_cursor_hidden); +be_define_const_str(set_cursor_hidden, "set_cursor_hidden", 647911755u, 0, 17, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(ALIGN_OUT_TOP_MID, "ALIGN_OUT_TOP_MID", 1680148984u, 0, 17, &be_const_str_KEYBOARD_MODE_NUM); +be_define_const_str(KEYBOARD_MODE_NUM, "KEYBOARD_MODE_NUM", 2625982609u, 0, 17, &be_const_str_get_draw_rect_ext_pad_size); +be_define_const_str(get_draw_rect_ext_pad_size, "get_draw_rect_ext_pad_size", 3223809685u, 0, 26, NULL); +be_define_const_str(LABEL_LONG_EXPAND, "LABEL_LONG_EXPAND", 2357238585u, 0, 17, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, NULL); +be_define_const_str(set_value_line_space, "set_value_line_space", 355798025u, 0, 20, &be_const_str_set_y); +be_define_const_str(set_y, "set_y", 1866178391u, 0, 5, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_STYLE_BG_GRAD_COLOR); +be_define_const_str(STYLE_BG_GRAD_COLOR, "STYLE_BG_GRAD_COLOR", 444266945u, 0, 19, &be_const_str_STYLE_TRANSITION_TIME); +be_define_const_str(STYLE_TRANSITION_TIME, "STYLE_TRANSITION_TIME", 3058729752u, 0, 21, &be_const_str_TEXT_DECOR_UNDERLINE); +be_define_const_str(TEXT_DECOR_UNDERLINE, "TEXT_DECOR_UNDERLINE", 1425097719u, 0, 20, &be_const_str_get_fit_left); +be_define_const_str(get_fit_left, "get_fit_left", 2671576953u, 0, 12, NULL); +be_define_const_str(ALIGN_OUT_TOP_LEFT, "ALIGN_OUT_TOP_LEFT", 1073920927u, 0, 18, &be_const_str_EVENT_CANCEL); +be_define_const_str(EVENT_CANCEL, "EVENT_CANCEL", 3703374138u, 0, 12, &be_const_str_get_cursor_manage); +be_define_const_str(get_cursor_manage, "get_cursor_manage", 2216849296u, 0, 17, &be_const_str_set_bg_start_angle); +be_define_const_str(set_bg_start_angle, "set_bg_start_angle", 2285338772u, 0, 18, NULL); +be_define_const_str(set_options, "set_options", 2975436170u, 0, 11, &be_const_str_set_style_local_bg_opa); +be_define_const_str(set_style_local_bg_opa, "set_style_local_bg_opa", 1720245992u, 0, 22, &be_const_str_set_style_local_value_letter_space); +be_define_const_str(set_style_local_value_letter_space, "set_style_local_value_letter_space", 826246017u, 0, 34, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(BTN_STATE_CHECKED_DISABLED, "BTN_STATE_CHECKED_DISABLED", 1537172432u, 0, 26, &be_const_str_LABEL_ALIGN_RIGHT); +be_define_const_str(LABEL_ALIGN_RIGHT, "LABEL_ALIGN_RIGHT", 3127457722u, 0, 17, &be_const_str_set_content_size); +be_define_const_str(set_content_size, "set_content_size", 10638115u, 0, 16, NULL); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_set_text_blend_mode); +be_define_const_str(set_text_blend_mode, "set_text_blend_mode", 1236604715u, 0, 19, NULL); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_get_style_shadow_ofs_x); +be_define_const_str(get_style_shadow_ofs_x, "get_style_shadow_ofs_x", 2320381696u, 0, 22, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_set_pattern_repeat); +be_define_const_str(set_pattern_repeat, "set_pattern_repeat", 553014028u, 0, 18, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_is_protected); +be_define_const_str(is_protected, "is_protected", 1864002268u, 0, 12, NULL); +be_define_const_str(get_cell_type, "get_cell_type", 3348412009u, 0, 13, &be_const_str_set_scale_end_color); +be_define_const_str(set_scale_end_color, "set_scale_end_color", 355018320u, 0, 19, &be_const_str_set_style_local_border_blend_mode); +be_define_const_str(set_style_local_border_blend_mode, "set_style_local_border_blend_mode", 3453690930u, 0, 33, NULL); +be_define_const_str(init_draw_label_dsc, "init_draw_label_dsc", 3549659870u, 0, 19, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_TASMOTACLIENT_RST); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_STYLE_TRANSFORM_ANGLE); +be_define_const_str(STYLE_TRANSFORM_ANGLE, "STYLE_TRANSFORM_ANGLE", 411149629u, 0, 21, &be_const_str_TUYA_TX); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_set_line_width); +be_define_const_str(set_line_width, "set_line_width", 908110269u, 0, 14, NULL); +be_define_const_str(CHART_PART_BG, "CHART_PART_BG", 990069269u, 0, 13, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); +be_define_const_str(get_letter_on, "get_letter_on", 3272656192u, 0, 13, &be_const_str_set_rotation); +be_define_const_str(set_rotation, "set_rotation", 2130936338u, 0, 12, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_SHELLY_DIMMER_RST_INV); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_SYMBOL_PLUS); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, NULL); +be_define_const_str(OBJ_PART_REAL_FIRST, "OBJ_PART_REAL_FIRST", 819443818u, 0, 19, &be_const_str_set_style_local_image_recolor); +be_define_const_str(set_style_local_image_recolor, "set_style_local_image_recolor", 43538644u, 0, 29, NULL); +be_define_const_str(get_color_mode, "get_color_mode", 833403171u, 0, 14, NULL); +be_define_const_str(FS_RES_TOUT, "FS_RES_TOUT", 733368644u, 0, 11, &be_const_str_KEY_BACKSPACE); +be_define_const_str(KEY_BACKSPACE, "KEY_BACKSPACE", 269443424u, 0, 13, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_get_style_border_opa); +be_define_const_str(get_style_border_opa, "get_style_border_opa", 140307373u, 0, 20, NULL); +be_define_const_str(get_left_value, "get_left_value", 1136489099u, 0, 14, NULL); +be_define_const_str(get_parent_event, "get_parent_event", 102705295u, 0, 16, NULL); +be_define_const_str(CPICKER_PART_MAIN, "CPICKER_PART_MAIN", 4275135052u, 0, 17, &be_const_str_get_group); +be_define_const_str(get_group, "get_group", 1497401467u, 0, 9, NULL); +be_define_const_str(KEY_DOWN, "KEY_DOWN", 2353719865u, 0, 8, &be_const_str_PROTECT_EVENT_TO_DISABLED); +be_define_const_str(PROTECT_EVENT_TO_DISABLED, "PROTECT_EVENT_TO_DISABLED", 330306814u, 0, 25, NULL); +be_define_const_str(STYLE_SCALE_END_LINE_WIDTH, "STYLE_SCALE_END_LINE_WIDTH", 2154819175u, 0, 26, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, &be_const_str_set_style_local_outline_opa); +be_define_const_str(set_style_local_outline_opa, "set_style_local_outline_opa", 1280559349u, 0, 27, &be_const_str_start_edge_flash); +be_define_const_str(start_edge_flash, "start_edge_flash", 305008300u, 0, 16, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_STYLE_OUTLINE_WIDTH); +be_define_const_str(STYLE_OUTLINE_WIDTH, "STYLE_OUTLINE_WIDTH", 2786055068u, 0, 19, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_down); +be_define_const_str(down, "down", 1035581717u, 0, 4, &be_const_str_get_cell_align); +be_define_const_str(get_cell_align, "get_cell_align", 2284605658u, 0, 14, &be_const_str_remove_obj); +be_define_const_str(remove_obj, "remove_obj", 2093082931u, 0, 10, NULL); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_set_scrollable_fit2); +be_define_const_str(set_scrollable_fit2, "set_scrollable_fit2", 586952845u, 0, 19, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_set_style_local_border_post); +be_define_const_str(set_style_local_border_post, "set_style_local_border_post", 4148896231u, 0, 27, NULL); +be_define_const_str(set_style_local_bg_grad_color, "set_style_local_bg_grad_color", 3774593842u, 0, 29, NULL); +be_define_const_str(get_mirror, "get_mirror", 2155743435u, 0, 10, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_ARC_TYPE_NORMAL, - (const bstring *)&be_const_str_set_anim_time, - (const bstring *)&be_const_str_KEYBOARD_PART_BG, - (const bstring *)&be_const_str_lv_style, - (const bstring *)&be_const_str_LAYOUT_PRETTY_BOTTOM, - (const bstring *)&be_const_str_reset_style_list, - (const bstring *)&be_const_str_on, - NULL, - (const bstring *)&be_const_str_GESTURE_DIR_BOTTOM, - (const bstring *)&be_const_str_fade_in, - (const bstring *)&be_const_str_get_cell_merge_right, - NULL, - (const bstring *)&be_const_str_get_style_outline_pad, - (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str_tanh, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_LIST_PART_SCROLLBAR, - (const bstring *)&be_const_str_KEYBOARD_PART_BTN, - (const bstring *)&be_const_str_set_row_cnt, - (const bstring *)&be_const_str_FIT_TIGHT, - (const bstring *)&be_const_str_RED, + (const bstring *)&be_const_str_set_edge_flash, + (const bstring *)&be_const_str_SAIR_TX, + (const bstring *)&be_const_str_MIEL_HVAC_TX, + (const bstring *)&be_const_str_get_min_value, + (const bstring *)&be_const_str_draw_polygon, (const bstring *)&be_const_str_get_zoom, - (const bstring *)&be_const_str_add_btn_right, - (const bstring *)&be_const_str_align_x, - (const bstring *)&be_const_str_SSD1351_CS, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_BAR_TYPE_SYMMETRICAL, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_get_btn_text, - (const bstring *)&be_const_str_OLED_RESET, - (const bstring *)&be_const_str_SSPI, - (const bstring *)&be_const_str_DISP_SIZE_MEDIUM, - (const bstring *)&be_const_str_SM16716_DAT, - (const bstring *)&be_const_str_STYLE_MARGIN_TOP, - (const bstring *)&be_const_str_get_fit_right, + (const bstring *)&be_const_str_MAX7219DIN, + (const bstring *)&be_const_str_BORDER_SIDE_BOTTOM, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_clear, (const bstring *)&be_const_str_PURPLE, + (const bstring *)&be_const_str_DROPDOWN_DIR_LEFT, + NULL, + (const bstring *)&be_const_str_CPICKER_COLOR_MODE_HUE, + (const bstring *)&be_const_str_SYMBOL_RIGHT, + (const bstring *)&be_const_str_SM2135_CLK, + (const bstring *)&be_const_str_init_draw_line_dsc, + (const bstring *)&be_const_str_SCROLLBAR_MODE_UNHIDE, + (const bstring *)&be_const_str_ZIGBEE_RX, + (const bstring *)&be_const_str_TXT_FLAG_EXPAND, + (const bstring *)&be_const_str_STYLE_VALUE_LINE_SPACE, + (const bstring *)&be_const_str_STYLE_RADIUS, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_get_focus_cb, + (const bstring *)&be_const_str_get_text_sel_start, + (const bstring *)&be_const_str_FS_RES_LOCKED, + (const bstring *)&be_const_str_lv_textarea, + (const bstring *)&be_const_str_set_adjustable, + (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_SDM630_TX, + (const bstring *)&be_const_str_lv_btnmatrix, + (const bstring *)&be_const_str_BTN_STATE_RELEASED, + (const bstring *)&be_const_str_get_style_size, + (const bstring *)&be_const_str_get_style_text_line_space, + (const bstring *)&be_const_str_DISP_ROT_180, + (const bstring *)&be_const_str_classname, + (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_TOP, + (const bstring *)&be_const_str_get, + (const bstring *)&be_const_str_MAGENTA, + (const bstring *)&be_const_str_WEBCAM_PCLK, + (const bstring *)&be_const_str_get_style_image_recolor, + NULL, + (const bstring *)&be_const_str_item, + (const bstring *)&be_const_str_SLIDER_TYPE_NORMAL, NULL, NULL, - (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_BLACK, + (const bstring *)&be_const_str_NAVY, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_align_x, + (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, + (const bstring *)&be_const_str_set_border_side, + NULL, + (const bstring *)&be_const_str_LAYOUT_COLUMN_LEFT, + (const bstring *)&be_const_str_get_local_style, + (const bstring *)&be_const_str_WEBCAM_SIOC, + (const bstring *)&be_const_str_get_style_value_letter_space, + (const bstring *)&be_const_str_AQUA, + NULL, + (const bstring *)&be_const_str_set_style_local_text_font, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_set_anim_speed, + (const bstring *)&be_const_str_PN532_TXD, + (const bstring *)&be_const_str_STYLE_VALUE_BLEND_MODE, + (const bstring *)&be_const_str_abs, + (const bstring *)&be_const_str_set_scale_grad_color, + (const bstring *)&be_const_str_DISP_ROT_270, + (const bstring *)&be_const_str_get_style_transition_prop_4, + (const bstring *)&be_const_str_EVENT_SHORT_CLICKED, + (const bstring *)&be_const_str_EVENT_DEFOCUSED, + (const bstring *)&be_const_str_CALENDAR_PART_BG, + (const bstring *)&be_const_str_BORDER_SIDE_LEFT, + (const bstring *)&be_const_str_isinstance, + NULL, + (const bstring *)&be_const_str_CHECKBOX_PART_BG, + (const bstring *)&be_const_str_TABVIEW_TAB_POS_BOTTOM, + (const bstring *)&be_const_str_CHART_PART_SERIES, + (const bstring *)&be_const_str_get_day_of_week, + (const bstring *)&be_const_str_SYMBOL_BACKSPACE, + (const bstring *)&be_const_str_set_secondary_y_tick_length, + (const bstring *)&be_const_str_STYLE_MARGIN_RIGHT, + (const bstring *)&be_const_str_add_protect, + (const bstring *)&be_const_str_OPEN_DRAIN, + (const bstring *)&be_const_str_STYLE_SHADOW_COLOR, + (const bstring *)&be_const_str_P9813_CLK, + (const bstring *)&be_const_str_STYLE_SHADOW_OPA, + (const bstring *)&be_const_str_PWM1_INV, + (const bstring *)&be_const_str_KEYBOARD_MODE_TEXT_UPPER, + (const bstring *)&be_const_str_set_margin_top, + (const bstring *)&be_const_str_set_style_local_text_decor, + (const bstring *)&be_const_str_lv_line, + (const bstring *)&be_const_str_CHART_TYPE_LINE, + (const bstring *)&be_const_str_SYMBOL_UPLOAD, + (const bstring *)&be_const_str_CHART_CURSOR_LEFT, + (const bstring *)&be_const_str_KEY_END, + (const bstring *)&be_const_str_DRAG_DIR_VER, + (const bstring *)&be_const_str_SPI, + (const bstring *)&be_const_str_OPA_0, + (const bstring *)&be_const_str_STYLE_SCALE_END_BORDER_WIDTH, + (const bstring *)&be_const_str_LIST_PART_SCROLLBAR, + (const bstring *)&be_const_str_set_tab_name, + (const bstring *)&be_const_str_get_style_transition_time, + (const bstring *)&be_const_str_ALIGN_OUT_BOTTOM_RIGHT, + (const bstring *)&be_const_str_STYLE_LINE_BLEND_MODE, + (const bstring *)&be_const_str_update_mask, + (const bstring *)&be_const_str_BTNMATRIX_CTRL_HIDDEN, + (const bstring *)&be_const_str_ADE7953_IRQ, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_close, + (const bstring *)&be_const_str_ALIGN_OUT_BOTTOM_MID, + (const bstring *)&be_const_str_get_style_scale_end_border_width, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_TEXTAREA_CURSOR_LAST, + (const bstring *)&be_const_str_OPA_50, + NULL, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_SDM120_RX, + (const bstring *)&be_const_str_CALENDAR_PART_DAY_NAMES, + (const bstring *)&be_const_str_TCP_RX, + (const bstring *)&be_const_str_set_value_opa, + (const bstring *)&be_const_str_FS_RES_OUT_OF_MEM, + (const bstring *)&be_const_str_STYLE_PAD_LEFT, + NULL, + (const bstring *)&be_const_str_cursor_down, + NULL, + NULL, + (const bstring *)&be_const_str_SYMBOL_BATTERY_2, + (const bstring *)&be_const_str_CHART_AXIS_DRAW_LAST_TICK, + NULL, + NULL, + (const bstring *)&be_const_str_get_color, + (const bstring *)&be_const_str_BTNMATRIX_CTRL_DISABLED, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_LABEL_ALIGN_AUTO, + (const bstring *)&be_const_str_draw_line, + (const bstring *)&be_const_str_set_max_length, + (const bstring *)&be_const_str_ALIGN_IN_BOTTOM_RIGHT, + (const bstring *)&be_const_str_TEMPL_STYLE_X, + (const bstring *)&be_const_str_ARC_PART_BG, + (const bstring *)&be_const_str_get_height_margin, + (const bstring *)&be_const_str_IRSEND, + (const bstring *)&be_const_str_move_background, + (const bstring *)&be_const_str_TM1638DIO, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_GRAY, + (const bstring *)&be_const_str_add_text, + (const bstring *)&be_const_str_set_outline_width, + (const bstring *)&be_const_str_CHART_TYPE_COLUMN, + (const bstring *)&be_const_str_get_fit_top, + (const bstring *)&be_const_str_MAX7219CLK, + (const bstring *)&be_const_str_SPI_MISO, + (const bstring *)&be_const_str_ALIGN_OUT_LEFT_TOP, + (const bstring *)&be_const_str_ALIGN_IN_BOTTOM_MID, + (const bstring *)&be_const_str_LAYOUT_PRETTY_BOTTOM, + (const bstring *)&be_const_str_WEBCAM_XCLK, + (const bstring *)&be_const_str_get_offset_y, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_get_cell_value, + (const bstring *)&be_const_str_STYLE_VALUE_OFS_Y, + (const bstring *)&be_const_str_SILVER, + (const bstring *)&be_const_str_classof, + (const bstring *)&be_const_str_STYLE_TRANSITION_PROP_4, + (const bstring *)&be_const_str_EVENT_INSERT, + (const bstring *)&be_const_str_SOLAXX1_RX, + (const bstring *)&be_const_str___iterator__, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_pin_used, + (const bstring *)&be_const_str_LAYOUT_CENTER, + (const bstring *)&be_const_str_bytes, + NULL, + (const bstring *)&be_const_str_EVENT_REFRESH, + (const bstring *)&be_const_str_set_color, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_EVENT_LONG_PRESSED_REPEAT, + NULL, + (const bstring *)&be_const_str_set_style_local_transform_zoom, + (const bstring *)&be_const_str_STYLE_LINE_OPA, + (const bstring *)&be_const_str_EVENT_LEAVE, + (const bstring *)&be_const_str_align, + (const bstring *)&be_const_str_TUYA_RX, + (const bstring *)&be_const_str_get_color_mode_fixed, + (const bstring *)&be_const_str_SCROLLBAR_MODE_DRAG, + (const bstring *)&be_const_str_BOILER_OT_RX, + (const bstring *)&be_const_str_ALIGN_OUT_TOP_RIGHT, + (const bstring *)&be_const_str_LAYOUT_ROW_TOP, + NULL, + (const bstring *)&be_const_str_LED_PART_MAIN, + (const bstring *)&be_const_str_OPA_100, + (const bstring *)&be_const_str_FS_RES_UNKNOWN, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_TFMINIPLUS_RX, + (const bstring *)&be_const_str_STYLE_PAD_BOTTOM, + (const bstring *)&be_const_str_DROPDOWN_DIR_UP, + (const bstring *)&be_const_str_get_top, + (const bstring *)&be_const_str_set_style_local_value_blend_mode, + (const bstring *)&be_const_str_get_btn_text, + (const bstring *)&be_const_str_get_style_border_color, + NULL, + (const bstring *)&be_const_str_KEYBOARD_PART_BG, + (const bstring *)&be_const_str_I2C, + (const bstring *)&be_const_str_DROPDOWN_PART_SELECTED, + (const bstring *)&be_const_str_set_disabled, + NULL, (const bstring *)&be_const_str_FIT_MAX, NULL, NULL, - (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_GRAD_DIR_VER, - (const bstring *)&be_const_str_MIEL_HVAC_TX, - (const bstring *)&be_const_str_STYLE_VALUE_OFS_Y, - NULL, - (const bstring *)&be_const_str_EVENT_LONG_PRESSED_REPEAT, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_reverse, - (const bstring *)&be_const_str_get_needle_img_pivot_y, - (const bstring *)&be_const_str_set_base_dir, - (const bstring *)&be_const_str_get_style_transition_prop_2, - (const bstring *)&be_const_str_STYLE_SHADOW_BLEND_MODE, - (const bstring *)&be_const_str_report_style_mod, - (const bstring *)&be_const_str_A4988_MS1, - NULL, - (const bstring *)&be_const_str_SSPI_MOSI, - (const bstring *)&be_const_str_get_style_pattern_image, - (const bstring *)&be_const_str_EVENT_INSERT, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_PAGE_EDGE_TOP, - (const bstring *)&be_const_str_SYMBOL_POWER, - (const bstring *)&be_const_str_CHECKBOX_PART_BG, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_PROTECT_FOLLOW, - (const bstring *)&be_const_str_align_mid_y, - (const bstring *)&be_const_str_focus_btn, - (const bstring *)&be_const_str_BAR_TYPE_CUSTOM, - (const bstring *)&be_const_str_ALIGN_OUT_BOTTOM_MID, - (const bstring *)&be_const_str_get_base_dir, - (const bstring *)&be_const_str_STYLE_SCALE_WIDTH, - (const bstring *)&be_const_str_LABEL_ALIGN_LEFT, - NULL, - (const bstring *)&be_const_str_CHART_UPDATE_MODE_CIRCULAR, - (const bstring *)&be_const_str_ANIM_ON, - (const bstring *)&be_const_str_get_color, - NULL, - NULL, - (const bstring *)&be_const_str_set_col_cnt, - (const bstring *)&be_const_str_SYMBOL_REFRESH, - (const bstring *)&be_const_str_set_edge_flash, - (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_TEAL, - (const bstring *)&be_const_str_STYLE_BG_GRAD_STOP, - NULL, - NULL, - (const bstring *)&be_const_str_get_style_bg_grad_stop, - (const bstring *)&be_const_str_set_style_local_bg_grad_color, - (const bstring *)&be_const_str_STYLE_BG_GRAD_DIR, - (const bstring *)&be_const_str_set_today_date, - (const bstring *)&be_const_str_SYMBOL_EJECT, - (const bstring *)&be_const_str_CALENDAR_PART_DATE, - (const bstring *)&be_const_str_CPICKER_COLOR_MODE_HUE, - (const bstring *)&be_const_str_SSPI_DC, - (const bstring *)&be_const_str_get_style_line_width, - (const bstring *)&be_const_str_CSE7761_RX, - (const bstring *)&be_const_str_get_dir, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_get_style_margin_right, - (const bstring *)&be_const_str_set_style_local_bg_opa, - (const bstring *)&be_const_str_get_ext_attr, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_MAX7219DIN, - NULL, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_lv_win, - (const bstring *)&be_const_str_get_selected_str, - NULL, - (const bstring *)&be_const_str_tostring, - (const bstring *)&be_const_str_draw_line, - (const bstring *)&be_const_str_FS_RES_DENIED, - (const bstring *)&be_const_str_SLIDER_TYPE_SYMMETRICAL, - NULL, - (const bstring *)&be_const_str_EVENT_DEFOCUSED, - (const bstring *)&be_const_str_FIT_NONE, - (const bstring *)&be_const_str_set_spin_time, - NULL, - (const bstring *)&be_const_str_GPS_TX, - NULL, - (const bstring *)&be_const_str_get_child_back, - (const bstring *)&be_const_str_CC1101_GDO2, - NULL, - (const bstring *)&be_const_str_MP3_DFR562, - NULL, - NULL, - (const bstring *)&be_const_str_get_title, - (const bstring *)&be_const_str_SYMBOL_LEFT, - (const bstring *)&be_const_str_set_options, - (const bstring *)&be_const_str_get_tab, - NULL, - (const bstring *)&be_const_str_finish_transitions, - (const bstring *)&be_const_str_int, - NULL, - NULL, - (const bstring *)&be_const_str_SYMBOL_UP, - NULL, - (const bstring *)&be_const_str_OPA_COVER, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_DISP_SIZE_SMALL, - NULL, - NULL, - (const bstring *)&be_const_str_I2C_SDA, - (const bstring *)&be_const_str_DRAG_DIR_VER, - (const bstring *)&be_const_str_BACKLIGHT, - (const bstring *)&be_const_str_set_style_local_scale_width, - (const bstring *)&be_const_str_CHART_CURSOR_LEFT, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_CHART_AXIS_PRIMARY_Y, - (const bstring *)&be_const_str_set_top, + (const bstring *)&be_const_str_DROPDOWN_PART_LIST, (const bstring *)&be_const_str_get_style_scale_end_color, - (const bstring *)&be_const_str_set_bg_grad_stop, - (const bstring *)&be_const_str_BLACK, - (const bstring *)&be_const_str_DROPDOWN_DIR_DOWN, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_get_drag, - (const bstring *)&be_const_str_get_adv_hittest, - (const bstring *)&be_const_str_WEBCAM_HSD, - (const bstring *)&be_const_str_ALIGN_OUT_LEFT_BOTTOM, - (const bstring *)&be_const_str_get_style_text_sel_bg_color, - (const bstring *)&be_const_str_set_checked, - (const bstring *)&be_const_str_get_antialias, - (const bstring *)&be_const_str_def_event_cb, - (const bstring *)&be_const_str_set_refocus_policy, - (const bstring *)&be_const_str_PULLUP, - (const bstring *)&be_const_str_ALIGN_OUT_TOP_RIGHT, + (const bstring *)&be_const_str_deg, NULL, - NULL, - NULL, - (const bstring *)&be_const_str_close_event_cb, - (const bstring *)&be_const_str_lv_led, - (const bstring *)&be_const_str_set_margin_bottom, - (const bstring *)&be_const_str_set_chg_rate, - (const bstring *)&be_const_str_LABEL_ALIGN_RIGHT, - (const bstring *)&be_const_str_get_style_shadow_width, - (const bstring *)&be_const_str_FS_RES_OK, - (const bstring *)&be_const_str_HIGH, - (const bstring *)&be_const_str_CHART_UPDATE_MODE_SHIFT, - (const bstring *)&be_const_str_OPA_70, - NULL, - (const bstring *)&be_const_str_SPINNER_TYPE_SPINNING_ARC, - (const bstring *)&be_const_str_OBJ_PART_MAIN, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_STYLE_TEXT_DECOR, - (const bstring *)&be_const_str_get_active_btn, - (const bstring *)&be_const_str_get_style_pad_right, - (const bstring *)&be_const_str_get_pwd_show_time, - (const bstring *)&be_const_str_clear_series, - (const bstring *)&be_const_str_CHART_TYPE_NONE, - (const bstring *)&be_const_str_reset, - (const bstring *)&be_const_str_VSPI, - (const bstring *)&be_const_str_clean, - (const bstring *)&be_const_str_GRAD_DIR_HOR, - (const bstring *)&be_const_str_set_height_margin, - NULL, - (const bstring *)&be_const_str_get_nearest_index_from_coord, - (const bstring *)&be_const_str_BS814_DAT, - NULL, - (const bstring *)&be_const_str_set_one_line, - (const bstring *)&be_const_str_EVENT_DRAG_END, - (const bstring *)&be_const_str_DISP_ROT_270, - (const bstring *)&be_const_str_get_file_name, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_invalidate_area, - (const bstring *)&be_const_str_count_children_recursive, - (const bstring *)&be_const_str_FS_RES_OUT_OF_MEM, - (const bstring *)&be_const_str_TFMINIPLUS_TX, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_SYMBOL_BACKSPACE, - (const bstring *)&be_const_str_WEBCAM_HREF, - (const bstring *)&be_const_str_STYLE_SHADOW_OFS_X, - (const bstring *)&be_const_str_LABEL_LONG_DOT, - (const bstring *)&be_const_str_get_style_pad_bottom, - (const bstring *)&be_const_str_CHART_PART_CURSOR, - (const bstring *)&be_const_str_ROT1A_NP, - (const bstring *)&be_const_str_SPI_MOSI, - (const bstring *)&be_const_str_PROTECT_NONE, - (const bstring *)&be_const_str_FTC532, - (const bstring *)&be_const_str_TUYA_TX, - (const bstring *)&be_const_str_get_style_bg_opa, - (const bstring *)&be_const_str_set_size, - NULL, - (const bstring *)&be_const_str_set_pad_bottom, - NULL, - (const bstring *)&be_const_str_MHZ_RXD, - (const bstring *)&be_const_str_find, - (const bstring *)&be_const_str_byte, - (const bstring *)&be_const_str_CNTR1_NP, - NULL, - (const bstring *)&be_const_str_get_btns_pos, - (const bstring *)&be_const_str_get_text, - (const bstring *)&be_const_str_LAYOUT_PRETTY_TOP, - (const bstring *)&be_const_str_BTNMATRIX_CTRL_CHECKABLE, - (const bstring *)&be_const_str_CPICKER_TYPE_RECT, - (const bstring *)&be_const_str_ARC_PART_INDIC, - (const bstring *)&be_const_str_decrement, - (const bstring *)&be_const_str_draw_img, - (const bstring *)&be_const_str_lv_table, - (const bstring *)&be_const_str_OPA_100, - (const bstring *)&be_const_str_SCROLLBAR_MODE_HIDE, - (const bstring *)&be_const_str_SDM72_TX, - (const bstring *)&be_const_str_ALIGN_IN_TOP_LEFT, - (const bstring *)&be_const_str_SPI, - (const bstring *)&be_const_str_CHART_CURSOR_UP, - (const bstring *)&be_const_str_MAX31855CLK, - (const bstring *)&be_const_str_SOLAXX1_TX, - (const bstring *)&be_const_str_tolower, - NULL, - (const bstring *)&be_const_str_BLUE, - (const bstring *)&be_const_str_draw_polygon, - (const bstring *)&be_const_str_DROPDOWN_DIR_RIGHT, - (const bstring *)&be_const_str_STATE_DEFAULT, - (const bstring *)&be_const_str_IBEACON_TX, - NULL, - (const bstring *)&be_const_str_DRAG_DIR_HOR, - (const bstring *)&be_const_str_calldepth, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - (const bstring *)&be_const_str_SCROLLBAR_MODE_DRAG, - (const bstring *)&be_const_str_ALIGN_IN_LEFT_MID, - (const bstring *)&be_const_str_set_hue, - (const bstring *)&be_const_str_LABEL_ALIGN_AUTO, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_FS_MODE_RD, - (const bstring *)&be_const_str_STYLE_VALUE_OFS_X, - (const bstring *)&be_const_str_ALIGN_IN_TOP_RIGHT, - (const bstring *)&be_const_str_CPICKER_PART_MAIN, - (const bstring *)&be_const_str_CHART_PART_BG, - (const bstring *)&be_const_str_ARC_PART_KNOB, - (const bstring *)&be_const_str_get_style_image_recolor_opa, - NULL, - (const bstring *)&be_const_str_get_style_transition_prop_1, - (const bstring *)&be_const_str_ALIGN_OUT_LEFT_MID, - (const bstring *)&be_const_str_MHZ_TXD, - (const bstring *)&be_const_str_get_user_data, - (const bstring *)&be_const_str_set_mirror, - (const bstring *)&be_const_str_set_text_static, - NULL, - (const bstring *)&be_const_str_CPICKER_COLOR_MODE_VALUE, - (const bstring *)&be_const_str_STYLE_BORDER_SIDE, - (const bstring *)&be_const_str_BORDER_SIDE_NONE, - (const bstring *)&be_const_str_TXT_FLAG_RECOLOR, - (const bstring *)&be_const_str_is_protected, - (const bstring *)&be_const_str_DISP_ROT_180, - (const bstring *)&be_const_str_INPUT_PULLUP, - NULL, - (const bstring *)&be_const_str_PN532_RXD, - (const bstring *)&be_const_str_ZEROCROSS, - (const bstring *)&be_const_str_get_width, - (const bstring *)&be_const_str_FIT_PARENT, - (const bstring *)&be_const_str_compile, - (const bstring *)&be_const_str_get_focus_parent, - (const bstring *)&be_const_str_set_line_dash_gap, - (const bstring *)&be_const_str_EVENT_RELEASED, - (const bstring *)&be_const_str_KEY_BACKSPACE, - (const bstring *)&be_const_str_PROTECT_POS, - (const bstring *)&be_const_str_TASMOTACLIENT_TXD, - (const bstring *)&be_const_str_concat, - (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, - (const bstring *)&be_const_str_CPICKER_PART_KNOB, - (const bstring *)&be_const_str_HPMA_TX, - (const bstring *)&be_const_str_FS_RES_FS_ERR, - (const bstring *)&be_const_str_WEBCAM_VSYNC, - (const bstring *)&be_const_str_get_style_outline_opa, - (const bstring *)&be_const_str_SPI_MISO, - (const bstring *)&be_const_str_CHART_PART_SERIES, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_get_scrl_width, - (const bstring *)&be_const_str_set_bright, - (const bstring *)&be_const_str_resize, - (const bstring *)&be_const_str_SSPI_MAX31865_CS1, - NULL, - (const bstring *)&be_const_str_SPI_CLK, - NULL, - (const bstring *)&be_const_str_cursor_right, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_OBJ_PART_REAL_FIRST, - (const bstring *)&be_const_str_CHECKBOX_PART_BULLET, - (const bstring *)&be_const_str_get_px, - (const bstring *)&be_const_str_set_points, - (const bstring *)&be_const_str_set_outline_blend_mode, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_MAX7219CLK, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_set_text_sel, - (const bstring *)&be_const_str_lv_font, - (const bstring *)&be_const_str_hex, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_get_style_text_sel_color, - NULL, - (const bstring *)&be_const_str_get_symbol, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_WS2812, - (const bstring *)&be_const_str_set_style_local_outline_opa, - (const bstring *)&be_const_str_DDS2382_TX, - NULL, - (const bstring *)&be_const_str_IEM3000_RX, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_digital_read, - (const bstring *)&be_const_str_SDM72_RX, - (const bstring *)&be_const_str_set_y_tick_texts, - (const bstring *)&be_const_str_assert, - (const bstring *)&be_const_str_DROPDOWN_PART_SELECTED, - (const bstring *)&be_const_str_HSPI, - (const bstring *)&be_const_str_set_bg_grad_dir, - (const bstring *)&be_const_str_CHART_CURSOR_DOWN, - (const bstring *)&be_const_str_get_scrl_fit_top, - (const bstring *)&be_const_str_MCP39F5_TX, - (const bstring *)&be_const_str_SYMBOL_MINUS, - (const bstring *)&be_const_str_add_btn_left, - (const bstring *)&be_const_str_set_line_color, - (const bstring *)&be_const_str_STYLE_LINE_DASH_GAP, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_DROPDOWN_PART_SCROLLBAR, - (const bstring *)&be_const_str_KEY1_NP, - NULL, - (const bstring *)&be_const_str_get_row_cnt, - (const bstring *)&be_const_str_MAX31855CS, - NULL, - (const bstring *)&be_const_str_BORDER_SIDE_BOTTOM, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_set_padding_left, - (const bstring *)&be_const_str_add_text, - NULL, - (const bstring *)&be_const_str_set_ext_click_area, - NULL, - NULL, - (const bstring *)&be_const_str_set_style_local_value_line_space, - (const bstring *)&be_const_str_set_px, - (const bstring *)&be_const_str_SSD1331_DC, - (const bstring *)&be_const_str_WEBCAM_SIOD, - (const bstring *)&be_const_str_get_parent_event, - (const bstring *)&be_const_str_STYLE_BG_COLOR, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_OPA_60, - (const bstring *)&be_const_str_KEY_ENTER, - (const bstring *)&be_const_str_KEY_DEL, - (const bstring *)&be_const_str_BORDER_SIDE_FULL, - (const bstring *)&be_const_str_I2C_SCL, - (const bstring *)&be_const_str_STYLE_BORDER_BLEND_MODE, - (const bstring *)&be_const_str_BLEND_MODE_NORMAL, - (const bstring *)&be_const_str_SYMBOL_UPLOAD, - (const bstring *)&be_const_str_PN532_TXD, - (const bstring *)&be_const_str_collect, + (const bstring *)&be_const_str_STYLE_OUTLINE_BLEND_MODE, (const bstring *)&be_const_str_STYLE_TEXT_COLOR, - (const bstring *)&be_const_str_ALIGN_IN_BOTTOM_RIGHT, - (const bstring *)&be_const_str_SYMBOL_DUMMY, - (const bstring *)&be_const_str_ZIGBEE_RST, - (const bstring *)&be_const_str_lv_msgbox, - (const bstring *)&be_const_str_SCROLLBAR_MODE_ON, - (const bstring *)&be_const_str_EVENT_CANCEL, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_KEY_END, - (const bstring *)&be_const_str_AQUA, - (const bstring *)&be_const_str_WEBCAM_PSRCS, - (const bstring *)&be_const_str_BTNMATRIX_CTRL_DISABLED, - (const bstring *)&be_const_str_STYLE_TRANSITION_TIME, - (const bstring *)&be_const_str_DISP_ROT_90, - (const bstring *)&be_const_str_DROPDOWN_DIR_LEFT, - NULL, - NULL, - (const bstring *)&be_const_str_get_height, - (const bstring *)&be_const_str_setitem, - NULL, - (const bstring *)&be_const_str_set_bg_angles, - (const bstring *)&be_const_str_get_max_length, - (const bstring *)&be_const_str_break, - (const bstring *)&be_const_str_set_style_local_outline_width, - (const bstring *)&be_const_str_SPINNER_TYPE_FILLSPIN_ARC, - (const bstring *)&be_const_str_get_cursor_blink_time, - (const bstring *)&be_const_str_get_style_transition_prop_4, - (const bstring *)&be_const_str_DISP_SIZE_LARGE, - (const bstring *)&be_const_str_add_style, - (const bstring *)&be_const_str_set_style_local_image_recolor_opa, - (const bstring *)&be_const_str_OPA_0, - (const bstring *)&be_const_str_PAGE_EDGE_RIGHT, - (const bstring *)&be_const_str_STYLE_PAD_TOP, - (const bstring *)&be_const_str_get_style_transition_time, - (const bstring *)&be_const_str_asstring, - (const bstring *)&be_const_str_ALIGN_OUT_TOP_LEFT, - (const bstring *)&be_const_str_lv_switch, - (const bstring *)&be_const_str_init_points, - (const bstring *)&be_const_str_SYMBOL_STOP, - (const bstring *)&be_const_str_KEYBOARD_MODE_NUM, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_align_mid, - (const bstring *)&be_const_str_STYLE_TRANSITION_PATH, - (const bstring *)&be_const_str_EVENT_KEY, - (const bstring *)&be_const_str_ARC_TYPE_SYMMETRIC, - (const bstring *)&be_const_str_get_drag_throw, - NULL, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_STYLE_SHADOW_OFS_Y, - NULL, - (const bstring *)&be_const_str_PWM1_INV, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_SSD1331_CS, - (const bstring *)&be_const_str_CHART_PART_SERIES_BG, - (const bstring *)&be_const_str_EVENT_SHORT_CLICKED, - NULL, - (const bstring *)&be_const_str_STYLE_TEXT_BLEND_MODE, - (const bstring *)&be_const_str_CHART_AXIS_DRAW_LAST_TICK, - (const bstring *)&be_const_str_set_src, - (const bstring *)&be_const_str_BORDER_SIDE_INTERNAL, - (const bstring *)&be_const_str_ANIM_OFF, - (const bstring *)&be_const_str_NAVY, - (const bstring *)&be_const_str_OBJ_PART_ALL, - (const bstring *)&be_const_str_HRE_DATA, - NULL, - (const bstring *)&be_const_str_get_active_btn_text, - NULL, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_STYLE_SHADOW_OPA, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_PZEM0XX_TX, - (const bstring *)&be_const_str_INPUT, - (const bstring *)&be_const_str_OPTION_A, - (const bstring *)&be_const_str_get_btnmatrix, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_STYLE_PAD_RIGHT, - NULL, - (const bstring *)&be_const_str_set_highlighted_dates, - (const bstring *)&be_const_str_set_offset_x, - NULL, - (const bstring *)&be_const_str_GRAD_DIR_NONE, - NULL, - (const bstring *)&be_const_str_ROT1B_NP, - (const bstring *)&be_const_str_STYLE_RADIUS, - (const bstring *)&be_const_str_STYLE_PAD_BOTTOM, - NULL, - (const bstring *)&be_const_str_set_user_data, - NULL, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_SYMBOL_DIRECTORY, - (const bstring *)&be_const_str_TM1638CLK, - NULL, - (const bstring *)&be_const_str_STYLE_TEXT_LETTER_SPACE, - (const bstring *)&be_const_str_init_draw_img_dsc, - (const bstring *)&be_const_str_BTN_STATE_DISABLED, - (const bstring *)&be_const_str_get_bg_angle_end, - (const bstring *)&be_const_str_set_style_local_margin_top, - (const bstring *)&be_const_str_set_dir, - (const bstring *)&be_const_str_ST7789_CS, - NULL, - (const bstring *)&be_const_str_ADC_PH, - NULL, - (const bstring *)&be_const_str_set_border_color, - (const bstring *)&be_const_str_TABVIEW_TAB_POS_RIGHT, - (const bstring *)&be_const_str_CYAN, - (const bstring *)&be_const_str_set_secondary_y_tick_length, - (const bstring *)&be_const_str_SYMBOL_DOWN, - (const bstring *)&be_const_str_LAYOUT_COLUMN_RIGHT, - (const bstring *)&be_const_str_get_coords, - (const bstring *)&be_const_str_STYLE_BORDER_COLOR, - (const bstring *)&be_const_str_SYMBOL_LOOP, - (const bstring *)&be_const_str_LABEL_ALIGN_CENTER, - (const bstring *)&be_const_str_KEY_HOME, - NULL, - (const bstring *)&be_const_str_rand, - (const bstring *)&be_const_str_SSPI_MISO, - (const bstring *)&be_const_str_TEXT_DECOR_STRIKETHROUGH, + (const bstring *)&be_const_str_ARC_PART_INDIC, (const bstring *)&be_const_str_FS_RES_BUSY, - (const bstring *)&be_const_str_GAUGE_PART_MAJOR, - (const bstring *)&be_const_str_LAYOUT_COLUMN_MID, - (const bstring *)&be_const_str_DISP_ROT_NONE, - (const bstring *)&be_const_str_get_fit_bottom, - (const bstring *)&be_const_str_STYLE_BG_BLEND_MODE, - (const bstring *)&be_const_str_EVENT_LEAVE, - (const bstring *)&be_const_str_set_type, - (const bstring *)&be_const_str_get_local_style, - (const bstring *)&be_const_str_FS_RES_LOCKED, - (const bstring *)&be_const_str_CPICKER_TYPE_DISC, - (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_TOP, - (const bstring *)&be_const_str_clear_selection, - (const bstring *)&be_const_str_STYLE_PATTERN_OPA, - NULL, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_ARC_TYPE_REVERSE, - (const bstring *)&be_const_str_STYLE_VALUE_LINE_SPACE, - (const bstring *)&be_const_str_OPA_50, - (const bstring *)&be_const_str_LAYOUT_ROW_BOTTOM, - (const bstring *)&be_const_str_OPA_30, - (const bstring *)&be_const_str_set_image_opa, - (const bstring *)&be_const_str_OPA_90, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_FS_RES_HW_ERR, - (const bstring *)&be_const_str_get_style_value_opa, - (const bstring *)&be_const_str_get_one_check, - NULL, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_FS_MODE_WR, - (const bstring *)&be_const_str_set_cursor_point, - (const bstring *)&be_const_str_del_anim_ready_cb, - (const bstring *)&be_const_str_EVENT_LONG_PRESSED, - (const bstring *)&be_const_str_SYMBOL_GPS, - NULL, - NULL, - (const bstring *)&be_const_str_set_adjustable, - NULL, - (const bstring *)&be_const_str_BTNMATRIX_CTRL_HIDDEN, - (const bstring *)&be_const_str_align, - (const bstring *)&be_const_str_TM1638STB, - (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, - (const bstring *)&be_const_str_get_tile_act, - NULL, - NULL, - (const bstring *)&be_const_str_BTNMATRIX_CTRL_CLICK_TRIG, - (const bstring *)&be_const_str_clear_btn_ctrl, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_scroll_hor, - (const bstring *)&be_const_str_LED1_INV, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_CALENDAR_PART_BG, - (const bstring *)&be_const_str_GESTURE_DIR_TOP, - (const bstring *)&be_const_str_RFRECV, - NULL, - NULL, - (const bstring *)&be_const_str_ALIGN_OUT_BOTTOM_RIGHT, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, - (const bstring *)&be_const_str_SYMBOL_PLAY, - (const bstring *)&be_const_str_get_left_value, - (const bstring *)&be_const_str_KEY_LEFT, - (const bstring *)&be_const_str_CC1101_GDO0, - NULL, - (const bstring *)&be_const_str_ST7789_DC, - (const bstring *)&be_const_str_HLW_CF, - (const bstring *)&be_const_str_ALIGN_IN_BOTTOM_MID, - NULL, - (const bstring *)&be_const_str_BLEND_MODE_SUBTRACTIVE, - (const bstring *)&be_const_str_EVENT_VALUE_CHANGED, - (const bstring *)&be_const_str_EVENT_GESTURE, - (const bstring *)&be_const_str_OPA_80, - (const bstring *)&be_const_str_SCROLLBAR_MODE_OFF, - (const bstring *)&be_const_str_BTNMATRIX_CTRL_NO_REPEAT, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_FS_RES_FULL, - (const bstring *)&be_const_str_CHART_AXIS_SECONDARY_Y, - (const bstring *)&be_const_str_get_col_width, - (const bstring *)&be_const_str_OUTPUT_HI, - (const bstring *)&be_const_str_set_text_letter_space, - NULL, - (const bstring *)&be_const_str_get_y, - (const bstring *)&be_const_str_hittest, - (const bstring *)&be_const_str_lv_objmask, - (const bstring *)&be_const_str_get_col_cnt, - (const bstring *)&be_const_str_SPINNER_TYPE_CONSTANT_ARC, - (const bstring *)&be_const_str_set_y_tick_length, - (const bstring *)&be_const_str_STYLE_CLIP_CORNER, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_LAYOUT_OFF, - NULL, - (const bstring *)&be_const_str_set_transform_width, - (const bstring *)&be_const_str_FS_RES_TOUT, - (const bstring *)&be_const_str_WE517_TX, - NULL, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_OPA_TRANSP, - (const bstring *)&be_const_str_FS_RES_INV_PARAM, - (const bstring *)&be_const_str_get_style_transform_height, - (const bstring *)&be_const_str_TEXT_DECOR_NONE, - (const bstring *)&be_const_str_GESTURE_DIR_LEFT, - (const bstring *)&be_const_str_set_style_local_value_blend_mode, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_TCP_RX, - (const bstring *)&be_const_str_KEY_NEXT, + (const bstring *)&be_const_str_AS3935, + (const bstring *)&be_const_str_MP3_DFR562, + (const bstring *)&be_const_str_set_style_local_shadow_opa, + (const bstring *)&be_const_str_FS_RES_FS_ERR, + (const bstring *)&be_const_str_HPMA_RX, NULL, + (const bstring *)&be_const_str_CPICKER_PART_KNOB, + (const bstring *)&be_const_str_set_row_cnt, NULL, + (const bstring *)&be_const_str_set_text_sel_end, + (const bstring *)&be_const_str_get_auto_realign, (const bstring *)&be_const_str_EVENT_DRAG_THROW_BEGIN, - (const bstring *)&be_const_str_do, - (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, - (const bstring *)&be_const_str_ZIGBEE_RX, - (const bstring *)&be_const_str_BTN_STATE_CHECKED_RELEASED, - (const bstring *)&be_const_str_ZIGBEE_TX, - (const bstring *)&be_const_str_raise, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_SLIDER_TYPE_NORMAL, - (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_BOTTOM, - (const bstring *)&be_const_str_SYMBOL_NEXT, - (const bstring *)&be_const_str_ALIGN_IN_BOTTOM_LEFT, - (const bstring *)&be_const_str_ALIGN_OUT_LEFT_TOP, - (const bstring *)&be_const_str_KEYBOARD_MODE_TEXT_LOWER, - (const bstring *)&be_const_str_get_height_fit, - (const bstring *)&be_const_str_add, - (const bstring *)&be_const_str_CALENDAR_PART_DAY_NAMES, - (const bstring *)&be_const_str_SILVER, - (const bstring *)&be_const_str_set_cell_type, + (const bstring *)&be_const_str_ROLLER_MODE_INFINITE, NULL, - (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_MID, + (const bstring *)&be_const_str_LINEMETER_PART_MAIN, + (const bstring *)&be_const_str_SPINNER_TYPE_SPINNING_ARC, + (const bstring *)&be_const_str_area_is_visible, + (const bstring *)&be_const_str_get_dir, + (const bstring *)&be_const_str_CHART_AXIS_SKIP_LAST_TICK, + (const bstring *)&be_const_str_STYLE_VALUE_OPA, + (const bstring *)&be_const_str_get_show_selected, + (const bstring *)&be_const_str_STYLE_SCALE_WIDTH, + (const bstring *)&be_const_str_SDM72_TX, NULL, - (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_isinstance, - (const bstring *)&be_const_str_BORDER_SIDE_LEFT, - (const bstring *)&be_const_str_set_style_local_border_blend_mode, - (const bstring *)&be_const_str_LAYOUT_CENTER, - (const bstring *)&be_const_str_TABVIEW_TAB_POS_BOTTOM, - (const bstring *)&be_const_str_SYMBOL_NEW_LINE, - (const bstring *)&be_const_str_TABVIEW_TAB_POS_TOP, - (const bstring *)&be_const_str_KEY_DOWN, NULL, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_BORDER_SIDE_RIGHT, - (const bstring *)&be_const_str_BLEND_MODE_ADDITIVE, - (const bstring *)&be_const_str_clear_state, - (const bstring *)&be_const_str_STYLE_TRANSITION_PROP_2, - (const bstring *)&be_const_str_DISP_SIZE_EXTRA_LARGE, - (const bstring *)&be_const_str_STYLE_BG_GRAD_COLOR, - (const bstring *)&be_const_str_EVENT_DRAG_BEGIN, - (const bstring *)&be_const_str_WEBCAM_XCLK, - (const bstring *)&be_const_str_draw_scale, - (const bstring *)&be_const_str_set_anim_speed, + (const bstring *)&be_const_str_fill_bg, + (const bstring *)&be_const_str_LABEL_LONG_DOT, + (const bstring *)&be_const_str_SYMBOL_MUTE, + (const bstring *)&be_const_str_OPA_70, + (const bstring *)&be_const_str_set_show_selected, + NULL, + (const bstring *)&be_const_str_LIME, + (const bstring *)&be_const_str_BORDER_SIDE_INTERNAL, + (const bstring *)&be_const_str_get_needle_count, + (const bstring *)&be_const_str_set_pwd_show_time, + (const bstring *)&be_const_str_OPA_TRANSP, + (const bstring *)&be_const_str_GREEN, + (const bstring *)&be_const_str_focus_next, + (const bstring *)&be_const_str_DISP_ROT_90, (const bstring *)&be_const_str_ROT1A, (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_increment, + (const bstring *)&be_const_str_RA8876_CS, + (const bstring *)&be_const_str_clear_state, NULL, - (const bstring *)&be_const_str_get_style_opa_scale, - (const bstring *)&be_const_str_CHART_AXIS_SKIP_LAST_TICK, - (const bstring *)&be_const_str_BORDER_SIDE_TOP, - (const bstring *)&be_const_str_get_style_pattern_repeat, - (const bstring *)&be_const_str_TASMOTACLIENT_RST, + (const bstring *)&be_const_str_ARC_TYPE_SYMMETRIC, + (const bstring *)&be_const_str_IBEACON_TX, + (const bstring *)&be_const_str_LAYOUT_GRID, + (const bstring *)&be_const_str_SYMBOL_SAVE, + (const bstring *)&be_const_str_set_tab_act, + (const bstring *)&be_const_str_DDS2382_TX, NULL, - (const bstring *)&be_const_str_cut_text, - (const bstring *)&be_const_str_HPMA_RX, - (const bstring *)&be_const_str_focus_next, - (const bstring *)&be_const_str_BTN_STATE_PRESSED, - (const bstring *)&be_const_str_OBJ_PART_VIRTUAL_FIRST, - (const bstring *)&be_const_str_set_disabled, - (const bstring *)&be_const_str_TXT_FLAG_EXPAND, - (const bstring *)&be_const_str_set_hidden, - (const bstring *)&be_const_str_STYLE_IMAGE_OPA, + (const bstring *)&be_const_str_WINDMETER_SPEED, + (const bstring *)&be_const_str_KEY_ENTER, + (const bstring *)&be_const_str_BAR_TYPE_CUSTOM, + (const bstring *)&be_const_str_STYLE_VALUE_COLOR, + (const bstring *)&be_const_str_OPA_20, NULL, NULL, - (const bstring *)&be_const_str_rad, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_LED_PART_MAIN, - (const bstring *)&be_const_str_CPICKER_COLOR_MODE_SATURATION, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_add_btn, - (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_get_style_border_opa, - (const bstring *)&be_const_str_get_style_outline_color, - (const bstring *)&be_const_str_cursor_left, - (const bstring *)&be_const_str_DSB, - (const bstring *)&be_const_str_REL1, - (const bstring *)&be_const_str_BTN_STATE_CHECKED_DISABLED, NULL, - (const bstring *)&be_const_str_ALIGN_OUT_TOP_MID, + (const bstring *)&be_const_str_NRG_CF1, + (const bstring *)&be_const_str_draw_text, + (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, + (const bstring *)&be_const_str_get_saturation, + NULL, + (const bstring *)&be_const_str_ARIRFRCV, + (const bstring *)&be_const_str_SYMBOL_EJECT, + (const bstring *)&be_const_str_dump, + (const bstring *)&be_const_str_get_cursor_hidden, + (const bstring *)&be_const_str_SYMBOL_LEFT, + (const bstring *)&be_const_str_OLIVE, + (const bstring *)&be_const_str_get_style_image_recolor_opa, + (const bstring *)&be_const_str_set_parent, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_CNTR1_NP, (const bstring *)&be_const_str_get_btn_label, - (const bstring *)&be_const_str_OBJMASK_PART_MAIN, + (const bstring *)&be_const_str_GAUGE_PART_MAJOR, + (const bstring *)&be_const_str_get_coords, + NULL, + (const bstring *)&be_const_str_TABVIEW_TAB_POS_LEFT, + (const bstring *)&be_const_str_EVENT_RELEASED, + (const bstring *)&be_const_str_get_text, + (const bstring *)&be_const_str_PULLUP, + (const bstring *)&be_const_str_set_transition_prop_2, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_FS_MODE_WR, + (const bstring *)&be_const_str_STYLE_TRANSITION_DELAY, + (const bstring *)&be_const_str_ILI9488_CS, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + (const bstring *)&be_const_str_set_style_local_transition_time, + (const bstring *)&be_const_str_BAR_TYPE_NORMAL, + (const bstring *)&be_const_str_MHZ_TXD, + (const bstring *)&be_const_str_FS_RES_INV_PARAM, + NULL, + (const bstring *)&be_const_str_ANIM_ON, + (const bstring *)&be_const_str_BACKLIGHT, + (const bstring *)&be_const_str_BTNMATRIX_CTRL_CHECK_STATE, + (const bstring *)&be_const_str_TASMOTACLIENT_RST_INV, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_get_width_fit, + (const bstring *)&be_const_str_ALIGN_IN_TOP_MID, + (const bstring *)&be_const_str_get_click, + (const bstring *)&be_const_str_get_width, + (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_BLUE, + (const bstring *)&be_const_str_attrdump, + (const bstring *)&be_const_str_STYLE_BG_GRAD_STOP, + (const bstring *)&be_const_str_DRAG_DIR_BOTH, + (const bstring *)&be_const_str_SPI_CLK, + (const bstring *)&be_const_str_get_anim_time, + (const bstring *)&be_const_str_get_style_transform_height, + NULL, + (const bstring *)&be_const_str_is_dragged, + NULL, + (const bstring *)&be_const_str_SPINNER_TYPE_FILLSPIN_ARC, + (const bstring *)&be_const_str_PROTECT_CHILD_CHG, + (const bstring *)&be_const_str_REL1_INV, + (const bstring *)&be_const_str_SSPI_MISO, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + (const bstring *)&be_const_str_STYLE_TEXT_DECOR, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_BORDER_SIDE_RIGHT, + NULL, + (const bstring *)&be_const_str_get_bright, + (const bstring *)&be_const_str_NRG_SEL, + (const bstring *)&be_const_str_KEY1_TC, + NULL, + (const bstring *)&be_const_str_SDCARD_CS, + NULL, + (const bstring *)&be_const_str_SYMBOL_UP, + (const bstring *)&be_const_str_layer_sys, + (const bstring *)&be_const_str_DRAG_DIR_HOR, + (const bstring *)&be_const_str_cut_text, + (const bstring *)&be_const_str_false, + (const bstring *)&be_const_str_EVENT_PRESSING, + (const bstring *)&be_const_str_PZEM004_RX, + (const bstring *)&be_const_str_SYMBOL_AUDIO, + (const bstring *)&be_const_str_FS_RES_DENIED, + (const bstring *)&be_const_str_exp, + NULL, + (const bstring *)&be_const_str_CHART_AXIS_INVERSE_LABELS_ORDER, + NULL, + (const bstring *)&be_const_str_scroll_ver, + (const bstring *)&be_const_str_get_antialias, + (const bstring *)&be_const_str_CHART_CURSOR_DOWN, + (const bstring *)&be_const_str_STYLE_MARGIN_LEFT, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_close_event_cb, + (const bstring *)&be_const_str_remove_style, + (const bstring *)&be_const_str_LABEL_ALIGN_LEFT, + (const bstring *)&be_const_str_remove_mask, + (const bstring *)&be_const_str_CHART_AXIS_PRIMARY_Y, + (const bstring *)&be_const_str_CHART_AXIS_SECONDARY_Y, + (const bstring *)&be_const_str_CHANGE, + NULL, + (const bstring *)&be_const_str_set_style_local_line_dash_gap, + (const bstring *)&be_const_str_get_spin_time, + (const bstring *)&be_const_str_HSPI, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_I2C_SCL, + (const bstring *)&be_const_str_set_checkable, + (const bstring *)&be_const_str_SSPI_MOSI, + (const bstring *)&be_const_str_ARC_TYPE_REVERSE, + (const bstring *)&be_const_str_set_tasmota_logo, + (const bstring *)&be_const_str_ALIGN_IN_LEFT_MID, + (const bstring *)&be_const_str_SYMBOL_BATTERY_1, + (const bstring *)&be_const_str_KEY_PREV, + (const bstring *)&be_const_str_set_text_fmt, + (const bstring *)&be_const_str_get_scrl_height, + NULL, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_SDS0X1_RX, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_ALIGN_IN_TOP_LEFT, + NULL, + (const bstring *)&be_const_str_set_style_local_line_blend_mode, + (const bstring *)&be_const_str_PZEM017_RX, + (const bstring *)&be_const_str_PAGE_EDGE_BOTTOM, + (const bstring *)&be_const_str_get_btns_pos, + (const bstring *)&be_const_str_lv_roller, + (const bstring *)&be_const_str_clear_protect, NULL, (const bstring *)&be_const_str_LABEL_LONG_BREAK, - (const bstring *)&be_const_str_get_from_btn, - (const bstring *)&be_const_str_LAYOUT_ROW_TOP, - (const bstring *)&be_const_str_KEYBOARD_MODE_TEXT_UPPER, - (const bstring *)&be_const_str_EVENT_APPLY, - (const bstring *)&be_const_str_is_point_on_coords, - (const bstring *)&be_const_str_get_style_scale_end_line_width, - NULL, - (const bstring *)&be_const_str_SYMBOL_CHARGE, - (const bstring *)&be_const_str_EVENT_REFRESH, + (const bstring *)&be_const_str_raise, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_add_char, + (const bstring *)&be_const_str_CHART_CURSOR_NONE, + (const bstring *)&be_const_str_EVENT_KEY, + (const bstring *)&be_const_str_set_bg_opa, NULL, NULL, - (const bstring *)&be_const_str_get_label, - (const bstring *)&be_const_str_get_style_value_color, - (const bstring *)&be_const_str_FS_RES_NOT_IMP, - (const bstring *)&be_const_str_CHART_AXIS_INVERSE_LABELS_ORDER, - (const bstring *)&be_const_str_PROTECT_EVENT_TO_DISABLED, + (const bstring *)&be_const_str_TEXT_DECOR_NONE, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_BLEND_MODE_SUBTRACTIVE, + (const bstring *)&be_const_str_RC522_RST, + (const bstring *)&be_const_str_lv_win, + (const bstring *)&be_const_str_OPA_40, + (const bstring *)&be_const_str_clear_selection, + (const bstring *)&be_const_str_DISP_SIZE_MEDIUM, + (const bstring *)&be_const_str_BTNMATRIX_CTRL_CLICK_TRIG, + (const bstring *)&be_const_str_STYLE_PATTERN_IMAGE, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_CSE7761_RX, + (const bstring *)&be_const_str_DISP_SIZE_SMALL, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_PZEM0XX_TX, + (const bstring *)&be_const_str_upper, + (const bstring *)&be_const_str_CALENDAR_PART_DATE, + (const bstring *)&be_const_str_ADC_RANGE, + (const bstring *)&be_const_str_FIT_TIGHT, + (const bstring *)&be_const_str_get_nearest_index_from_coord, + (const bstring *)&be_const_str_set_month_names, + NULL, + (const bstring *)&be_const_str_set_refocus_policy, + (const bstring *)&be_const_str_DROPDOWN_DIR_RIGHT, + (const bstring *)&be_const_str_MAX31855CLK, + (const bstring *)&be_const_str_IBEACON_RX, + (const bstring *)&be_const_str_get_fit_right, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_set_style_local_margin_left, + (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_STYLE_CLIP_CORNER, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_get_ext_click_pad_left, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_lv_chart, + (const bstring *)&be_const_str_DISP_ROT_NONE, + (const bstring *)&be_const_str_CYAN, + (const bstring *)&be_const_str_get_pivot, + (const bstring *)&be_const_str_BTNMATRIX_CTRL_NO_REPEAT, + (const bstring *)&be_const_str_PROTECT_CLICK_FOCUS, + (const bstring *)&be_const_str_is_visible, + (const bstring *)&be_const_str_HLW_CF, + (const bstring *)&be_const_str_SSPI, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_GAUGE_PART_MAIN, + (const bstring *)&be_const_str_PAGE_EDGE_TOP, (const bstring *)&be_const_str_lv_slider, + (const bstring *)&be_const_str_set_style_local_line_opa, + (const bstring *)&be_const_str_set_formatter_cb, + (const bstring *)&be_const_str_get_adjustable, + (const bstring *)&be_const_str_DRAG_DIR_ONE, + (const bstring *)&be_const_str_TM1637DIO, + (const bstring *)&be_const_str_STYLE_BG_GRAD_DIR, + (const bstring *)&be_const_str_set_style_local_transform_angle, + (const bstring *)&be_const_str_HRXL_RX, + (const bstring *)&be_const_str_SYMBOL_IMAGE, + (const bstring *)&be_const_str_SYMBOL_BELL, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_TELEINFO_ENABLE, + (const bstring *)&be_const_str_set_style_local_transition_prop_3, + (const bstring *)&be_const_str_fade_in, + (const bstring *)&be_const_str_set_style_local_margin_right, + (const bstring *)&be_const_str_get_one_check, + (const bstring *)&be_const_str_MAX7219CS, + (const bstring *)&be_const_str_CHECKBOX_PART_BULLET, + (const bstring *)&be_const_str_ILI9341_DC, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_KEY_HOME, + (const bstring *)&be_const_str_STYLE_SHADOW_OFS_Y, + (const bstring *)&be_const_str_BTN_STATE_CHECKED_RELEASED, + (const bstring *)&be_const_str_get_pwd_mode, NULL, - (const bstring *)&be_const_str_set_style_local_text_font, - (const bstring *)&be_const_str_get_editing, - (const bstring *)&be_const_str_clean_style_list, + (const bstring *)&be_const_str_ST7789_CS, + (const bstring *)&be_const_str_get_cell_merge_right, + (const bstring *)&be_const_str_lv_img, + (const bstring *)&be_const_str_EVENT_APPLY, NULL, - (const bstring *)&be_const_str_MGC3130_RESET, - (const bstring *)&be_const_str_ALIGN_IN_RIGHT_MID, - (const bstring *)&be_const_str_CHART_CURSOR_RIGHT, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_ARC_PART_BG, - (const bstring *)&be_const_str_PMS5003_RX, - (const bstring *)&be_const_str_SYMBOL_VIDEO, - NULL, - NULL, - (const bstring *)&be_const_str_get_step, - (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_get_style_margin_left, - (const bstring *)&be_const_str_get_angle, - (const bstring *)&be_const_str_refresh_style, - (const bstring *)&be_const_str_set_fit, - NULL, - (const bstring *)&be_const_str_log, - (const bstring *)&be_const_str_DROPDOWN_PART_MAIN, - (const bstring *)&be_const_str_type, - (const bstring *)&be_const_str_draw_rect, - (const bstring *)&be_const_str_get_ext_click_pad_right, - NULL, - (const bstring *)&be_const_str_set_style_local_line_width, - (const bstring *)&be_const_str_STYLE_BORDER_OPA, - (const bstring *)&be_const_str_CHART_TYPE_COLUMN, - (const bstring *)&be_const_str_set_style_local_line_blend_mode, - (const bstring *)&be_const_str_BUZZER_INV, - NULL, - (const bstring *)&be_const_str_set_image_recolor_opa, - NULL, - (const bstring *)&be_const_str_VL53L0X_XSHUT1, + (const bstring *)&be_const_str_STYLE_PATTERN_BLEND_MODE, (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_BOTTOM, + (const bstring *)&be_const_str_KEY_DEL, + (const bstring *)&be_const_str_SBR_RX, + (const bstring *)&be_const_str_KEYBOARD_PART_BTN, + (const bstring *)&be_const_str_OPA_90, + (const bstring *)&be_const_str_get_edge_flash, + (const bstring *)&be_const_str_get_pressed_cell, + NULL, + (const bstring *)&be_const_str_MCP39F5_TX, + (const bstring *)&be_const_str_STYLE_SHADOW_WIDTH, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str_BAR_TYPE_SYMMETRICAL, + NULL, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_EVENT_GESTURE, + (const bstring *)&be_const_str_SCROLLBAR_MODE_ON, + (const bstring *)&be_const_str_SSPI_DC, + (const bstring *)&be_const_str_ROT1B_NP, + (const bstring *)&be_const_str_ALIGN_IN_BOTTOM_LEFT, + (const bstring *)&be_const_str_real, + (const bstring *)&be_const_str_get_tile_act, + (const bstring *)&be_const_str_get_angle_start, + (const bstring *)&be_const_str_init_draw_rect_dsc, + (const bstring *)&be_const_str_STYLE_BG_COLOR, + (const bstring *)&be_const_str_get_style_radius, + NULL, + (const bstring *)&be_const_str_set_zoom, + (const bstring *)&be_const_str_WEBCAM_HSD, + (const bstring *)&be_const_str_FS_RES_NOT_EX, + NULL, + (const bstring *)&be_const_str_clean_style_list, + (const bstring *)&be_const_str_LAYOUT_PRETTY_MID, + (const bstring *)&be_const_str_TABVIEW_TAB_POS_TOP, + (const bstring *)&be_const_str_BLEND_MODE_NORMAL, + (const bstring *)&be_const_str_STYLE_BORDER_OPA, + (const bstring *)&be_const_str_get_btnmatrix, + (const bstring *)&be_const_str_DISP_SIZE_LARGE, + NULL, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_get_x_from_index, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_LOW, + (const bstring *)&be_const_str_concat, + (const bstring *)&be_const_str_pop, + NULL, + (const bstring *)&be_const_str_add_btns, + (const bstring *)&be_const_str_get_style_text_opa, + (const bstring *)&be_const_str_ALIGN_CENTER, + (const bstring *)&be_const_str_EVENT_LONG_PRESSED, + NULL, + (const bstring *)&be_const_str_print, + (const bstring *)&be_const_str_set_scale_end_border_width, + (const bstring *)&be_const_str_add_state, + NULL, + (const bstring *)&be_const_str_ANIM_OFF, + (const bstring *)&be_const_str_OBJ_PART_VIRTUAL_FIRST, + (const bstring *)&be_const_str_lv_objmask, + (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_DROPDOWN_PART_MAIN, + (const bstring *)&be_const_str_TXT_FLAG_RIGHT, + (const bstring *)&be_const_str_blur_ver, + (const bstring *)&be_const_str_RDM6300_RX, + (const bstring *)&be_const_str_LE01MR_RX, + NULL, + (const bstring *)&be_const_str_PROTECT_NONE, + (const bstring *)&be_const_str_LIST_PART_EDGE_FLASH, + (const bstring *)&be_const_str_IEM3000_RX, + (const bstring *)&be_const_str_STYLE_MARGIN_BOTTOM, + (const bstring *)&be_const_str_SCROLLBAR_MODE_AUTO, + (const bstring *)&be_const_str_TELEINFO_RX, + (const bstring *)&be_const_str_TM1637CLK, + (const bstring *)&be_const_str_clear_btn_ctrl_all, + (const bstring *)&be_const_str_set_pattern_opa, + (const bstring *)&be_const_str_set_bg_main_stop, + (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_CHART_UPDATE_MODE_SHIFT, + (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_MID, + (const bstring *)&be_const_str_LAYOUT_PRETTY_TOP, + NULL, + (const bstring *)&be_const_str_ROLLER_MODE_NORMAL, + (const bstring *)&be_const_str_KEY_NEXT, + (const bstring *)&be_const_str_clear_series, + (const bstring *)&be_const_str_ZEROCROSS, + (const bstring *)&be_const_str_set_cell_crop, + (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str_focus_btn, + NULL, + (const bstring *)&be_const_str_CHART_CURSOR_UP, + NULL, + (const bstring *)&be_const_str_I2C_SDA, + (const bstring *)&be_const_str_ALIGN_IN_RIGHT_MID, + (const bstring *)&be_const_str_get_point_count, + (const bstring *)&be_const_str_SYMBOL_SD_CARD, + (const bstring *)&be_const_str_get_style_transition_prop_2, + NULL, + NULL, + (const bstring *)&be_const_str_GESTURE_DIR_LEFT, + (const bstring *)&be_const_str_scroll_hor, + (const bstring *)&be_const_str_BORDER_SIDE_TOP, + (const bstring *)&be_const_str_STATE_FOCUSED, + NULL, + (const bstring *)&be_const_str_get_gesture_parent, + (const bstring *)&be_const_str_SSPI_CS, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_STYLE_PAD_RIGHT, + (const bstring *)&be_const_str_PROTECT_PARENT, + (const bstring *)&be_const_str_SYMBOL_LOOP, + (const bstring *)&be_const_str_DISP_SIZE_EXTRA_LARGE, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_ceil, + (const bstring *)&be_const_str_focus, + (const bstring *)&be_const_str_get_focus_parent, + (const bstring *)&be_const_str_ZIGBEE_TX, + (const bstring *)&be_const_str_BLEND_MODE_ADDITIVE, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_SPI_CS, + (const bstring *)&be_const_str_BTN_STATE_CHECKED_PRESSED, + (const bstring *)&be_const_str_get_highlighted_dates_num, + (const bstring *)&be_const_str_set_clip_corner, + (const bstring *)&be_const_str_set_base_dir, + (const bstring *)&be_const_str_STYLE_PAD_TOP, + (const bstring *)&be_const_str_KEYBOARD_MODE_TEXT_LOWER, NULL, (const bstring *)&be_const_str_MAROON, - (const bstring *)&be_const_str_clear, - (const bstring *)&be_const_str_get_style_transform_width, - (const bstring *)&be_const_str_ROLLER_MODE_INFINITE, - (const bstring *)&be_const_str_STYLE_SHADOW_COLOR, - (const bstring *)&be_const_str_get_bright, - (const bstring *)&be_const_str_get_needle_count, - (const bstring *)&be_const_str_SPINNER_DIR_FORWARD, - (const bstring *)&be_const_str_SI7021, - (const bstring *)&be_const_str_get_gesture_parent, - (const bstring *)&be_const_str_KEY_RIGHT, - (const bstring *)&be_const_str_STYLE_SIZE, - (const bstring *)&be_const_str_EVENT_CLICKED, - (const bstring *)&be_const_str_LAYOUT_COLUMN_LEFT, - (const bstring *)&be_const_str_CHART_CURSOR_NONE, - (const bstring *)&be_const_str_STYLE_VALUE_FONT, - (const bstring *)&be_const_str_BAR_TYPE_NORMAL, + (const bstring *)&be_const_str_HX711_SCK, + (const bstring *)&be_const_str_CHART_PART_CURSOR, + (const bstring *)&be_const_str_SAIR_RX, + NULL, + (const bstring *)&be_const_str_set_cell_value, + NULL, + NULL, + (const bstring *)&be_const_str_get_style_pattern_image, + (const bstring *)&be_const_str_STYLE_VALUE_LETTER_SPACE, (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_get_btn_index, - (const bstring *)&be_const_str_STYLE_LINE_WIDTH, + (const bstring *)&be_const_str_SENSOR_END, + (const bstring *)&be_const_str_set_style_local_value_ofs_y, + (const bstring *)&be_const_str_FTC532, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_get_accepted_chars, + (const bstring *)&be_const_str_get_style_pattern_recolor_opa, + (const bstring *)&be_const_str_get_btn_ctrl, + (const bstring *)&be_const_str_lv_group, + (const bstring *)&be_const_str_CPICKER_TYPE_RECT, + (const bstring *)&be_const_str_STYLE_TRANSITION_PATH, + (const bstring *)&be_const_str_STYLE_TEXT_OPA, NULL, - (const bstring *)&be_const_str_get_style_transition_prop_6, - (const bstring *)&be_const_str_STYLE_OUTLINE_BLEND_MODE, - (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, - (const bstring *)&be_const_str_EVENT_PRESSING, - (const bstring *)&be_const_str_SYMBOL_BATTERY_2, + (const bstring *)&be_const_str_OPTION_A, NULL, - (const bstring *)&be_const_str_get_click, - (const bstring *)&be_const_str_get_style_pad_top, - (const bstring *)&be_const_str_get_style_margin_bottom, - (const bstring *)&be_const_str_get_knob_colored, - (const bstring *)&be_const_str_GRAY, + (const bstring *)&be_const_str_range, + (const bstring *)&be_const_str_FS_RES_NOT_IMP, NULL, - (const bstring *)&be_const_str_STATE_FOCUSED, - (const bstring *)&be_const_str_set_range, - (const bstring *)&be_const_str_EVENT_PRESSED, - (const bstring *)&be_const_str_SDM630_RX, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_set_style_local_opa_scale, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_BTNMATRIX_CTRL_CHECK_STATE, - (const bstring *)&be_const_str_FALLING, + NULL, + NULL, + (const bstring *)&be_const_str_set_cell_value_fmt, + NULL, + (const bstring *)&be_const_str_KEY_RIGHT, + NULL, + (const bstring *)&be_const_str_get_pwd_show_time, + (const bstring *)&be_const_str_STATE_CHECKED, + (const bstring *)&be_const_str_get_y, + (const bstring *)&be_const_str_SM16716_SEL, + (const bstring *)&be_const_str_WEBCAM_PSCLK, + (const bstring *)&be_const_str_DROPDOWN_PART_SCROLLBAR, + (const bstring *)&be_const_str_SYMBOL_COPY, + (const bstring *)&be_const_str_STYLE_PATTERN_REPEAT, + (const bstring *)&be_const_str_handle_get_type_signal, + (const bstring *)&be_const_str_SDM72_RX, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_SYMBOL_BATTERY_3, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_STYLE_TRANSFORM_HEIGHT, + (const bstring *)&be_const_str_WEBCAM_PSRCS, + (const bstring *)&be_const_str_SYMBOL_PASTE, + (const bstring *)&be_const_str_CPICKER_COLOR_MODE_SATURATION, + (const bstring *)&be_const_str_STATE_HOVERED, + (const bstring *)&be_const_str_set_style_local_value_font, + (const bstring *)&be_const_str_GPS_TX, + (const bstring *)&be_const_str_set_wrap, + (const bstring *)&be_const_str_STYLE_IMAGE_RECOLOR, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_BUZZER, (const bstring *)&be_const_str_GESTURE_DIR_RIGHT, - (const bstring *)&be_const_str_set_pad_inner, - (const bstring *)&be_const_str_SBR_RX, - (const bstring *)&be_const_str_get_checkable, - (const bstring *)&be_const_str_ALIGN_IN_TOP_MID, - (const bstring *)&be_const_str_set_signal_cb, - (const bstring *)&be_const_str_SDS0X1_TX, - (const bstring *)&be_const_str_OUTPUT_LO, - (const bstring *)&be_const_str_SENSOR_END + (const bstring *)&be_const_str_set_shadow_opa, + (const bstring *)&be_const_str_hide_series, + (const bstring *)&be_const_str_KEY_UP, + (const bstring *)&be_const_str_PAGE_EDGE_LEFT, + (const bstring *)&be_const_str_LABEL_LONG_SROLL, + (const bstring *)&be_const_str_CHART_TYPE_NONE, + (const bstring *)&be_const_str_STYLE_TRANSFORM_WIDTH, + (const bstring *)&be_const_str_ALIGN_OUT_BOTTOM_LEFT, + (const bstring *)&be_const_str_BORDER_SIDE_FULL, + (const bstring *)&be_const_str_get_style_margin_left, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_add_option, + (const bstring *)&be_const_str_set_transform_height, + (const bstring *)&be_const_str_SYMBOL_HOME, + NULL, + (const bstring *)&be_const_str_clear_options, + (const bstring *)&be_const_str_WIEGAND_D1, + (const bstring *)&be_const_str_GAUGE_PART_NEEDLE, + (const bstring *)&be_const_str_BORDER_SIDE_NONE, + (const bstring *)&be_const_str_get_click_focus, + (const bstring *)&be_const_str_set_design_cb, + (const bstring *)&be_const_str_CHART_UPDATE_MODE_CIRCULAR, + (const bstring *)&be_const_str_SPINNER_TYPE_CONSTANT_ARC, + NULL, + (const bstring *)&be_const_str_SYMBOL_LIST, + (const bstring *)&be_const_str_set_color_mode_fixed, + (const bstring *)&be_const_str_SBR_TX, + (const bstring *)&be_const_str_set_one_check, + (const bstring *)&be_const_str_EVENT_CLICKED, + (const bstring *)&be_const_str_KEYBOARD_MODE_SPECIAL, + (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_STATE_DISABLED, + (const bstring *)&be_const_str_get_auto_fit, + (const bstring *)&be_const_str_GESTURE_DIR_TOP, + (const bstring *)&be_const_str_def_event_cb, + NULL, + (const bstring *)&be_const_str_set_px, + (const bstring *)&be_const_str_list_get_local_style, + (const bstring *)&be_const_str_get_style_text_color, + (const bstring *)&be_const_str_BTNMATRIX_CTRL_CHECKABLE, + (const bstring *)&be_const_str_get_style_outline_pad, + (const bstring *)&be_const_str_set_update_mode, + (const bstring *)&be_const_str_FIT_PARENT, + (const bstring *)&be_const_str_fade_out, + (const bstring *)&be_const_str_ALIGN_OUT_LEFT_BOTTOM, + (const bstring *)&be_const_str_STYLE_BORDER_COLOR, + (const bstring *)&be_const_str_get_placeholder_text, + (const bstring *)&be_const_str_CPICKER_TYPE_DISC, + (const bstring *)&be_const_str_STYLE_SHADOW_BLEND_MODE, + (const bstring *)&be_const_str_get_style_bg_grad_stop, + (const bstring *)&be_const_str_HRE_DATA, + NULL, + (const bstring *)&be_const_str_get_cursor_click_pos, + (const bstring *)&be_const_str_ALIGN_OUT_LEFT_MID, + NULL, + (const bstring *)&be_const_str_set_cursor_point, + (const bstring *)&be_const_str_get_style_transition_delay, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_EVENT_PRESSED, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_GRAD_DIR_NONE, + (const bstring *)&be_const_str_LAYOUT_COLUMN_MID, + (const bstring *)&be_const_str_lv_label, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_get_style_pad_inner, + (const bstring *)&be_const_str_AZ_RXD, + NULL, + (const bstring *)&be_const_str_lv_switch, + (const bstring *)&be_const_str_get_bg_angle_start, + NULL, + (const bstring *)&be_const_str_STYLE_MARGIN_TOP, + (const bstring *)&be_const_str_CALENDAR_PART_HEADER, + (const bstring *)&be_const_str_ALIGN_IN_TOP_RIGHT, + (const bstring *)&be_const_str_ARC_TYPE_NORMAL, + (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, + (const bstring *)&be_const_str_get_point_id, + (const bstring *)&be_const_str_EVENT_DELETE, + (const bstring *)&be_const_str_ARC_PART_KNOB, + (const bstring *)&be_const_str_get_protect, + (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_toupper, + (const bstring *)&be_const_str_STYLE_SHADOW_SPREAD, + (const bstring *)&be_const_str_ALIGN_OUT_TOP_MID, + (const bstring *)&be_const_str_LABEL_LONG_EXPAND, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_set_value_line_space, + (const bstring *)&be_const_str_LE01MR_TX, + (const bstring *)&be_const_str_ALIGN_OUT_TOP_LEFT, + (const bstring *)&be_const_str_set_options, + (const bstring *)&be_const_str_BTN_STATE_CHECKED_DISABLED, + (const bstring *)&be_const_str_IEM3000_TX, + (const bstring *)&be_const_str_digital_write, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_get_cell_type, + (const bstring *)&be_const_str_init_draw_label_dsc, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_OUTPUT, + NULL, + (const bstring *)&be_const_str_CHART_PART_BG, + (const bstring *)&be_const_str_get_letter_on, + (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_OBJ_PART_REAL_FIRST, + (const bstring *)&be_const_str_get_color_mode, + (const bstring *)&be_const_str_FS_RES_TOUT, + (const bstring *)&be_const_str_get_left_value, + NULL, + (const bstring *)&be_const_str_get_parent_event, + (const bstring *)&be_const_str_CPICKER_PART_MAIN, + (const bstring *)&be_const_str_KEY_DOWN, + (const bstring *)&be_const_str_STYLE_SCALE_END_LINE_WIDTH, + NULL, + (const bstring *)&be_const_str_ETH_PHY_MDC, + (const bstring *)&be_const_str_lv_color, + (const bstring *)&be_const_str_MGC3130_RESET, + (const bstring *)&be_const_str_set_style_local_bg_grad_color, + NULL, + (const bstring *)&be_const_str_get_mirror }; static const struct bconststrtab m_const_string_table = { - .size = 802, - .count = 1605, + .size = 803, + .count = 1607, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_lvgl.h b/lib/libesp32/Berry/generate/be_fixed_lvgl.h index d1d7e0ed1..683c33ed4 100644 --- a/lib/libesp32/Berry/generate/be_fixed_lvgl.h +++ b/lib/libesp32/Berry/generate/be_fixed_lvgl.h @@ -1,468 +1,470 @@ #include "be_constobj.h" static be_define_const_map_slots(m_liblvgl_map) { - { be_const_key(DISP_SIZE_MEDIUM, -1), be_const_int(1) }, - { be_const_key(BORDER_SIDE_INTERNAL, -1), be_const_int(16) }, - { be_const_key(SYMBOL_PAUSE, -1), be_const_str(&be_local_const_str_SYMBOL_PAUSE) }, - { be_const_key(FS_RES_FS_ERR, 193), be_const_int(2) }, - { be_const_key(ANIM_ON, -1), be_const_int(1) }, - { be_const_key(OPA_40, -1), be_const_int(102) }, - { be_const_key(SCROLLBAR_MODE_OFF, 400), be_const_int(0) }, - { be_const_key(STYLE_VALUE_FONT, 280), be_const_int(126) }, - { be_const_key(STYLE_TRANSFORM_HEIGHT, -1), be_const_int(5) }, - { be_const_key(ARC_PART_INDIC, -1), be_const_int(1) }, - { be_const_key(DISP_ROT_NONE, 395), be_const_int(0) }, - { be_const_key(scr_act, 433), be_const_func(lv0_scr_act) }, - { be_const_key(STYLE_PAD_BOTTOM, -1), be_const_int(17) }, - { be_const_key(SYMBOL_BATTERY_FULL, 278), be_const_str(&be_local_const_str_SYMBOL_BATTERY_FULL) }, - { be_const_key(RED, -1), be_const_int(16711680) }, - { be_const_key(TXT_CMD_STATE_IN, 130), be_const_int(2) }, - { be_const_key(GRAD_DIR_NONE, -1), be_const_int(0) }, - { be_const_key(OPA_100, -1), be_const_int(255) }, - { be_const_key(SLIDER_TYPE_RANGE, 370), be_const_int(2) }, - { be_const_key(SYMBOL_BATTERY_2, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_2) }, - { be_const_key(STYLE_VALUE_OFS_X, 434), be_const_int(115) }, - { be_const_key(STYLE_SCALE_WIDTH, -1), be_const_int(192) }, - { be_const_key(STYLE_SCALE_END_BORDER_WIDTH, -1), be_const_int(194) }, - { be_const_key(ALIGN_OUT_TOP_RIGHT, -1), be_const_int(11) }, - { be_const_key(ALIGN_OUT_LEFT_TOP, -1), be_const_int(15) }, - { be_const_key(SYMBOL_SD_CARD, -1), be_const_str(&be_local_const_str_SYMBOL_SD_CARD) }, - { be_const_key(EVENT_INSERT, -1), be_const_int(17) }, - { be_const_key(SYMBOL_PLAY, -1), be_const_str(&be_local_const_str_SYMBOL_PLAY) }, - { be_const_key(VSPI, -1), be_const_int(1) }, - { be_const_key(STYLE_SHADOW_WIDTH, 376), be_const_int(80) }, - { be_const_key(LABEL_LONG_CROP, -1), be_const_int(5) }, - { be_const_key(ALIGN_IN_TOP_RIGHT, -1), be_const_int(3) }, - { be_const_key(LAYOUT_ROW_MID, -1), be_const_int(6) }, - { be_const_key(OPA_70, -1), be_const_int(178) }, - { be_const_key(SYMBOL_SHUFFLE, -1), be_const_str(&be_local_const_str_SYMBOL_SHUFFLE) }, - { be_const_key(EVENT_APPLY, 66), be_const_int(19) }, - { be_const_key(layer_top, -1), be_const_func(lv0_layer_top) }, - { be_const_key(OBJ_PART_ALL, -1), be_const_int(255) }, - { be_const_key(STYLE_BG_GRAD_STOP, 8), be_const_int(34) }, - { be_const_key(STYLE_VALUE_STR, -1), be_const_int(127) }, - { be_const_key(LABEL_ALIGN_LEFT, -1), be_const_int(0) }, - { be_const_key(CHART_CURSOR_DOWN, -1), be_const_int(8) }, - { be_const_key(OBJ_PART_VIRTUAL_FIRST, 41), be_const_int(1) }, - { be_const_key(GRAD_DIR_HOR, 44), be_const_int(2) }, - { be_const_key(LAYOUT_PRETTY_MID, 183), be_const_int(9) }, - { be_const_key(STYLE_VALUE_BLEND_MODE, -1), be_const_int(114) }, - { be_const_key(CHART_PART_CURSOR, 243), be_const_int(3) }, - { be_const_key(BAR_TYPE_SYMMETRICAL, 308), be_const_int(1) }, - { be_const_key(EVENT_FOCUSED, 122), be_const_int(13) }, - { be_const_key(ROLLER_MODE_NORMAL, 177), be_const_int(0) }, - { be_const_key(WHITE, 281), be_const_int(16777215) }, - { be_const_key(KEY_PREV, -1), be_const_int(11) }, - { be_const_key(SYMBOL_BATTERY_1, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_1) }, - { be_const_key(STYLE_PAD_RIGHT, -1), be_const_int(19) }, - { be_const_key(LABEL_LONG_SROLL, -1), be_const_int(3) }, - { be_const_key(FS_RES_NOT_IMP, -1), be_const_int(9) }, - { be_const_key(STYLE_TRANSITION_DELAY, -1), be_const_int(177) }, - { be_const_key(STYLE_VALUE_ALIGN, 276), be_const_int(117) }, - { be_const_key(SYMBOL_FILE, -1), be_const_str(&be_local_const_str_SYMBOL_FILE) }, - { be_const_key(STYLE_BORDER_BLEND_MODE, -1), be_const_int(50) }, - { be_const_key(OPA_80, 59), be_const_int(204) }, - { be_const_key(LAYOUT_CENTER, -1), be_const_int(1) }, - { be_const_key(KEY_END, -1), be_const_int(3) }, - { be_const_key(KEY_NEXT, -1), be_const_int(9) }, - { be_const_key(STYLE_LINE_ROUNDED, 420), be_const_int(148) }, - { be_const_key(CHART_AXIS_PRIMARY_Y, 427), be_const_int(0) }, - { be_const_key(SYMBOL_BULLET, -1), be_const_str(&be_local_const_str_SYMBOL_BULLET) }, - { be_const_key(BORDER_SIDE_TOP, -1), be_const_int(2) }, - { be_const_key(SCROLLBAR_MODE_HIDE, -1), be_const_int(4) }, - { be_const_key(TXT_FLAG_RIGHT, 238), be_const_int(8) }, - { be_const_key(FIT_TIGHT, 20), be_const_int(1) }, - { be_const_key(KEY_BACKSPACE, -1), be_const_int(8) }, - { be_const_key(GAUGE_PART_MAIN, -1), be_const_int(0) }, - { be_const_key(SPI, 178), be_const_int(0) }, - { be_const_key(STYLE_TEXT_BLEND_MODE, 430), be_const_int(32899) }, - { be_const_key(EVENT_DRAG_THROW_BEGIN, 121), be_const_int(10) }, - { be_const_key(KEYBOARD_MODE_SPECIAL, -1), be_const_int(2) }, - { be_const_key(SYMBOL_BACKSPACE, 187), be_const_str(&be_local_const_str_SYMBOL_BACKSPACE) }, - { be_const_key(TABVIEW_TAB_POS_RIGHT, 0), be_const_int(4) }, - { be_const_key(STYLE_PATTERN_BLEND_MODE, 233), be_const_int(96) }, - { be_const_key(BTN_STATE_CHECKED_RELEASED, -1), be_const_int(3) }, - { be_const_key(EVENT_LONG_PRESSED, -1), be_const_int(4) }, + { be_const_key(STYLE_VALUE_OFS_X, 424), be_const_int(115) }, + { be_const_key(DISP_ROT_180, -1), be_const_int(2) }, + { be_const_key(SYMBOL_PLUS, 152), be_const_str(&be_local_const_str_SYMBOL_PLUS) }, + { be_const_key(TABVIEW_TAB_POS_BOTTOM, 143), be_const_int(2) }, + { be_const_key(KEYBOARD_MODE_NUM, 228), be_const_int(3) }, { be_const_key(PROTECT_CLICK_FOCUS, -1), be_const_int(32) }, - { be_const_key(CHART_CURSOR_LEFT, 300), be_const_int(4) }, - { be_const_key(PROTECT_FOLLOW, 53), be_const_int(8) }, - { be_const_key(FS_RES_OUT_OF_MEM, -1), be_const_int(10) }, - { be_const_key(FS_RES_INV_PARAM, -1), be_const_int(11) }, - { be_const_key(STYLE_BORDER_COLOR, -1), be_const_int(57) }, - { be_const_key(FS_MODE_RD, -1), be_const_int(2) }, - { be_const_key(LAYOUT_OFF, 263), be_const_int(0) }, - { be_const_key(CHART_PART_SERIES, -1), be_const_int(2) }, - { be_const_key(STYLE_TRANSITION_PROP_1, 388), be_const_int(178) }, + { be_const_key(STYLE_VALUE_STR, -1), be_const_int(127) }, + { be_const_key(SYMBOL_SETTINGS, -1), be_const_str(&be_local_const_str_SYMBOL_SETTINGS) }, + { be_const_key(FS_RES_BUSY, -1), be_const_int(7) }, + { be_const_key(BLACK, 303), be_const_int(0) }, + { be_const_key(CHART_TYPE_LINE, -1), be_const_int(1) }, + { be_const_key(LAYOUT_GRID, 267), be_const_int(11) }, + { be_const_key(STYLE_VALUE_FONT, -1), be_const_int(126) }, + { be_const_key(OPA_40, -1), be_const_int(102) }, + { be_const_key(STYLE_TRANSITION_PROP_6, -1), be_const_int(183) }, + { be_const_key(STYLE_BORDER_BLEND_MODE, 370), be_const_int(50) }, + { be_const_key(CALENDAR_PART_DAY_NAMES, 158), be_const_int(2) }, + { be_const_key(FS_RES_TOUT, -1), be_const_int(8) }, + { be_const_key(LABEL_ALIGN_LEFT, 198), be_const_int(0) }, + { be_const_key(BORDER_SIDE_RIGHT, -1), be_const_int(8) }, + { be_const_key(DISP_SIZE_MEDIUM, -1), be_const_int(1) }, + { be_const_key(SYMBOL_HOME, 350), be_const_str(&be_local_const_str_SYMBOL_HOME) }, + { be_const_key(CALENDAR_PART_BG, -1), be_const_int(0) }, + { be_const_key(SILVER, 274), be_const_int(12632256) }, + { be_const_key(STYLE_TEXT_LINE_SPACE, -1), be_const_int(32897) }, + { be_const_key(STYLE_BG_COLOR, -1), be_const_int(41) }, + { be_const_key(RED, -1), be_const_int(16711680) }, + { be_const_key(STYLE_BG_OPA, 442), be_const_int(44) }, + { be_const_key(OPA_10, -1), be_const_int(25) }, + { be_const_key(STYLE_VALUE_OFS_Y, 56), be_const_int(116) }, + { be_const_key(LAYOUT_OFF, 164), be_const_int(0) }, + { be_const_key(ARC_TYPE_REVERSE, -1), be_const_int(2) }, + { be_const_key(ALIGN_OUT_TOP_MID, 297), be_const_int(10) }, + { be_const_key(KEYBOARD_MODE_SPECIAL, 367), be_const_int(2) }, + { be_const_key(BORDER_SIDE_BOTTOM, 394), be_const_int(1) }, + { be_const_key(CHART_CURSOR_RIGHT, 412), be_const_int(1) }, + { be_const_key(STATE_FOCUSED, -1), be_const_int(2) }, + { be_const_key(OBJ_PART_MAIN, -1), be_const_int(0) }, + { be_const_key(STYLE_TRANSFORM_ZOOM, 290), be_const_int(7) }, + { be_const_key(STYLE_BG_MAIN_STOP, -1), be_const_int(33) }, + { be_const_key(SYMBOL_AUDIO, -1), be_const_str(&be_local_const_str_SYMBOL_AUDIO) }, + { be_const_key(EVENT_APPLY, 183), be_const_int(19) }, + { be_const_key(CHART_CURSOR_DOWN, -1), be_const_int(8) }, + { be_const_key(KEYBOARD_PART_BG, -1), be_const_int(0) }, + { be_const_key(DROPDOWN_PART_MAIN, 157), be_const_int(0) }, + { be_const_key(TXT_FLAG_RECOLOR, 178), be_const_int(1) }, + { be_const_key(SYMBOL_TRASH, 37), be_const_str(&be_local_const_str_SYMBOL_TRASH) }, + { be_const_key(scr_act, 364), be_const_func(lv0_scr_act) }, + { be_const_key(I2C, 382), be_const_int(1) }, + { be_const_key(CALENDAR_PART_DATE, 141), be_const_int(3) }, + { be_const_key(STYLE_SHADOW_OFS_X, -1), be_const_int(81) }, + { be_const_key(OBJ_PART_ALL, 295), be_const_int(255) }, + { be_const_key(screenshot, 201), be_const_func(lv0_screenshot) }, + { be_const_key(SYMBOL_LOOP, 94), be_const_str(&be_local_const_str_SYMBOL_LOOP) }, { be_const_key(EVENT_DEFOCUSED, -1), be_const_int(14) }, - { be_const_key(GESTURE_DIR_BOTTOM, 284), be_const_int(1) }, - { be_const_key(ALIGN_OUT_LEFT_BOTTOM, -1), be_const_int(17) }, - { be_const_key(DISP_SIZE_LARGE, 348), be_const_int(2) }, - { be_const_key(STATE_DEFAULT, -1), be_const_int(0) }, - { be_const_key(EVENT_RELEASED, -1), be_const_int(7) }, - { be_const_key(STYLE_TRANSITION_PROP_2, -1), be_const_int(179) }, - { be_const_key(BLEND_MODE_NORMAL, -1), be_const_int(0) }, - { be_const_key(STYLE_LINE_OPA, 402), be_const_int(156) }, - { be_const_key(ARC_PART_KNOB, -1), be_const_int(2) }, - { be_const_key(ARC_TYPE_NORMAL, 70), be_const_int(0) }, - { be_const_key(EVENT_CLICKED, -1), be_const_int(6) }, - { be_const_key(LAYOUT_COLUMN_LEFT, 229), be_const_int(2) }, - { be_const_key(BLACK, 258), be_const_int(0) }, - { be_const_key(SYMBOL_IMAGE, 68), be_const_str(&be_local_const_str_SYMBOL_IMAGE) }, - { be_const_key(ALIGN_OUT_RIGHT_TOP, 180), be_const_int(18) }, - { be_const_key(STYLE_VALUE_COLOR, -1), be_const_int(121) }, - { be_const_key(SYMBOL_CLOSE, 378), be_const_str(&be_local_const_str_SYMBOL_CLOSE) }, - { be_const_key(DISP_ROT_270, -1), be_const_int(3) }, - { be_const_key(STYLE_TRANSITION_PROP_4, -1), be_const_int(181) }, - { be_const_key(STATE_HOVERED, -1), be_const_int(8) }, - { be_const_key(CPICKER_COLOR_MODE_VALUE, 410), be_const_int(2) }, - { be_const_key(TEXT_DECOR_NONE, -1), be_const_int(0) }, + { be_const_key(PAGE_EDGE_BOTTOM, 105), be_const_int(8) }, + { be_const_key(ALIGN_OUT_TOP_RIGHT, -1), be_const_int(11) }, + { be_const_key(SYMBOL_COPY, 250), be_const_str(&be_local_const_str_SYMBOL_COPY) }, + { be_const_key(KEY_PREV, -1), be_const_int(11) }, + { be_const_key(STYLE_LINE_COLOR, -1), be_const_int(153) }, + { be_const_key(STYLE_MARGIN_LEFT, -1), be_const_int(23) }, + { be_const_key(STYLE_TRANSITION_PROP_2, 387), be_const_int(179) }, + { be_const_key(OPA_60, -1), be_const_int(153) }, + { be_const_key(KEYBOARD_MODE_TEXT_UPPER, -1), be_const_int(1) }, + { be_const_key(LABEL_LONG_SROLL, 249), be_const_int(3) }, + { be_const_key(FS_RES_NOT_IMP, 63), be_const_int(9) }, + { be_const_key(STYLE_PAD_RIGHT, -1), be_const_int(19) }, + { be_const_key(CHART_CURSOR_NONE, 293), be_const_int(0) }, + { be_const_key(FS_MODE_RD, -1), be_const_int(2) }, + { be_const_key(LIST_PART_EDGE_FLASH, 438), be_const_int(2) }, + { be_const_key(SYMBOL_BELL, 78), be_const_str(&be_local_const_str_SYMBOL_BELL) }, + { be_const_key(LABEL_LONG_CROP, -1), be_const_int(5) }, + { be_const_key(SYMBOL_POWER, -1), be_const_str(&be_local_const_str_SYMBOL_POWER) }, + { be_const_key(SYMBOL_UP, 57), be_const_str(&be_local_const_str_SYMBOL_UP) }, { be_const_key(SYMBOL_MINUS, -1), be_const_str(&be_local_const_str_SYMBOL_MINUS) }, - { be_const_key(BLEND_MODE_SUBTRACTIVE, 246), be_const_int(2) }, + { be_const_key(STYLE_MARGIN_BOTTOM, -1), be_const_int(22) }, + { be_const_key(SCROLLBAR_MODE_AUTO, 439), be_const_int(3) }, + { be_const_key(STYLE_IMAGE_OPA, -1), be_const_int(32940) }, + { be_const_key(CHART_AXIS_PRIMARY_Y, 292), be_const_int(0) }, + { be_const_key(SCROLLBAR_MODE_HIDE, 209), be_const_int(4) }, + { be_const_key(EVENT_DRAG_BEGIN, 211), be_const_int(8) }, + { be_const_key(FS_RES_OUT_OF_MEM, 434), be_const_int(10) }, + { be_const_key(SYMBOL_VOLUME_MAX, -1), be_const_str(&be_local_const_str_SYMBOL_VOLUME_MAX) }, + { be_const_key(SLIDER_TYPE_NORMAL, -1), be_const_int(0) }, + { be_const_key(BTN_STATE_RELEASED, -1), be_const_int(0) }, + { be_const_key(CPICKER_COLOR_MODE_VALUE, -1), be_const_int(2) }, + { be_const_key(PAGE_EDGE_RIGHT, -1), be_const_int(4) }, + { be_const_key(FS_RES_HW_ERR, -1), be_const_int(1) }, + { be_const_key(DISP_SIZE_EXTRA_LARGE, -1), be_const_int(3) }, + { be_const_key(SYMBOL_SAVE, 191), be_const_str(&be_local_const_str_SYMBOL_SAVE) }, + { be_const_key(STYLE_TEXT_BLEND_MODE, -1), be_const_int(32899) }, + { be_const_key(OBJMASK_PART_MAIN, -1), be_const_int(0) }, + { be_const_key(SYMBOL_USB, 389), be_const_str(&be_local_const_str_SYMBOL_USB) }, + { be_const_key(STYLE_BORDER_POST, -1), be_const_int(51) }, + { be_const_key(FS_RES_INV_PARAM, -1), be_const_int(11) }, + { be_const_key(TEAL, 264), be_const_int(32896) }, + { be_const_key(LAYOUT_COLUMN_MID, -1), be_const_int(3) }, + { be_const_key(LAYOUT_COLUMN_LEFT, -1), be_const_int(2) }, + { be_const_key(ALIGN_IN_BOTTOM_RIGHT, -1), be_const_int(6) }, + { be_const_key(STYLE_BORDER_COLOR, -1), be_const_int(57) }, + { be_const_key(SCROLLBAR_MODE_OFF, -1), be_const_int(0) }, + { be_const_key(ALIGN_OUT_RIGHT_MID, 188), be_const_int(19) }, + { be_const_key(TXT_CMD_STATE_WAIT, -1), be_const_int(0) }, + { be_const_key(STYLE_BG_GRAD_STOP, 377), be_const_int(34) }, + { be_const_key(STYLE_PAD_TOP, 163), be_const_int(16) }, + { be_const_key(GESTURE_DIR_BOTTOM, -1), be_const_int(1) }, + { be_const_key(CHART_CURSOR_LEFT, 423), be_const_int(4) }, + { be_const_key(DISP_SIZE_SMALL, -1), be_const_int(0) }, + { be_const_key(BTN_STATE_CHECKED_PRESSED, -1), be_const_int(4) }, + { be_const_key(EVENT_GESTURE, -1), be_const_int(11) }, + { be_const_key(BTN_STATE_DISABLED, 396), be_const_int(2) }, + { be_const_key(KEY_ENTER, 222), be_const_int(10) }, + { be_const_key(EVENT_RELEASED, -1), be_const_int(7) }, + { be_const_key(GRAD_DIR_HOR, -1), be_const_int(2) }, + { be_const_key(ALIGN_OUT_LEFT_BOTTOM, -1), be_const_int(17) }, + { be_const_key(SYMBOL_BLUETOOTH, -1), be_const_str(&be_local_const_str_SYMBOL_BLUETOOTH) }, + { be_const_key(CHECKBOX_PART_BULLET, 41), be_const_int(64) }, + { be_const_key(KEY_DEL, -1), be_const_int(127) }, + { be_const_key(LIST_PART_BG, -1), be_const_int(0) }, + { be_const_key(PROTECT_CHILD_CHG, -1), be_const_int(1) }, + { be_const_key(KEYBOARD_MODE_TEXT_LOWER, -1), be_const_int(0) }, + { be_const_key(CPICKER_COLOR_MODE_SATURATION, 190), be_const_int(1) }, { be_const_key(LAYOUT_PRETTY_BOTTOM, -1), be_const_int(10) }, + { be_const_key(EVENT_CLICKED, -1), be_const_int(6) }, + { be_const_key(OPA_0, -1), be_const_int(0) }, + { be_const_key(OLIVE, 400), be_const_int(8421376) }, + { be_const_key(ALIGN_OUT_RIGHT_BOTTOM, -1), be_const_int(20) }, + { be_const_key(TEXT_DECOR_NONE, 360), be_const_int(0) }, + { be_const_key(SYMBOL_BATTERY_EMPTY, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_EMPTY) }, + { be_const_key(PROTECT_FOLLOW, 416), be_const_int(8) }, + { be_const_key(STYLE_SHADOW_BLEND_MODE, -1), be_const_int(84) }, + { be_const_key(STYLE_PATTERN_IMAGE, 234), be_const_int(110) }, + { be_const_key(STATE_EDITED, 75), be_const_int(4) }, + { be_const_key(DROPDOWN_PART_SCROLLBAR, 217), be_const_int(65) }, + { be_const_key(SPINNER_DIR_BACKWARD, -1), be_const_int(1) }, + { be_const_key(GRAD_DIR_VER, -1), be_const_int(1) }, + { be_const_key(TXT_FLAG_RIGHT, 330), be_const_int(8) }, + { be_const_key(BTNMATRIX_CTRL_CLICK_TRIG, 398), be_const_int(256) }, + { be_const_key(OPA_COVER, 345), be_const_int(255) }, + { be_const_key(KEY_END, 32), be_const_int(3) }, + { be_const_key(DISP_SIZE_LARGE, -1), be_const_int(2) }, + { be_const_key(layer_sys, -1), be_const_func(lv0_layer_sys) }, + { be_const_key(DISP_ROT_NONE, 13), be_const_int(0) }, + { be_const_key(CALENDAR_PART_HEADER, -1), be_const_int(1) }, + { be_const_key(ALIGN_OUT_BOTTOM_LEFT, -1), be_const_int(12) }, + { be_const_key(TXT_CMD_STATE_IN, 385), be_const_int(2) }, + { be_const_key(EVENT_FOCUSED, -1), be_const_int(13) }, + { be_const_key(EVENT_DELETE, 14), be_const_int(21) }, + { be_const_key(PAGE_EDGE_LEFT, -1), be_const_int(1) }, + { be_const_key(STYLE_CLIP_CORNER, -1), be_const_int(2) }, + { be_const_key(FIT_PARENT, -1), be_const_int(2) }, + { be_const_key(STYLE_LINE_ROUNDED, 64), be_const_int(148) }, + { be_const_key(GRAY, -1), be_const_int(8421504) }, + { be_const_key(BORDER_SIDE_FULL, -1), be_const_int(15) }, + { be_const_key(SYMBOL_CALL, -1), be_const_str(&be_local_const_str_SYMBOL_CALL) }, + { be_const_key(SYMBOL_MUTE, 131), be_const_str(&be_local_const_str_SYMBOL_MUTE) }, + { be_const_key(PAGE_EDGE_TOP, -1), be_const_int(2) }, + { be_const_key(BAR_TYPE_CUSTOM, 54), be_const_int(2) }, + { be_const_key(STYLE_SCALE_END_BORDER_WIDTH, -1), be_const_int(194) }, + { be_const_key(FS_MODE_WR, -1), be_const_int(1) }, + { be_const_key(CPICKER_PART_KNOB, 399), be_const_int(1) }, + { be_const_key(EVENT_SHORT_CLICKED, -1), be_const_int(3) }, + { be_const_key(LIST_PART_SCROLLBAR, -1), be_const_int(1) }, + { be_const_key(STYLE_LINE_BLEND_MODE, 427), be_const_int(145) }, + { be_const_key(CPICKER_TYPE_DISC, 440), be_const_int(1) }, + { be_const_key(OPA_90, -1), be_const_int(229) }, + { be_const_key(ALIGN_IN_LEFT_MID, -1), be_const_int(7) }, + { be_const_key(SYMBOL_OK, -1), be_const_str(&be_local_const_str_SYMBOL_OK) }, + { be_const_key(STYLE_TRANSITION_PATH, 159), be_const_int(190) }, + { be_const_key(TEMPL_STYLE_X, 35), be_const_int(0) }, + { be_const_key(KEY_HOME, -1), be_const_int(2) }, + { be_const_key(SYMBOL_LEFT, 58), be_const_str(&be_local_const_str_SYMBOL_LEFT) }, + { be_const_key(STYLE_SIZE, -1), be_const_int(3) }, + { be_const_key(STYLE_SCALE_GRAD_COLOR, -1), be_const_int(201) }, + { be_const_key(DROPDOWN_DIR_DOWN, -1), be_const_int(0) }, + { be_const_key(LABEL_ALIGN_RIGHT, -1), be_const_int(2) }, + { be_const_key(DROPDOWN_DIR_UP, -1), be_const_int(1) }, + { be_const_key(CHART_UPDATE_MODE_CIRCULAR, -1), be_const_int(1) }, + { be_const_key(BTNMATRIX_CTRL_DISABLED, -1), be_const_int(32) }, + { be_const_key(ARC_PART_INDIC, -1), be_const_int(1) }, + { be_const_key(LAYOUT_COLUMN_RIGHT, 112), be_const_int(4) }, + { be_const_key(EVENT_DRAG_THROW_BEGIN, -1), be_const_int(10) }, + { be_const_key(BTNMATRIX_CTRL_CHECKABLE, 296), be_const_int(64) }, + { be_const_key(SYMBOL_EYE_OPEN, -1), be_const_str(&be_local_const_str_SYMBOL_EYE_OPEN) }, + { be_const_key(STATE_CHECKED, -1), be_const_int(1) }, + { be_const_key(DRAG_DIR_BOTH, 392), be_const_int(3) }, + { be_const_key(SPINNER_TYPE_SPINNING_ARC, -1), be_const_int(0) }, + { be_const_key(CHART_AXIS_DRAW_LAST_TICK, -1), be_const_int(1) }, + { be_const_key(PROTECT_PARENT, 315), be_const_int(2) }, + { be_const_key(ALIGN_OUT_BOTTOM_MID, 235), be_const_int(13) }, + { be_const_key(CHART_PART_SERIES, 284), be_const_int(2) }, + { be_const_key(FS_RES_UNKNOWN, -1), be_const_int(12) }, + { be_const_key(MAROON, -1), be_const_int(8388608) }, + { be_const_key(STYLE_SHADOW_OPA, -1), be_const_int(92) }, + { be_const_key(GREEN, -1), be_const_int(32768) }, + { be_const_key(STYLE_OUTLINE_COLOR, -1), be_const_int(73) }, + { be_const_key(load_font, -1), be_const_func(lv0_load_font) }, + { be_const_key(STYLE_LINE_OPA, 132), be_const_int(156) }, + { be_const_key(STYLE_TEXT_FONT, -1), be_const_int(32910) }, + { be_const_key(TEXT_DECOR_STRIKETHROUGH, -1), be_const_int(2) }, + { be_const_key(EVENT_PRESSING, -1), be_const_int(1) }, + { be_const_key(DISP_ROT_90, -1), be_const_int(1) }, + { be_const_key(STYLE_LINE_DASH_GAP, -1), be_const_int(147) }, + { be_const_key(ARC_PART_KNOB, -1), be_const_int(2) }, + { be_const_key(STYLE_IMAGE_BLEND_MODE, 99), be_const_int(32928) }, + { be_const_key(STATE_HOVERED, -1), be_const_int(8) }, + { be_const_key(STYLE_LINE_DASH_WIDTH, -1), be_const_int(146) }, + { be_const_key(KEY_UP, -1), be_const_int(17) }, + { be_const_key(SLIDER_TYPE_RANGE, -1), be_const_int(2) }, + { be_const_key(ANIM_OFF, -1), be_const_int(0) }, + { be_const_key(CHART_PART_CURSOR, -1), be_const_int(3) }, + { be_const_key(LAYOUT_ROW_MID, 354), be_const_int(6) }, + { be_const_key(STYLE_VALUE_ALIGN, 448), be_const_int(117) }, + { be_const_key(ALIGN_OUT_LEFT_TOP, -1), be_const_int(15) }, + { be_const_key(SCROLLBAR_MODE_ON, 97), be_const_int(1) }, + { be_const_key(SYMBOL_PREV, -1), be_const_str(&be_local_const_str_SYMBOL_PREV) }, + { be_const_key(DROPDOWN_PART_SELECTED, 337), be_const_int(66) }, + { be_const_key(LIME, 39), be_const_int(65280) }, + { be_const_key(STYLE_BORDER_OPA, -1), be_const_int(60) }, + { be_const_key(SYMBOL_DRIVE, 127), be_const_str(&be_local_const_str_SYMBOL_DRIVE) }, + { be_const_key(montserrat_font, 280), be_const_func(lv0_load_montserrat_font) }, + { be_const_key(DROPDOWN_DIR_LEFT, -1), be_const_int(2) }, + { be_const_key(EVENT_CANCEL, 288), be_const_int(20) }, + { be_const_key(SYMBOL_BATTERY_2, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_2) }, + { be_const_key(DROPDOWN_DIR_RIGHT, 84), be_const_int(3) }, + { be_const_key(TXT_CMD_STATE_PAR, -1), be_const_int(1) }, + { be_const_key(STYLE_TRANSITION_PROP_1, 91), be_const_int(178) }, + { be_const_key(OPA_100, -1), be_const_int(255) }, + { be_const_key(ALIGN_OUT_TOP_LEFT, -1), be_const_int(9) }, + { be_const_key(SPINNER_DIR_FORWARD, -1), be_const_int(0) }, + { be_const_key(STYLE_BORDER_WIDTH, -1), be_const_int(48) }, + { be_const_key(SYMBOL_REFRESH, -1), be_const_str(&be_local_const_str_SYMBOL_REFRESH) }, + { be_const_key(FS_RES_NOT_EX, 363), be_const_int(3) }, + { be_const_key(TXT_FLAG_CENTER, 247), be_const_int(4) }, + { be_const_key(FS_RES_LOCKED, 130), be_const_int(5) }, + { be_const_key(STATE_DEFAULT, 338), be_const_int(0) }, + { be_const_key(DROPDOWN_PART_LIST, -1), be_const_int(64) }, + { be_const_key(SCROLLBAR_MODE_UNHIDE, 283), be_const_int(8) }, + { be_const_key(STYLE_BG_GRAD_DIR, -1), be_const_int(35) }, + { be_const_key(SSPI, -1), be_const_int(2) }, + { be_const_key(SYMBOL_RIGHT, -1), be_const_str(&be_local_const_str_SYMBOL_RIGHT) }, + { be_const_key(SYMBOL_PLAY, -1), be_const_str(&be_local_const_str_SYMBOL_PLAY) }, + { be_const_key(LAYOUT_PRETTY_MID, -1), be_const_int(9) }, + { be_const_key(STYLE_OUTLINE_OPA, -1), be_const_int(76) }, + { be_const_key(LAYOUT_CENTER, -1), be_const_int(1) }, + { be_const_key(KEYBOARD_PART_BTN, 286), be_const_int(1) }, + { be_const_key(LED_PART_MAIN, -1), be_const_int(0) }, + { be_const_key(EVENT_VALUE_CHANGED, -1), be_const_int(16) }, + { be_const_key(OPA_20, 239), be_const_int(51) }, + { be_const_key(CHART_UPDATE_MODE_SHIFT, -1), be_const_int(0) }, + { be_const_key(STATE_PRESSED, -1), be_const_int(16) }, + { be_const_key(BTN_STATE_CHECKED_DISABLED, -1), be_const_int(5) }, + { be_const_key(OPA_TRANSP, 137), be_const_int(0) }, + { be_const_key(STYLE_TRANSFORM_HEIGHT, -1), be_const_int(5) }, + { be_const_key(STYLE_LINE_WIDTH, -1), be_const_int(144) }, + { be_const_key(STYLE_TEXT_OPA, -1), be_const_int(32908) }, + { be_const_key(STYLE_TEXT_LETTER_SPACE, -1), be_const_int(32896) }, + { be_const_key(OPA_70, -1), be_const_int(178) }, + { be_const_key(STYLE_SHADOW_OFS_Y, -1), be_const_int(82) }, + { be_const_key(STYLE_VALUE_COLOR, 413), be_const_int(121) }, + { be_const_key(TABVIEW_TAB_POS_TOP, -1), be_const_int(1) }, + { be_const_key(LAYOUT_ROW_BOTTOM, 318), be_const_int(7) }, + { be_const_key(ALIGN_CENTER, 144), be_const_int(0) }, + { be_const_key(OPA_50, 278), be_const_int(127) }, + { be_const_key(SYMBOL_CHARGE, -1), be_const_str(&be_local_const_str_SYMBOL_CHARGE) }, + { be_const_key(CHART_AXIS_SECONDARY_Y, -1), be_const_int(1) }, + { be_const_key(STYLE_IMAGE_RECOLOR, -1), be_const_int(32937) }, + { be_const_key(SYMBOL_BACKSPACE, -1), be_const_str(&be_local_const_str_SYMBOL_BACKSPACE) }, + { be_const_key(STYLE_TEXT_DECOR, 435), be_const_int(32898) }, + { be_const_key(STYLE_TRANSITION_PROP_3, 212), be_const_int(180) }, + { be_const_key(GAUGE_PART_MAIN, 428), be_const_int(0) }, + { be_const_key(SYMBOL_DOWNLOAD, -1), be_const_str(&be_local_const_str_SYMBOL_DOWNLOAD) }, + { be_const_key(ALIGN_OUT_BOTTOM_RIGHT, -1), be_const_int(14) }, + { be_const_key(SYMBOL_DOWN, -1), be_const_str(&be_local_const_str_SYMBOL_DOWN) }, + { be_const_key(EVENT_PRESSED, -1), be_const_int(0) }, + { be_const_key(STYLE_VALUE_LETTER_SPACE, 18), be_const_int(112) }, + { be_const_key(BTN_STATE_CHECKED_RELEASED, -1), be_const_int(3) }, + { be_const_key(STYLE_OUTLINE_WIDTH, 304), be_const_int(64) }, + { be_const_key(STYLE_PAD_INNER, -1), be_const_int(20) }, + { be_const_key(STYLE_PATTERN_BLEND_MODE, -1), be_const_int(96) }, + { be_const_key(LINEMETER_PART_MAIN, -1), be_const_int(0) }, + { be_const_key(STYLE_SCALE_END_COLOR, -1), be_const_int(202) }, + { be_const_key(LABEL_LONG_DOT, -1), be_const_int(2) }, + { be_const_key(STYLE_TEXT_COLOR, 0), be_const_int(32905) }, + { be_const_key(STYLE_PATTERN_RECOLOR_OPA, -1), be_const_int(109) }, + { be_const_key(SYMBOL_FILE, -1), be_const_str(&be_local_const_str_SYMBOL_FILE) }, + { be_const_key(STYLE_SCALE_BORDER_WIDTH, -1), be_const_int(193) }, + { be_const_key(HSPI, -1), be_const_int(0) }, + { be_const_key(OBJ_PART_VIRTUAL_FIRST, 341), be_const_int(1) }, + { be_const_key(SYMBOL_WIFI, 179), be_const_str(&be_local_const_str_SYMBOL_WIFI) }, + { be_const_key(LABEL_ALIGN_CENTER, -1), be_const_int(1) }, + { be_const_key(ALIGN_OUT_LEFT_MID, -1), be_const_int(16) }, + { be_const_key(STYLE_SCALE_END_LINE_WIDTH, -1), be_const_int(195) }, + { be_const_key(ROLLER_MODE_NORMAL, 409), be_const_int(0) }, + { be_const_key(SYMBOL_EDIT, 271), be_const_str(&be_local_const_str_SYMBOL_EDIT) }, + { be_const_key(STYLE_SCALE_WIDTH, -1), be_const_int(192) }, + { be_const_key(BORDER_SIDE_INTERNAL, -1), be_const_int(16) }, + { be_const_key(CHECKBOX_PART_BG, -1), be_const_int(0) }, + { be_const_key(CHART_TYPE_NONE, 355), be_const_int(0) }, + { be_const_key(SYMBOL_UPLOAD, 401), be_const_str(&be_local_const_str_SYMBOL_UPLOAD) }, + { be_const_key(ALIGN_OUT_RIGHT_TOP, -1), be_const_int(18) }, + { be_const_key(DRAG_DIR_VER, -1), be_const_int(2) }, + { be_const_key(CHART_PART_BG, 160), be_const_int(0) }, + { be_const_key(EVENT_INSERT, -1), be_const_int(17) }, + { be_const_key(BORDER_SIDE_TOP, -1), be_const_int(2) }, + { be_const_key(STYLE_TEXT_SEL_COLOR, -1), be_const_int(32906) }, { be_const_key(STYLE_IMAGE_RECOLOR_OPA, -1), be_const_int(32941) }, - { be_const_key(SYMBOL_DOWN, 114), be_const_str(&be_local_const_str_SYMBOL_DOWN) }, + { be_const_key(BTNMATRIX_CTRL_HIDDEN, 192), be_const_int(8) }, + { be_const_key(FIT_TIGHT, -1), be_const_int(1) }, + { be_const_key(STYLE_VALUE_BLEND_MODE, 347), be_const_int(114) }, + { be_const_key(FS_RES_FS_ERR, 74), be_const_int(2) }, + { be_const_key(SLIDER_TYPE_SYMMETRICAL, 373), be_const_int(1) }, + { be_const_key(STYLE_TRANSITION_PROP_5, -1), be_const_int(182) }, + { be_const_key(FS_RES_DENIED, 213), be_const_int(6) }, + { be_const_key(DRAG_DIR_HOR, 349), be_const_int(1) }, + { be_const_key(GAUGE_PART_MAJOR, 418), be_const_int(1) }, + { be_const_key(PROTECT_EVENT_TO_DISABLED, 73), be_const_int(64) }, + { be_const_key(STYLE_VALUE_OPA, -1), be_const_int(124) }, + { be_const_key(EVENT_LEAVE, 282), be_const_int(15) }, + { be_const_key(PROTECT_NONE, 81), be_const_int(0) }, + { be_const_key(PROTECT_PRESS_LOST, -1), be_const_int(16) }, + { be_const_key(YELLOW, 71), be_const_int(16776960) }, + { be_const_key(GESTURE_DIR_RIGHT, -1), be_const_int(3) }, + { be_const_key(VSPI, -1), be_const_int(1) }, + { be_const_key(STYLE_PATTERN_RECOLOR, -1), be_const_int(105) }, + { be_const_key(STYLE_SHADOW_COLOR, -1), be_const_int(89) }, + { be_const_key(KEY_BACKSPACE, -1), be_const_int(8) }, + { be_const_key(STYLE_OUTLINE_PAD, -1), be_const_int(65) }, + { be_const_key(AQUA, 322), be_const_int(65535) }, + { be_const_key(CHART_PART_SERIES_BG, 51), be_const_int(1) }, + { be_const_key(SPINNER_TYPE_CONSTANT_ARC, 452), be_const_int(2) }, + { be_const_key(ANIM_ON, 189), be_const_int(1) }, + { be_const_key(STYLE_TRANSFORM_ANGLE, -1), be_const_int(6) }, + { be_const_key(TEXTAREA_CURSOR_LAST, 23), be_const_int(32767) }, + { be_const_key(STYLE_VALUE_LINE_SPACE, -1), be_const_int(113) }, + { be_const_key(FIT_NONE, -1), be_const_int(0) }, + { be_const_key(STYLE_TEXT_SEL_BG_COLOR, 153), be_const_int(32907) }, + { be_const_key(STYLE_TRANSFORM_WIDTH, -1), be_const_int(4) }, + { be_const_key(CPICKER_PART_MAIN, -1), be_const_int(0) }, + { be_const_key(get_hor_res, -1), be_const_func(lv0_get_hor_res) }, + { be_const_key(GRAD_DIR_NONE, -1), be_const_int(0) }, + { be_const_key(STYLE_TRANSITION_TIME, -1), be_const_int(176) }, + { be_const_key(STYLE_OUTLINE_BLEND_MODE, -1), be_const_int(66) }, + { be_const_key(BAR_TYPE_SYMMETRICAL, -1), be_const_int(1) }, + { be_const_key(ALIGN_IN_BOTTOM_LEFT, 277), be_const_int(4) }, + { be_const_key(PROTECT_POS, 165), be_const_int(4) }, + { be_const_key(DISP_ROT_270, -1), be_const_int(3) }, + { be_const_key(EVENT_LONG_PRESSED, -1), be_const_int(4) }, + { be_const_key(ALIGN_IN_TOP_LEFT, -1), be_const_int(1) }, + { be_const_key(CYAN, -1), be_const_int(65535) }, + { be_const_key(LABEL_LONG_EXPAND, -1), be_const_int(0) }, + { be_const_key(STYLE_RADIUS, 79), be_const_int(1) }, + { be_const_key(BLEND_MODE_ADDITIVE, -1), be_const_int(1) }, + { be_const_key(TXT_FLAG_EXPAND, 301), be_const_int(2) }, + { be_const_key(KEY_NEXT, -1), be_const_int(9) }, + { be_const_key(KEY_RIGHT, 391), be_const_int(19) }, + { be_const_key(OPA_80, -1), be_const_int(204) }, + { be_const_key(LAYOUT_ROW_TOP, -1), be_const_int(5) }, + { be_const_key(ROLLER_MODE_INFINITE, -1), be_const_int(1) }, + { be_const_key(FS_RES_FULL, 403), be_const_int(4) }, + { be_const_key(SPI, -1), be_const_int(0) }, + { be_const_key(SCROLLBAR_MODE_DRAG, -1), be_const_int(2) }, + { be_const_key(get_ver_res, 108), be_const_func(lv0_get_ver_res) }, + { be_const_key(EVENT_REFRESH, -1), be_const_int(18) }, + { be_const_key(BTNMATRIX_CTRL_NO_REPEAT, -1), be_const_int(16) }, + { be_const_key(SYMBOL_SHUFFLE, -1), be_const_str(&be_local_const_str_SYMBOL_SHUFFLE) }, + { be_const_key(STYLE_OPA_SCALE, -1), be_const_int(32780) }, + { be_const_key(CHART_CURSOR_UP, -1), be_const_int(2) }, + { be_const_key(STYLE_MARGIN_TOP, -1), be_const_int(21) }, + { be_const_key(ARC_TYPE_SYMMETRIC, 272), be_const_int(1) }, + { be_const_key(SYMBOL_BATTERY_3, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_3) }, + { be_const_key(start, 425), be_const_func(lv0_start) }, + { be_const_key(SYMBOL_WARNING, 62), be_const_str(&be_local_const_str_SYMBOL_WARNING) }, + { be_const_key(ALIGN_IN_BOTTOM_MID, -1), be_const_int(5) }, + { be_const_key(STATE_DISABLED, -1), be_const_int(32) }, + { be_const_key(KEY_ESC, -1), be_const_int(27) }, + { be_const_key(CPICKER_TYPE_RECT, -1), be_const_int(0) }, + { be_const_key(SYMBOL_KEYBOARD, -1), be_const_str(&be_local_const_str_SYMBOL_KEYBOARD) }, + { be_const_key(SYMBOL_EYE_CLOSE, 174), be_const_str(&be_local_const_str_SYMBOL_EYE_CLOSE) }, + { be_const_key(SYMBOL_IMAGE, 332), be_const_str(&be_local_const_str_SYMBOL_IMAGE) }, + { be_const_key(SYMBOL_PAUSE, 229), be_const_str(&be_local_const_str_SYMBOL_PAUSE) }, + { be_const_key(NAVY, 263), be_const_int(128) }, + { be_const_key(EVENT_KEY, -1), be_const_int(12) }, + { be_const_key(ALIGN_IN_TOP_MID, -1), be_const_int(2) }, + { be_const_key(STYLE_BG_BLEND_MODE, -1), be_const_int(32) }, + { be_const_key(SYMBOL_BULLET, -1), be_const_str(&be_local_const_str_SYMBOL_BULLET) }, + { be_const_key(EVENT_DRAG_END, 450), be_const_int(9) }, + { be_const_key(STYLE_SHADOW_WIDTH, -1), be_const_int(80) }, + { be_const_key(TABVIEW_TAB_POS_RIGHT, -1), be_const_int(4) }, + { be_const_key(STYLE_BORDER_SIDE, -1), be_const_int(49) }, + { be_const_key(BLEND_MODE_NORMAL, -1), be_const_int(0) }, + { be_const_key(SYMBOL_CLOSE, 455), be_const_str(&be_local_const_str_SYMBOL_CLOSE) }, + { be_const_key(SYMBOL_DIRECTORY, -1), be_const_str(&be_local_const_str_SYMBOL_DIRECTORY) }, + { be_const_key(GESTURE_DIR_LEFT, -1), be_const_int(2) }, + { be_const_key(EVENT_PRESS_LOST, -1), be_const_int(2) }, + { be_const_key(MAGENTA, 268), be_const_int(16711935) }, + { be_const_key(BAR_TYPE_NORMAL, -1), be_const_int(0) }, + { be_const_key(BLUE, 314), be_const_int(255) }, + { be_const_key(STYLE_PAD_LEFT, -1), be_const_int(18) }, + { be_const_key(FS_RES_OK, -1), be_const_int(0) }, { be_const_key(SYMBOL_LIST, -1), be_const_str(&be_local_const_str_SYMBOL_LIST) }, { be_const_key(LAYOUT_PRETTY_TOP, -1), be_const_int(8) }, - { be_const_key(BORDER_SIDE_BOTTOM, 358), be_const_int(1) }, - { be_const_key(DROPDOWN_DIR_UP, -1), be_const_int(1) }, - { be_const_key(STYLE_TRANSITION_PROP_6, -1), be_const_int(183) }, - { be_const_key(KEY_ESC, -1), be_const_int(27) }, - { be_const_key(LABEL_LONG_SROLL_CIRC, -1), be_const_int(4) }, - { be_const_key(SYMBOL_DOWNLOAD, -1), be_const_str(&be_local_const_str_SYMBOL_DOWNLOAD) }, - { be_const_key(ALIGN_OUT_BOTTOM_LEFT, 218), be_const_int(12) }, - { be_const_key(LINEMETER_PART_MAIN, -1), be_const_int(0) }, - { be_const_key(GRAY, -1), be_const_int(8421504) }, - { be_const_key(SYMBOL_USB, 404), be_const_str(&be_local_const_str_SYMBOL_USB) }, - { be_const_key(ALIGN_OUT_RIGHT_BOTTOM, -1), be_const_int(20) }, - { be_const_key(BTN_STATE_DISABLED, 216), be_const_int(2) }, - { be_const_key(LIME, -1), be_const_int(65280) }, - { be_const_key(CPICKER_PART_MAIN, -1), be_const_int(0) }, - { be_const_key(DISP_ROT_90, 166), be_const_int(1) }, - { be_const_key(SYMBOL_VOLUME_MID, -1), be_const_str(&be_local_const_str_SYMBOL_VOLUME_MID) }, - { be_const_key(LABEL_LONG_EXPAND, -1), be_const_int(0) }, - { be_const_key(FS_RES_FULL, -1), be_const_int(4) }, - { be_const_key(BLEND_MODE_ADDITIVE, -1), be_const_int(1) }, - { be_const_key(KEY_UP, -1), be_const_int(17) }, - { be_const_key(ALIGN_IN_BOTTOM_MID, -1), be_const_int(5) }, - { be_const_key(BAR_TYPE_CUSTOM, -1), be_const_int(2) }, - { be_const_key(STYLE_BG_BLEND_MODE, -1), be_const_int(32) }, + { be_const_key(SYMBOL_VOLUME_MID, 343), be_const_str(&be_local_const_str_SYMBOL_VOLUME_MID) }, { be_const_key(CPICKER_COLOR_MODE_HUE, -1), be_const_int(0) }, - { be_const_key(LAYOUT_COLUMN_MID, -1), be_const_int(3) }, - { be_const_key(ALIGN_IN_BOTTOM_RIGHT, 207), be_const_int(6) }, - { be_const_key(LED_PART_MAIN, 425), be_const_int(0) }, - { be_const_key(ARC_PART_BG, -1), be_const_int(0) }, - { be_const_key(HSPI, -1), be_const_int(0) }, - { be_const_key(EVENT_VALUE_CHANGED, 51), be_const_int(16) }, - { be_const_key(CHART_AXIS_INVERSE_LABELS_ORDER, 305), be_const_int(2) }, - { be_const_key(STYLE_OUTLINE_COLOR, 103), be_const_int(73) }, - { be_const_key(FS_MODE_WR, -1), be_const_int(1) }, - { be_const_key(CPICKER_PART_KNOB, 221), be_const_int(1) }, - { be_const_key(LAYOUT_ROW_BOTTOM, -1), be_const_int(7) }, - { be_const_key(CHART_TYPE_LINE, 353), be_const_int(1) }, - { be_const_key(LABEL_ALIGN_RIGHT, -1), be_const_int(2) }, - { be_const_key(ALIGN_IN_RIGHT_MID, -1), be_const_int(8) }, - { be_const_key(CHECKBOX_PART_BG, -1), be_const_int(0) }, - { be_const_key(CPICKER_TYPE_RECT, -1), be_const_int(0) }, - { be_const_key(PURPLE, 127), be_const_int(8388736) }, - { be_const_key(STYLE_PATTERN_REPEAT, 182), be_const_int(97) }, - { be_const_key(SYMBOL_EYE_OPEN, 371), be_const_str(&be_local_const_str_SYMBOL_EYE_OPEN) }, - { be_const_key(FIT_MAX, -1), be_const_int(3) }, - { be_const_key(DROPDOWN_DIR_DOWN, -1), be_const_int(0) }, - { be_const_key(ANIM_OFF, 226), be_const_int(0) }, - { be_const_key(SYMBOL_DIRECTORY, -1), be_const_str(&be_local_const_str_SYMBOL_DIRECTORY) }, - { be_const_key(STYLE_BG_OPA, -1), be_const_int(44) }, - { be_const_key(PAGE_EDGE_LEFT, 14), be_const_int(1) }, - { be_const_key(STYLE_SCALE_BORDER_WIDTH, -1), be_const_int(193) }, - { be_const_key(STYLE_SHADOW_OPA, -1), be_const_int(92) }, - { be_const_key(screenshot, 128), be_const_func(lv0_screenshot) }, - { be_const_key(CPICKER_TYPE_DISC, -1), be_const_int(1) }, - { be_const_key(SYMBOL_PREV, 155), be_const_str(&be_local_const_str_SYMBOL_PREV) }, - { be_const_key(DRAG_DIR_BOTH, 184), be_const_int(3) }, - { be_const_key(PROTECT_PARENT, -1), be_const_int(2) }, - { be_const_key(ALIGN_OUT_BOTTOM_MID, -1), be_const_int(13) }, - { be_const_key(FS_RES_TOUT, -1), be_const_int(8) }, - { be_const_key(STATE_EDITED, 264), be_const_int(4) }, - { be_const_key(SYMBOL_BATTERY_3, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_3) }, - { be_const_key(GREEN, 16), be_const_int(32768) }, - { be_const_key(STYLE_SHADOW_COLOR, -1), be_const_int(89) }, - { be_const_key(STYLE_SHADOW_OFS_Y, 310), be_const_int(82) }, - { be_const_key(GAUGE_PART_MAJOR, -1), be_const_int(1) }, - { be_const_key(SYMBOL_MUTE, -1), be_const_str(&be_local_const_str_SYMBOL_MUTE) }, - { be_const_key(SLIDER_TYPE_NORMAL, 325), be_const_int(0) }, - { be_const_key(STYLE_BG_GRAD_DIR, 176), be_const_int(35) }, - { be_const_key(AQUA, -1), be_const_int(65535) }, - { be_const_key(SYMBOL_WARNING, 150), be_const_str(&be_local_const_str_SYMBOL_WARNING) }, - { be_const_key(STYLE_OUTLINE_BLEND_MODE, -1), be_const_int(66) }, - { be_const_key(STYLE_TEXT_LINE_SPACE, -1), be_const_int(32897) }, - { be_const_key(STYLE_OUTLINE_PAD, 451), be_const_int(65) }, - { be_const_key(STYLE_VALUE_LINE_SPACE, -1), be_const_int(113) }, - { be_const_key(STYLE_RADIUS, 222), be_const_int(1) }, - { be_const_key(EVENT_PRESSING, -1), be_const_int(1) }, - { be_const_key(STYLE_MARGIN_BOTTOM, -1), be_const_int(22) }, + { be_const_key(PURPLE, -1), be_const_int(8388736) }, + { be_const_key(BTN_STATE_PRESSED, 86), be_const_int(1) }, { be_const_key(STYLE_SHADOW_SPREAD, -1), be_const_int(83) }, - { be_const_key(KEY_DEL, -1), be_const_int(127) }, - { be_const_key(SCROLLBAR_MODE_AUTO, -1), be_const_int(3) }, - { be_const_key(STYLE_VALUE_OPA, 54), be_const_int(124) }, - { be_const_key(ALIGN_OUT_RIGHT_MID, 60), be_const_int(19) }, - { be_const_key(BAR_TYPE_NORMAL, 61), be_const_int(0) }, - { be_const_key(OBJ_PART_MAIN, -1), be_const_int(0) }, - { be_const_key(STYLE_IMAGE_RECOLOR, -1), be_const_int(32937) }, - { be_const_key(KEYBOARD_MODE_TEXT_UPPER, -1), be_const_int(1) }, - { be_const_key(EVENT_CANCEL, 298), be_const_int(20) }, - { be_const_key(STYLE_MARGIN_LEFT, -1), be_const_int(23) }, - { be_const_key(STYLE_PAD_LEFT, -1), be_const_int(18) }, - { be_const_key(SYMBOL_REFRESH, 453), be_const_str(&be_local_const_str_SYMBOL_REFRESH) }, - { be_const_key(SYMBOL_KEYBOARD, -1), be_const_str(&be_local_const_str_SYMBOL_KEYBOARD) }, - { be_const_key(DISP_SIZE_SMALL, 86), be_const_int(0) }, - { be_const_key(DROPDOWN_PART_SCROLLBAR, 296), be_const_int(65) }, - { be_const_key(CHART_AXIS_DRAW_LAST_TICK, -1), be_const_int(1) }, - { be_const_key(SYMBOL_UPLOAD, 356), be_const_str(&be_local_const_str_SYMBOL_UPLOAD) }, - { be_const_key(LABEL_LONG_DOT, 446), be_const_int(2) }, - { be_const_key(OPA_20, 364), be_const_int(51) }, - { be_const_key(SYMBOL_NEXT, -1), be_const_str(&be_local_const_str_SYMBOL_NEXT) }, - { be_const_key(KEY_RIGHT, -1), be_const_int(19) }, - { be_const_key(LABEL_ALIGN_AUTO, -1), be_const_int(3) }, - { be_const_key(ALIGN_OUT_TOP_LEFT, 242), be_const_int(9) }, - { be_const_key(STYLE_PAD_INNER, 279), be_const_int(20) }, - { be_const_key(SPINNER_TYPE_FILLSPIN_ARC, -1), be_const_int(1) }, - { be_const_key(montserrat_font, 259), be_const_func(lv0_load_montserrat_font) }, - { be_const_key(TEMPL_STYLE_Y, 257), be_const_int(1) }, - { be_const_key(SSPI, -1), be_const_int(2) }, - { be_const_key(STYLE_LINE_BLEND_MODE, -1), be_const_int(145) }, + { be_const_key(ALIGN_IN_RIGHT_MID, -1), be_const_int(8) }, + { be_const_key(ARC_PART_BG, 361), be_const_int(0) }, + { be_const_key(ARC_TYPE_NORMAL, -1), be_const_int(0) }, { be_const_key(GAUGE_PART_NEEDLE, -1), be_const_int(2) }, - { be_const_key(MAGENTA, -1), be_const_int(16711935) }, - { be_const_key(LABEL_LONG_BREAK, -1), be_const_int(1) }, - { be_const_key(CHART_CURSOR_UP, -1), be_const_int(2) }, - { be_const_key(OPA_90, -1), be_const_int(229) }, - { be_const_key(STATE_FOCUSED, -1), be_const_int(2) }, - { be_const_key(LIST_PART_EDGE_FLASH, -1), be_const_int(2) }, - { be_const_key(ALIGN_OUT_LEFT_MID, -1), be_const_int(16) }, - { be_const_key(PROTECT_PRESS_LOST, -1), be_const_int(16) }, - { be_const_key(PROTECT_CHILD_CHG, 389), be_const_int(1) }, - { be_const_key(CHART_UPDATE_MODE_SHIFT, -1), be_const_int(0) }, - { be_const_key(STYLE_LINE_DASH_WIDTH, -1), be_const_int(146) }, - { be_const_key(FS_RES_UNKNOWN, -1), be_const_int(12) }, - { be_const_key(STYLE_BORDER_OPA, 52), be_const_int(60) }, - { be_const_key(layer_sys, 185), be_const_func(lv0_layer_sys) }, - { be_const_key(STYLE_BG_MAIN_STOP, 328), be_const_int(33) }, - { be_const_key(STYLE_LINE_DASH_GAP, -1), be_const_int(147) }, - { be_const_key(CHART_CURSOR_RIGHT, -1), be_const_int(1) }, - { be_const_key(CALENDAR_PART_BG, 26), be_const_int(0) }, - { be_const_key(OPA_30, 382), be_const_int(76) }, - { be_const_key(CHART_PART_BG, 32), be_const_int(0) }, - { be_const_key(BTNMATRIX_CTRL_CHECK_STATE, 208), be_const_int(128) }, - { be_const_key(FIT_PARENT, -1), be_const_int(2) }, - { be_const_key(STYLE_SIZE, -1), be_const_int(3) }, - { be_const_key(CHART_TYPE_NONE, -1), be_const_int(0) }, - { be_const_key(SYMBOL_WIFI, -1), be_const_str(&be_local_const_str_SYMBOL_WIFI) }, - { be_const_key(ALIGN_IN_BOTTOM_LEFT, 181), be_const_int(4) }, - { be_const_key(get_hor_res, 416), be_const_func(lv0_get_hor_res) }, - { be_const_key(ALIGN_IN_LEFT_MID, 304), be_const_int(7) }, - { be_const_key(SYMBOL_SETTINGS, -1), be_const_str(&be_local_const_str_SYMBOL_SETTINGS) }, - { be_const_key(FS_RES_LOCKED, -1), be_const_int(5) }, - { be_const_key(KEYBOARD_MODE_TEXT_LOWER, -1), be_const_int(0) }, - { be_const_key(STYLE_TEXT_DECOR, -1), be_const_int(32898) }, - { be_const_key(STYLE_TEXT_FONT, -1), be_const_int(32910) }, - { be_const_key(OPA_50, -1), be_const_int(127) }, - { be_const_key(STYLE_OPA_SCALE, -1), be_const_int(32780) }, - { be_const_key(ALIGN_OUT_BOTTOM_RIGHT, -1), be_const_int(14) }, - { be_const_key(BTN_STATE_CHECKED_PRESSED, -1), be_const_int(4) }, - { be_const_key(BORDER_SIDE_RIGHT, -1), be_const_int(8) }, - { be_const_key(STYLE_TEXT_LETTER_SPACE, 159), be_const_int(32896) }, - { be_const_key(STYLE_OUTLINE_WIDTH, -1), be_const_int(64) }, - { be_const_key(SPINNER_DIR_FORWARD, -1), be_const_int(0) }, - { be_const_key(STYLE_PATTERN_OPA, 343), be_const_int(108) }, - { be_const_key(KEY_HOME, 113), be_const_int(2) }, - { be_const_key(MAROON, -1), be_const_int(8388608) }, - { be_const_key(STYLE_PATTERN_RECOLOR_OPA, 169), be_const_int(109) }, - { be_const_key(LAYOUT_GRID, 260), be_const_int(11) }, - { be_const_key(TXT_CMD_STATE_PAR, -1), be_const_int(1) }, - { be_const_key(STYLE_SCALE_END_COLOR, -1), be_const_int(202) }, - { be_const_key(DISP_SIZE_EXTRA_LARGE, 198), be_const_int(3) }, - { be_const_key(LABEL_ALIGN_CENTER, -1), be_const_int(1) }, - { be_const_key(STYLE_SCALE_END_LINE_WIDTH, -1), be_const_int(195) }, - { be_const_key(FIT_NONE, -1), be_const_int(0) }, - { be_const_key(TEXT_DECOR_STRIKETHROUGH, 312), be_const_int(2) }, - { be_const_key(FS_RES_NOT_EX, 168), be_const_int(3) }, - { be_const_key(SYMBOL_DUMMY, 299), be_const_str(&be_local_const_str_SYMBOL_DUMMY) }, - { be_const_key(EVENT_LONG_PRESSED_REPEAT, 228), be_const_int(5) }, - { be_const_key(KEYBOARD_MODE_NUM, 27), be_const_int(3) }, - { be_const_key(LAYOUT_COLUMN_RIGHT, -1), be_const_int(4) }, - { be_const_key(DRAG_DIR_VER, -1), be_const_int(2) }, - { be_const_key(DROPDOWN_PART_LIST, -1), be_const_int(64) }, - { be_const_key(CHART_PART_SERIES_BG, -1), be_const_int(1) }, - { be_const_key(PROTECT_NONE, 266), be_const_int(0) }, - { be_const_key(DROPDOWN_DIR_RIGHT, -1), be_const_int(3) }, - { be_const_key(YELLOW, -1), be_const_int(16776960) }, - { be_const_key(SYMBOL_COPY, -1), be_const_str(&be_local_const_str_SYMBOL_COPY) }, - { be_const_key(SYMBOL_EDIT, 74), be_const_str(&be_local_const_str_SYMBOL_EDIT) }, - { be_const_key(STATE_CHECKED, -1), be_const_int(1) }, - { be_const_key(DRAG_DIR_HOR, -1), be_const_int(1) }, - { be_const_key(BTN_STATE_RELEASED, -1), be_const_int(0) }, - { be_const_key(EVENT_LEAVE, 322), be_const_int(15) }, - { be_const_key(ROLLER_MODE_INFINITE, -1), be_const_int(1) }, - { be_const_key(GESTURE_DIR_RIGHT, -1), be_const_int(3) }, - { be_const_key(BTNMATRIX_CTRL_NO_REPEAT, -1), be_const_int(16) }, - { be_const_key(KEYBOARD_PART_BTN, -1), be_const_int(1) }, - { be_const_key(FS_RES_DENIED, -1), be_const_int(6) }, - { be_const_key(DROPDOWN_DIR_LEFT, 117), be_const_int(2) }, - { be_const_key(STYLE_TEXT_COLOR, -1), be_const_int(32905) }, - { be_const_key(SYMBOL_GPS, -1), be_const_str(&be_local_const_str_SYMBOL_GPS) }, - { be_const_key(SYMBOL_EYE_CLOSE, 91), be_const_str(&be_local_const_str_SYMBOL_EYE_CLOSE) }, - { be_const_key(STYLE_TEXT_SEL_BG_COLOR, -1), be_const_int(32907) }, - { be_const_key(FS_RES_OK, -1), be_const_int(0) }, - { be_const_key(TXT_FLAG_FIT, 313), be_const_int(16) }, - { be_const_key(SYMBOL_BATTERY_EMPTY, -1), be_const_str(&be_local_const_str_SYMBOL_BATTERY_EMPTY) }, - { be_const_key(SYMBOL_TRASH, -1), be_const_str(&be_local_const_str_SYMBOL_TRASH) }, - { be_const_key(TXT_FLAG_RECOLOR, -1), be_const_int(1) }, - { be_const_key(STYLE_BORDER_POST, 5), be_const_int(51) }, - { be_const_key(TABVIEW_TAB_POS_BOTTOM, -1), be_const_int(2) }, - { be_const_key(CHECKBOX_PART_BULLET, -1), be_const_int(64) }, - { be_const_key(OBJ_PART_REAL_FIRST, 335), be_const_int(64) }, - { be_const_key(KEY_DOWN, 450), be_const_int(18) }, - { be_const_key(DRAG_DIR_ONE, 82), be_const_int(4) }, - { be_const_key(STYLE_TRANSITION_PROP_3, -1), be_const_int(180) }, - { be_const_key(STYLE_OUTLINE_OPA, 275), be_const_int(76) }, - { be_const_key(STYLE_TRANSFORM_WIDTH, -1), be_const_int(4) }, - { be_const_key(BORDER_SIDE_LEFT, 143), be_const_int(4) }, - { be_const_key(KEY_LEFT, -1), be_const_int(20) }, - { be_const_key(SYMBOL_VOLUME_MAX, -1), be_const_str(&be_local_const_str_SYMBOL_VOLUME_MAX) }, - { be_const_key(STYLE_IMAGE_BLEND_MODE, -1), be_const_int(32928) }, - { be_const_key(CHART_AXIS_SECONDARY_Y, 17), be_const_int(1) }, - { be_const_key(CPICKER_COLOR_MODE_SATURATION, -1), be_const_int(1) }, - { be_const_key(BORDER_SIDE_FULL, -1), be_const_int(15) }, - { be_const_key(SPINNER_TYPE_SPINNING_ARC, -1), be_const_int(0) }, - { be_const_key(ARC_TYPE_SYMMETRIC, -1), be_const_int(1) }, - { be_const_key(BTN_STATE_PRESSED, 93), be_const_int(1) }, - { be_const_key(STYLE_TRANSITION_PROP_5, -1), be_const_int(182) }, - { be_const_key(SYMBOL_NEW_LINE, 33), be_const_str(&be_local_const_str_SYMBOL_NEW_LINE) }, - { be_const_key(CALENDAR_PART_DAY_NAMES, -1), be_const_int(2) }, - { be_const_key(STYLE_BG_GRAD_COLOR, -1), be_const_int(42) }, - { be_const_key(STYLE_VALUE_OFS_Y, 71), be_const_int(116) }, - { be_const_key(DROPDOWN_PART_SELECTED, 441), be_const_int(66) }, - { be_const_key(STYLE_PATTERN_IMAGE, 97), be_const_int(110) }, - { be_const_key(BLUE, -1), be_const_int(255) }, - { be_const_key(CALENDAR_PART_DATE, -1), be_const_int(3) }, - { be_const_key(SYMBOL_CHARGE, 154), be_const_str(&be_local_const_str_SYMBOL_CHARGE) }, - { be_const_key(PROTECT_POS, -1), be_const_int(4) }, - { be_const_key(SYMBOL_STOP, 436), be_const_str(&be_local_const_str_SYMBOL_STOP) }, - { be_const_key(LAYOUT_ROW_TOP, 101), be_const_int(5) }, - { be_const_key(CALENDAR_PART_HEADER, -1), be_const_int(1) }, - { be_const_key(CHART_CURSOR_NONE, -1), be_const_int(0) }, - { be_const_key(STYLE_VALUE_LETTER_SPACE, -1), be_const_int(112) }, - { be_const_key(SYMBOL_PLUS, -1), be_const_str(&be_local_const_str_SYMBOL_PLUS) }, - { be_const_key(STATE_PRESSED, -1), be_const_int(16) }, - { be_const_key(ALIGN_IN_TOP_MID, 255), be_const_int(2) }, - { be_const_key(STYLE_CLIP_CORNER, 311), be_const_int(2) }, - { be_const_key(SYMBOL_HOME, -1), be_const_str(&be_local_const_str_SYMBOL_HOME) }, - { be_const_key(OPA_60, -1), be_const_int(153) }, - { be_const_key(KEYBOARD_PART_BG, -1), be_const_int(0) }, - { be_const_key(CHART_AXIS_SKIP_LAST_TICK, -1), be_const_int(0) }, - { be_const_key(SYMBOL_RIGHT, -1), be_const_str(&be_local_const_str_SYMBOL_RIGHT) }, - { be_const_key(SYMBOL_LOOP, -1), be_const_str(&be_local_const_str_SYMBOL_LOOP) }, - { be_const_key(STYLE_MARGIN_TOP, -1), be_const_int(21) }, - { be_const_key(STYLE_SCALE_GRAD_COLOR, -1), be_const_int(201) }, - { be_const_key(EVENT_DRAG_END, 227), be_const_int(9) }, - { be_const_key(OPA_0, -1), be_const_int(0) }, - { be_const_key(EVENT_PRESSED, 123), be_const_int(0) }, - { be_const_key(GESTURE_DIR_LEFT, -1), be_const_int(2) }, - { be_const_key(ALIGN_CENTER, -1), be_const_int(0) }, - { be_const_key(ALIGN_OUT_TOP_MID, -1), be_const_int(10) }, - { be_const_key(STYLE_PATTERN_RECOLOR, 92), be_const_int(105) }, - { be_const_key(TXT_FLAG_EXPAND, -1), be_const_int(2) }, - { be_const_key(STYLE_BORDER_WIDTH, 306), be_const_int(48) }, - { be_const_key(SYMBOL_BELL, -1), be_const_str(&be_local_const_str_SYMBOL_BELL) }, - { be_const_key(EVENT_KEY, -1), be_const_int(12) }, - { be_const_key(SYMBOL_BLUETOOTH, 55), be_const_str(&be_local_const_str_SYMBOL_BLUETOOTH) }, - { be_const_key(BTNMATRIX_CTRL_HIDDEN, -1), be_const_int(8) }, - { be_const_key(OPA_10, -1), be_const_int(25) }, - { be_const_key(EVENT_GESTURE, -1), be_const_int(11) }, - { be_const_key(SYMBOL_CALL, -1), be_const_str(&be_local_const_str_SYMBOL_CALL) }, - { be_const_key(BTN_STATE_CHECKED_DISABLED, -1), be_const_int(5) }, - { be_const_key(STYLE_BORDER_SIDE, -1), be_const_int(49) }, - { be_const_key(STATE_DISABLED, 289), be_const_int(32) }, - { be_const_key(PAGE_EDGE_TOP, -1), be_const_int(2) }, - { be_const_key(BTNMATRIX_CTRL_CLICK_TRIG, 37), be_const_int(256) }, - { be_const_key(NAVY, -1), be_const_int(128) }, - { be_const_key(SYMBOL_SAVE, 414), be_const_str(&be_local_const_str_SYMBOL_SAVE) }, - { be_const_key(STYLE_TRANSITION_PATH, 407), be_const_int(190) }, - { be_const_key(TABVIEW_TAB_POS_LEFT, 35), be_const_int(3) }, - { be_const_key(CYAN, -1), be_const_int(65535) }, - { be_const_key(EVENT_DRAG_BEGIN, 94), be_const_int(8) }, - { be_const_key(EVENT_PRESS_LOST, -1), be_const_int(2) }, - { be_const_key(SYMBOL_DRIVE, -1), be_const_str(&be_local_const_str_SYMBOL_DRIVE) }, - { be_const_key(SYMBOL_EJECT, -1), be_const_str(&be_local_const_str_SYMBOL_EJECT) }, - { be_const_key(SYMBOL_UP, -1), be_const_str(&be_local_const_str_SYMBOL_UP) }, - { be_const_key(OPA_COVER, -1), be_const_int(255) }, - { be_const_key(ALIGN_IN_TOP_LEFT, -1), be_const_int(1) }, - { be_const_key(SYMBOL_AUDIO, -1), be_const_str(&be_local_const_str_SYMBOL_AUDIO) }, - { be_const_key(PROTECT_EVENT_TO_DISABLED, 438), be_const_int(64) }, - { be_const_key(STYLE_TEXT_OPA, -1), be_const_int(32908) }, - { be_const_key(TXT_CMD_STATE_WAIT, -1), be_const_int(0) }, - { be_const_key(TEXTAREA_CURSOR_LAST, -1), be_const_int(32767) }, - { be_const_key(SPINNER_DIR_BACKWARD, -1), be_const_int(1) }, + { be_const_key(SYMBOL_STOP, -1), be_const_str(&be_local_const_str_SYMBOL_STOP) }, + { be_const_key(STYLE_PATTERN_REPEAT, -1), be_const_int(97) }, + { be_const_key(ALIGN_IN_TOP_RIGHT, -1), be_const_int(3) }, + { be_const_key(CHART_AXIS_INVERSE_LABELS_ORDER, -1), be_const_int(2) }, + { be_const_key(STYLE_PATTERN_OPA, 123), be_const_int(108) }, + { be_const_key(BLEND_MODE_SUBTRACTIVE, -1), be_const_int(2) }, + { be_const_key(SYMBOL_PASTE, 185), be_const_str(&be_local_const_str_SYMBOL_PASTE) }, { be_const_key(BORDER_SIDE_NONE, -1), be_const_int(0) }, - { be_const_key(TEAL, -1), be_const_int(32896) }, - { be_const_key(FS_RES_HW_ERR, -1), be_const_int(1) }, - { be_const_key(STYLE_LINE_WIDTH, -1), be_const_int(144) }, - { be_const_key(EVENT_SHORT_CLICKED, -1), be_const_int(3) }, - { be_const_key(LIST_PART_SCROLLBAR, 72), be_const_int(1) }, - { be_const_key(STYLE_TEXT_SEL_COLOR, -1), be_const_int(32906) }, - { be_const_key(SYMBOL_LEFT, -1), be_const_str(&be_local_const_str_SYMBOL_LEFT) }, - { be_const_key(GRAD_DIR_VER, -1), be_const_int(1) }, - { be_const_key(EVENT_REFRESH, -1), be_const_int(18) }, - { be_const_key(KEY_ENTER, -1), be_const_int(10) }, - { be_const_key(TABVIEW_TAB_POS_TOP, 390), be_const_int(1) }, - { be_const_key(STYLE_SHADOW_BLEND_MODE, -1), be_const_int(84) }, - { be_const_key(SILVER, -1), be_const_int(12632256) }, - { be_const_key(SYMBOL_OK, -1), be_const_str(&be_local_const_str_SYMBOL_OK) }, - { be_const_key(TABVIEW_TAB_POS_NONE, -1), be_const_int(0) }, - { be_const_key(SYMBOL_PASTE, -1), be_const_str(&be_local_const_str_SYMBOL_PASTE) }, - { be_const_key(get_ver_res, 270), be_const_func(lv0_get_ver_res) }, - { be_const_key(STYLE_TRANSITION_TIME, -1), be_const_int(176) }, - { be_const_key(STYLE_PAD_TOP, -1), be_const_int(16) }, - { be_const_key(STYLE_TRANSFORM_ZOOM, -1), be_const_int(7) }, - { be_const_key(PAGE_EDGE_BOTTOM, -1), be_const_int(8) }, - { be_const_key(STYLE_LINE_COLOR, -1), be_const_int(153) }, - { be_const_key(STYLE_SHADOW_OFS_X, -1), be_const_int(81) }, - { be_const_key(SLIDER_TYPE_SYMMETRICAL, -1), be_const_int(1) }, - { be_const_key(OLIVE, -1), be_const_int(8421376) }, - { be_const_key(LIST_PART_BG, 223), be_const_int(0) }, - { be_const_key(SYMBOL_CUT, -1), be_const_str(&be_local_const_str_SYMBOL_CUT) }, - { be_const_key(STYLE_BG_COLOR, 244), be_const_int(41) }, - { be_const_key(SCROLLBAR_MODE_ON, 273), be_const_int(1) }, + { be_const_key(SYMBOL_BATTERY_FULL, 90), be_const_str(&be_local_const_str_SYMBOL_BATTERY_FULL) }, + { be_const_key(TEMPL_STYLE_Y, 48), be_const_int(1) }, + { be_const_key(STYLE_PAD_BOTTOM, -1), be_const_int(17) }, + { be_const_key(SYMBOL_NEW_LINE, -1), be_const_str(&be_local_const_str_SYMBOL_NEW_LINE) }, + { be_const_key(SYMBOL_NEXT, -1), be_const_str(&be_local_const_str_SYMBOL_NEXT) }, + { be_const_key(KEY_LEFT, 436), be_const_int(20) }, + { be_const_key(FIT_MAX, -1), be_const_int(3) }, + { be_const_key(LABEL_LONG_BREAK, -1), be_const_int(1) }, + { be_const_key(STYLE_TRANSITION_PROP_4, -1), be_const_int(181) }, + { be_const_key(SYMBOL_SD_CARD, -1), be_const_str(&be_local_const_str_SYMBOL_SD_CARD) }, + { be_const_key(STYLE_MARGIN_RIGHT, -1), be_const_int(24) }, { be_const_key(SYMBOL_VIDEO, -1), be_const_str(&be_local_const_str_SYMBOL_VIDEO) }, - { be_const_key(CHART_UPDATE_MODE_CIRCULAR, -1), be_const_int(1) }, - { be_const_key(STYLE_MARGIN_RIGHT, 287), be_const_int(24) }, - { be_const_key(DROPDOWN_PART_MAIN, 455), be_const_int(0) }, - { be_const_key(DISP_ROT_180, -1), be_const_int(2) }, - { be_const_key(SPINNER_TYPE_CONSTANT_ARC, -1), be_const_int(2) }, - { be_const_key(TEXT_DECOR_UNDERLINE, 444), be_const_int(1) }, - { be_const_key(TXT_FLAG_CENTER, 164), be_const_int(4) }, - { be_const_key(SYMBOL_POWER, -1), be_const_str(&be_local_const_str_SYMBOL_POWER) }, - { be_const_key(STYLE_TRANSFORM_ANGLE, -1), be_const_int(6) }, - { be_const_key(ARC_TYPE_REVERSE, -1), be_const_int(2) }, + { be_const_key(SYMBOL_BATTERY_1, 342), be_const_str(&be_local_const_str_SYMBOL_BATTERY_1) }, + { be_const_key(DRAG_DIR_ONE, -1), be_const_int(4) }, + { be_const_key(BTNMATRIX_CTRL_CHECK_STATE, -1), be_const_int(128) }, + { be_const_key(STYLE_TRANSITION_DELAY, -1), be_const_int(177) }, + { be_const_key(EVENT_LONG_PRESSED_REPEAT, -1), be_const_int(5) }, + { be_const_key(LABEL_LONG_SROLL_CIRC, -1), be_const_int(4) }, + { be_const_key(WHITE, 429), be_const_int(16777215) }, + { be_const_key(LABEL_ALIGN_AUTO, -1), be_const_int(3) }, + { be_const_key(TXT_FLAG_FIT, -1), be_const_int(16) }, + { be_const_key(OPA_30, -1), be_const_int(76) }, + { be_const_key(SYMBOL_DUMMY, -1), be_const_str(&be_local_const_str_SYMBOL_DUMMY) }, + { be_const_key(TEXT_DECOR_UNDERLINE, -1), be_const_int(1) }, + { be_const_key(TABVIEW_TAB_POS_LEFT, -1), be_const_int(3) }, + { be_const_key(SYMBOL_EJECT, -1), be_const_str(&be_local_const_str_SYMBOL_EJECT) }, + { be_const_key(SPINNER_TYPE_FILLSPIN_ARC, -1), be_const_int(1) }, + { be_const_key(BORDER_SIDE_LEFT, -1), be_const_int(4) }, + { be_const_key(TABVIEW_TAB_POS_NONE, -1), be_const_int(0) }, { be_const_key(TXT_FLAG_NONE, -1), be_const_int(0) }, - { be_const_key(STYLE_IMAGE_OPA, -1), be_const_int(32940) }, - { be_const_key(EVENT_DELETE, -1), be_const_int(21) }, - { be_const_key(SCROLLBAR_MODE_UNHIDE, 36), be_const_int(8) }, - { be_const_key(OBJMASK_PART_MAIN, -1), be_const_int(0) }, - { be_const_key(GESTURE_DIR_TOP, -1), be_const_int(0) }, - { be_const_key(TEMPL_STYLE_X, -1), be_const_int(0) }, - { be_const_key(BTNMATRIX_CTRL_DISABLED, -1), be_const_int(32) }, - { be_const_key(I2C, -1), be_const_int(1) }, + { be_const_key(CHART_AXIS_SKIP_LAST_TICK, -1), be_const_int(0) }, + { be_const_key(STYLE_BG_GRAD_COLOR, -1), be_const_int(42) }, + { be_const_key(SYMBOL_CUT, 207), be_const_str(&be_local_const_str_SYMBOL_CUT) }, { be_const_key(CHART_TYPE_COLUMN, -1), be_const_int(2) }, - { be_const_key(start, -1), be_const_func(lv0_start) }, - { be_const_key(SCROLLBAR_MODE_DRAG, -1), be_const_int(2) }, - { be_const_key(FS_RES_BUSY, -1), be_const_int(7) }, - { be_const_key(BTNMATRIX_CTRL_CHECKABLE, 65), be_const_int(64) }, - { be_const_key(OPA_TRANSP, -1), be_const_int(0) }, - { be_const_key(PAGE_EDGE_RIGHT, -1), be_const_int(4) }, + { be_const_key(GESTURE_DIR_TOP, -1), be_const_int(0) }, + { be_const_key(KEY_DOWN, -1), be_const_int(18) }, + { be_const_key(OBJ_PART_REAL_FIRST, -1), be_const_int(64) }, + { be_const_key(seg7_font, -1), be_const_func(lv0_load_seg7_font) }, + { be_const_key(layer_top, 194), be_const_func(lv0_layer_top) }, + { be_const_key(SYMBOL_GPS, 279), be_const_str(&be_local_const_str_SYMBOL_GPS) }, }; static be_define_const_map( m_liblvgl_map, - 457 + 459 ); static be_define_const_module( diff --git a/lib/libesp32_lvgl/LVGL_assets/library.json b/lib/libesp32_lvgl/LVGL_assets/library.json new file mode 100644 index 000000000..347390737 --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/library.json @@ -0,0 +1,17 @@ +{ + "name":"LVGL_assets", + "description":"Assets for LVGL on ESP32", + "keywords":"lvgl, display", + "authors": + { + "name": "xx", + "maintainer": true + }, + "version": "7.0", + "license": "MIT License", + "frameworks": "arduino", + "platforms": "espressif32", + "build": { + "flags": [ "-DLV_LVGL_H_INCLUDE_SIMPLE" ] + } +} \ No newline at end of file diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_10.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_10.c new file mode 100644 index 000000000..6539b03df --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_10.c @@ -0,0 +1,171 @@ +/******************************************************************************* + * Size: 10 px + * Bpp: 1 + * Opts: --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 10 --format lvgl --bpp 1 -o c_files//seg7_10.c + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef SEG7_10 +#define SEG7_10 1 +#endif + +#if SEG7_10 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + 0x0, + + /* U+0021 "!" */ + 0x0, + + /* U+002D "-" */ + 0xf0, + + /* U+002E "." */ + 0xc0, + + /* U+0030 "0" */ + 0x7a, 0x18, 0x61, 0x86, 0x18, 0x61, 0x85, 0xe0, + + /* U+0031 "1" */ + 0xf7, 0x80, + + /* U+0032 "2" */ + 0x78, 0x10, 0x41, 0x7a, 0x8, 0x20, 0x81, 0xe0, + + /* U+0033 "3" */ + 0x78, 0x10, 0x41, 0x78, 0x10, 0x41, 0x5, 0xe0, + + /* U+0034 "4" */ + 0x86, 0x18, 0x61, 0x78, 0x10, 0x41, 0x4, + + /* U+0035 "5" */ + 0x7a, 0x8, 0x20, 0x78, 0x10, 0x41, 0x5, 0xe0, + + /* U+0036 "6" */ + 0x7a, 0x8, 0x20, 0x7a, 0x18, 0x61, 0x85, 0xe0, + + /* U+0037 "7" */ + 0x7a, 0x18, 0x61, 0x84, 0x10, 0x41, 0x4, 0x0, + + /* U+0038 "8" */ + 0x7a, 0x18, 0x61, 0x7a, 0x18, 0x61, 0x85, 0xe0, + + /* U+0039 "9" */ + 0x7a, 0x18, 0x61, 0x78, 0x10, 0x41, 0x5, 0xe0, + + /* U+003A ":" */ + 0xc0, 0xc0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 32, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1, .adv_w = 131, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2, .adv_w = 131, .box_w = 4, .box_h = 1, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 3, .adv_w = 0, .box_w = 2, .box_h = 1, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 4, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 12, .adv_w = 131, .box_w = 1, .box_h = 10, .ofs_x = 6, .ofs_y = 0}, + {.bitmap_index = 14, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 22, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 30, .adv_w = 131, .box_w = 6, .box_h = 9, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 37, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 45, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 53, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 61, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 69, .adv_w = 131, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 77, .adv_w = 32, .box_w = 2, .box_h = 5, .ofs_x = 0, .ofs_y = 2} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x1, 0xd, 0xe +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 15, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + }, + { + .range_start = 48, .range_length = 11, .glyph_id_start = 5, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LV_VERSION_CHECK(8, 0, 0) +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 2, + .bpp = 1, + .kern_classes = 0, + .bitmap_format = 0, +#if LV_VERSION_CHECK(8, 0, 0) + .cache = &cache +#endif +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LV_VERSION_CHECK(8, 0, 0) +const lv_font_t seg7_10 = { +#else +lv_font_t seg7_10 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 10, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) + .underline_position = -1, + .underline_thickness = 1, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + + + +#endif /*#if SEG7_10*/ + diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_12.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_12.c new file mode 100644 index 000000000..2f1415af4 --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_12.c @@ -0,0 +1,180 @@ +/******************************************************************************* + * Size: 12 px + * Bpp: 1 + * Opts: --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 12 --format lvgl --bpp 1 -o c_files//seg7_12.c + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef SEG7_12 +#define SEG7_12 1 +#endif + +#if SEG7_12 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + 0x0, + + /* U+0021 "!" */ + 0x0, + + /* U+002D "-" */ + 0xfc, + + /* U+002E "." */ + 0xc0, + + /* U+0030 "0" */ + 0x7d, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc1, 0x83, + 0x6, 0xb, 0xe0, + + /* U+0031 "1" */ + 0xfb, 0xe0, + + /* U+0032 "2" */ + 0x7c, 0x4, 0x8, 0x10, 0x2f, 0xa0, 0x40, 0x81, + 0x2, 0x3, 0xe0, + + /* U+0033 "3" */ + 0xf8, 0x10, 0x41, 0x7, 0xe0, 0x41, 0x4, 0x10, + 0x7e, + + /* U+0034 "4" */ + 0x83, 0x6, 0xc, 0x18, 0x2f, 0x80, 0x81, 0x2, + 0x4, 0x8, + + /* U+0035 "5" */ + 0x7d, 0x2, 0x4, 0x8, 0xf, 0x80, 0x81, 0x2, + 0x4, 0xb, 0xe0, + + /* U+0036 "6" */ + 0x7d, 0x2, 0x4, 0x8, 0xf, 0xa0, 0xc1, 0x83, + 0x6, 0xb, 0xe0, + + /* U+0037 "7" */ + 0x7d, 0x6, 0xc, 0x18, 0x30, 0x40, 0x81, 0x2, + 0x4, 0x8, 0x0, + + /* U+0038 "8" */ + 0x7d, 0x6, 0xc, 0x18, 0x2f, 0xa0, 0xc1, 0x83, + 0x6, 0xb, 0xe0, + + /* U+0039 "9" */ + 0x7d, 0x6, 0xc, 0x18, 0x2f, 0x80, 0x81, 0x2, + 0x4, 0xb, 0xe0, + + /* U+003A ":" */ + 0xc0, 0x30 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 38, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1, .adv_w = 157, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2, .adv_w = 157, .box_w = 6, .box_h = 1, .ofs_x = 2, .ofs_y = 6}, + {.bitmap_index = 3, .adv_w = 0, .box_w = 2, .box_h = 1, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 4, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 15, .adv_w = 157, .box_w = 1, .box_h = 12, .ofs_x = 7, .ofs_y = 0}, + {.bitmap_index = 17, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 28, .adv_w = 157, .box_w = 6, .box_h = 12, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 37, .adv_w = 157, .box_w = 7, .box_h = 11, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 47, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 58, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 69, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 80, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 91, .adv_w = 157, .box_w = 7, .box_h = 12, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 102, .adv_w = 38, .box_w = 2, .box_h = 6, .ofs_x = 0, .ofs_y = 3} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x1, 0xd, 0xe +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 15, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + }, + { + .range_start = 48, .range_length = 11, .glyph_id_start = 5, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LV_VERSION_CHECK(8, 0, 0) +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 2, + .bpp = 1, + .kern_classes = 0, + .bitmap_format = 0, +#if LV_VERSION_CHECK(8, 0, 0) + .cache = &cache +#endif +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LV_VERSION_CHECK(8, 0, 0) +const lv_font_t seg7_12 = { +#else +lv_font_t seg7_12 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 12, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) + .underline_position = -1, + .underline_thickness = 1, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + + + +#endif /*#if SEG7_12*/ + diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_14.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_14.c new file mode 100644 index 000000000..88ada73fd --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_14.c @@ -0,0 +1,186 @@ +/******************************************************************************* + * Size: 14 px + * Bpp: 1 + * Opts: --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 14 --format lvgl --bpp 1 -o c_files//seg7_14.c + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef SEG7_14 +#define SEG7_14 1 +#endif + +#if SEG7_14 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + 0x0, + + /* U+0021 "!" */ + 0x0, + + /* U+002D "-" */ + 0x7e, 0xfc, + + /* U+002E "." */ + 0xf0, + + /* U+0030 "0" */ + 0x7f, 0x5f, 0x70, 0x78, 0x3c, 0x1e, 0xf, 0x6, + 0x0, 0xc1, 0xe0, 0xf0, 0x78, 0x3c, 0x1d, 0xf5, + 0xfc, + + /* U+0031 "1" */ + 0x7f, 0xf7, 0xff, 0xc0, + + /* U+0032 "2" */ + 0x7f, 0x1f, 0x40, 0x60, 0x30, 0x18, 0xc, 0x6, + 0x7d, 0xbe, 0x60, 0x30, 0x18, 0xc, 0x5, 0xf1, + 0xfc, + + /* U+0033 "3" */ + 0xfe, 0x7d, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7d, + 0x7d, 0x3, 0x3, 0x3, 0x3, 0x7d, 0xfe, + + /* U+0034 "4" */ + 0x80, 0xe0, 0xf0, 0x78, 0x3c, 0x1e, 0xe, 0xfa, + 0x7d, 0x1, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x4, + + /* U+0035 "5" */ + 0x7f, 0x5f, 0x30, 0x18, 0xc, 0x6, 0x3, 0x1, + 0x7c, 0x3e, 0x80, 0xc0, 0x60, 0x30, 0x19, 0xf5, + 0xfc, + + /* U+0036 "6" */ + 0x7f, 0x5f, 0x30, 0x18, 0xc, 0x6, 0x3, 0x1, + 0x7c, 0xbe, 0xe0, 0xf0, 0x78, 0x3c, 0x1d, 0xf5, + 0xfc, + + /* U+0037 "7" */ + 0x7f, 0x5f, 0x70, 0x78, 0x3c, 0x1e, 0xf, 0x6, + 0x1, 0x1, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x4, + + /* U+0038 "8" */ + 0x7f, 0x5f, 0x70, 0x78, 0x3c, 0x1e, 0xf, 0x7, + 0x7d, 0xbe, 0xe0, 0xf0, 0x78, 0x3c, 0x1d, 0xf5, + 0xfc, + + /* U+0039 "9" */ + 0x7f, 0x5f, 0x70, 0x78, 0x3c, 0x1e, 0xf, 0x7, + 0x7d, 0x3e, 0x80, 0xc0, 0x60, 0x30, 0x19, 0xf5, + 0xfc, + + /* U+003A ":" */ + 0xc3 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 45, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1, .adv_w = 183, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2, .adv_w = 183, .box_w = 7, .box_h = 2, .ofs_x = 2, .ofs_y = 6}, + {.bitmap_index = 4, .adv_w = 0, .box_w = 2, .box_h = 2, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 5, .adv_w = 183, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 22, .adv_w = 183, .box_w = 2, .box_h = 13, .ofs_x = 8, .ofs_y = 1}, + {.bitmap_index = 26, .adv_w = 183, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 43, .adv_w = 183, .box_w = 8, .box_h = 15, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 58, .adv_w = 183, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 74, .adv_w = 183, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 91, .adv_w = 183, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 108, .adv_w = 183, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 124, .adv_w = 183, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 141, .adv_w = 183, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 158, .adv_w = 45, .box_w = 1, .box_h = 8, .ofs_x = 1, .ofs_y = 3} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x1, 0xd, 0xe +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 15, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + }, + { + .range_start = 48, .range_length = 11, .glyph_id_start = 5, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LV_VERSION_CHECK(8, 0, 0) +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 2, + .bpp = 1, + .kern_classes = 0, + .bitmap_format = 0, +#if LV_VERSION_CHECK(8, 0, 0) + .cache = &cache +#endif +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LV_VERSION_CHECK(8, 0, 0) +const lv_font_t seg7_14 = { +#else +lv_font_t seg7_14 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 15, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) + .underline_position = -2, + .underline_thickness = 1, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + + + +#endif /*#if SEG7_14*/ + diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_16.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_16.c new file mode 100644 index 000000000..589ccb458 --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_16.c @@ -0,0 +1,189 @@ +/******************************************************************************* + * Size: 16 px + * Bpp: 1 + * Opts: --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 16 --format lvgl --bpp 1 -o c_files//seg7_16.c + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef SEG7_16 +#define SEG7_16 1 +#endif + +#if SEG7_16 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + 0x0, + + /* U+0021 "!" */ + 0x0, + + /* U+002D "-" */ + 0xff, 0xfc, + + /* U+002E "." */ + 0xf0, + + /* U+0030 "0" */ + 0x7f, 0xaf, 0xdc, 0xf, 0x3, 0xc0, 0xf0, 0x3c, + 0xe, 0x1, 0x80, 0x70, 0x3c, 0xf, 0x3, 0xc0, + 0xf0, 0x3b, 0xf5, 0xfe, + + /* U+0031 "1" */ + 0xff, 0xf7, 0xff, 0xd0, + + /* U+0032 "2" */ + 0x7f, 0x8f, 0xd0, 0xc, 0x3, 0x0, 0xc0, 0x30, + 0xc, 0xfd, 0xbf, 0x30, 0xc, 0x3, 0x0, 0xc0, + 0x30, 0xb, 0xf1, 0xfe, + + /* U+0033 "3" */ + 0xff, 0x3f, 0x40, 0x60, 0x30, 0x18, 0xc, 0x6, + 0xfd, 0x7e, 0x80, 0xc0, 0x60, 0x30, 0x18, 0xd, + 0xfb, 0xfe, + + /* U+0034 "4" */ + 0x80, 0x70, 0x3c, 0xf, 0x3, 0xc0, 0xf0, 0x3b, + 0xf4, 0xfd, 0x0, 0xc0, 0x30, 0xc, 0x3, 0x0, + 0xc0, 0x10, + + /* U+0035 "5" */ + 0x7f, 0xaf, 0xcc, 0x3, 0x0, 0xc0, 0x30, 0xc, + 0x2, 0xfc, 0x3f, 0x40, 0x30, 0xc, 0x3, 0x0, + 0xc0, 0x33, 0xf5, 0xfe, + + /* U+0036 "6" */ + 0x7f, 0xaf, 0xcc, 0x3, 0x0, 0xc0, 0x30, 0xc, + 0x2, 0xfc, 0xbf, 0x70, 0x3c, 0xf, 0x3, 0xc0, + 0xf0, 0x3b, 0xf5, 0xfe, + + /* U+0037 "7" */ + 0x7f, 0xaf, 0xdc, 0xf, 0x3, 0xc0, 0xf0, 0x3c, + 0xe, 0x1, 0x0, 0xc0, 0x30, 0xc, 0x3, 0x0, + 0xc0, 0x30, 0x4, + + /* U+0038 "8" */ + 0x7f, 0xaf, 0xdc, 0xf, 0x3, 0xc0, 0xf0, 0x3c, + 0xe, 0xfd, 0xbf, 0x70, 0x3c, 0xf, 0x3, 0xc0, + 0xf0, 0x3b, 0xf5, 0xfe, + + /* U+0039 "9" */ + 0x7f, 0xaf, 0xdc, 0xf, 0x3, 0xc0, 0xf0, 0x3c, + 0xe, 0xfd, 0x3f, 0x40, 0x30, 0xc, 0x3, 0x0, + 0xc0, 0x33, 0xf5, 0xfe, + + /* U+003A ":" */ + 0xa0, 0xa +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 51, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1, .adv_w = 209, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2, .adv_w = 209, .box_w = 7, .box_h = 2, .ofs_x = 3, .ofs_y = 7}, + {.bitmap_index = 4, .adv_w = 0, .box_w = 2, .box_h = 2, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 5, .adv_w = 209, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 25, .adv_w = 209, .box_w = 2, .box_h = 14, .ofs_x = 9, .ofs_y = 1}, + {.bitmap_index = 29, .adv_w = 209, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 49, .adv_w = 209, .box_w = 9, .box_h = 16, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 67, .adv_w = 209, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 85, .adv_w = 209, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 105, .adv_w = 209, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 125, .adv_w = 209, .box_w = 10, .box_h = 15, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 144, .adv_w = 209, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 164, .adv_w = 209, .box_w = 10, .box_h = 16, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 184, .adv_w = 51, .box_w = 2, .box_h = 8, .ofs_x = 1, .ofs_y = 3} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x1, 0xd, 0xe +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 15, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + }, + { + .range_start = 48, .range_length = 11, .glyph_id_start = 5, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LV_VERSION_CHECK(8, 0, 0) +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 2, + .bpp = 1, + .kern_classes = 0, + .bitmap_format = 0, +#if LV_VERSION_CHECK(8, 0, 0) + .cache = &cache +#endif +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LV_VERSION_CHECK(8, 0, 0) +const lv_font_t seg7_16 = { +#else +lv_font_t seg7_16 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 16, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) + .underline_position = -2, + .underline_thickness = 1, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + + + +#endif /*#if SEG7_16*/ + diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_18.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_18.c new file mode 100644 index 000000000..aee89f557 --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_18.c @@ -0,0 +1,195 @@ +/******************************************************************************* + * Size: 18 px + * Bpp: 1 + * Opts: --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 18 --format lvgl --bpp 1 -o c_files//seg7_18.c + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef SEG7_18 +#define SEG7_18 1 +#endif + +#if SEG7_18 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + 0x0, + + /* U+0021 "!" */ + 0x0, + + /* U+002D "-" */ + 0x7f, 0x3f, 0x80, + + /* U+002E "." */ + 0xf0, + + /* U+0030 "0" */ + 0x7f, 0xd7, 0xf7, 0x1, 0xe0, 0x3c, 0x7, 0x80, + 0xf0, 0x1e, 0x3, 0x80, 0x30, 0x7, 0x1, 0xe0, + 0x3c, 0x7, 0x80, 0xf0, 0x1e, 0x3, 0xbf, 0xaf, + 0xf8, + + /* U+0031 "1" */ + 0x7f, 0xfd, 0x7f, 0xfd, + + /* U+0032 "2" */ + 0x7f, 0xc7, 0xf4, 0x1, 0x80, 0x30, 0x6, 0x0, + 0xc0, 0x18, 0x3, 0x3f, 0xb7, 0xf3, 0x0, 0x60, + 0xc, 0x1, 0x80, 0x30, 0x6, 0x0, 0xbf, 0x8f, + 0xf8, + + /* U+0033 "3" */ + 0xff, 0x9f, 0xd0, 0xc, 0x3, 0x0, 0xc0, 0x30, + 0xc, 0x3, 0x7f, 0x5f, 0xd0, 0xc, 0x3, 0x0, + 0xc0, 0x30, 0xc, 0x3, 0x7f, 0x7f, 0xe0, + + /* U+0034 "4" */ + 0x80, 0x38, 0xf, 0x1, 0xe0, 0x3c, 0x7, 0x80, + 0xf0, 0x1d, 0xfd, 0x3f, 0xa0, 0xc, 0x1, 0x80, + 0x30, 0x6, 0x0, 0xc0, 0x18, 0x1, + + /* U+0035 "5" */ + 0x7f, 0xd7, 0xf3, 0x0, 0x60, 0xc, 0x1, 0x80, + 0x30, 0x6, 0x0, 0xbf, 0x87, 0xf4, 0x1, 0x80, + 0x30, 0x6, 0x0, 0xc0, 0x18, 0x3, 0x3f, 0xaf, + 0xf8, + + /* U+0036 "6" */ + 0x7f, 0xd7, 0xf3, 0x0, 0x60, 0xc, 0x1, 0x80, + 0x30, 0x6, 0x0, 0xbf, 0x97, 0xf7, 0x1, 0xe0, + 0x3c, 0x7, 0x80, 0xf0, 0x1e, 0x3, 0xbf, 0xaf, + 0xf8, + + /* U+0037 "7" */ + 0x7f, 0xd7, 0xf7, 0x1, 0xe0, 0x3c, 0x7, 0x80, + 0xf0, 0x1e, 0x3, 0x80, 0x20, 0x4, 0x1, 0x80, + 0x30, 0x6, 0x0, 0xc0, 0x18, 0x3, 0x0, 0x20, + + /* U+0038 "8" */ + 0x7f, 0xd7, 0xf7, 0x1, 0xe0, 0x3c, 0x7, 0x80, + 0xf0, 0x1e, 0x3, 0xbf, 0xb7, 0xf7, 0x1, 0xe0, + 0x3c, 0x7, 0x80, 0xf0, 0x1e, 0x3, 0xbf, 0xaf, + 0xf8, + + /* U+0039 "9" */ + 0x7f, 0xd7, 0xf7, 0x1, 0xe0, 0x3c, 0x7, 0x80, + 0xf0, 0x1e, 0x3, 0xbf, 0xa7, 0xf4, 0x1, 0x80, + 0x30, 0x6, 0x0, 0xc0, 0x18, 0x3, 0x3f, 0xaf, + 0xf8, + + /* U+003A ":" */ + 0xf0, 0x3, 0xc0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 58, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1, .adv_w = 235, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2, .adv_w = 235, .box_w = 9, .box_h = 2, .ofs_x = 3, .ofs_y = 8}, + {.bitmap_index = 5, .adv_w = 0, .box_w = 2, .box_h = 2, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 6, .adv_w = 235, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 31, .adv_w = 235, .box_w = 2, .box_h = 16, .ofs_x = 11, .ofs_y = 1}, + {.bitmap_index = 35, .adv_w = 235, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 60, .adv_w = 235, .box_w = 10, .box_h = 18, .ofs_x = 3, .ofs_y = 0}, + {.bitmap_index = 83, .adv_w = 235, .box_w = 11, .box_h = 16, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 105, .adv_w = 235, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 130, .adv_w = 235, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 155, .adv_w = 235, .box_w = 11, .box_h = 17, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 179, .adv_w = 235, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 204, .adv_w = 235, .box_w = 11, .box_h = 18, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 229, .adv_w = 58, .box_w = 2, .box_h = 9, .ofs_x = 1, .ofs_y = 4} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x1, 0xd, 0xe +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 15, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + }, + { + .range_start = 48, .range_length = 11, .glyph_id_start = 5, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LV_VERSION_CHECK(8, 0, 0) +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 2, + .bpp = 1, + .kern_classes = 0, + .bitmap_format = 0, +#if LV_VERSION_CHECK(8, 0, 0) + .cache = &cache +#endif +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LV_VERSION_CHECK(8, 0, 0) +const lv_font_t seg7_18 = { +#else +lv_font_t seg7_18 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 18, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) + .underline_position = -2, + .underline_thickness = 1, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + + + +#endif /*#if SEG7_18*/ + diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_20.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_20.c new file mode 100644 index 000000000..3817fe7d0 --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_20.c @@ -0,0 +1,219 @@ +/******************************************************************************* + * Size: 20 px + * Bpp: 2 + * Opts: --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 20 --format lvgl --bpp 2 -o c_files//seg7_20.c + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef SEG7_20 +#define SEG7_20 1 +#endif + +#if SEG7_20 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + + /* U+0021 "!" */ + + /* U+002D "-" */ + 0x2, 0xfc, 0xe, 0xbe, 0x43, 0xf9, + + /* U+002E "." */ + 0x2, 0xe, 0x42, 0x40, + + /* U+0030 "0" */ + 0xb, 0xff, 0xc1, 0xb4, 0x3f, 0x38, 0x11, 0xaf, + 0xc8, 0x79, 0x7e, 0xc3, 0x61, 0xff, 0xce, 0x43, + 0x21, 0xf2, 0x19, 0xf, 0xfe, 0x26, 0x1f, 0xd8, + 0x52, 0x1f, 0x61, 0xff, 0xc4, 0x42, 0x83, 0xf6, + 0x12, 0x1f, 0xc8, 0x7f, 0xf4, 0x70, 0xd8, 0x7f, + 0xf4, 0xd7, 0xf0, 0x10, 0x95, 0x5f, 0x2b, 0x4, + 0x1f, 0xed, 0x0, + + /* U+0031 "1" */ + 0xf, 0x9c, 0xc, 0x16, 0x1f, 0xc8, 0x87, 0xff, + 0x1, 0x30, 0x51, 0x3, 0x20, 0x84, 0x43, 0xfb, + 0xf, 0xf9, 0x6, 0x19, 0xb0, 0x0, + + /* U+0032 "2" */ + 0xb, 0xff, 0xc1, 0xd0, 0x7e, 0xa0, 0x66, 0xbf, + 0x90, 0xe5, 0xfb, 0xf, 0xff, 0x2, 0x21, 0xff, + 0xd1, 0xc3, 0x5f, 0xf4, 0x1a, 0x50, 0x7e, 0xd0, + 0x35, 0xfc, 0x87, 0x97, 0xf0, 0x64, 0x3f, 0xfc, + 0x18, 0x7f, 0xf1, 0x17, 0xf0, 0x7c, 0xd7, 0xd8, + 0x69, 0xf, 0xe4, 0x20, + + /* U+0033 "3" */ + 0x7, 0xff, 0x83, 0x41, 0xfa, 0x81, 0x35, 0xfc, + 0x86, 0x5f, 0xb0, 0xff, 0xee, 0xa2, 0x1f, 0xfc, + 0xfc, 0x2b, 0xfe, 0x83, 0x90, 0xfb, 0x50, 0x55, + 0xf9, 0x41, 0x97, 0xe0, 0xff, 0xe8, 0x61, 0xff, + 0xd6, 0x5f, 0x80, 0x85, 0xd7, 0xca, 0xc1, 0x7, + 0xf6, 0x80, + + /* U+0034 "4" */ + 0xf, 0xfe, 0x1e, 0x1f, 0xce, 0x26, 0x1f, 0x30, + 0x7f, 0xf0, 0x30, 0xb0, 0xff, 0xe5, 0xa2, 0x12, + 0x1f, 0xf2, 0x1f, 0xfc, 0x3d, 0x7e, 0x6, 0x35, + 0xfc, 0xb1, 0x21, 0xfc, 0xa0, 0xbf, 0xf2, 0x21, + 0xfe, 0x43, 0xff, 0x9f, 0x87, 0xff, 0x45, 0xf, + 0xfb, 0xf, 0xfe, 0xb, 0x60, + + /* U+0035 "5" */ + 0x7, 0xff, 0x81, 0xa1, 0xfa, 0x11, 0xaf, 0xb4, + 0x32, 0xfc, 0x16, 0x1f, 0xfd, 0xa4, 0x43, 0xff, + 0x98, 0x9f, 0xf0, 0x5c, 0x87, 0xd4, 0xa, 0xbf, + 0x28, 0x25, 0xf8, 0x3f, 0xf9, 0xd8, 0x7f, 0xf4, + 0xd7, 0xe0, 0x20, 0xeb, 0xe5, 0x64, 0x1f, 0xda, + 0x0, + + /* U+0036 "6" */ + 0xb, 0xff, 0xc1, 0x68, 0x7e, 0x80, 0x8d, 0x7d, + 0xa1, 0xcb, 0xf0, 0x6c, 0x3f, 0xfb, 0xa8, 0x87, + 0xff, 0x39, 0x3f, 0xe0, 0xce, 0x87, 0xd4, 0x3, + 0x5f, 0xca, 0xc, 0xbf, 0x6, 0x43, 0xff, 0x97, + 0x87, 0xff, 0x17, 0xf, 0xfe, 0x1a, 0xfe, 0x2, + 0x13, 0x5f, 0x2b, 0x24, 0x3f, 0xb4, + + /* U+0037 "7" */ + 0x2, 0xff, 0x82, 0x6b, 0xfe, 0x19, 0xf, 0xe4, + 0x27, 0xfe, 0x42, 0xc3, 0xff, 0xb2, 0x88, 0x88, + 0x7f, 0xf2, 0xf0, 0x30, 0x7d, 0x5, 0xc1, 0xf9, + 0x60, 0xff, 0xb4, 0x3f, 0xe4, 0x3f, 0xf9, 0xf8, + 0x7f, 0xf7, 0xd0, 0xff, 0xa0, 0xff, 0xe1, 0x70, + 0x0, + + /* U+0038 "8" */ + 0xb, 0xff, 0xc1, 0xb4, 0x3f, 0x50, 0x8, 0xd7, + 0xf2, 0x1c, 0xbf, 0x61, 0xb0, 0xff, 0xed, 0xa2, + 0x4, 0x43, 0xff, 0x99, 0x84, 0x9f, 0xf4, 0x19, + 0xd0, 0xfb, 0x50, 0x1a, 0xfe, 0x50, 0x72, 0xfc, + 0x1c, 0x87, 0xff, 0x33, 0xf, 0xfe, 0x3e, 0x1f, + 0xfc, 0x45, 0xfc, 0x4, 0x33, 0x5f, 0x2b, 0x4, + 0x87, 0xf6, 0x80, + + /* U+0039 "9" */ + 0x7, 0xff, 0x82, 0xd0, 0xfd, 0x41, 0x1a, 0xfe, + 0x43, 0x2f, 0xd8, 0x58, 0x7f, 0xf6, 0x51, 0x11, + 0xf, 0xfe, 0x5e, 0x4, 0xff, 0xa0, 0xb9, 0xf, + 0xb5, 0x5, 0x5f, 0x94, 0x19, 0x7e, 0xf, 0xfe, + 0x86, 0x1f, 0xfd, 0x65, 0xf8, 0x8, 0x5d, 0x7c, + 0xac, 0x10, 0x7f, 0x68, 0x0, + + /* U+003A ":" */ + 0x2, 0xe, 0x82, 0x65, 0xa1, 0xff, 0xc5, 0x41, + 0x4c, 0xc4 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 64, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 261, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 261, .box_w = 10, .box_h = 3, .ofs_x = 3, .ofs_y = 9}, + {.bitmap_index = 6, .adv_w = 0, .box_w = 4, .box_h = 3, .ofs_x = -3, .ofs_y = 0}, + {.bitmap_index = 10, .adv_w = 261, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 61, .adv_w = 261, .box_w = 5, .box_h = 19, .ofs_x = 11, .ofs_y = 1}, + {.bitmap_index = 83, .adv_w = 261, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 127, .adv_w = 261, .box_w = 14, .box_h = 20, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 169, .adv_w = 261, .box_w = 14, .box_h = 19, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 214, .adv_w = 261, .box_w = 13, .box_h = 20, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 255, .adv_w = 261, .box_w = 14, .box_h = 20, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 301, .adv_w = 261, .box_w = 14, .box_h = 20, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 342, .adv_w = 261, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 393, .adv_w = 261, .box_w = 14, .box_h = 20, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 438, .adv_w = 64, .box_w = 4, .box_h = 11, .ofs_x = 0, .ofs_y = 4} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x1, 0xd, 0xe +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 15, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + }, + { + .range_start = 48, .range_length = 11, .glyph_id_start = 5, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LV_VERSION_CHECK(8, 0, 0) +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 2, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 1, +#if LV_VERSION_CHECK(8, 0, 0) + .cache = &cache +#endif +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LV_VERSION_CHECK(8, 0, 0) +const lv_font_t seg7_20 = { +#else +lv_font_t seg7_20 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 20, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) + .underline_position = -2, + .underline_thickness = 1, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + + + +#endif /*#if SEG7_20*/ + diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_24.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_24.c new file mode 100644 index 000000000..9e4e97689 --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_24.c @@ -0,0 +1,235 @@ +/******************************************************************************* + * Size: 24 px + * Bpp: 2 + * Opts: --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 24 --format lvgl --bpp 2 -o c_files//seg7_24.c + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef SEG7_24 +#define SEG7_24 1 +#endif + +#if SEG7_24 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + + /* U+0021 "!" */ + + /* U+002D "-" */ + 0x2f, 0xfc, 0x92, 0x1f, 0xa2, 0xf, 0xe8, + + /* U+002E "." */ + 0x3c, 0x20, 0x50, 0x10, + + /* U+0030 "0" */ + 0x9, 0xff, 0xfe, 0x0, 0x67, 0xf, 0xf9, 0x82, + 0x98, 0x3f, 0xa5, 0x7, 0x5f, 0xfd, 0x7, 0xff, + 0xa1, 0x2, 0x1c, 0x87, 0xff, 0x9, 0xf, 0xfe, + 0x8e, 0xc, 0x3a, 0xf, 0xd8, 0x79, 0xc3, 0xf9, + 0x84, 0x18, 0x7f, 0xf1, 0x55, 0x87, 0xf5, 0x3, + 0xff, 0x88, 0x87, 0xff, 0xad, 0xf, 0xfe, 0x12, + 0x1c, 0x81, 0xf, 0xfe, 0x8e, 0x19, 0x3f, 0xf8, + 0x39, 0x42, 0x1f, 0x97, 0x5, 0xa1, 0xfe, 0x60, + 0x80, + + /* U+0031 "1" */ + 0xf, 0xe7, 0x9, 0x83, 0x41, 0xff, 0xc4, 0x40, + 0x87, 0xfd, 0x83, 0xe, 0x83, 0xda, 0x82, 0x90, + 0xa4, 0x32, 0x1f, 0xfc, 0x44, 0x8, 0x7f, 0xf1, + 0x70, 0x28, 0x3a, 0x88, 0x0, + + /* U+0032 "2" */ + 0x9, 0xff, 0xfe, 0x0, 0x72, 0x1f, 0xfc, 0xc, + 0x3b, 0xf, 0xfe, 0x37, 0xff, 0x7, 0xff, 0x69, + 0xf, 0xfe, 0x12, 0x1f, 0xfd, 0xac, 0x3f, 0xf8, + 0x58, 0x7e, 0xbf, 0xf8, 0x3e, 0x90, 0xfd, 0x72, + 0xb, 0xc1, 0xfd, 0x8, 0x49, 0x7f, 0xf2, 0x1f, + 0xff, 0xf0, 0xc8, 0x7f, 0xf0, 0x90, 0xff, 0xe4, + 0x61, 0xff, 0xc4, 0xbf, 0xfa, 0xe, 0x7c, 0x87, + 0xe5, 0x7, 0x28, 0x3f, 0xd0, 0x60, + + /* U+0033 "3" */ + 0x3, 0xff, 0xfc, 0x0, 0xc8, 0x7f, 0xf0, 0x30, + 0xd8, 0x7f, 0xf1, 0x7f, 0xf8, 0x3f, 0xfb, 0x8, + 0x7f, 0xf0, 0x50, 0xff, 0xec, 0x61, 0xff, 0xc1, + 0xc3, 0xeb, 0xff, 0x83, 0xd2, 0x1f, 0xa8, 0xa0, + 0xa0, 0xfe, 0xa2, 0x1d, 0xff, 0xd0, 0x7f, 0xfd, + 0x90, 0x21, 0xff, 0xe6, 0xc3, 0x5f, 0xfc, 0x87, + 0x48, 0x7e, 0x45, 0x1, 0x41, 0xfe, 0x60, 0x80, + + /* U+0034 "4" */ + 0xf, 0xfe, 0x35, 0x87, 0xfd, 0x60, 0x4c, 0x3f, + 0xa4, 0x3f, 0xf8, 0x68, 0x7f, 0xf5, 0xd0, 0xff, + 0xe0, 0xa1, 0x90, 0x21, 0xff, 0xd0, 0xc3, 0x61, + 0xfb, 0xd, 0x8f, 0xff, 0x83, 0x58, 0x87, 0xea, + 0x28, 0x28, 0x3f, 0xa8, 0x87, 0x7f, 0xf4, 0x1f, + 0xff, 0x64, 0x8, 0x7f, 0xf9, 0xb0, 0xff, 0xe0, + 0xb0, 0x7f, 0xf1, 0x1d, 0x0, + + /* U+0035 "5" */ + 0x3, 0xff, 0xfc, 0x0, 0x38, 0x7f, 0xd0, 0x26, + 0xf, 0xe9, 0xd, 0x7f, 0xf2, 0x1f, 0xfe, 0x64, + 0x8, 0x7f, 0xf4, 0xf0, 0xff, 0xe0, 0x63, 0xff, + 0xc8, 0x56, 0x21, 0xfa, 0xe, 0x83, 0xfa, 0xf0, + 0x6f, 0xfe, 0x83, 0xff, 0xe4, 0x81, 0xf, 0xff, + 0x1e, 0x15, 0xff, 0xc8, 0x69, 0xf, 0xc8, 0xa1, + 0x41, 0xfe, 0x60, 0x0, + + /* U+0036 "6" */ + 0x9, 0xff, 0xfe, 0x0, 0x4e, 0x1f, 0xf4, 0x14, + 0xc1, 0xfd, 0x21, 0xd7, 0xff, 0x21, 0xff, 0xea, + 0x40, 0x87, 0xff, 0x57, 0xf, 0xfe, 0xe, 0x3f, + 0xfc, 0x86, 0xe1, 0xf, 0xd0, 0x83, 0xb0, 0xfe, + 0xb8, 0x9, 0x7f, 0xf4, 0x1f, 0xff, 0x64, 0x8, + 0x64, 0x3f, 0xf8, 0x28, 0x7f, 0xf1, 0xf0, 0xff, + 0xb0, 0xaf, 0xff, 0x21, 0x3e, 0x43, 0xf2, 0x28, + 0xa, 0xf, 0xf3, 0x0, + + /* U+0037 "7" */ + 0x3, 0xff, 0xfc, 0x0, 0x9c, 0x3f, 0xe9, 0x4, + 0xc1, 0xfd, 0x50, 0x6b, 0xff, 0xa0, 0xff, 0xf2, + 0xa0, 0x43, 0x21, 0xff, 0xc1, 0x43, 0xff, 0xa1, + 0x83, 0xd, 0x87, 0xec, 0x36, 0x48, 0x7e, 0x50, + 0x56, 0x87, 0xfa, 0x50, 0x7f, 0xf0, 0x5d, 0xf, + 0xfe, 0x14, 0x1f, 0xfe, 0x84, 0x3f, 0xf8, 0x28, + 0x7f, 0xf6, 0x30, 0xff, 0xe0, 0xa1, 0xff, 0xc5, + 0xc4, 0x3f, 0xf8, 0x78, 0x40, + + /* U+0038 "8" */ + 0x9, 0xff, 0xfe, 0x0, 0x67, 0xf, 0xfe, 0x6, + 0x14, 0xc1, 0xff, 0xc5, 0xbf, 0xf8, 0x3f, 0xfb, + 0x48, 0x7f, 0xf0, 0x90, 0xe4, 0x8, 0x7f, 0xf4, + 0x70, 0xec, 0x3f, 0x61, 0xd8, 0xff, 0xf8, 0x3b, + 0x84, 0x3f, 0x51, 0x40, 0xec, 0x3f, 0xa8, 0x84, + 0x97, 0xff, 0x41, 0xff, 0xfa, 0x40, 0x87, 0x21, + 0xff, 0xc2, 0x43, 0xff, 0x91, 0x87, 0xfd, 0x86, + 0xbf, 0xfc, 0x86, 0x7c, 0x87, 0xe4, 0x50, 0x4a, + 0xf, 0xf3, 0x4, + + /* U+0039 "9" */ + 0x3, 0xff, 0xfc, 0x0, 0x9c, 0x3f, 0xf8, 0x18, + 0x26, 0xf, 0xfe, 0x25, 0xff, 0xc1, 0xff, 0xd8, + 0x43, 0xff, 0x82, 0x86, 0x40, 0x87, 0xff, 0x43, + 0xd, 0x87, 0xec, 0x36, 0x3f, 0xfe, 0xd, 0x62, + 0x1f, 0xa8, 0xa0, 0xa0, 0xfe, 0xa2, 0x1d, 0xff, + 0xd0, 0x7f, 0xfd, 0x90, 0x21, 0xff, 0xe6, 0xc3, + 0x5f, 0xfc, 0x87, 0x48, 0x7e, 0x45, 0x1, 0x41, + 0xfe, 0x60, 0x80, + + /* U+003A ":" */ + 0x7, 0x2, 0x14, 0x60, 0x47, 0xc1, 0xff, 0xd4, + 0xf0, 0x10, 0x22, 0x4 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 77, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 313, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 313, .box_w = 12, .box_h = 3, .ofs_x = 4, .ofs_y = 11}, + {.bitmap_index = 7, .adv_w = 0, .box_w = 4, .box_h = 3, .ofs_x = -3, .ofs_y = 0}, + {.bitmap_index = 11, .adv_w = 313, .box_w = 18, .box_h = 24, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 76, .adv_w = 313, .box_w = 6, .box_h = 23, .ofs_x = 13, .ofs_y = 1}, + {.bitmap_index = 105, .adv_w = 313, .box_w = 18, .box_h = 24, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 167, .adv_w = 313, .box_w = 17, .box_h = 24, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 223, .adv_w = 313, .box_w = 17, .box_h = 23, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 276, .adv_w = 313, .box_w = 16, .box_h = 24, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 328, .adv_w = 313, .box_w = 17, .box_h = 24, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 388, .adv_w = 313, .box_w = 17, .box_h = 24, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 449, .adv_w = 313, .box_w = 18, .box_h = 24, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 516, .adv_w = 313, .box_w = 17, .box_h = 24, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 575, .adv_w = 77, .box_w = 5, .box_h = 13, .ofs_x = 0, .ofs_y = 5} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x1, 0xd, 0xe +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 15, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + }, + { + .range_start = 48, .range_length = 11, .glyph_id_start = 5, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LV_VERSION_CHECK(8, 0, 0) +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 2, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 1, +#if LV_VERSION_CHECK(8, 0, 0) + .cache = &cache +#endif +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LV_VERSION_CHECK(8, 0, 0) +const lv_font_t seg7_24 = { +#else +lv_font_t seg7_24 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 24, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) + .underline_position = -3, + .underline_thickness = 1, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + + + +#endif /*#if SEG7_24*/ + diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_28.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_28.c new file mode 100644 index 000000000..9955fda17 --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_28.c @@ -0,0 +1,262 @@ +/******************************************************************************* + * Size: 28 px + * Bpp: 2 + * Opts: --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 28 --format lvgl --bpp 2 -o c_files//seg7_28.c + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef SEG7_28 +#define SEG7_28 1 +#endif + +#if SEG7_28 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + + /* U+0021 "!" */ + + /* U+002D "-" */ + 0xa, 0xbf, 0x90, 0x3a, 0xff, 0x40, 0x83, 0xfe, + 0x8c, 0x3f, 0xcc, + + /* U+002E "." */ + 0x14, 0x54, 0xa0, 0xa0, 0x20, + + /* U+0030 "0" */ + 0xe, 0xaf, 0xfe, 0x8, 0x7d, 0x2f, 0xff, 0x6, + 0xe, 0xf0, 0x7f, 0xf0, 0x1f, 0x4, 0x94, 0xf, + 0xf3, 0xc1, 0xf5, 0xff, 0xf4, 0x1f, 0xfc, 0x7c, + 0x3d, 0x87, 0xff, 0x59, 0x2, 0x1f, 0xfc, 0xc4, + 0x8, 0x7f, 0xf5, 0xb0, 0xff, 0xe7, 0xe1, 0xff, + 0xc7, 0x90, 0xff, 0x40, 0x42, 0xa2, 0x1f, 0xf3, + 0x40, 0x9b, 0xf, 0xfe, 0xd, 0x3, 0x98, 0x3f, + 0xec, 0x3f, 0x21, 0xfe, 0x83, 0xd8, 0x7f, 0xf5, + 0x90, 0x21, 0xe4, 0x3f, 0xf8, 0xa8, 0x7f, 0xf1, + 0x30, 0xff, 0xe7, 0xe1, 0xff, 0xd6, 0x43, 0xea, + 0xfe, 0x43, 0xf3, 0x45, 0xfe, 0xa0, 0x7a, 0xe0, + 0xff, 0xaa, 0xc, 0xe1, 0xff, 0xc2, 0x42, + + /* U+0031 "1" */ + 0xf, 0xf9, 0xc3, 0x30, 0x66, 0xe, 0xc3, 0xff, + 0x82, 0x81, 0xf, 0xfe, 0x46, 0x1f, 0xfc, 0x58, + 0x8, 0x4c, 0x87, 0x48, 0x6c, 0x3a, 0xf, 0xe4, + 0x24, 0x3f, 0xf8, 0x98, 0x7f, 0xf2, 0x10, 0x90, + 0xf4, 0x1f, 0x78, 0x20, + + /* U+0032 "2" */ + 0xe, 0xaf, 0xfe, 0x8, 0x7d, 0x2f, 0xff, 0x6, + 0xf, 0x41, 0xff, 0xc0, 0x7c, 0x1e, 0xc3, 0xfc, + 0xf0, 0x7e, 0xff, 0xfa, 0xf, 0xfe, 0x3e, 0x1f, + 0xfd, 0xd4, 0x8, 0x7f, 0xfc, 0xb0, 0xff, 0xf2, + 0x5f, 0xfd, 0x40, 0x21, 0xda, 0x1f, 0xcf, 0x40, + 0x9e, 0x81, 0xff, 0x4a, 0xe, 0x79, 0x7f, 0xb0, + 0xfe, 0x55, 0x7f, 0x7, 0xd8, 0x7f, 0xf8, 0x10, + 0xff, 0xe2, 0xa1, 0xff, 0xe0, 0xc3, 0xff, 0xb8, + 0x95, 0xfc, 0x87, 0xe7, 0x97, 0xfa, 0xf, 0xae, + 0xf, 0xfb, 0xf, 0x38, 0x7f, 0xf0, 0x50, 0xc0, + + /* U+0033 "3" */ + 0xd, 0x5f, 0xfc, 0x10, 0xf4, 0xbf, 0xfc, 0x18, + 0x3a, 0xf, 0xfe, 0x3, 0xe0, 0xec, 0x3f, 0xcf, + 0x7, 0xdf, 0xff, 0x41, 0xff, 0xc6, 0xc3, 0xff, + 0xb6, 0x81, 0xf, 0xff, 0x7e, 0x1f, 0xfe, 0x1b, + 0xff, 0xa8, 0x4, 0x36, 0x87, 0xf3, 0xd0, 0x3a, + 0xf, 0xfb, 0xa0, 0x73, 0x2f, 0xf5, 0x3, 0xf3, + 0x5f, 0xd8, 0x7f, 0xf6, 0xd0, 0x21, 0xff, 0xdb, + 0xc3, 0xff, 0xde, 0x87, 0x35, 0xfc, 0x87, 0xe6, + 0x5f, 0xea, 0x7, 0x98, 0x3f, 0xea, 0x83, 0x61, + 0xff, 0xc2, 0x42, + + /* U+0034 "4" */ + 0x2, 0x1f, 0xfc, 0x34, 0x2a, 0x7, 0xff, 0x7, + 0x80, 0x8c, 0x1f, 0xf6, 0x1f, 0x21, 0xfe, 0x83, + 0xff, 0x9b, 0x87, 0xff, 0x11, 0xf, 0xfe, 0x22, + 0x1f, 0x90, 0xff, 0xe2, 0x21, 0xff, 0xc4, 0xc3, + 0xff, 0x9b, 0x87, 0xff, 0x22, 0xbf, 0x90, 0x90, + 0xd4, 0x5f, 0xea, 0x7, 0x7a, 0xf, 0xfb, 0xa0, + 0x76, 0x1f, 0xe4, 0xa0, 0x7b, 0xff, 0xe4, 0x3f, + 0xf8, 0xd8, 0x7f, 0xf2, 0x90, 0xff, 0xe2, 0x21, + 0xff, 0xde, 0xc3, 0xff, 0xde, 0x87, 0xff, 0x12, + 0xf, 0xfe, 0x3b, 0x21, 0xff, 0xc6, 0x60, 0x80, + + /* U+0035 "5" */ + 0xd, 0x5f, 0xfc, 0x10, 0xe9, 0x7f, 0xf8, 0x30, + 0x5e, 0xf, 0xfe, 0x3, 0x1, 0x28, 0x1f, 0xe6, + 0xf, 0x5f, 0xfe, 0x83, 0xff, 0x97, 0x87, 0xff, + 0xb1, 0x2, 0x1f, 0xfe, 0xcc, 0x3f, 0xf8, 0xb7, + 0xff, 0xa0, 0xea, 0x90, 0xfe, 0x60, 0xca, 0x83, + 0xfe, 0xf8, 0x33, 0x2f, 0xf5, 0x3, 0xe6, 0xbf, + 0xb0, 0xff, 0xec, 0xa0, 0x43, 0xff, 0xb3, 0x87, + 0xff, 0xb1, 0xc, 0xd7, 0xf2, 0x1f, 0x32, 0xff, + 0x50, 0x39, 0x83, 0xfe, 0xa8, 0x2c, 0x3f, 0xf8, + 0x48, 0x0, + + /* U+0036 "6" */ + 0xe, 0xaf, 0xfe, 0x8, 0x7a, 0x5f, 0xfe, 0xc, + 0x1b, 0xc1, 0xff, 0xc0, 0x60, 0x92, 0x81, 0xfe, + 0x60, 0xfa, 0xff, 0xf4, 0x1f, 0xfc, 0xdc, 0x3f, + 0xfd, 0xe8, 0x10, 0xff, 0xf7, 0xe1, 0xff, 0xc6, + 0xbf, 0xfd, 0x7, 0xaa, 0x43, 0xf9, 0x83, 0x37, + 0x7, 0xfd, 0xf0, 0x67, 0x97, 0xfa, 0x81, 0xf2, + 0xab, 0xfb, 0xe, 0xc3, 0xff, 0xaa, 0x81, 0xe, + 0x43, 0xff, 0x88, 0x87, 0xff, 0x13, 0xf, 0xfe, + 0x6e, 0x1f, 0xfd, 0x54, 0x32, 0x57, 0xf2, 0x1f, + 0x3c, 0xbf, 0xd4, 0xe, 0xb8, 0x3f, 0xea, 0x82, + 0x70, 0xff, 0xe1, 0x20, + + /* U+0037 "7" */ + 0xd, 0x5f, 0xfc, 0x10, 0xf4, 0xbf, 0xfc, 0x18, + 0x37, 0x83, 0xff, 0x80, 0xf8, 0x9, 0x40, 0xff, + 0x3c, 0x1e, 0xbf, 0xfe, 0x83, 0xff, 0x8d, 0x87, + 0x61, 0xff, 0xd5, 0x40, 0x87, 0xff, 0x29, 0x2, + 0x1f, 0xfd, 0x5c, 0x3b, 0xf, 0xfe, 0xd4, 0x87, + 0xfa, 0x2, 0xb, 0x43, 0xfe, 0x68, 0x12, 0x1f, + 0xfc, 0x2a, 0x7, 0xff, 0x17, 0xf, 0xfe, 0x34, + 0x1f, 0xfc, 0xa4, 0x3f, 0xf8, 0x88, 0x7f, 0xf7, + 0xb0, 0xff, 0xf7, 0xa1, 0xff, 0xc4, 0x43, 0xff, + 0x8f, 0x7, 0xff, 0x23, 0xc1, 0x0, + + /* U+0038 "8" */ + 0xe, 0xaf, 0xfe, 0x8, 0x7d, 0x2f, 0xff, 0x6, + 0xe, 0xf0, 0x7f, 0xf0, 0x1f, 0x4, 0x94, 0xf, + 0xf3, 0xc1, 0xf5, 0xff, 0xf4, 0x1f, 0xfc, 0x7c, + 0x3d, 0x87, 0xff, 0x59, 0x2, 0x1f, 0xfc, 0xc4, + 0x8, 0x7f, 0xf5, 0xb0, 0xff, 0xe7, 0xe1, 0xff, + 0xc7, 0xbf, 0xfd, 0x40, 0x21, 0x54, 0x87, 0xf3, + 0xd0, 0x26, 0xe0, 0xff, 0xba, 0x7, 0x3c, 0xbf, + 0xd4, 0xf, 0xca, 0xaf, 0xec, 0x3d, 0x87, 0xff, + 0x59, 0x2, 0x1e, 0x43, 0xff, 0x8a, 0x87, 0xff, + 0x13, 0xf, 0xfe, 0x7e, 0x1f, 0xfd, 0x64, 0x39, + 0x2b, 0xf9, 0xf, 0xcf, 0x2f, 0xf5, 0x3, 0xd7, + 0x7, 0xfd, 0x50, 0x67, 0xf, 0xfe, 0x12, 0x10, + + /* U+0039 "9" */ + 0xd, 0x5f, 0xfc, 0x10, 0xf4, 0xbf, 0xfc, 0x18, + 0x37, 0x83, 0xff, 0x80, 0xf8, 0x9, 0x40, 0xff, + 0x3c, 0x1e, 0xbf, 0xfe, 0x83, 0xff, 0x8d, 0x87, + 0x61, 0xff, 0xd5, 0x40, 0x87, 0xff, 0x29, 0x2, + 0x1f, 0xfd, 0x5c, 0x3f, 0xf9, 0xb8, 0x7f, 0xf1, + 0xaf, 0xff, 0x50, 0x8, 0x2a, 0x43, 0xf9, 0xe8, + 0x12, 0xa0, 0xff, 0xba, 0x7, 0x32, 0xff, 0x50, + 0x3f, 0x35, 0xfd, 0x87, 0xff, 0x6d, 0x2, 0x1f, + 0xfd, 0xbc, 0x3f, 0xfd, 0xe8, 0x73, 0x5f, 0xc8, + 0x7e, 0x65, 0xfe, 0xa0, 0x79, 0x83, 0xfe, 0xa8, + 0x36, 0x1f, 0xfc, 0x24, 0x20, + + /* U+003A ":" */ + 0x5, 0xa0, 0x51, 0x1, 0xf, 0x76, 0x19, 0xf, + 0xfe, 0xe2, 0x1b, 0xb0, 0x21, 0xc8, 0x20, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 90, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 366, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 366, .box_w = 14, .box_h = 4, .ofs_x = 4, .ofs_y = 12}, + {.bitmap_index = 11, .adv_w = 0, .box_w = 4, .box_h = 4, .ofs_x = -3, .ofs_y = 0}, + {.bitmap_index = 16, .adv_w = 366, .box_w = 21, .box_h = 29, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 111, .adv_w = 366, .box_w = 7, .box_h = 27, .ofs_x = 15, .ofs_y = 1}, + {.bitmap_index = 147, .adv_w = 366, .box_w = 21, .box_h = 29, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 227, .adv_w = 366, .box_w = 20, .box_h = 29, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 302, .adv_w = 366, .box_w = 20, .box_h = 27, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 382, .adv_w = 366, .box_w = 19, .box_h = 29, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 456, .adv_w = 366, .box_w = 20, .box_h = 29, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 540, .adv_w = 366, .box_w = 20, .box_h = 28, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 618, .adv_w = 366, .box_w = 21, .box_h = 29, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 714, .adv_w = 366, .box_w = 20, .box_h = 29, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 799, .adv_w = 90, .box_w = 6, .box_h = 15, .ofs_x = 0, .ofs_y = 6} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x1, 0xd, 0xe +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 15, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + }, + { + .range_start = 48, .range_length = 11, .glyph_id_start = 5, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LV_VERSION_CHECK(8, 0, 0) +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 2, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 1, +#if LV_VERSION_CHECK(8, 0, 0) + .cache = &cache +#endif +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LV_VERSION_CHECK(8, 0, 0) +const lv_font_t seg7_28 = { +#else +lv_font_t seg7_28 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 29, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) + .underline_position = -3, + .underline_thickness = 1, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + + + +#endif /*#if SEG7_28*/ + diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_36.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_36.c new file mode 100644 index 000000000..41756ce93 --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_36.c @@ -0,0 +1,309 @@ +/******************************************************************************* + * Size: 36 px + * Bpp: 2 + * Opts: --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 36 --format lvgl --bpp 2 -o c_files//seg7_36.c + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef SEG7_36 +#define SEG7_36 1 +#endif + +#if SEG7_36 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + + /* U+0021 "!" */ + + /* U+002D "-" */ + 0x3, 0x5f, 0xfc, 0x0, 0xcc, 0xbf, 0xfc, 0xc, + 0xc, 0x1f, 0xfc, 0x2c, 0x43, 0xff, 0x87, 0x3, + 0xf, 0xfe, 0xe, 0x80, + + /* U+002E "." */ + 0x14, 0x6, 0x99, 0x5, 0x21, 0x72, 0x28, + + /* U+0030 "0" */ + 0xf, 0x57, 0xff, 0x11, 0xf, 0xda, 0xff, 0xf1, + 0x24, 0x39, 0x60, 0xff, 0xe2, 0x24, 0x1a, 0x9a, + 0x1f, 0xfc, 0x27, 0x90, 0xf5, 0xa1, 0xff, 0xc0, + 0x78, 0x39, 0xa, 0x9f, 0xff, 0xc1, 0x83, 0xff, + 0x99, 0x87, 0xff, 0x57, 0xf, 0xfe, 0x2a, 0x12, + 0x1f, 0xfd, 0x54, 0x3f, 0xf9, 0x28, 0x7f, 0xf2, + 0x70, 0xff, 0xea, 0xe1, 0xff, 0xda, 0x43, 0x21, + 0xff, 0xd0, 0x42, 0x50, 0x7f, 0xf0, 0x10, 0xff, + 0x30, 0x7f, 0xf0, 0xb0, 0xf3, 0x50, 0x7f, 0xf1, + 0x3a, 0x4, 0xd0, 0x3f, 0xf8, 0xb4, 0xc2, 0xc1, + 0x87, 0xff, 0xf, 0x43, 0xfa, 0xf, 0xfe, 0xe, + 0x1f, 0x21, 0xff, 0xc9, 0xc3, 0xff, 0xdf, 0x87, + 0xff, 0x15, 0xf, 0xfe, 0x42, 0x1f, 0xfd, 0x54, + 0x32, 0x1f, 0xfd, 0xac, 0x3f, 0xfa, 0xb8, 0x7f, + 0xf2, 0x50, 0xfa, 0x6b, 0xfe, 0x70, 0xff, 0x5c, + 0xbf, 0xf5, 0xc1, 0xfa, 0x88, 0x7f, 0xf0, 0x52, + 0x20, 0xae, 0xf, 0xfe, 0x24, 0x61, 0xe4, 0x3f, + 0xf8, 0xa8, 0x70, + + /* U+0031 "1" */ + 0xf, 0xfe, 0xd, 0x87, 0x48, 0x76, 0x87, 0x41, + 0xff, 0xc7, 0x42, 0x43, 0xff, 0x8f, 0x87, 0xff, + 0x2d, 0x2, 0x1f, 0xfc, 0x35, 0x7, 0xd2, 0x1f, + 0x5e, 0xe, 0xf4, 0x1b, 0xf, 0x61, 0xff, 0x61, + 0xff, 0xcb, 0x40, 0x87, 0xff, 0x2f, 0xf, 0xfe, + 0x3a, 0x14, 0x1f, 0xa0, 0xf9, 0x88, 0x39, 0xc3, + 0x0, + + /* U+0032 "2" */ + 0xf, 0x57, 0xff, 0x11, 0xf, 0xda, 0xff, 0xf1, + 0x24, 0x3e, 0x43, 0xff, 0x88, 0x90, 0x7a, 0x43, + 0xff, 0x84, 0xf2, 0x1f, 0x48, 0x7f, 0xf0, 0x1e, + 0xf, 0xf5, 0xff, 0xfc, 0x18, 0x3f, 0xf9, 0x98, + 0x7f, 0xf9, 0xd0, 0x90, 0xff, 0xff, 0x83, 0xf, + 0xff, 0xe2, 0x19, 0xf, 0xfe, 0xab, 0x5f, 0xfc, + 0x4, 0x3f, 0xe6, 0x5f, 0xfe, 0x7, 0x83, 0xf9, + 0x83, 0xff, 0x85, 0xea, 0x4, 0xf9, 0xf, 0xfe, + 0x1c, 0x28, 0x2c, 0x1e, 0xf, 0xfe, 0xe, 0x87, + 0xfa, 0xff, 0xfe, 0x8, 0x7e, 0x43, 0xff, 0xfe, + 0x1e, 0xc3, 0xff, 0xf8, 0x86, 0x43, 0xff, 0xf9, + 0x87, 0xff, 0x46, 0x6b, 0xfe, 0x43, 0xfe, 0xb9, + 0x7f, 0xea, 0x7, 0xf5, 0x10, 0xff, 0xe0, 0xa8, + 0x3d, 0x70, 0x7f, 0xf1, 0x24, 0x3e, 0x43, 0xff, + 0x8a, 0x87, 0x0, + + /* U+0033 "3" */ + 0xe, 0xaf, 0xfe, 0x22, 0x1f, 0x6b, 0xff, 0xc4, + 0x90, 0xf2, 0x1f, 0xfc, 0x44, 0x83, 0xa4, 0x3f, + 0xf8, 0x4f, 0x21, 0xe9, 0xf, 0xfe, 0x3, 0xc1, + 0xfd, 0x7f, 0xff, 0x6, 0xf, 0xfe, 0x5e, 0x1f, + 0xfe, 0x54, 0x24, 0x3f, 0xff, 0xd8, 0x7f, 0xfe, + 0x50, 0xc8, 0x7f, 0xf4, 0xda, 0xff, 0xe0, 0x21, + 0xfe, 0x65, 0xff, 0xe0, 0x78, 0x3f, 0x30, 0x7f, + 0xf0, 0xbd, 0x40, 0xe4, 0x3f, 0xf8, 0x75, 0x61, + 0xec, 0x3f, 0xf8, 0x34, 0x43, 0xfb, 0xff, 0xf8, + 0x30, 0x7f, 0xf4, 0x30, 0xff, 0xff, 0x21, 0xff, + 0xc7, 0x43, 0xff, 0xfd, 0x87, 0xff, 0xa5, 0xf, + 0x9a, 0xff, 0x9c, 0x3f, 0xd4, 0x5f, 0xfa, 0xe0, + 0xfd, 0xa1, 0xff, 0xc1, 0x48, 0x83, 0x61, 0xff, + 0xc4, 0x8c, 0x39, 0xf, 0xfe, 0x2a, 0x1c, + + /* U+0034 "4" */ + 0x3, 0x7, 0xff, 0x19, 0x82, 0x94, 0x1f, 0xfc, + 0x46, 0x43, 0xa4, 0x3f, 0xf8, 0x4c, 0x19, 0xa, + 0xf, 0xfe, 0xb, 0x7, 0xff, 0x2f, 0xf, 0xfe, + 0x9e, 0x1f, 0xfc, 0x54, 0x24, 0x3f, 0xfa, 0x68, + 0x7f, 0xf2, 0x10, 0xff, 0xe4, 0xe1, 0xff, 0xd3, + 0xc3, 0xff, 0xb2, 0x86, 0x43, 0xff, 0x9c, 0x84, + 0x95, 0xff, 0xc0, 0x43, 0xf9, 0xe5, 0xff, 0xe0, + 0x78, 0x39, 0xa7, 0x7, 0xff, 0xb, 0xd4, 0x9, + 0x60, 0xff, 0xe1, 0xd5, 0x87, 0xb0, 0xff, 0xe0, + 0xd1, 0xf, 0xef, 0xff, 0xe0, 0xc1, 0xff, 0xd0, + 0xc3, 0xff, 0xfc, 0x87, 0xff, 0x1d, 0xf, 0xff, + 0xf6, 0x1f, 0xfe, 0x94, 0x3f, 0xf9, 0x18, 0x7f, + 0xf3, 0x18, 0x3f, 0xf9, 0x8a, 0x20, 0xff, 0xe5, + 0x58, 0x60, + + /* U+0035 "5" */ + 0xe, 0xaf, 0xfe, 0x22, 0x1d, 0xaf, 0xff, 0x12, + 0x40, 0xb0, 0x7f, 0xf1, 0x14, 0xa, 0x68, 0x7f, + 0xf0, 0x98, 0x3a, 0xd0, 0xff, 0xe0, 0x30, 0x48, + 0x54, 0xff, 0xfe, 0x4, 0x1f, 0xfe, 0x6c, 0x3f, + 0xfc, 0xa8, 0x7f, 0xf1, 0x90, 0xff, 0xf2, 0xe1, + 0xff, 0xf3, 0x42, 0x4a, 0xff, 0xe0, 0x7, 0xe7, + 0x97, 0xff, 0x81, 0x86, 0x69, 0xc1, 0xff, 0xc2, + 0xc3, 0x2c, 0x1f, 0xfc, 0x3a, 0x70, 0x6c, 0x3f, + 0xf8, 0x34, 0x43, 0xef, 0xff, 0xe0, 0xc1, 0xff, + 0xce, 0xc3, 0xff, 0xf0, 0x87, 0xff, 0x15, 0xf, + 0xff, 0xc6, 0x1f, 0xfe, 0x54, 0x39, 0xaf, 0xf9, + 0xc3, 0xf5, 0x17, 0xfe, 0xb8, 0x3d, 0xa1, 0xff, + 0xc1, 0x48, 0x81, 0x87, 0xff, 0x12, 0x30, 0x90, + 0xff, 0xe2, 0xa1, 0x0, + + /* U+0036 "6" */ + 0xf, 0x57, 0xff, 0x11, 0xf, 0x6b, 0xff, 0xc4, + 0x90, 0x96, 0xf, 0xfe, 0x22, 0x82, 0xa6, 0x87, + 0xff, 0x9, 0x83, 0xd6, 0x87, 0xff, 0x1, 0x83, + 0x21, 0x53, 0xff, 0xf8, 0x10, 0x7f, 0xfa, 0x70, + 0xff, 0xf3, 0xa1, 0xff, 0xc7, 0x43, 0xff, 0xcf, + 0x87, 0xff, 0xd9, 0x9, 0x2b, 0xff, 0x80, 0x1f, + 0xcf, 0x2f, 0xff, 0x3, 0xe, 0x69, 0xc1, 0xff, + 0xc2, 0xc3, 0x34, 0x43, 0xff, 0x87, 0x4e, 0x30, + 0x78, 0x3f, 0xf8, 0x34, 0x43, 0xeb, 0xff, 0xf8, + 0x30, 0x72, 0x1f, 0xfc, 0x9c, 0x3f, 0xfd, 0x38, + 0x7f, 0xf1, 0x50, 0xff, 0xe3, 0x21, 0xff, 0xd1, + 0x43, 0x21, 0xff, 0xd8, 0xc3, 0xff, 0xa3, 0x87, + 0xff, 0x25, 0xe, 0x9a, 0xff, 0x9c, 0x3f, 0x5c, + 0xbf, 0xf5, 0xc1, 0xea, 0x21, 0xff, 0xc1, 0x48, + 0x8b, 0x83, 0xff, 0x89, 0x18, 0x64, 0x3f, 0xf8, + 0xa8, 0x40, + + /* U+0037 "7" */ + 0xe, 0xaf, 0xfe, 0x22, 0x1f, 0x6b, 0xff, 0xc4, + 0x90, 0xcb, 0x7, 0xff, 0x11, 0x20, 0xa9, 0xa1, + 0xff, 0xc2, 0x49, 0xe, 0xb4, 0x3f, 0xf8, 0x8, + 0x86, 0x42, 0xa7, 0xff, 0xf0, 0x50, 0xff, 0xe5, + 0xe1, 0xff, 0xd3, 0xc3, 0xff, 0x8a, 0x84, 0x87, + 0xff, 0x4d, 0xf, 0xfe, 0x42, 0x1f, 0xfc, 0x9c, + 0x3f, 0xfa, 0x78, 0x7f, 0xf6, 0x50, 0xc8, 0x7f, + 0xf3, 0x90, 0x94, 0x1f, 0xfc, 0x4, 0x3f, 0xa8, + 0x1f, 0xfc, 0x2c, 0x39, 0xb4, 0x3f, 0xf8, 0x9d, + 0x84, 0x87, 0xff, 0x1b, 0xa0, 0x7f, 0xf2, 0x70, + 0xff, 0xe5, 0xe1, 0xff, 0xd0, 0xc3, 0xff, 0xfc, + 0x87, 0xff, 0x1d, 0xf, 0xff, 0xf6, 0x1f, 0xfe, + 0x94, 0x3f, 0xf9, 0x10, 0x7f, 0xf3, 0x60, 0xff, + 0xe6, 0x31, 0x7, 0xff, 0x29, 0xc3, 0x0, + + /* U+0038 "8" */ + 0xf, 0x57, 0xff, 0x11, 0xf, 0xda, 0xff, 0xf1, + 0x24, 0x39, 0x60, 0xff, 0xe2, 0x24, 0x1a, 0x9a, + 0x1f, 0xfc, 0x27, 0x90, 0xf5, 0xa1, 0xff, 0xc0, + 0x78, 0x39, 0xa, 0x9f, 0xff, 0xc1, 0x83, 0xff, + 0x99, 0x87, 0xff, 0x57, 0xf, 0xfe, 0x2a, 0x12, + 0x1f, 0xfd, 0x54, 0x3f, 0xf9, 0x28, 0x7f, 0xf2, + 0x70, 0xff, 0xea, 0xe1, 0xff, 0xda, 0x43, 0x21, + 0xff, 0xd0, 0x42, 0x4a, 0xff, 0xe0, 0x21, 0xfe, + 0x79, 0x7f, 0xf8, 0x1e, 0xf, 0x34, 0xe0, 0xff, + 0xe1, 0x7a, 0x81, 0x34, 0x43, 0xff, 0x87, 0x56, + 0x16, 0xf, 0x7, 0xff, 0x6, 0x88, 0x7f, 0x5f, + 0xff, 0xc1, 0x83, 0xe4, 0x3f, 0xf9, 0x38, 0x7f, + 0xfb, 0xf0, 0xff, 0xe2, 0xa1, 0xff, 0xc8, 0x43, + 0xff, 0xaa, 0x86, 0x43, 0xff, 0xb5, 0x87, 0xff, + 0x57, 0xf, 0xfe, 0x4a, 0x1f, 0x4d, 0x7f, 0xce, + 0x1f, 0xeb, 0x97, 0xfe, 0xb8, 0x3f, 0x51, 0xf, + 0xfe, 0xa, 0x44, 0x15, 0xc1, 0xff, 0xc4, 0x8c, + 0x3c, 0x87, 0xff, 0x15, 0xe, + + /* U+0039 "9" */ + 0xe, 0xaf, 0xfe, 0x22, 0x1f, 0x6b, 0xff, 0xc4, + 0x90, 0xcb, 0x7, 0xff, 0x11, 0x20, 0xa9, 0xa1, + 0xff, 0xc2, 0x79, 0xe, 0xb4, 0x3f, 0xf8, 0xf, + 0x6, 0x42, 0xa7, 0xff, 0xf0, 0x60, 0xff, 0xe5, + 0xe1, 0xff, 0xd3, 0xc3, 0xff, 0x8a, 0x84, 0x87, + 0xff, 0x4d, 0xf, 0xfe, 0x42, 0x1f, 0xfc, 0x9c, + 0x3f, 0xfa, 0x78, 0x7f, 0xf6, 0x50, 0xc8, 0x7f, + 0xf3, 0x90, 0x92, 0xbf, 0xf8, 0x8, 0x7f, 0x3c, + 0xbf, 0xfc, 0xf, 0x7, 0x34, 0xe0, 0xff, 0xe1, + 0x7a, 0x81, 0x2c, 0x1f, 0xfc, 0x3a, 0xb0, 0xf6, + 0x1f, 0xfc, 0x1a, 0x21, 0xfd, 0xff, 0xfc, 0x18, + 0x3f, 0xfa, 0x18, 0x7f, 0xff, 0x90, 0xff, 0xe3, + 0xa1, 0xff, 0xfe, 0xc3, 0xff, 0xd2, 0x87, 0xcd, + 0x7f, 0xce, 0x1f, 0xea, 0x2f, 0xfd, 0x70, 0x7e, + 0xd0, 0xff, 0xe0, 0xa4, 0x41, 0xb0, 0xff, 0xe2, + 0x46, 0x1c, 0x87, 0xff, 0x15, 0xe, + + /* U+003A ":" */ + 0x9, 0x41, 0xaa, 0xc2, 0x42, 0x43, 0xfb, 0x2, + 0x82, 0xf4, 0x1f, 0xff, 0x65, 0x6, 0xea, 0xf, + 0x21, 0xfe, 0x81, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 115, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 470, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 470, .box_w = 18, .box_h = 5, .ofs_x = 6, .ofs_y = 16}, + {.bitmap_index = 20, .adv_w = 0, .box_w = 5, .box_h = 5, .ofs_x = -4, .ofs_y = 0}, + {.bitmap_index = 27, .adv_w = 470, .box_w = 26, .box_h = 37, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 166, .adv_w = 470, .box_w = 8, .box_h = 35, .ofs_x = 20, .ofs_y = 1}, + {.bitmap_index = 215, .adv_w = 470, .box_w = 26, .box_h = 37, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 330, .adv_w = 470, .box_w = 25, .box_h = 37, .ofs_x = 3, .ofs_y = 0}, + {.bitmap_index = 441, .adv_w = 470, .box_w = 25, .box_h = 34, .ofs_x = 3, .ofs_y = 1}, + {.bitmap_index = 547, .adv_w = 470, .box_w = 23, .box_h = 37, .ofs_x = 3, .ofs_y = 0}, + {.bitmap_index = 655, .adv_w = 470, .box_w = 24, .box_h = 37, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 777, .adv_w = 470, .box_w = 25, .box_h = 36, .ofs_x = 3, .ofs_y = 1}, + {.bitmap_index = 888, .adv_w = 470, .box_w = 26, .box_h = 37, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1029, .adv_w = 470, .box_w = 25, .box_h = 37, .ofs_x = 3, .ofs_y = 0}, + {.bitmap_index = 1155, .adv_w = 115, .box_w = 7, .box_h = 20, .ofs_x = 0, .ofs_y = 8} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x1, 0xd, 0xe +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 15, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + }, + { + .range_start = 48, .range_length = 11, .glyph_id_start = 5, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LV_VERSION_CHECK(8, 0, 0) +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 2, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 1, +#if LV_VERSION_CHECK(8, 0, 0) + .cache = &cache +#endif +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LV_VERSION_CHECK(8, 0, 0) +const lv_font_t seg7_36 = { +#else +lv_font_t seg7_36 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 37, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) + .underline_position = -4, + .underline_thickness = 2, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + + + +#endif /*#if SEG7_36*/ + diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_48.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_48.c new file mode 100644 index 000000000..a09f554a6 --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_48.c @@ -0,0 +1,368 @@ +/******************************************************************************* + * Size: 48 px + * Bpp: 2 + * Opts: --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 48 --format lvgl --bpp 2 -o c_files//seg7_48.c + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef SEG7_48 +#define SEG7_48 1 +#endif + +#if SEG7_48 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + + /* U+0021 "!" */ + + /* U+002D "-" */ + 0xb, 0xff, 0xf8, 0xa8, 0x6c, 0x3f, 0xf8, 0xb2, + 0xc, 0x3f, 0xf8, 0xf0, 0x7f, 0xf2, 0xd2, 0xf, + 0xfe, 0x3e, 0x8c, 0x1f, 0xfc, 0x5c, 0x0, + + /* U+002E "." */ + 0x5, 0xe4, 0x12, 0x9, 0x10, 0xd0, 0x7e, 0x43, + 0x44, 0x82, 0x40, + + /* U+0030 "0" */ + 0xf, 0xdf, 0xff, 0xcb, 0x43, 0xfd, 0x87, 0xff, + 0x2e, 0xf, 0xca, 0xc3, 0xff, 0x97, 0xc1, 0xe6, + 0x8c, 0x1f, 0xfc, 0x9e, 0x70, 0xec, 0x11, 0x7, + 0xff, 0x1f, 0x90, 0xff, 0xa6, 0xf, 0xfe, 0x2f, + 0x90, 0xff, 0xe0, 0xef, 0xff, 0xf1, 0x83, 0xfc, + 0x87, 0xff, 0xfc, 0x3f, 0xf8, 0xa8, 0x72, 0x1f, + 0xff, 0xf0, 0xe4, 0x3f, 0xf8, 0xb8, 0x76, 0x19, + 0xf, 0xfe, 0xe6, 0x1f, 0xfc, 0xb4, 0x36, 0x1f, + 0xfc, 0xb4, 0x3f, 0xfc, 0xe8, 0x7f, 0xf4, 0x10, + 0xff, 0xff, 0x87, 0xff, 0x2d, 0xf, 0xe7, 0xf, + 0xfe, 0x36, 0x1f, 0xfc, 0x16, 0xf, 0xfe, 0x44, + 0x1f, 0xca, 0xa0, 0x7f, 0xf2, 0x59, 0x58, 0x7f, + 0xf5, 0x90, 0xcb, 0x48, 0x7f, 0xf2, 0x68, 0xb0, + 0x7e, 0x90, 0xff, 0xe3, 0xc8, 0x48, 0x6c, 0x34, + 0x1f, 0xfc, 0x69, 0xf, 0xfe, 0x1a, 0x1f, 0xfc, + 0x54, 0x3f, 0xf8, 0x88, 0x7f, 0xf4, 0x10, 0xff, + 0xff, 0x87, 0xff, 0x15, 0xe, 0x43, 0xff, 0xf3, + 0x86, 0x43, 0x90, 0xff, 0xe2, 0xe1, 0xff, 0xff, + 0x43, 0x61, 0xd8, 0x7f, 0xf1, 0x50, 0xff, 0xff, + 0x87, 0x21, 0xc8, 0x7f, 0xf5, 0x7b, 0xff, 0xf8, + 0x96, 0x1f, 0xfc, 0x2e, 0x43, 0xff, 0x88, 0xd8, + 0x48, 0x7e, 0xf2, 0x1f, 0xfc, 0x65, 0x60, 0xc3, + 0xb7, 0xc1, 0xff, 0xc9, 0x9a, 0x21, 0xeb, 0xf, + 0xfe, 0x5c, 0xa0, 0xfd, 0x87, 0xff, 0x2e, 0xf, + 0x80, + + /* U+0031 "1" */ + 0xf, 0xfe, 0x3f, 0x7, 0xce, 0x21, 0xe6, 0xf, + 0xcc, 0x1f, 0xd0, 0x7f, 0xf3, 0x90, 0xc8, 0x7f, + 0xf3, 0xf0, 0xd8, 0x7f, 0xf3, 0xd0, 0xc8, 0x7f, + 0xfa, 0x90, 0xc8, 0x74, 0x87, 0xfa, 0xf, 0xfb, + 0xe8, 0x3e, 0xf9, 0xf, 0x61, 0x21, 0xd8, 0x7f, + 0x61, 0xff, 0xe4, 0x43, 0x21, 0xff, 0xcf, 0xc3, + 0x61, 0xff, 0xcf, 0x43, 0x21, 0xff, 0xd4, 0x83, + 0xfc, 0xa0, 0xff, 0x48, 0x10, 0xfa, 0x48, 0x3f, + 0x58, 0x70, + + /* U+0032 "2" */ + 0xf, 0xdf, 0xff, 0xcb, 0x43, 0xfd, 0x87, 0xff, + 0x2e, 0xf, 0xf6, 0x1f, 0xfc, 0xbe, 0x43, 0xfa, + 0xf, 0xfe, 0x4f, 0x30, 0x7f, 0x30, 0x7f, 0xf1, + 0xf9, 0xf, 0xfe, 0x3, 0x7, 0xff, 0x17, 0xc8, + 0x7f, 0xf0, 0x9f, 0xff, 0xe3, 0x7, 0xff, 0xfc, + 0x3f, 0xfa, 0x8, 0x72, 0x1f, 0xff, 0xf0, 0xff, + 0xe5, 0xe1, 0xd8, 0x7f, 0xfe, 0x50, 0xff, 0xe8, + 0x21, 0xff, 0xff, 0xf, 0xff, 0xf8, 0x7f, 0xf4, + 0x50, 0xff, 0xbf, 0xff, 0x8a, 0xe1, 0xff, 0xc3, + 0xc3, 0xff, 0x8b, 0x30, 0x7f, 0xf0, 0x70, 0xff, + 0xe3, 0xc4, 0xa8, 0x3a, 0x88, 0x7f, 0xf2, 0xda, + 0x7, 0x2d, 0x38, 0x7f, 0xf1, 0xf4, 0x3f, 0xf8, + 0x13, 0x7, 0xff, 0x17, 0xf, 0xf6, 0x1a, 0x7f, + 0xff, 0x8a, 0x1f, 0xfc, 0x54, 0x3f, 0xfa, 0xc8, + 0x7f, 0xf4, 0x10, 0xff, 0xff, 0x87, 0xff, 0xfc, + 0x3f, 0xf9, 0x68, 0x72, 0x1f, 0xff, 0xf0, 0xff, + 0xe5, 0xe1, 0xd8, 0x7f, 0xff, 0xc3, 0xff, 0x96, + 0x87, 0x21, 0xff, 0xd5, 0xef, 0xff, 0xe2, 0x41, + 0xff, 0xc3, 0xe4, 0x3f, 0xf8, 0x8c, 0x1f, 0xfc, + 0x1f, 0x21, 0xff, 0xc6, 0x50, 0x7f, 0x6f, 0x83, + 0xff, 0x93, 0x21, 0xfd, 0x61, 0xff, 0xcb, 0x83, + 0xfd, 0x87, 0xff, 0x2e, 0xf, 0x80, + + /* U+0033 "3" */ + 0xf, 0x7f, 0xff, 0x2d, 0xf, 0xd8, 0x7f, 0xf2, + 0xe0, 0xfd, 0x87, 0xff, 0x2f, 0x90, 0xfa, 0xf, + 0xfe, 0x4f, 0x30, 0x7c, 0xc1, 0xff, 0xc7, 0xe4, + 0x3f, 0xcc, 0x1f, 0xfc, 0x5f, 0x21, 0xff, 0xc0, + 0x7f, 0xff, 0x8c, 0x1f, 0xff, 0xf0, 0xff, 0xe5, + 0x21, 0xc8, 0x7f, 0xff, 0xc3, 0xff, 0x8b, 0x87, + 0x61, 0xff, 0xf5, 0x43, 0xff, 0x9c, 0x87, 0xff, + 0xfc, 0x3f, 0xff, 0xe1, 0xff, 0xc7, 0x43, 0xfb, + 0xff, 0xf8, 0xae, 0x1f, 0xfc, 0x1c, 0x3f, 0xf8, + 0xb3, 0x7, 0xfd, 0x87, 0xff, 0x1e, 0x25, 0x41, + 0xff, 0xd2, 0xf0, 0x7e, 0xc3, 0xff, 0x8f, 0xea, + 0x90, 0xfd, 0x7, 0xff, 0x17, 0x90, 0x90, 0xfc, + 0xff, 0xff, 0x16, 0x43, 0xff, 0xa6, 0x87, 0xff, + 0xfc, 0x3f, 0xfd, 0x68, 0x72, 0x1f, 0xff, 0xf0, + 0xff, 0xe2, 0xe1, 0xd8, 0x7f, 0xfd, 0x50, 0xff, + 0xe7, 0x21, 0xff, 0xff, 0xf, 0xfe, 0xd5, 0xff, + 0xfc, 0x4b, 0xf, 0xfe, 0xc, 0x87, 0xff, 0x11, + 0xb0, 0x90, 0xfb, 0x43, 0xff, 0x8c, 0xac, 0x18, + 0x7b, 0xf, 0xfe, 0x4c, 0xd1, 0xe, 0xc3, 0xff, + 0x97, 0x28, 0x3d, 0x87, 0xff, 0x2e, 0xf, 0x80, + + /* U+0034 "4" */ + 0x9, 0x41, 0xff, 0xcd, 0x83, 0x34, 0x43, 0xff, + 0x97, 0x38, 0x58, 0x24, 0x3f, 0xf9, 0x32, 0x1f, + 0xd0, 0x7f, 0xf2, 0x34, 0x3f, 0xec, 0x3f, 0xf8, + 0xd8, 0x7e, 0x43, 0xff, 0xfe, 0x1f, 0xfc, 0x14, + 0x39, 0xf, 0xff, 0xf2, 0x1f, 0xfc, 0x5c, 0x3b, + 0x2, 0x1f, 0xfd, 0xac, 0x3f, 0xf9, 0x68, 0x30, + 0xff, 0xe5, 0xa1, 0xff, 0xe3, 0x43, 0xff, 0x9c, + 0x87, 0xff, 0xfc, 0x3f, 0xf8, 0xe8, 0x7c, 0xff, + 0xff, 0x19, 0xc3, 0xfe, 0x6c, 0x3f, 0xf8, 0xb3, + 0x7, 0xca, 0xa6, 0x1f, 0xfc, 0x79, 0x95, 0x85, + 0x44, 0x3f, 0xf9, 0x49, 0xe4, 0x3e, 0x83, 0xff, + 0x8f, 0x95, 0x21, 0xf3, 0x7, 0xff, 0x17, 0xa0, + 0x48, 0x7e, 0x7f, 0xff, 0x8b, 0x21, 0xff, 0xd3, + 0x43, 0xff, 0xfe, 0x1f, 0xfe, 0xb4, 0x39, 0xf, + 0xff, 0xf8, 0x7f, 0xf1, 0x70, 0xec, 0x3f, 0xfe, + 0xa8, 0x7f, 0xf3, 0x90, 0xff, 0xff, 0x87, 0xff, + 0xb3, 0xf, 0xfe, 0xae, 0x12, 0x1f, 0xfd, 0x18, + 0x18, 0x7f, 0xf4, 0x5a, 0x21, 0x80, + + /* U+0035 "5" */ + 0xf, 0x7f, 0xff, 0x2d, 0xf, 0x61, 0xff, 0xcb, + 0x83, 0x2b, 0xf, 0xfe, 0x5e, 0x13, 0x46, 0xf, + 0xfe, 0x4e, 0x1b, 0x4, 0x41, 0xff, 0xc7, 0xc3, + 0xfa, 0x60, 0xff, 0xe2, 0xe1, 0xff, 0x6f, 0xff, + 0xf1, 0x43, 0xe4, 0x3f, 0xff, 0xe1, 0xff, 0xff, + 0xf, 0xe4, 0x3f, 0xf9, 0x88, 0x7f, 0xf6, 0x30, + 0xff, 0xe6, 0x61, 0xff, 0xf7, 0x43, 0xff, 0x98, + 0x87, 0xff, 0xd9, 0xf, 0xfe, 0x8b, 0x7f, 0xff, + 0x15, 0xf, 0xf3, 0x61, 0xff, 0xc5, 0x90, 0xf2, + 0xa9, 0x87, 0xff, 0x1e, 0x43, 0xa8, 0x87, 0xff, + 0x2d, 0x60, 0xf6, 0x1f, 0xfc, 0x7f, 0x54, 0x87, + 0xa0, 0xff, 0xe2, 0xf2, 0x12, 0x1e, 0x7f, 0xff, + 0x8b, 0x21, 0xff, 0xd1, 0x43, 0xff, 0xfe, 0x1f, + 0xfe, 0x34, 0x39, 0xf, 0xff, 0xf8, 0x7f, 0xd8, + 0x76, 0x1f, 0xff, 0x14, 0x3f, 0xf9, 0x88, 0x7f, + 0xff, 0xc3, 0xff, 0xa5, 0x7f, 0xff, 0x12, 0xc3, + 0xfe, 0x90, 0xff, 0xe2, 0x36, 0x12, 0x1d, 0xa1, + 0xff, 0xc6, 0x56, 0xc, 0x36, 0x1f, 0xfc, 0x99, + 0xa2, 0x16, 0x1f, 0xfc, 0xb9, 0x41, 0xb0, 0xff, + 0xe5, 0xc1, 0xc0, + + /* U+0036 "6" */ + 0xf, 0xdf, 0xff, 0xcb, 0x43, 0xf6, 0x1f, 0xfc, + 0xb8, 0x3c, 0xac, 0x3f, 0xf9, 0x78, 0x73, 0x46, + 0xf, 0xfe, 0x4e, 0x1e, 0xc1, 0x10, 0x7f, 0xf1, + 0xf0, 0xff, 0xa6, 0xf, 0xfe, 0x2e, 0x1f, 0xfc, + 0x1d, 0xff, 0xfe, 0x28, 0x7f, 0x21, 0xff, 0xff, + 0xf, 0xff, 0xf8, 0x7f, 0xf1, 0xd0, 0xff, 0xe7, + 0x21, 0xff, 0xda, 0xc3, 0xff, 0x9d, 0x87, 0xff, + 0xed, 0xf, 0xfe, 0x72, 0x1f, 0xff, 0xa4, 0x3f, + 0xfa, 0x6d, 0xff, 0xfc, 0x54, 0x3f, 0xf8, 0xd, + 0x87, 0xff, 0x16, 0x43, 0xf2, 0xa9, 0x87, 0xff, + 0x1e, 0x43, 0xff, 0xaa, 0xd0, 0x25, 0xa7, 0xf, + 0xfe, 0x3f, 0xa5, 0x83, 0xd3, 0x7, 0xff, 0x17, + 0x90, 0x90, 0x61, 0xa7, 0xff, 0xf8, 0xb2, 0x1f, + 0xfc, 0x14, 0x3f, 0xf8, 0xa8, 0x7f, 0xf0, 0x90, + 0xff, 0xe7, 0x21, 0xff, 0xff, 0xf, 0xfe, 0xa, + 0x1c, 0x87, 0xff, 0xd7, 0x2, 0x1c, 0x87, 0xff, + 0x17, 0xf, 0xff, 0xda, 0xc, 0x3b, 0xf, 0xfe, + 0x2a, 0x1f, 0xff, 0xe4, 0x39, 0xf, 0xfe, 0x9f, + 0x7f, 0xff, 0x12, 0xc3, 0xff, 0x81, 0xc8, 0x7f, + 0xf1, 0x1b, 0x9, 0xf, 0x79, 0xf, 0xfe, 0x32, + 0xb0, 0x61, 0x6f, 0x83, 0xff, 0x93, 0x34, 0x43, + 0x58, 0x7f, 0xf2, 0xe5, 0x7, 0xb0, 0xff, 0xe5, + 0xc1, 0xc0, + + /* U+0037 "7" */ + 0xf, 0x7f, 0xff, 0x2d, 0xf, 0xd8, 0x7f, 0xf2, + 0xe0, 0xf9, 0x83, 0xff, 0x97, 0xc8, 0x4f, 0x10, + 0x7f, 0xf2, 0x79, 0x82, 0xc1, 0x10, 0x7f, 0xf1, + 0xf9, 0xf, 0xe9, 0x41, 0xff, 0xc5, 0xf2, 0x1f, + 0xf7, 0x7f, 0xff, 0x18, 0x3f, 0x21, 0xff, 0xff, + 0xf, 0xfe, 0xa, 0x1c, 0x87, 0xff, 0xf9, 0xf, + 0xfe, 0x2e, 0x1d, 0x81, 0xf, 0xfe, 0xd6, 0x1f, + 0xfc, 0xb4, 0x18, 0x7f, 0xf2, 0xd0, 0xff, 0xf1, + 0xa1, 0xff, 0xce, 0x43, 0xff, 0xf4, 0x87, 0xff, + 0x2d, 0xf, 0x98, 0x3f, 0xf8, 0xd8, 0x7f, 0xcc, + 0x1f, 0xfc, 0x88, 0x3e, 0xac, 0x1f, 0xfc, 0x96, + 0xb0, 0x4b, 0x7, 0xff, 0x33, 0xc1, 0xff, 0xd1, + 0xa2, 0xc1, 0xff, 0xcf, 0x90, 0x90, 0xff, 0xe7, + 0x48, 0x7f, 0xf4, 0xd0, 0xff, 0xff, 0x87, 0xff, + 0xad, 0xe, 0x43, 0xff, 0xfe, 0x1f, 0xfc, 0x5c, + 0x3b, 0xf, 0xff, 0xaa, 0x1f, 0xfc, 0xe4, 0x3f, + 0xff, 0xe1, 0xff, 0xec, 0xc3, 0xff, 0xab, 0x84, + 0x87, 0xff, 0x46, 0x6, 0x1f, 0xfd, 0x16, 0x88, + 0x60, + + /* U+0038 "8" */ + 0xf, 0xdf, 0xff, 0xcb, 0x43, 0xfd, 0x87, 0xff, + 0x2e, 0xf, 0xca, 0xc3, 0xff, 0x97, 0xc8, 0x73, + 0x46, 0xf, 0xfe, 0x4f, 0x30, 0x76, 0x8, 0x83, + 0xff, 0x8f, 0xc8, 0x7f, 0xd3, 0x7, 0xff, 0x17, + 0xc8, 0x7f, 0xf0, 0x77, 0xff, 0xf8, 0xc1, 0xfe, + 0x43, 0xff, 0xfe, 0x1f, 0xfc, 0x54, 0x39, 0xf, + 0xff, 0xf8, 0x72, 0x1f, 0xfc, 0x5c, 0x3b, 0xc, + 0x87, 0xff, 0x73, 0xf, 0xfe, 0x5a, 0x1b, 0xf, + 0xfe, 0x5a, 0x1f, 0xfe, 0x74, 0x3f, 0xfa, 0x8, + 0x7f, 0xff, 0x90, 0xff, 0xe5, 0xa1, 0xfc, 0xdf, + 0xff, 0xc5, 0x70, 0xff, 0xe0, 0xb6, 0x1f, 0xfc, + 0x59, 0x83, 0xf9, 0x54, 0xc3, 0xff, 0x8f, 0x12, + 0xa0, 0xff, 0xed, 0xad, 0x38, 0x7f, 0xf1, 0xfd, + 0x2c, 0x1f, 0xa6, 0xf, 0xfe, 0x2f, 0x21, 0x21, + 0xb0, 0xd3, 0xff, 0xfc, 0x59, 0xf, 0xfe, 0x1a, + 0x1f, 0xfc, 0x54, 0x3f, 0xf8, 0x88, 0x7f, 0xf4, + 0x10, 0xff, 0xff, 0x87, 0xff, 0x15, 0xe, 0x43, + 0xff, 0xf3, 0x86, 0x43, 0x90, 0xff, 0xe2, 0xe1, + 0xff, 0xff, 0x43, 0x61, 0xd8, 0x7f, 0xf1, 0x50, + 0xff, 0xff, 0x87, 0x21, 0xc8, 0x7f, 0xf5, 0x7b, + 0xff, 0xf8, 0x96, 0x1f, 0xfc, 0x2e, 0x43, 0xff, + 0x88, 0xd8, 0x48, 0x7e, 0xf2, 0x1f, 0xfc, 0x65, + 0x60, 0xc3, 0xb7, 0xc1, 0xff, 0xc9, 0x9a, 0x21, + 0xeb, 0xf, 0xfe, 0x5c, 0xa0, 0xfd, 0x87, 0xff, + 0x2e, 0xf, 0x80, + + /* U+0039 "9" */ + 0xf, 0x7f, 0xff, 0x2d, 0xf, 0xd8, 0x7f, 0xf2, + 0xe0, 0xf2, 0xb0, 0xff, 0xe5, 0xf2, 0x13, 0x46, + 0xf, 0xfe, 0x4f, 0x30, 0x58, 0x22, 0xf, 0xfe, + 0x3f, 0x21, 0xfd, 0x30, 0x7f, 0xf1, 0x7c, 0x87, + 0xfd, 0xbf, 0xff, 0xc6, 0xf, 0xc8, 0x7f, 0xff, + 0xc3, 0xff, 0x82, 0x87, 0x21, 0xff, 0xfe, 0x43, + 0xff, 0x8b, 0x87, 0x60, 0x43, 0xff, 0xb5, 0x87, + 0xff, 0x2d, 0x6, 0x1f, 0xfc, 0xb4, 0x3f, 0xfc, + 0x68, 0x7f, 0xf3, 0x90, 0xff, 0xfd, 0x21, 0xff, + 0xcb, 0x43, 0xe6, 0xff, 0xfe, 0x2b, 0x87, 0xfc, + 0xd8, 0x7f, 0xf1, 0x66, 0xf, 0x95, 0x4c, 0x3f, + 0xf8, 0xf1, 0x2a, 0xa, 0x88, 0x7f, 0xf3, 0x3c, + 0x1f, 0xb0, 0xff, 0xe3, 0xfa, 0xa4, 0x3f, 0x41, + 0xff, 0xc5, 0xe4, 0x24, 0x3f, 0x3f, 0xff, 0xc5, + 0x90, 0xff, 0xe9, 0xa1, 0xff, 0xff, 0xf, 0xff, + 0x5a, 0x1c, 0x87, 0xff, 0xfc, 0x3f, 0xf8, 0xb8, + 0x76, 0x1f, 0xff, 0x54, 0x3f, 0xf9, 0xc8, 0x7f, + 0xff, 0xc3, 0xff, 0xb5, 0x7f, 0xff, 0x12, 0xc3, + 0xff, 0x83, 0x21, 0xff, 0xc4, 0x6c, 0x24, 0x3e, + 0xd0, 0xff, 0xe3, 0x2b, 0x6, 0x1e, 0xc3, 0xff, + 0x93, 0x34, 0x43, 0xb0, 0xff, 0xe5, 0xca, 0xf, + 0x61, 0xff, 0xcb, 0x83, 0xe0, + + /* U+003A ":" */ + 0xd, 0x79, 0xd, 0xa0, 0x83, 0xfa, 0xf, 0xfe, + 0x2c, 0x16, 0x82, 0xe, 0xbc, 0x87, 0xff, 0xfc, + 0x3f, 0xfc, 0x37, 0x90, 0xd2, 0x9, 0x9, 0xd, + 0x7, 0xff, 0x1, 0xd, 0x5, 0x20, 0x90, 0x0 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 154, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 627, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 0, .adv_w = 627, .box_w = 23, .box_h = 6, .ofs_x = 8, .ofs_y = 21}, + {.bitmap_index = 23, .adv_w = 0, .box_w = 7, .box_h = 6, .ofs_x = -6, .ofs_y = 0}, + {.bitmap_index = 34, .adv_w = 627, .box_w = 35, .box_h = 48, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 227, .adv_w = 627, .box_w = 11, .box_h = 45, .ofs_x = 26, .ofs_y = 2}, + {.bitmap_index = 293, .adv_w = 627, .box_w = 35, .box_h = 48, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 467, .adv_w = 627, .box_w = 33, .box_h = 48, .ofs_x = 4, .ofs_y = 0}, + {.bitmap_index = 627, .adv_w = 627, .box_w = 33, .box_h = 44, .ofs_x = 4, .ofs_y = 2}, + {.bitmap_index = 769, .adv_w = 627, .box_w = 31, .box_h = 48, .ofs_x = 4, .ofs_y = 0}, + {.bitmap_index = 924, .adv_w = 627, .box_w = 33, .box_h = 48, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1102, .adv_w = 627, .box_w = 33, .box_h = 46, .ofs_x = 4, .ofs_y = 2}, + {.bitmap_index = 1247, .adv_w = 627, .box_w = 35, .box_h = 48, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1442, .adv_w = 627, .box_w = 33, .box_h = 48, .ofs_x = 4, .ofs_y = 0}, + {.bitmap_index = 1615, .adv_w = 154, .box_w = 9, .box_h = 26, .ofs_x = 0, .ofs_y = 11} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x1, 0xd, 0xe +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 15, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + }, + { + .range_start = 48, .range_length = 11, .glyph_id_start = 5, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LV_VERSION_CHECK(8, 0, 0) +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 2, + .bpp = 2, + .kern_classes = 0, + .bitmap_format = 1, +#if LV_VERSION_CHECK(8, 0, 0) + .cache = &cache +#endif +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LV_VERSION_CHECK(8, 0, 0) +const lv_font_t seg7_48 = { +#else +lv_font_t seg7_48 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 48, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) + .underline_position = -6, + .underline_thickness = 2, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + + + +#endif /*#if SEG7_48*/ + diff --git a/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_8.c b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_8.c new file mode 100644 index 000000000..296fa8d75 --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/src/fonts/seg7_8.c @@ -0,0 +1,171 @@ +/******************************************************************************* + * Size: 8 px + * Bpp: 1 + * Opts: --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 8 --format lvgl --bpp 1 -o c_files//seg7_8.c + ******************************************************************************/ + +#ifdef LV_LVGL_H_INCLUDE_SIMPLE +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +#ifndef SEG7_8 +#define SEG7_8 1 +#endif + +#if SEG7_8 + +/*----------------- + * BITMAPS + *----------------*/ + +/*Store the image of the glyphs*/ +static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = { + /* U+0020 " " */ + 0x0, + + /* U+0021 "!" */ + 0x0, + + /* U+002D "-" */ + 0xf0, + + /* U+002E "." */ + 0xc0, + + /* U+0030 "0" */ + 0x74, 0x63, 0x18, 0xc6, 0x2e, + + /* U+0031 "1" */ + 0x7e, + + /* U+0032 "2" */ + 0x70, 0x42, 0xe8, 0x42, 0xe, + + /* U+0033 "3" */ + 0x70, 0x42, 0xe0, 0x84, 0x2e, + + /* U+0034 "4" */ + 0x8c, 0x62, 0xe0, 0x84, 0x20, + + /* U+0035 "5" */ + 0x74, 0x20, 0xe0, 0x84, 0x2e, + + /* U+0036 "6" */ + 0x74, 0x20, 0xe8, 0xc6, 0x2e, + + /* U+0037 "7" */ + 0x74, 0x63, 0x10, 0x84, 0x21, + + /* U+0038 "8" */ + 0x74, 0x62, 0xe8, 0xc6, 0x2e, + + /* U+0039 "9" */ + 0x74, 0x62, 0xe0, 0x84, 0x2e, + + /* U+003A ":" */ + 0x90 +}; + + +/*--------------------- + * GLYPH DESCRIPTION + *--------------------*/ + +static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { + {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, + {.bitmap_index = 0, .adv_w = 26, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1, .adv_w = 104, .box_w = 1, .box_h = 1, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2, .adv_w = 104, .box_w = 4, .box_h = 1, .ofs_x = 1, .ofs_y = 4}, + {.bitmap_index = 3, .adv_w = 0, .box_w = 2, .box_h = 1, .ofs_x = -1, .ofs_y = 0}, + {.bitmap_index = 4, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 9, .adv_w = 104, .box_w = 1, .box_h = 8, .ofs_x = 5, .ofs_y = 0}, + {.bitmap_index = 10, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 15, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 20, .adv_w = 104, .box_w = 5, .box_h = 7, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 25, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 30, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 35, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 40, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 45, .adv_w = 104, .box_w = 5, .box_h = 8, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 50, .adv_w = 26, .box_w = 1, .box_h = 4, .ofs_x = 0, .ofs_y = 2} +}; + +/*--------------------- + * CHARACTER MAPPING + *--------------------*/ + +static const uint16_t unicode_list_0[] = { + 0x0, 0x1, 0xd, 0xe +}; + +/*Collect the unicode lists and glyph_id offsets*/ +static const lv_font_fmt_txt_cmap_t cmaps[] = +{ + { + .range_start = 32, .range_length = 15, .glyph_id_start = 1, + .unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 4, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + }, + { + .range_start = 48, .range_length = 11, .glyph_id_start = 5, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + } +}; + + + +/*-------------------- + * ALL CUSTOM DATA + *--------------------*/ + +#if LV_VERSION_CHECK(8, 0, 0) +/*Store all the custom data of the font*/ +static lv_font_fmt_txt_glyph_cache_t cache; +static const lv_font_fmt_txt_dsc_t font_dsc = { +#else +static lv_font_fmt_txt_dsc_t font_dsc = { +#endif + .glyph_bitmap = glyph_bitmap, + .glyph_dsc = glyph_dsc, + .cmaps = cmaps, + .kern_dsc = NULL, + .kern_scale = 0, + .cmap_num = 2, + .bpp = 1, + .kern_classes = 0, + .bitmap_format = 0, +#if LV_VERSION_CHECK(8, 0, 0) + .cache = &cache +#endif +}; + + +/*----------------- + * PUBLIC FONT + *----------------*/ + +/*Initialize a public general font descriptor*/ +#if LV_VERSION_CHECK(8, 0, 0) +const lv_font_t seg7_8 = { +#else +lv_font_t seg7_8 = { +#endif + .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ + .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ + .line_height = 8, /*The maximum line height required by the font*/ + .base_line = 0, /*Baseline measured from the bottom of the line*/ +#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) + .subpx = LV_FONT_SUBPX_NONE, +#endif +#if LV_VERSION_CHECK(7, 4, 0) + .underline_position = -1, + .underline_thickness = 0, +#endif + .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ +}; + + + +#endif /*#if SEG7_8*/ + diff --git a/lib/libesp32_lvgl/LVGL_assets/src/tasmota_lvgl_assets.h b/lib/libesp32_lvgl/LVGL_assets/src/tasmota_lvgl_assets.h new file mode 100644 index 000000000..45a9e3607 --- /dev/null +++ b/lib/libesp32_lvgl/LVGL_assets/src/tasmota_lvgl_assets.h @@ -0,0 +1 @@ +/* empty file required to force compilation of this lib */ diff --git a/tasmota/lvgl_berry/fonts/DSEG7/DSEG-LICENSE.txt b/tasmota/lvgl_berry/fonts/DSEG7/DSEG-LICENSE.txt new file mode 100755 index 000000000..ad4c0bf52 --- /dev/null +++ b/tasmota/lvgl_berry/fonts/DSEG7/DSEG-LICENSE.txt @@ -0,0 +1,95 @@ +Copyright (c) 2017, keshikan (http://www.keshikan.net), +with Reserved Font Name "DSEG". + + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/tasmota/lvgl_berry/fonts/DSEG7/DSEG7Classic-Bold.ttf b/tasmota/lvgl_berry/fonts/DSEG7/DSEG7Classic-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5f71db4e77e20594a8ccd5ce110878742094dc34 GIT binary patch literal 23040 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 literal 0 HcmV?d00001 diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_12.lvfont b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_12.lvfont new file mode 100644 index 0000000000000000000000000000000000000000..dfcaeec5ea11852c91654b3e68f0f7d83da72c54 GIT binary patch literal 300 zcmY+6&k6xy6vfYs!IXcKQmjnbSXfMvEqMVWYccs-h^?Y93(DHg!|)!8vS8^EocpoS z?brG4ch0#EfKlJ;Y19Cs94KU$w?&{CMo@&5NO$VZb!vgwBtgeuTRewE5G0b&5JOz$ zCbO<5w@glie@Uc}Lmp++P)7@6EU?27CuW9|#lXVe#lBHY+{2r=>pxyj=i-N=X{U|m z`gsGt?sj#v(hbwfq7fLLw`N5*ZU5~au4#ssH0-K0DQam;Nw(GZ&hP401(nCzzxV4| InXro&W#< literal 0 HcmV?d00001 diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_14.lvfont b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_14.lvfont new file mode 100644 index 0000000000000000000000000000000000000000..1b7eda875455ba37e1152b1f9ad5a7b313436b68 GIT binary patch literal 356 zcmXqDU|`5dO-x|~(##Be4E#Wv4~Rj05L*C<85mhvSV0sJn*ecgZejrwkk$cW1t8`J z%CG=+gX9c=n45tWh(RhC8F+!Ffz;*XCnti;;s8Q!pqMa&IDsT;b`}7--8boHgY_S%?E)D>(@V`n4TNb3Nx0ub{9Wmtf^ zL2?E_%+0_G#2^)n47?0{V0Ah9$%!EIIDn7`XtF4SB!eM?1w#Ns8bdY1WQNrY2N`ZM zd}R0mRFj@lnI^#?(2xPb=L+lpu^&*Z$Y@w$fBhYMR(F2}n8EtvKSM^tjQaTt3?z8inCtdCB!C!yfuc>z9biV(fwTbi zae!@j1~!4QPJRJcP!ebZig^4ExXnOA_QPESHAI35*`0OwkyInOzivLlbO|?=0ASz( E0O#*-B>(^b literal 0 HcmV?d00001 diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_18.lvfont b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_18.lvfont new file mode 100644 index 0000000000000000000000000000000000000000..dc8d895b066b3e7160a4df332dc910b1bb53e5cb GIT binary patch literal 432 zcmXqDU|`5dO-x|~(##A(K*#{bOi)??NHZ|9va*6GAT|NwZ%PV?I#9&v-zB8OFSS{ZG{) z4f}ul|22TrJpRQ1lw?TYVVr;aXM+J7m=}NiPsM?i_2*x(F*YPfurcmm4`=QFP|>u* zL53Y-9N)kB7a&>^co@Luy+#;v7-97FKVbJDQtNKxAIDn^EsvC(n`8=bo2Om}|Py(a{t0d3vx zBxMeAw|&AK=QTAmn2n?Vc7u4bX=?SVs6lQ-+DR4+*BG8@khnFyi3JzdZ|JzQ(j2PQ z2||j27bzq!9fiO*&ZeHSoZ|@ zS}a3!0&HaXtrWN=oo&}gBpKFM;77>R;7t(;LV~)-#LPg+qdE!nd*N4`-pK9RrtR96s-g#j(q0kWhPzrCRS=7!K6u1zahh{>C3K<09&0ga( zOPxZZR?U=zt903-g*pqR7Kv0^n=A@Ob1@^6IOCgpI#0x9Tt3d?`|dgC`|kA;LOQRi z?G~&##D$0KLfESgtVFO{^H5-FP9oZFs68fMk8mSIWODJg$$1e6h!tTfETov&cXeIe zZK~PJhNp-)NEJCuI>;cICxYdirPnfTNm$MZeZml4yViBP!--nO#KYhRsMX_IhU7%t zA8pQD#r;%ZaJM4HgRjLk|1$U??$afh3&1PQu5H!ya5aw_SJbQzeoF8s0QYq_a)V9W zuIRsKJJ~b$rRb?xdM>!gk`4)ivB*|r;#iRmB?2{C3hgh+-i&G;a_lh}fm!%wwt?#+ zKS-yzI3c&(OR)2$t%eT932M~JX%|Z#=h_P??SC((T#9d$01%{#PE(_mi+qk6PI<@0 z5bmkKjlZn#;sBkyp~}O?lgcqLg=~Kh_4T zU!=@%p|~!6&*sBdf$}bSyPg^se2Q<-9BHSi0xc6TH+wG7Y@@vGg3a=wel5b^RY3&O zn8kdEZB_<0Jva`nj+$|n=~=6nUF?GemI+JnIR@GoNN)ov_lEpNXx*JvA@V|M+>tlx zV4*2&3=5huvuE_EnDKkrS;i6o61ZM9mi2N9c$p zdqrO3*ndqJ2zgnu8;CTfaJYWg7<$%>FI$1Qg7z3^OKao4Fb^e)m{z+s!SIDOl7)W#(j~^4+S@hkkN%r9a!BI6gDPr zyDPmR{)rz(s}6U=v6c-?M1_73v*Rk1xw<%p9f-4aZ7DU*WLev!y}Uo4tA5Zgf*e1d z=Xihj-0%54&l_Wm9eg2qz(di?n%FvuO)EKD$-|U0sivlu2rlO_!v0s1hb4-e2@!%! zCqDYxJ&O@mvl@cS@US2Yt?;@I?N7S30`%0gFjLqj_BQ*R`8>~g&Us3nUD7EDQir$8 z%h*d@M_z0oZoc^tNvU?Jl`=0*sk!iw;p8^j(Bm`mvOLPo1*Li*a6}dlD$cVmX+E`-O*udC zq2^(APJfaYQr&we+iY?8a-*KXgsI^J1NTaIN3Y%&(kpec*r+(YE!+J!{-q?x3yMF3 zraf zuy|&S%Jnbx%*adTb+?g3{Mx@ckGb*xpTyf62l*J4c#)yvhMtN}{l8B#n6>jSk^=nDt#hw0&J`NMplgN|z zU&!Ji%x*iY4m@Jwn|cyhN$1t&)-du!(6&0p^TN(x&eT%)HHr}%9~;HeUZ?}<8h>W0-@J+7?V7nc9pOwvqF+Bj|C`Or?G zmB^lX3%eU_^!EN^^#7q*7OyJK%eW@3N{OSsA^HRPDUb0aexjBRk!?-mx0MfRo5|y# bfx19L?W5MgHF53dJ`KZt`M~P|x?6t&_>uQl literal 0 HcmV?d00001 diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_36.lvfont b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_36.lvfont new file mode 100644 index 0000000000000000000000000000000000000000..32f389611b31b557892799d5cfa194ffd0c0b18a GIT binary patch literal 1384 zcmb7^aZDR^6vwYEv=qvIq>zjv>?i?cIJMDfkQHv_Fu^5eH7*W~32Uf`f=WnTFv^Zm z$st*mE@GyOnUEOQIF*|Chkq<7rD!^pg$3Nue=GzF1(Ovbc=5o1phEGmzUp5 z?)~n)_j%uU4u)a6UiNr(^fWNlObtD&HJ{P^BI+}GqtQqM^wd2}t>bl1uj(J7R!NO8 zIwptSR^K_O6)?Hf)Ce6@$n4YNdfx2tsNc$?kA*2>YMIBFX=az{(fzJ_Mt@D;VEEF| zm=n%f%wd>Udfx6Vr?EcOyw;LJA!T?JDThNyeM6LT3nw)&hN;{VcbT_jI5zI9EE{WV zms_}Q%mh~b7zw=AC8RF%w?ydTD|G^lMCoL+FL6?^RoHQ3WdhfuxGLgRiwKw5g(+T+ zU^+VM!pwT{Q7q3F7+JZItaDQRyCNPSIK#>(xO5)9920g!*jU1KJ~^3=X8Um4v|&f2 zb?7@zx*!IyJTdjw(bjXE^hAaIw+a&~%tUEom`#`nlUkokGHcwPqfQg~N!K%X}rIitw=@9Uuv!><<>N za8mDhsGpKyHzC>61kyVM%Qk`po3%}*NoEy6c7eyx_)dgkqB-iyeGc1LLs%Lan1q#& z30u~E0W3Mi&p3&gb|9B>>3$*Y4gemcc{}F2F({@l;%r>SwPT>czlb5kZ<0HRM=%$K zETV#7msQ4^x|Lo$D{T6AMdVf$im*CpiNRi<$%2G{;jg)6|8z+tC zUt;C^$&0LPvNNCT#cO&n0}% z{adm zUp$IiOs^u|@0|Bzcq2yz(AMT;{OQ_RqR+TXs? B!nOba literal 0 HcmV?d00001 diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_48.lvfont b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_48.lvfont new file mode 100644 index 0000000000000000000000000000000000000000..8fbb10dcb85b35713dcc0e2d2bbb14b2ea47c028 GIT binary patch literal 1860 zcmb_cZA=tb6dgX-DrHuJf?vFy7L7sBZ6&4_^@*biQA=rRl^9Z&h)7x*iAhaO3uD}b z(MswhR!XBmu-0lc&BoHiCQTLB529$OO&eO9!ou>QC6--Kch}iDy>B6={%DIoU=B;^{V@YWoM}HR3*(%0VSdaZ)0^ zE&dblPm_|U#ECfRMJY9Qu6oz@a?xuF{Zb^mv`Bhgg0wE~N!+pcyoAn#{fQY#eVxUPhTX&u>VN{d;4FmYe8 zeR?mughu_TY?ZO2I+nO^XY%k0U-wJ0#T9I1<~9ZGJ?OWEWrVaqiJ!yQp#^G2US-iv z9>b zldt8>)iIQ!E4b!`RqyqnuN6pD4Lo>)KrRoJ>6q>@qJAE_*{<($<4C^x8#8|>jG>l_ zyVm`|%sTnF+R2)D3x*T}Lp~3NS`9o>jQjF9d(u@K%(|j_EH66hRh+2zqM5E|ZQ(-8 zP{xfqPw(?ojPUR$`ZzP2U6u>|L1re)))E6gj_ZPlal7CFw+O1)iY^rv!zhMZp<#v> zx{jGH^!jk)V9AGe478!yxI=5=p`TRj12P5Bo5UqG z&Pes*fsW;31bFe8PV|=X&}&+tQlZJ*EzmhZgQ;AZ0J^N#svUiHUODQgM9}WuS{7EY(dqUMU~l$U|d`rXJ9OM>=Y4 zU^(g_p}enVCN> zXkg~?WmAYXeY~9DpW#-tDHr z-L#SRiH#%&*6bxdMh6AHmHQp&_lbQZy$WEKSd*UXk7@C}jsh991!SWlZTud{UZZnl z5^n+{-f7uT%uH>A?X=L<;e8W<3ZkAC8a`!0O*5T*@onOA;Zd|@?qTL8j*i_dx=KJs zf`PteX<4)iJ6uGjztJMx48diyYh*f^$AF;1K<_^YxF?)=MtCP? zMY8lDGuxI?adTK3C+QTjW%v?4^`V^t?mJuXtd6Ytg}5hnJ5tI?ns?Wz<=-H5;eU>| z|E~D}(d`$GZFYIqQs}7>7y82TQwL{wy$lCZtC}p+9qJq+%TW7Sf*azN=xglA_ zf$pN(R$SklvQj5A=mhL@u~W9o>2Vcpvx9RAZ4^hPd5QD(iuefaQck6%&6chB*;5N0 GlJqarCkN*M literal 0 HcmV?d00001 diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_8.lvfont b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_8.lvfont new file mode 100644 index 0000000000000000000000000000000000000000..625eda6e84f49f08d600eb7afd9020ec5859a10d GIT binary patch literal 244 zcmXYq%L;-(7=_Q+2!f;rwG*;kix7jLWiUk1s%6VC?Xob^MNs>|P0!VH_$ZyQ70rKJ`^<5vP*~yn}|c93$OJRw=9*n z #include "lvgl.h" +#include "tasmota_lvgl_assets.h" // force compilation of assets #define XDRV_54 54 @@ -139,6 +140,10 @@ void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *c // save pixels to file int32_t btw = (width * height * LV_COLOR_DEPTH + 7) / 8; while (btw > 0) { +#if (LV_COLOR_DEPTH == 16) && (LV_COLOR_16_SWAP == 1) + uint16_t * pix = (uint16_t*) color_p; + for (uint32_t i = 0; i < btw / 2; i++) (pix[i] = pix[i] << 8 | pix[i] >> 8); +#endif int32_t ret = glue->getScreenshotFile()->write((const uint8_t*) color_p, btw); if (ret >= 0) { btw -= ret; diff --git a/tools/lv_berry/convert.py b/tools/lv_berry/convert.py index 1283f4cc1..c69982750 100644 --- a/tools/lv_berry/convert.py +++ b/tools/lv_berry/convert.py @@ -400,6 +400,8 @@ print("""/******************************************************************** extern int lv0_start(bvm *vm); extern int lv0_load_montserrat_font(bvm *vm); +extern int lv0_load_seg7_font(bvm *vm); +extern int lv0_load_font(bvm *vm); extern int lv0_scr_act(bvm *vm); extern int lv0_layer_top(bvm *vm); @@ -516,6 +518,9 @@ print(""" be_native_module_function("start", lv0_start), be_native_module_function("montserrat_font", lv0_load_montserrat_font), + be_native_module_function("seg7_font", lv0_load_seg7_font), + be_native_module_function("load_font", lv0_load_font), + // screen and layers be_native_module_function("scr_act", lv0_scr_act), @@ -684,6 +689,8 @@ for k_v in lv_module: print(""" start, func(lv0_start) montserrat_font, func(lv0_load_montserrat_font) + seg7_font, func(lv0_load_seg7_font) + load_font, func(lv0_load_font) scr_act, func(lv0_scr_act) layer_top, func(lv0_layer_top) From 2003688f1b04d4daa713dbb99e8c5a42a0ab3526 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 27 Apr 2021 19:44:30 +0200 Subject: [PATCH 69/97] uDisplay remove byte swap --- lib/lib_display/UDisplay/uDisplay.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index b02ced404..c8559efda 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -1046,13 +1046,6 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_inverted) { //Serial.printf("push %x - %d\n", (uint32_t)data, len); -#ifdef ESP32 -// reversed order for DMA, so non-DMA needs to get back to normal order - if (!not_inverted && !lvgl_param.use_dma) { - for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); - } -#endif - if (bpp != 16) { // stupid monchrome version for (uint32_t y = seta_yp1; y < seta_yp2; y++) { @@ -1076,7 +1069,7 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_inverted) { if (lvgl_param.use_dma) { pushPixelsDMA(data, len ); } else { - uspi->writePixels(data, len * 2); + uspi->writeBytes((uint8_t*)data, len * 2); } #endif } else { From d9a0dd5266376ef2b2d8e43a5d5439e1ac06df69 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 27 Apr 2021 22:54:53 +0200 Subject: [PATCH 70/97] Berry add support for rtc time --- lib/libesp32/Berry/default/be_tasmotalib.c | 65 ++++++++++++++++++++++ tasmota/xdrv_52_3_berry_tasmota.ino | 36 ++++++++++++ 2 files changed, 101 insertions(+) diff --git a/lib/libesp32/Berry/default/be_tasmotalib.c b/lib/libesp32/Berry/default/be_tasmotalib.c index 42589dd3a..27876deb2 100644 --- a/lib/libesp32/Berry/default/be_tasmotalib.c +++ b/lib/libesp32/Berry/default/be_tasmotalib.c @@ -13,6 +13,8 @@ extern int l_cmd(bvm *vm); extern int l_getoption(bvm *vm); extern int l_millis(bvm *vm); extern int l_timereached(bvm *vm); +extern int l_rtc(bvm *vm); +extern int l_time_dump(bvm *vm); extern int l_yield(bvm *vm); extern int l_delay(bvm *vm); extern int l_scaleuint(bvm *vm); @@ -2120,6 +2122,66 @@ static const bclosure wire_scan_closure = { /*******************************************************************/ +/******************************************************************** + def time_str(time) + import string + var tm = self.time_dump(time) + return string.format("%04d-%02d-%02dT%02d:%02d:%02d", tm['year'], tm['month'], tm['day'], tm['hour'], tm['min'], tm['sec']) + end +********************************************************************/ +/******************************************************************** +** Solidified function: time_str +********************************************************************/ + +/********** Solidified proto: time_str */ +be_define_local_const_str(time_str_str_name, "time_str", -1681139684, 0, 8, 0); +be_define_local_const_str(time_str_str_source, "input", -103256197, 0, 5, 0); +be_define_local_const_str(time_str_str_0, "string", 398550328, 0, 6, 0); +be_define_local_const_str(time_str_str_1, "time_dump", -964556549, 0, 9, 0); +be_define_local_const_str(time_str_str_2, "format", -1180859054, 0, 6, 0); +be_define_local_const_str(time_str_str_3, "%04d-%02d-%02dT%02d:%02d:%02d", -869438695, 0, 29, 0); +be_define_local_const_str(time_str_str_4, "year", -1367388900, 0, 4, 0); +be_define_local_const_str(time_str_str_5, "month", -696646139, 0, 5, 0); +be_define_local_const_str(time_str_str_6, "day", -464576003, 0, 3, 0); +be_define_local_const_str(time_str_str_7, "hour", -1241306097, 0, 4, 0); +be_define_local_const_str(time_str_str_8, "min", -913357481, 0, 3, 0); +be_define_local_const_str(time_str_str_9, "sec", -1155074638, 0, 3, 0); + +static const bvalue time_str_ktab[10] = { + { { .s=be_local_const_str(time_str_str_0) }, BE_STRING}, + { { .s=be_local_const_str(time_str_str_1) }, BE_STRING}, + { { .s=be_local_const_str(time_str_str_2) }, BE_STRING}, + { { .s=be_local_const_str(time_str_str_3) }, BE_STRING}, + { { .s=be_local_const_str(time_str_str_4) }, BE_STRING}, + { { .s=be_local_const_str(time_str_str_5) }, BE_STRING}, + { { .s=be_local_const_str(time_str_str_6) }, BE_STRING}, + { { .s=be_local_const_str(time_str_str_7) }, BE_STRING}, + { { .s=be_local_const_str(time_str_str_8) }, BE_STRING}, + { { .s=be_local_const_str(time_str_str_9) }, BE_STRING}, +}; + +static const uint32_t time_str_code[14] = { + 0xA40A0000, // 0000 IMPORT R2 R256 + 0x8C0C0101, // 0001 GETMET R3 R0 R257 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x8C100502, // 0004 GETMET R4 R2 R258 + 0x58180003, // 0005 LDCONST R6 K3 + 0x941C0704, // 0006 GETIDX R7 R3 R260 + 0x94200705, // 0007 GETIDX R8 R3 R261 + 0x94240706, // 0008 GETIDX R9 R3 R262 + 0x94280707, // 0009 GETIDX R10 R3 R263 + 0x942C0708, // 000A GETIDX R11 R3 R264 + 0x94300709, // 000B GETIDX R12 R3 R265 + 0x7C101000, // 000C CALL R4 8 + 0x80040800, // 000D RET 1 R4 +}; + +be_define_local_proto(time_str, 13, 2, 1, 0, 0); +be_define_local_closure(time_str); + +/*******************************************************************/ + /******************************************************************** // cmd high-level function "def cmd(command) " @@ -2415,6 +2477,8 @@ void be_load_tasmota_ntvlib(bvm *vm) { "get_option", l_getoption }, { "millis", l_millis }, { "time_reached", l_timereached }, + { "rtc", l_rtc }, + { "time_dump", l_time_dump }, { "yield", l_yield }, { "delay", l_delay }, { "scale_uint", l_scaleuint }, @@ -2455,6 +2519,7 @@ void be_load_tasmota_ntvlib(bvm *vm) { "add_driver", (bntvfunc) &add_driver_closure }, { "load", (bntvfunc) &load_closure }, { "wire_scan", (bntvfunc) &wire_scan_closure }, + { "time_str", (bntvfunc) &time_str_closure }, // deprecated { "get_light", (bntvfunc) &get_light_closure }, diff --git a/tasmota/xdrv_52_3_berry_tasmota.ino b/tasmota/xdrv_52_3_berry_tasmota.ino index e22330a7e..9daf96f2e 100644 --- a/tasmota/xdrv_52_3_berry_tasmota.ino +++ b/tasmota/xdrv_52_3_berry_tasmota.ino @@ -127,6 +127,42 @@ extern "C" { be_raise(vm, kTypeError, nullptr); } + // Berry: tasmota.time_reached(timer:int) -> bool + // + int32_t l_rtc(struct bvm *vm); + int32_t l_rtc(struct bvm *vm) { + int32_t top = be_top(vm); // Get the number of arguments + if (top == 1) { // no argument (instance only) + be_newobject(vm, "map"); + map_insert_int(vm, "utc", Rtc.utc_time); + map_insert_int(vm, "local", Rtc.local_time); + map_insert_int(vm, "restart", Rtc.restart_time); + map_insert_int(vm, "timezone", Rtc.time_timezone); + be_pop(vm, 1); + be_return(vm); + } + be_raise(vm, kTypeError, nullptr); + } + + int32_t l_time_dump(bvm *vm) { + int32_t top = be_top(vm); // Get the number of arguments + if (top == 2 && be_isint(vm, 2)) { + time_t ts = be_toint(vm, 2); + struct tm *t = gmtime(&ts); + be_newobject(vm, "map"); + map_insert_int(vm, "year", t->tm_year + 1900); + map_insert_int(vm, "month", t->tm_mon + 1); + map_insert_int(vm, "day", t->tm_mday); + map_insert_int(vm, "hour", t->tm_hour); + map_insert_int(vm, "min", t->tm_min); + map_insert_int(vm, "sec", t->tm_sec); + map_insert_int(vm, "weekday", t->tm_wday); + be_pop(vm, 1); + be_return(vm); + } + be_raise(vm, kTypeError, nullptr); + } + // Berry: tasmota.delay(timer:int) -> nil // int32_t l_delay(struct bvm *vm); From df56218d9dfba0287f622ed72e0a715e850e61d7 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Wed, 28 Apr 2021 08:34:11 +0200 Subject: [PATCH 71/97] fix pushcolors --- lib/lib_display/UDisplay/uDisplay.cpp | 105 +++++++++++++----- lib/lib_display/UDisplay/uDisplay.h | 1 + .../Xlatb_RA8876-gemu-1.0/RA8876.cpp | 15 ++- lib/libesp32_epdiy/src/epd4in7.cpp | 9 +- 4 files changed, 98 insertions(+), 32 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index c8559efda..83adde5ae 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -946,6 +946,9 @@ for(y=h; y>0; y--) { void uDisplay::Splash(void) { + + if (splash_font < 0) return; + if (ep_mode) { Updateframe(); delay(lut3time * 10); @@ -1033,51 +1036,95 @@ void uDisplay::setAddrWindow_int(uint16_t x, uint16_t y, uint16_t w, uint16_t h) } +#define CNV_B1_OR ((0x10<<11) | (0x20<<5) | 0x10) static inline uint8_t ulv_color_to1(uint16_t color) { - if (((color>>11) & 0x10) || ((color>>5) & 0x20) || (color & 0x10)) { + if (color & CNV_B1_OR) { return 1; } else { return 0; } +/* +// this needs optimization + if (((color>>11) & 0x10) || ((color>>5) & 0x20) || (color & 0x10)) { + return 1; + } + else { + return 0; + }*/ } -void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_inverted) { + +// convert to mono, these are framebuffer based +void uDisplay::pushColorsMono(uint16_t *data, uint16_t len) { + for (uint32_t y = seta_yp1; y < seta_yp2; y++) { + for (uint32_t x = seta_xp1; x < seta_xp2; x++) { + uint16_t color = *data++; + if (bpp == 1) color = ulv_color_to1(color); + drawPixel(x, y, color); + len--; + if (!len) return; + } + } +} + +// swap high low byte +static inline void lvgl_color_swap(uint16_t *data, uint16_t len) { for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); } + +void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) { uint16_t color; //Serial.printf("push %x - %d\n", (uint32_t)data, len); + if (not_swapped == false) { + // called from LVGL bytes are swapped + if (bpp != 16) { + lvgl_color_swap(data, len); + pushColorsMono(data, len); + return; + } - if (bpp != 16) { - // stupid monchrome version - for (uint32_t y = seta_yp1; y < seta_yp2; y++) { - for (uint32_t x = seta_xp1; x < seta_xp2; x++) { - uint16_t color = *data++; - drawPixel(x, y, ulv_color_to1(color)); - len--; - if (!len) return; + if ( (col_mode != 18) && (spi_dc >= 0) && (spi_nr <= 2) ) { + // special version 8 bit spi I or II +#ifdef ESP8266 + lvgl_color_swap(data, len); + while (len--) { + uspi->write(*data++); + } +#else + if (lvgl_param.use_dma) { + pushPixelsDMA(data, len ); + } else { + uspi->writeBytes((uint8_t*)data, len * 2); + } +#endif + } else { + // 9 bit and others + lvgl_color_swap(data, len); + while (len--) { + WriteColor(*data++); } } - return; - } - - if ( (col_mode != 18) && (spi_dc >= 0) && (spi_nr <= 2) ) { - // special version 8 bit spi I or II -#ifdef ESP8266 - while (len--) { - uspi->write(*data++); - } -#else - if (lvgl_param.use_dma) { - pushPixelsDMA(data, len ); - } else { - uspi->writeBytes((uint8_t*)data, len * 2); - } -#endif } else { - while (len--) { - WriteColor(*data++); + // called from displaytext, no byte swap, currently no dma here + if (bpp != 16) { + pushColorsMono(data, len); + return; + } + if ( (col_mode != 18) && (spi_dc >= 0) && (spi_nr <= 2) ) { + // special version 8 bit spi I or II + #ifdef ESP8266 + while (len--) { + uspi->write(*data++); + } + #else + uspi->writePixels(data, len * 2); + #endif + } else { + // 9 bit and others + while (len--) { + WriteColor(*data++); + } } } - } void uDisplay::WriteColor(uint16_t color) { diff --git a/lib/lib_display/UDisplay/uDisplay.h b/lib/lib_display/UDisplay/uDisplay.h index ba4a9bfd1..c93c1acb4 100755 --- a/lib/lib_display/UDisplay/uDisplay.h +++ b/lib/lib_display/UDisplay/uDisplay.h @@ -214,6 +214,7 @@ class uDisplay : public Renderer { uint16_t seta_xp2; uint16_t seta_yp1; uint16_t seta_yp2; + void pushColorsMono(uint16_t *data, uint16_t len); #ifdef ESP32 // dma section bool DMA_Enabled = false; diff --git a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp index 2f7265f46..d9d53bf13 100644 --- a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp +++ b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp @@ -25,6 +25,7 @@ SOFTWARE. #include "RA8876.h" #include +uint8_t initdone; /* TODO font 0 x and y size with line,col cmd @@ -123,6 +124,9 @@ uint8_t RA8876::readStatus(void) { void RA8876::writeReg(uint8_t reg, uint8_t x) { writeCmd(reg); writeData(x); + if (!initdone) { + // Serial.printf("%02x, %02x\n", reg, x); + } } // Like writeReg(), but does two successive register writes of a 16-bit value, low byte first. @@ -593,7 +597,7 @@ bool RA8876::initDisplay() { // TODO: Track backlight pin and turn on backlight SPI.endTransaction(); - +initdone = 1; return true; } @@ -935,7 +939,14 @@ void RA8876::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { SPI.endTransaction(); } -void RA8876::pushColors(uint16_t *data, uint16_t len, boolean first) { +static inline void lvgl_color_swap1(uint16_t *data, uint16_t len) { for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); } + +void RA8876::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) { + + if (not_swapped == false) { + lvgl_color_swap1(data, len); + } + SPI.beginTransaction(m_spiSettings); //RA8876_CS_LOW while (len--) { diff --git a/lib/libesp32_epdiy/src/epd4in7.cpp b/lib/libesp32_epdiy/src/epd4in7.cpp index 8a83ec35a..2c3aef3b9 100644 --- a/lib/libesp32_epdiy/src/epd4in7.cpp +++ b/lib/libesp32_epdiy/src/epd4in7.cpp @@ -170,7 +170,14 @@ void Epd47::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { } -void Epd47::pushColors(uint16_t *data, uint16_t len, boolean first) { +static inline void lvgl_color_swap2(uint16_t *data, uint16_t len) { for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); } + +void Epd47::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) { + + if (not_swapped == false) { + lvgl_color_swap2(data, len); + } + // stupid bw version uint16_t x1 = seta_xp1; uint16_t x2 = seta_xp2; From deee1bb69c11563ec001a46feb6aff5a4499b696 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 28 Apr 2021 08:49:22 +0200 Subject: [PATCH 72/97] Berry simplified solidification --- lib/libesp32/Berry/default/be_driverlib.c | 12 +- .../Berry/default/be_lv_lvgl_module.c | 121 +-- lib/libesp32/Berry/default/be_tasmotalib.c | 763 ++++++++---------- lib/libesp32/Berry/default/be_wirelib.c | 28 +- lib/libesp32/Berry/src/be_solidifylib.c | 6 +- lib/libesp32/Berry/src/berry.h | 28 +- 6 files changed, 449 insertions(+), 509 deletions(-) diff --git a/lib/libesp32/Berry/default/be_driverlib.c b/lib/libesp32/Berry/default/be_driverlib.c index fd9c2ccbb..2f44a3c85 100644 --- a/lib/libesp32/Berry/default/be_driverlib.c +++ b/lib/libesp32/Berry/default/be_driverlib.c @@ -30,8 +30,8 @@ static const bupvaldesc add_cmd_0_upvals[2] = { be_local_const_upval(1, 0), }; -be_define_local_const_str(add_cmd_0_str_name, "add_cmd_0", 607256038, 0, 8, 0); -be_define_local_const_str(add_cmd_0_str_source, "input", -103256197, 0, 5, 0); +be_define_local_const_str(add_cmd_0_str_name, "add_cmd_0", 607256038, 8); +be_define_local_const_str(add_cmd_0_str_source, "input", -103256197, 5); static const uint32_t add_cmd_0_code[8] = { 0x68100000, // 0000 GETUPV R4 U0 @@ -51,10 +51,10 @@ static const bproto *add_cmd_subproto[1] = { &add_cmd_0_proto, }; -be_define_local_const_str(add_cmd_str_name, "add_cmd", -933336417, 0, 7, 0); -be_define_local_const_str(add_cmd_str_source, "input", -103256197, 0, 5, 0); -be_define_local_const_str(add_cmd_str_0, "get_tasmota", 334356779, 0, 11, 0); -be_define_local_const_str(add_cmd_str_1, "add_cmd", -933336417, 0, 7, 0); +be_define_local_const_str(add_cmd_str_name, "add_cmd", -933336417, 7); +be_define_local_const_str(add_cmd_str_source, "input", -103256197, 5); +be_define_local_const_str(add_cmd_str_0, "get_tasmota", 334356779, 11); +be_define_local_const_str(add_cmd_str_1, "add_cmd", -933336417, 7); static const bvalue add_cmd_ktab[2] = { { { .s=be_local_const_str(add_cmd_str_0) }, BE_STRING}, diff --git a/lib/libesp32/Berry/default/be_lv_lvgl_module.c b/lib/libesp32/Berry/default/be_lv_lvgl_module.c index 88b519393..a5d6d330b 100644 --- a/lib/libesp32/Berry/default/be_lv_lvgl_module.c +++ b/lib/libesp32/Berry/default/be_lv_lvgl_module.c @@ -10,6 +10,9 @@ #ifdef USE_LVGL +// temporary work-around +#define be_define_local_const_str2(a,b,c,d,e,f) be_define_local_const_str(a,b,c,e) + #include "lvgl.h" extern int lv0_start(bvm *vm); @@ -632,67 +635,67 @@ be_define_native_module(lvgl, NULL); #else -be_define_local_const_str(SYMBOL_AUDIO, "\xef\x80\x81", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_VIDEO, "\xef\x80\x88", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_LIST, "\xef\x80\x8b", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_OK, "\xef\x80\x8c", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_CLOSE, "\xef\x80\x8d", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_POWER, "\xef\x80\x91", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_SETTINGS, "\xef\x80\x93", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_HOME, "\xef\x80\x95", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_DOWNLOAD, "\xef\x80\x99", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_DRIVE, "\xef\x80\x9c", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_REFRESH, "\xef\x80\xa1", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_MUTE, "\xef\x80\xa6", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_VOLUME_MID, "\xef\x80\xa7", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_VOLUME_MAX, "\xef\x80\xa8", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_IMAGE, "\xef\x80\xbe", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_EDIT, "\xef\x8C\x84", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_PREV, "\xef\x81\x88", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_PLAY, "\xef\x81\x8b", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_PAUSE, "\xef\x81\x8c", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_STOP, "\xef\x81\x8d", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_NEXT, "\xef\x81\x91", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_EJECT, "\xef\x81\x92", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_LEFT, "\xef\x81\x93", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_RIGHT, "\xef\x81\x94", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_PLUS, "\xef\x81\xa7", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_MINUS, "\xef\x81\xa8", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_EYE_OPEN, "\xef\x81\xae", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_EYE_CLOSE, "\xef\x81\xb0", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_WARNING, "\xef\x81\xb1", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_SHUFFLE, "\xef\x81\xb4", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_UP, "\xef\x81\xb7", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_DOWN, "\xef\x81\xb8", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_LOOP, "\xef\x81\xb9", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_DIRECTORY, "\xef\x81\xbb", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_UPLOAD, "\xef\x82\x93", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_CALL, "\xef\x82\x95", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_CUT, "\xef\x83\x84", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_COPY, "\xef\x83\x85", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_SAVE, "\xef\x83\x87", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_CHARGE, "\xef\x83\xa7", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_PASTE, "\xef\x83\xAA", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BELL, "\xef\x83\xb3", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_KEYBOARD, "\xef\x84\x9c", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_GPS, "\xef\x84\xa4", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_FILE, "\xef\x85\x9b", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_WIFI, "\xef\x87\xab", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BATTERY_FULL, "\xef\x89\x80", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BATTERY_3, "\xef\x89\x81", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BATTERY_2, "\xef\x89\x82", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BATTERY_1, "\xef\x89\x83", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BATTERY_EMPTY, "\xef\x89\x84", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_USB, "\xef\x8a\x87", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BLUETOOTH, "\xef\x8a\x93", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_TRASH, "\xef\x8B\xAD", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BACKSPACE, "\xef\x95\x9A", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_SD_CARD, "\xef\x9F\x82", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_NEW_LINE, "\xef\xA2\xA2", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_AUDIO, "\xef\x80\x81", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_VIDEO, "\xef\x80\x88", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_LIST, "\xef\x80\x8b", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_OK, "\xef\x80\x8c", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_CLOSE, "\xef\x80\x8d", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_POWER, "\xef\x80\x91", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_SETTINGS, "\xef\x80\x93", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_HOME, "\xef\x80\x95", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_DOWNLOAD, "\xef\x80\x99", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_DRIVE, "\xef\x80\x9c", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_REFRESH, "\xef\x80\xa1", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_MUTE, "\xef\x80\xa6", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_VOLUME_MID, "\xef\x80\xa7", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_VOLUME_MAX, "\xef\x80\xa8", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_IMAGE, "\xef\x80\xbe", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_EDIT, "\xef\x8C\x84", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_PREV, "\xef\x81\x88", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_PLAY, "\xef\x81\x8b", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_PAUSE, "\xef\x81\x8c", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_STOP, "\xef\x81\x8d", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_NEXT, "\xef\x81\x91", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_EJECT, "\xef\x81\x92", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_LEFT, "\xef\x81\x93", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_RIGHT, "\xef\x81\x94", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_PLUS, "\xef\x81\xa7", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_MINUS, "\xef\x81\xa8", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_EYE_OPEN, "\xef\x81\xae", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_EYE_CLOSE, "\xef\x81\xb0", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_WARNING, "\xef\x81\xb1", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_SHUFFLE, "\xef\x81\xb4", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_UP, "\xef\x81\xb7", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_DOWN, "\xef\x81\xb8", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_LOOP, "\xef\x81\xb9", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_DIRECTORY, "\xef\x81\xbb", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_UPLOAD, "\xef\x82\x93", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_CALL, "\xef\x82\x95", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_CUT, "\xef\x83\x84", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_COPY, "\xef\x83\x85", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_SAVE, "\xef\x83\x87", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_CHARGE, "\xef\x83\xa7", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_PASTE, "\xef\x83\xAA", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_BELL, "\xef\x83\xb3", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_KEYBOARD, "\xef\x84\x9c", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_GPS, "\xef\x84\xa4", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_FILE, "\xef\x85\x9b", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_WIFI, "\xef\x87\xab", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_BATTERY_FULL, "\xef\x89\x80", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_BATTERY_3, "\xef\x89\x81", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_BATTERY_2, "\xef\x89\x82", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_BATTERY_1, "\xef\x89\x83", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_BATTERY_EMPTY, "\xef\x89\x84", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_USB, "\xef\x8a\x87", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_BLUETOOTH, "\xef\x8a\x93", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_TRASH, "\xef\x8B\xAD", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_BACKSPACE, "\xef\x95\x9A", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_SD_CARD, "\xef\x9F\x82", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_NEW_LINE, "\xef\xA2\xA2", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_DUMMY, "\xEF\xA3\xBF", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_DUMMY, "\xEF\xA3\xBF", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BULLET, "\xE2\x80\xA2", 0, 0, 3, 0); +be_define_local_const_str2(SYMBOL_BULLET, "\xE2\x80\xA2", 0, 0, 3, 0); /* @const_object_info_begin diff --git a/lib/libesp32/Berry/default/be_tasmotalib.c b/lib/libesp32/Berry/default/be_tasmotalib.c index 27876deb2..709b202a3 100644 --- a/lib/libesp32/Berry/default/be_tasmotalib.c +++ b/lib/libesp32/Berry/default/be_tasmotalib.c @@ -3,9 +3,12 @@ * * To use: `import tasmota` *******************************************************************/ -#include "be_object.h" +#include "berry.h" +//#include "be_object.h" #include "be_string.h" -#include "be_gc.h" + +// temporary work-around +#define be_define_local_const_str2(a,b,c,d,e,f) be_define_local_const_str(a,b,c,e) extern int l_getFreeHeap(bvm *vm); extern int l_publish(bvm *vm); @@ -60,9 +63,9 @@ extern int l_i2cenabled(bvm *vm); ** Solidified function: chars_in_string ********************************************************************/ -be_define_local_const_str(chars_in_string_str_name, "chars_in_string", -1146182164, 0, 15, 0); -be_define_local_const_str(chars_in_string_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(chars_in_string_str_2, "stop_iteration", -121173395, 0, 14, 0); +be_define_local_const_str2(chars_in_string_str_name, "chars_in_string", -1146182164, 0, 15, 0); +be_define_local_const_str2(chars_in_string_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(chars_in_string_str_2, "stop_iteration", -121173395, 0, 14, 0); static const bvalue chars_in_string_ktab[3] = { { { .i=0 }, BE_INT}, @@ -120,7 +123,7 @@ static const uint32_t chars_in_string_code[44] = { static const bproto chars_in_string_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 0x08 12, // nstack 0, // nupvals 4, // argc @@ -148,7 +151,7 @@ static const bproto chars_in_string_proto = { const bclosure chars_in_string_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &chars_in_string_proto, // proto @@ -176,13 +179,13 @@ end ** Solidified function: find_key_i ********************************************************************/ -be_define_local_const_str(find_key_i_str_name, "find_key_i", 850136726, 0, 10, 0); -be_define_local_const_str(find_key_i_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(find_key_i_str_0, "string", 398550328, 0, 6, 0); -be_define_local_const_str(find_key_i_str_1, "toupper", -602983720, 0, 7, 0); -be_define_local_const_str(find_key_i_str_2, "keys", -112588595, 0, 4, 0); -be_define_local_const_str(find_key_i_str_3, "?", 973910158, 0, 1, 0); -be_define_local_const_str(find_key_i_str_4, "stop_iteration", -121173395, 0, 14, 0); +be_define_local_const_str2(find_key_i_str_name, "find_key_i", 850136726, 0, 10, 0); +be_define_local_const_str2(find_key_i_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(find_key_i_str_0, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(find_key_i_str_1, "toupper", -602983720, 0, 7, 0); +be_define_local_const_str2(find_key_i_str_2, "keys", -112588595, 0, 4, 0); +be_define_local_const_str2(find_key_i_str_3, "?", 973910158, 0, 1, 0); +be_define_local_const_str2(find_key_i_str_4, "stop_iteration", -121173395, 0, 14, 0); static const bvalue find_key_i_ktab[5] = { { { .s=be_local_const_str(find_key_i_str_0) }, BE_STRING}, @@ -229,7 +232,7 @@ static const uint32_t find_key_i_code[31] = { static const bproto find_key_i_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 10, // nstack 0, // nupvals 3, // argc @@ -257,7 +260,7 @@ static const bproto find_key_i_proto = { const bclosure find_key_i_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &find_key_i_proto, // proto @@ -294,12 +297,12 @@ const bclosure find_key_i_closure = { ** Solidified function: find_op ********************************************************************/ -be_define_local_const_str(find_op_str_name, "find_op", -528253920, 0, 7, 0); -be_define_local_const_str(find_op_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(find_op_str_0, "string", 398550328, 0, 6, 0); -be_define_local_const_str(find_op_str_1, "=<>!", -1630497019, 0, 4, 0); -be_define_local_const_str(find_op_str_2, "chars_in_string", -1146182164, 0, 15, 0); -be_define_local_const_str(find_op_str_4, "split", -2017972765, 0, 5, 0); +be_define_local_const_str2(find_op_str_name, "find_op", -528253920, 0, 7, 0); +be_define_local_const_str2(find_op_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(find_op_str_0, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(find_op_str_1, "=<>!", -1630497019, 0, 4, 0); +be_define_local_const_str2(find_op_str_2, "chars_in_string", -1146182164, 0, 15, 0); +be_define_local_const_str2(find_op_str_4, "split", -2017972765, 0, 5, 0); static const bvalue find_op_ktab[6] = { { { .s=be_local_const_str(find_op_str_0) }, BE_STRING}, @@ -358,7 +361,7 @@ static const uint32_t find_op_code[42] = { static const bproto find_op_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 13, // nstack 0, // nupvals 2, // argc @@ -386,7 +389,7 @@ static const bproto find_op_proto = { const bclosure find_op_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &find_op_proto, // proto @@ -414,12 +417,12 @@ const bclosure find_op_closure = { ** Solidified function: add_rule ********************************************************************/ -be_define_local_const_str(add_rule_str_name, "add_rule", 596540743, 0, 8, 0); -be_define_local_const_str(add_rule_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(add_rule_str_0, "_rules", -28750191, 0, 6, 0); -be_define_local_const_str(add_rule_str_1, "function", -1630125495, 0, 8, 0); -be_define_local_const_str(add_rule_str_2, "value_error", 773297791, 0, 11, 0); -be_define_local_const_str(add_rule_str_3, "the second argument is not a function", -340392827, 0, 37, 0); +be_define_local_const_str2(add_rule_str_name, "add_rule", 596540743, 0, 8, 0); +be_define_local_const_str2(add_rule_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(add_rule_str_0, "_rules", -28750191, 0, 6, 0); +be_define_local_const_str2(add_rule_str_1, "function", -1630125495, 0, 8, 0); +be_define_local_const_str2(add_rule_str_2, "value_error", 773297791, 0, 11, 0); +be_define_local_const_str2(add_rule_str_3, "the second argument is not a function", -340392827, 0, 37, 0); static const bvalue add_rule_ktab[4] = { { { .s=be_local_const_str(add_rule_str_0) }, BE_STRING}, @@ -449,7 +452,7 @@ static const uint32_t add_rule_code[15] = { static const bproto add_rule_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 5, // nstack 0, // nupvals 3, // argc @@ -477,7 +480,7 @@ static const bproto add_rule_proto = { static const bclosure add_rule_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &add_rule_proto, // proto @@ -498,10 +501,10 @@ static const bclosure add_rule_closure = { ** Solidified function: remove_rule ********************************************************************/ -be_define_local_const_str(remove_rule_str_name, "remove_rule", -838755968, 0, 11, 0); -be_define_local_const_str(remove_rule_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(remove_rule_str_0, "_rules", -28750191, 0, 6, 0); -be_define_local_const_str(remove_rule_str_1, "remove", -611183107, 0, 6, 0); +be_define_local_const_str2(remove_rule_str_name, "remove_rule", -838755968, 0, 11, 0); +be_define_local_const_str2(remove_rule_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(remove_rule_str_0, "_rules", -28750191, 0, 6, 0); +be_define_local_const_str2(remove_rule_str_1, "remove", -611183107, 0, 6, 0); static const bvalue remove_rule_ktab[2] = { { { .s=be_local_const_str(remove_rule_str_0) }, BE_STRING}, @@ -521,7 +524,7 @@ static const uint32_t remove_rule_code[7] = { static const bproto remove_rule_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 5, // nstack 0, // nupvals 2, // argc @@ -549,7 +552,7 @@ static const bproto remove_rule_proto = { static const bclosure remove_rule_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &remove_rule_proto, // proto @@ -600,22 +603,22 @@ static const bclosure remove_rule_closure = { ** Solidified function: try_rule ********************************************************************/ -be_define_local_const_str(try_rule_str_name, "try_rule", 1986449405, 0, 8, 0); -be_define_local_const_str(try_rule_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(try_rule_str_0, "string", 398550328, 0, 6, 0); -be_define_local_const_str(try_rule_str_1, "find_op", -528253920, 0, 7, 0); -be_define_local_const_str(try_rule_str_2, "split", -2017972765, 0, 5, 0); -be_define_local_const_str(try_rule_str_4, "#", 638357778, 0, 1, 0); -be_define_local_const_str(try_rule_str_5, "find_key_i", 850136726, 0, 10, 0); -be_define_local_const_str(try_rule_str_6, "stop_iteration", -121173395, 0, 14, 0); -be_define_local_const_str(try_rule_str_9, "==", -1863000881, 0, 2, 0); -be_define_local_const_str(try_rule_str_10, "!==", 559817114, 0, 3, 0); -be_define_local_const_str(try_rule_str_11, "=", 940354920, 0, 1, 0); -be_define_local_const_str(try_rule_str_12, "!=", -1866252285, 0, 2, 0); -be_define_local_const_str(try_rule_str_13, ">", 990687777, 0, 1, 0); -be_define_local_const_str(try_rule_str_14, ">=", 284975636, 0, 2, 0); -be_define_local_const_str(try_rule_str_15, "<", 957132539, 0, 1, 0); -be_define_local_const_str(try_rule_str_16, "<=", -1795743310, 0, 2, 0); +be_define_local_const_str2(try_rule_str_name, "try_rule", 1986449405, 0, 8, 0); +be_define_local_const_str2(try_rule_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(try_rule_str_0, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(try_rule_str_1, "find_op", -528253920, 0, 7, 0); +be_define_local_const_str2(try_rule_str_2, "split", -2017972765, 0, 5, 0); +be_define_local_const_str2(try_rule_str_4, "#", 638357778, 0, 1, 0); +be_define_local_const_str2(try_rule_str_5, "find_key_i", 850136726, 0, 10, 0); +be_define_local_const_str2(try_rule_str_6, "stop_iteration", -121173395, 0, 14, 0); +be_define_local_const_str2(try_rule_str_9, "==", -1863000881, 0, 2, 0); +be_define_local_const_str2(try_rule_str_10, "!==", 559817114, 0, 3, 0); +be_define_local_const_str2(try_rule_str_11, "=", 940354920, 0, 1, 0); +be_define_local_const_str2(try_rule_str_12, "!=", -1866252285, 0, 2, 0); +be_define_local_const_str2(try_rule_str_13, ">", 990687777, 0, 1, 0); +be_define_local_const_str2(try_rule_str_14, ">=", 284975636, 0, 2, 0); +be_define_local_const_str2(try_rule_str_15, "<", 957132539, 0, 1, 0); +be_define_local_const_str2(try_rule_str_16, "<=", -1795743310, 0, 2, 0); static const bvalue try_rule_ktab[17] = { { { .s=be_local_const_str(try_rule_str_0) }, BE_STRING}, @@ -786,7 +789,7 @@ static const uint32_t try_rule_code[143] = { static const bproto try_rule_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 14, // nstack 0, // nupvals 4, // argc @@ -814,7 +817,7 @@ static const bproto try_rule_proto = { static const bclosure try_rule_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &try_rule_proto, // proto @@ -850,15 +853,15 @@ static const bclosure try_rule_closure = { ** Solidified function: exec_rules ********************************************************************/ -be_define_local_const_str(exec_rules_str_name, "exec_rules", 1445221092, 0, 10, 0); -be_define_local_const_str(exec_rules_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(exec_rules_str_0, "_rules", -28750191, 0, 6, 0); -be_define_local_const_str(exec_rules_str_1, "json", 916562499, 0, 4, 0); -be_define_local_const_str(exec_rules_str_2, "load", -435725847, 0, 4, 0); -be_define_local_const_str(exec_rules_str_3, "BRY: ERROR, bad json: ", -1579831487, 0, 22, 0); -be_define_local_const_str(exec_rules_str_5, "keys", -112588595, 0, 4, 0); -be_define_local_const_str(exec_rules_str_6, "try_rule", 1986449405, 0, 8, 0); -be_define_local_const_str(exec_rules_str_7, "stop_iteration", -121173395, 0, 14, 0); +be_define_local_const_str2(exec_rules_str_name, "exec_rules", 1445221092, 0, 10, 0); +be_define_local_const_str2(exec_rules_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(exec_rules_str_0, "_rules", -28750191, 0, 6, 0); +be_define_local_const_str2(exec_rules_str_1, "json", 916562499, 0, 4, 0); +be_define_local_const_str2(exec_rules_str_2, "load", -435725847, 0, 4, 0); +be_define_local_const_str2(exec_rules_str_3, "BRY: ERROR, bad json: ", -1579831487, 0, 22, 0); +be_define_local_const_str2(exec_rules_str_5, "keys", -112588595, 0, 4, 0); +be_define_local_const_str2(exec_rules_str_6, "try_rule", 1986449405, 0, 8, 0); +be_define_local_const_str2(exec_rules_str_7, "stop_iteration", -121173395, 0, 14, 0); static const bvalue exec_rules_ktab[8] = { { { .s=be_local_const_str(exec_rules_str_0) }, BE_STRING}, @@ -917,7 +920,7 @@ static const uint32_t exec_rules_code[40] = { static const bproto exec_rules_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 12, // nstack 0, // nupvals 2, // argc @@ -945,7 +948,7 @@ static const bproto exec_rules_proto = { const bclosure exec_rules_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &exec_rules_proto, // proto @@ -965,11 +968,11 @@ const bclosure exec_rules_closure = { ** Solidified function: set_timer ********************************************************************/ -be_define_local_const_str(set_timer_str_name, "set_timer", 2135414533, 0, 9, 0); -be_define_local_const_str(set_timer_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(set_timer_str_0, "_timers", -1694866380, 0, 7, 0); -be_define_local_const_str(set_timer_str_1, "push", -2022703139, 0, 4, 0); -be_define_local_const_str(set_timer_str_2, "millis", 1214679063, 0, 6, 0); +be_define_local_const_str2(set_timer_str_name, "set_timer", 2135414533, 0, 9, 0); +be_define_local_const_str2(set_timer_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(set_timer_str_0, "_timers", -1694866380, 0, 7, 0); +be_define_local_const_str2(set_timer_str_1, "push", -2022703139, 0, 4, 0); +be_define_local_const_str2(set_timer_str_2, "millis", 1214679063, 0, 6, 0); static const bvalue set_timer_ktab[3] = { { { .s=be_local_const_str(set_timer_str_0) }, BE_STRING}, @@ -999,7 +1002,7 @@ static const uint32_t set_timer_code[16] = { static const bproto set_timer_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 9, // nstack 0, // nupvals 3, // argc @@ -1027,7 +1030,7 @@ static const bproto set_timer_proto = { const bclosure set_timer_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &set_timer_proto, // proto @@ -1058,12 +1061,12 @@ const bclosure set_timer_closure = { ** Solidified function: run_deferred ********************************************************************/ -be_define_local_const_str(run_deferred_str_name, "run_deferred", 371594696, 0, 12, 0); -be_define_local_const_str(run_deferred_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(run_deferred_str_0, "_timers", -1694866380, 0, 7, 0); -be_define_local_const_str(run_deferred_str_2, "size", 597743964, 0, 4, 0); -be_define_local_const_str(run_deferred_str_3, "time_reached", 2075136773, 0, 12, 0); -be_define_local_const_str(run_deferred_str_5, "remove", -611183107, 0, 6, 0); +be_define_local_const_str2(run_deferred_str_name, "run_deferred", 371594696, 0, 12, 0); +be_define_local_const_str2(run_deferred_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(run_deferred_str_0, "_timers", -1694866380, 0, 7, 0); +be_define_local_const_str2(run_deferred_str_2, "size", 597743964, 0, 4, 0); +be_define_local_const_str2(run_deferred_str_3, "time_reached", 2075136773, 0, 12, 0); +be_define_local_const_str2(run_deferred_str_5, "remove", -611183107, 0, 6, 0); static const bvalue run_deferred_ktab[6] = { { { .s=be_local_const_str(run_deferred_str_0) }, BE_STRING}, @@ -1107,7 +1110,7 @@ static const uint32_t run_deferred_code[27] = { static const bproto run_deferred_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 6, // nstack 0, // nupvals 1, // argc @@ -1135,7 +1138,7 @@ static const bproto run_deferred_proto = { const bclosure run_deferred_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &run_deferred_proto, // proto @@ -1162,12 +1165,12 @@ const bclosure run_deferred_closure = { ** Solidified function: add_cmd ********************************************************************/ -be_define_local_const_str(add_cmd_str_name, "add_cmd", -933336417, 0, 7, 0); -be_define_local_const_str(add_cmd_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(add_cmd_str_0, "_ccmd", -2131545883, 0, 5, 0); -be_define_local_const_str(add_cmd_str_1, "function", -1630125495, 0, 8, 0); -be_define_local_const_str(add_cmd_str_2, "value_error", 773297791, 0, 11, 0); -be_define_local_const_str(add_cmd_str_3, "the second argument is not a function", -340392827, 0, 37, 0); +be_define_local_const_str2(add_cmd_str_name, "add_cmd", -933336417, 0, 7, 0); +be_define_local_const_str2(add_cmd_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(add_cmd_str_0, "_ccmd", -2131545883, 0, 5, 0); +be_define_local_const_str2(add_cmd_str_1, "function", -1630125495, 0, 8, 0); +be_define_local_const_str2(add_cmd_str_2, "value_error", 773297791, 0, 11, 0); +be_define_local_const_str2(add_cmd_str_3, "the second argument is not a function", -340392827, 0, 37, 0); static const bvalue add_cmd_ktab[4] = { { { .s=be_local_const_str(add_cmd_str_0) }, BE_STRING}, @@ -1197,7 +1200,7 @@ static const uint32_t add_cmd_code[15] = { static const bproto add_cmd_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 5, // nstack 0, // nupvals 3, // argc @@ -1225,7 +1228,7 @@ static const bproto add_cmd_proto = { static const bclosure add_cmd_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &add_cmd_proto, // proto @@ -1247,10 +1250,10 @@ static const bclosure add_cmd_closure = { ** Solidified function: remove_cmd ********************************************************************/ -be_define_local_const_str(remove_cmd_str_name, "remove_cmd", -462651594, 0, 10, 0); -be_define_local_const_str(remove_cmd_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(remove_cmd_str_0, "_ccmd", -2131545883, 0, 5, 0); -be_define_local_const_str(remove_cmd_str_1, "remove", -611183107, 0, 6, 0); +be_define_local_const_str2(remove_cmd_str_name, "remove_cmd", -462651594, 0, 10, 0); +be_define_local_const_str2(remove_cmd_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(remove_cmd_str_0, "_ccmd", -2131545883, 0, 5, 0); +be_define_local_const_str2(remove_cmd_str_1, "remove", -611183107, 0, 6, 0); static const bvalue remove_cmd_ktab[2] = { { { .s=be_local_const_str(remove_cmd_str_0) }, BE_STRING}, @@ -1270,7 +1273,7 @@ static const uint32_t remove_cmd_code[7] = { static const bproto remove_cmd_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 5, // nstack 0, // nupvals 2, // argc @@ -1298,7 +1301,7 @@ static const bproto remove_cmd_proto = { static const bclosure remove_cmd_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &remove_cmd_proto, // proto @@ -1327,13 +1330,13 @@ static const bclosure remove_cmd_closure = { ** Solidified function: exec_cmd ********************************************************************/ -be_define_local_const_str(exec_cmd_str_name, "exec_cmd", 493567399, 0, 8, 0); -be_define_local_const_str(exec_cmd_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(exec_cmd_str_0, "_ccmd", -2131545883, 0, 5, 0); -be_define_local_const_str(exec_cmd_str_1, "json", 916562499, 0, 4, 0); -be_define_local_const_str(exec_cmd_str_2, "load", -435725847, 0, 4, 0); -be_define_local_const_str(exec_cmd_str_3, "find_key_i", 850136726, 0, 10, 0); -be_define_local_const_str(exec_cmd_str_4, "resolvecmnd", 993361485, 0, 11, 0); +be_define_local_const_str2(exec_cmd_str_name, "exec_cmd", 493567399, 0, 8, 0); +be_define_local_const_str2(exec_cmd_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(exec_cmd_str_0, "_ccmd", -2131545883, 0, 5, 0); +be_define_local_const_str2(exec_cmd_str_1, "json", 916562499, 0, 4, 0); +be_define_local_const_str2(exec_cmd_str_2, "load", -435725847, 0, 4, 0); +be_define_local_const_str2(exec_cmd_str_3, "find_key_i", 850136726, 0, 10, 0); +be_define_local_const_str2(exec_cmd_str_4, "resolvecmnd", 993361485, 0, 11, 0); static const bvalue exec_cmd_ktab[5] = { { { .s=be_local_const_str(exec_cmd_str_0) }, BE_STRING}, @@ -1376,7 +1379,7 @@ static const uint32_t exec_cmd_code[27] = { static const bproto exec_cmd_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 12, // nstack 0, // nupvals 4, // argc @@ -1404,7 +1407,7 @@ static const bproto exec_cmd_proto = { static const bclosure exec_cmd_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &exec_cmd_proto, // proto @@ -1426,11 +1429,12 @@ static const bclosure exec_cmd_closure = { ** Solidified function: gc ********************************************************************/ -be_define_local_const_str(gc_str_name, "gc", 1042313471, 0, 2, 0); -be_define_local_const_str(gc_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(gc_str_0, "gc", 1042313471, 0, 2, 0); -be_define_local_const_str(gc_str_1, "collect", -1895928271, 0, 7, 0); -be_define_local_const_str(gc_str_2, "allocated", 429986098, 0, 9, 0); +/********** Solidified proto: gc */ +be_define_local_const_str(gc_str_name, "gc", 1042313471, 2); +be_define_local_const_str(gc_str_source, "string", 398550328, 6); +be_define_local_const_str(gc_str_0, "gc", 1042313471, 2); +be_define_local_const_str(gc_str_1, "collect", -1895928271, 7); +be_define_local_const_str(gc_str_2, "allocated", 429986098, 9); static const bvalue gc_ktab[3] = { { { .s=be_local_const_str(gc_str_0) }, BE_STRING}, @@ -1439,51 +1443,16 @@ static const bvalue gc_ktab[3] = { }; static const uint32_t gc_code[6] = { - 0xA4060000, // 0000 IMPORT R1 R256 - 0x8C080301, // 0001 GETMET R2 R1 R257 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 R258 - 0x7C080200, // 0004 CALL R2 1 - 0x80040400, // 0005 RET 1 R2 + 0xA4060000, // 0000 IMPORT R1 R256 + 0x8C080301, // 0001 GETMET R2 R1 R257 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 R258 + 0x7C080200, // 0004 CALL R2 1 + 0x80040400, // 0005 RET 1 R2 }; -static const bproto gc_proto = { - NULL, // bgcobject *next - 8, // type - GC_CONST, // marked - 4, // nstack - 0, // nupvals - 1, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &gc_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &gc_code, // code - be_local_const_str(gc_str_name), // name - 6, // codesize - 3, // nconst - 0, // nproto - be_local_const_str(gc_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -const bclosure gc_closure = { - NULL, // bgcobject *next - 36, // type - GC_CONST, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &gc_proto, // proto - { NULL } // upvals -}; +be_define_local_proto(gc, 4, 1, 1, 0, 0); +be_define_local_closure(gc); /*******************************************************************/ @@ -1525,30 +1494,31 @@ const bclosure gc_closure = { ** Solidified function: event ********************************************************************/ -be_define_local_const_str(event_str_name, "event", -30355297, 0, 5, 0); -be_define_local_const_str(event_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(event_str_0, "cmd", -158181397, 0, 3, 0); -be_define_local_const_str(event_str_1, "exec_cmd", 493567399, 0, 8, 0); -be_define_local_const_str(event_str_2, "rule", -64077613, 0, 4, 0); -be_define_local_const_str(event_str_3, "exec_rules", 1445221092, 0, 10, 0); -be_define_local_const_str(event_str_4, "mqtt_data", -1756753932, 0, 9, 0); -be_define_local_const_str(event_str_5, "gc", 1042313471, 0, 2, 0); -be_define_local_const_str(event_str_6, "every_50ms", -1911083288, 0, 10, 0); -be_define_local_const_str(event_str_7, "run_deferred", 371594696, 0, 12, 0); -be_define_local_const_str(event_str_8, "_drivers", -1034638311, 0, 8, 0); -be_define_local_const_str(event_str_9, "every_second", 2075451465, 0, 12, 0); -be_define_local_const_str(event_str_10, "every_100ms", 1546407804, 0, 11, 0); -be_define_local_const_str(event_str_11, "web_add_button", -757092238, 0, 14, 0); -be_define_local_const_str(event_str_12, "web_add_main_button", -334599632, 0, 19, 0); -be_define_local_const_str(event_str_13, "save_before_restart", 1253239338, 0, 19, 0); -be_define_local_const_str(event_str_14, "web_sensor", -1394870324, 0, 10, 0); -be_define_local_const_str(event_str_15, "json_append", -1292948012, 0, 11, 0); -be_define_local_const_str(event_str_16, "button_pressed", 1694209616, 0, 14, 0); -be_define_local_const_str(event_str_17, "string", 398550328, 0, 6, 0); -be_define_local_const_str(event_str_18, "log", 1062293841, 0, 3, 0); -be_define_local_const_str(event_str_19, "format", -1180859054, 0, 6, 0); -be_define_local_const_str(event_str_20, "BRY: exception %s - %m", -1290966132, 0, 22, 0); -be_define_local_const_str(event_str_22, "stop_iteration", -121173395, 0, 14, 0); +/********** Solidified proto: event */ +be_define_local_const_str(event_str_name, "event", -30355297, 5); +be_define_local_const_str(event_str_source, "string", 398550328, 6); +be_define_local_const_str(event_str_0, "cmd", -158181397, 3); +be_define_local_const_str(event_str_1, "exec_cmd", 493567399, 8); +be_define_local_const_str(event_str_2, "rule", -64077613, 4); +be_define_local_const_str(event_str_3, "exec_rules", 1445221092, 10); +be_define_local_const_str(event_str_4, "mqtt_data", -1756753932, 9); +be_define_local_const_str(event_str_5, "gc", 1042313471, 2); +be_define_local_const_str(event_str_6, "every_50ms", -1911083288, 10); +be_define_local_const_str(event_str_7, "run_deferred", 371594696, 12); +be_define_local_const_str(event_str_8, "_drivers", -1034638311, 8); +be_define_local_const_str(event_str_9, "every_second", 2075451465, 12); +be_define_local_const_str(event_str_10, "every_100ms", 1546407804, 11); +be_define_local_const_str(event_str_11, "web_add_button", -757092238, 14); +be_define_local_const_str(event_str_12, "web_add_main_button", -334599632, 19); +be_define_local_const_str(event_str_13, "save_before_restart", 1253239338, 19); +be_define_local_const_str(event_str_14, "web_sensor", -1394870324, 10); +be_define_local_const_str(event_str_15, "json_append", -1292948012, 11); +be_define_local_const_str(event_str_16, "button_pressed", 1694209616, 14); +be_define_local_const_str(event_str_17, "string", 398550328, 6); +be_define_local_const_str(event_str_18, "log", 1062293841, 3); +be_define_local_const_str(event_str_19, "format", -1180859054, 6); +be_define_local_const_str(event_str_20, "BRY: exception %s - %m", -1290966132, 22); +be_define_local_const_str(event_str_22, "stop_iteration", -121173395, 14); static const bvalue event_ktab[23] = { { { .s=be_local_const_str(event_str_0) }, BE_STRING}, @@ -1577,176 +1547,141 @@ static const bvalue event_ktab[23] = { }; static const uint32_t event_code[131] = { - 0x1C140300, // 0000 EQ R5 R1 R256 - 0x78160006, // 0001 JMPF R5 #0009 - 0x8C140101, // 0002 GETMET R5 R0 R257 - 0x5C1C0400, // 0003 MOVE R7 R2 - 0x5C200600, // 0004 MOVE R8 R3 - 0x5C240800, // 0005 MOVE R9 R4 - 0x7C140800, // 0006 CALL R5 4 - 0x80040A00, // 0007 RET 1 R5 - 0x70020078, // 0008 JMP #0082 - 0x1C140302, // 0009 EQ R5 R1 R258 - 0x78160004, // 000A JMPF R5 #0010 - 0x8C140103, // 000B GETMET R5 R0 R259 - 0x5C1C0800, // 000C MOVE R7 R4 - 0x7C140400, // 000D CALL R5 2 - 0x80040A00, // 000E RET 1 R5 - 0x70020071, // 000F JMP #0082 - 0x1C140304, // 0010 EQ R5 R1 R260 - 0x78160002, // 0011 JMPF R5 #0015 - 0x4C140000, // 0012 LDNIL 5 - 0x80040A00, // 0013 RET 1 R5 - 0x7002006C, // 0014 JMP #0082 - 0x1C140305, // 0015 EQ R5 R1 R261 - 0x78160003, // 0016 JMPF R5 #001B - 0x8C140105, // 0017 GETMET R5 R0 R261 - 0x7C140200, // 0018 CALL R5 1 - 0x80040A00, // 0019 RET 1 R5 - 0x70020066, // 001A JMP #0082 - 0x1C140306, // 001B EQ R5 R1 R262 - 0x78160003, // 001C JMPF R5 #0021 - 0x8C140107, // 001D GETMET R5 R0 R263 - 0x7C140200, // 001E CALL R5 1 - 0x80040A00, // 001F RET 1 R5 - 0x70020060, // 0020 JMP #0082 - 0x88140108, // 0021 GETMBR R5 R0 R264 - 0x7816005E, // 0022 JMPF R5 #0082 - 0x60140000, // 0023 GETGBL R5 G0 - 0x88180108, // 0024 GETMBR R6 R0 R264 - 0x7C140200, // 0025 CALL R5 1 - 0xA8020057, // 0026 EXBLK 0 #007F - 0x5C180A00, // 0027 MOVE R6 R5 - 0x7C180000, // 0028 CALL R6 0 - 0xA8020048, // 0029 EXBLK 0 #0073 - 0x1C1C0309, // 002A EQ R7 R1 R265 - 0x781E0006, // 002B JMPF R7 #0033 - 0x881C0D09, // 002C GETMBR R7 R6 R265 - 0x781E0004, // 002D JMPF R7 #0033 - 0x8C1C0D09, // 002E GETMET R7 R6 R265 - 0x7C1C0200, // 002F CALL R7 1 - 0xA8040002, // 0030 EXBLK 1 2 - 0x80040E00, // 0031 RET 1 R7 - 0x7002003D, // 0032 JMP #0071 - 0x1C1C030A, // 0033 EQ R7 R1 R266 - 0x781E0006, // 0034 JMPF R7 #003C - 0x881C0D0A, // 0035 GETMBR R7 R6 R266 - 0x781E0004, // 0036 JMPF R7 #003C - 0x8C1C0D0A, // 0037 GETMET R7 R6 R266 - 0x7C1C0200, // 0038 CALL R7 1 - 0xA8040002, // 0039 EXBLK 1 2 - 0x80040E00, // 003A RET 1 R7 - 0x70020034, // 003B JMP #0071 - 0x1C1C030B, // 003C EQ R7 R1 R267 - 0x781E0006, // 003D JMPF R7 #0045 - 0x881C0D0B, // 003E GETMBR R7 R6 R267 - 0x781E0004, // 003F JMPF R7 #0045 - 0x8C1C0D0B, // 0040 GETMET R7 R6 R267 - 0x7C1C0200, // 0041 CALL R7 1 - 0xA8040002, // 0042 EXBLK 1 2 - 0x80040E00, // 0043 RET 1 R7 - 0x7002002B, // 0044 JMP #0071 - 0x1C1C030C, // 0045 EQ R7 R1 R268 - 0x781E0006, // 0046 JMPF R7 #004E - 0x881C0D0C, // 0047 GETMBR R7 R6 R268 - 0x781E0004, // 0048 JMPF R7 #004E - 0x8C1C0D0C, // 0049 GETMET R7 R6 R268 - 0x7C1C0200, // 004A CALL R7 1 - 0xA8040002, // 004B EXBLK 1 2 - 0x80040E00, // 004C RET 1 R7 - 0x70020022, // 004D JMP #0071 - 0x1C1C030D, // 004E EQ R7 R1 R269 - 0x781E0006, // 004F JMPF R7 #0057 - 0x881C0D0D, // 0050 GETMBR R7 R6 R269 - 0x781E0004, // 0051 JMPF R7 #0057 - 0x8C1C0D0D, // 0052 GETMET R7 R6 R269 - 0x7C1C0200, // 0053 CALL R7 1 - 0xA8040002, // 0054 EXBLK 1 2 - 0x80040E00, // 0055 RET 1 R7 - 0x70020019, // 0056 JMP #0071 - 0x1C1C030E, // 0057 EQ R7 R1 R270 - 0x781E0006, // 0058 JMPF R7 #0060 - 0x881C0D0E, // 0059 GETMBR R7 R6 R270 - 0x781E0004, // 005A JMPF R7 #0060 - 0x8C1C0D0E, // 005B GETMET R7 R6 R270 - 0x7C1C0200, // 005C CALL R7 1 - 0xA8040002, // 005D EXBLK 1 2 - 0x80040E00, // 005E RET 1 R7 - 0x70020010, // 005F JMP #0071 - 0x1C1C030F, // 0060 EQ R7 R1 R271 - 0x781E0006, // 0061 JMPF R7 #0069 - 0x881C0D0F, // 0062 GETMBR R7 R6 R271 - 0x781E0004, // 0063 JMPF R7 #0069 - 0x8C1C0D0F, // 0064 GETMET R7 R6 R271 - 0x7C1C0200, // 0065 CALL R7 1 - 0xA8040002, // 0066 EXBLK 1 2 - 0x80040E00, // 0067 RET 1 R7 - 0x70020007, // 0068 JMP #0071 - 0x1C1C0310, // 0069 EQ R7 R1 R272 - 0x781E0005, // 006A JMPF R7 #0071 - 0x881C0D10, // 006B GETMBR R7 R6 R272 - 0x781E0003, // 006C JMPF R7 #0071 - 0x8C1C0D10, // 006D GETMET R7 R6 R272 - 0x7C1C0200, // 006E CALL R7 1 - 0xA8040002, // 006F EXBLK 1 2 - 0x80040E00, // 0070 RET 1 R7 - 0xA8040001, // 0071 EXBLK 1 1 - 0x7002000A, // 0072 JMP #007E - 0xAC1C0002, // 0073 CATCH R7 0 2 - 0x70020007, // 0074 JMP #007D - 0xA4262200, // 0075 IMPORT R9 R273 - 0x8C280112, // 0076 GETMET R10 R0 R274 - 0x8C301313, // 0077 GETMET R12 R9 R275 - 0x58380014, // 0078 LDCONST R14 K20 - 0x583C0015, // 0079 LDCONST R15 K21 - 0x7C300600, // 007A CALL R12 3 - 0x7C280400, // 007B CALL R10 2 - 0x70020000, // 007C JMP #007E - 0xB0080000, // 007D RAISE 2 R0 R0 - 0x7001FFA7, // 007E JMP #0027 - 0x58140016, // 007F LDCONST R5 K22 - 0xAC140200, // 0080 CATCH R5 1 0 - 0xB0080000, // 0081 RAISE 2 R0 R0 - 0x80000000, // 0082 RET 0 R0 + 0x1C140300, // 0000 EQ R5 R1 R256 + 0x78160006, // 0001 JMPF R5 #0009 + 0x8C140101, // 0002 GETMET R5 R0 R257 + 0x5C1C0400, // 0003 MOVE R7 R2 + 0x5C200600, // 0004 MOVE R8 R3 + 0x5C240800, // 0005 MOVE R9 R4 + 0x7C140800, // 0006 CALL R5 4 + 0x80040A00, // 0007 RET 1 R5 + 0x70020078, // 0008 JMP #0082 + 0x1C140302, // 0009 EQ R5 R1 R258 + 0x78160004, // 000A JMPF R5 #0010 + 0x8C140103, // 000B GETMET R5 R0 R259 + 0x5C1C0800, // 000C MOVE R7 R4 + 0x7C140400, // 000D CALL R5 2 + 0x80040A00, // 000E RET 1 R5 + 0x70020071, // 000F JMP #0082 + 0x1C140304, // 0010 EQ R5 R1 R260 + 0x78160002, // 0011 JMPF R5 #0015 + 0x4C140000, // 0012 LDNIL 5 + 0x80040A00, // 0013 RET 1 R5 + 0x7002006C, // 0014 JMP #0082 + 0x1C140305, // 0015 EQ R5 R1 R261 + 0x78160003, // 0016 JMPF R5 #001B + 0x8C140105, // 0017 GETMET R5 R0 R261 + 0x7C140200, // 0018 CALL R5 1 + 0x80040A00, // 0019 RET 1 R5 + 0x70020066, // 001A JMP #0082 + 0x1C140306, // 001B EQ R5 R1 R262 + 0x78160003, // 001C JMPF R5 #0021 + 0x8C140107, // 001D GETMET R5 R0 R263 + 0x7C140200, // 001E CALL R5 1 + 0x80040A00, // 001F RET 1 R5 + 0x70020060, // 0020 JMP #0082 + 0x88140108, // 0021 GETMBR R5 R0 R264 + 0x7816005E, // 0022 JMPF R5 #0082 + 0x60140000, // 0023 GETGBL R5 G0 + 0x88180108, // 0024 GETMBR R6 R0 R264 + 0x7C140200, // 0025 CALL R5 1 + 0xA8020057, // 0026 EXBLK 0 #007F + 0x5C180A00, // 0027 MOVE R6 R5 + 0x7C180000, // 0028 CALL R6 0 + 0xA8020048, // 0029 EXBLK 0 #0073 + 0x1C1C0309, // 002A EQ R7 R1 R265 + 0x781E0006, // 002B JMPF R7 #0033 + 0x881C0D09, // 002C GETMBR R7 R6 R265 + 0x781E0004, // 002D JMPF R7 #0033 + 0x8C1C0D09, // 002E GETMET R7 R6 R265 + 0x7C1C0200, // 002F CALL R7 1 + 0xA8040002, // 0030 EXBLK 1 2 + 0x80040E00, // 0031 RET 1 R7 + 0x7002003D, // 0032 JMP #0071 + 0x1C1C030A, // 0033 EQ R7 R1 R266 + 0x781E0006, // 0034 JMPF R7 #003C + 0x881C0D0A, // 0035 GETMBR R7 R6 R266 + 0x781E0004, // 0036 JMPF R7 #003C + 0x8C1C0D0A, // 0037 GETMET R7 R6 R266 + 0x7C1C0200, // 0038 CALL R7 1 + 0xA8040002, // 0039 EXBLK 1 2 + 0x80040E00, // 003A RET 1 R7 + 0x70020034, // 003B JMP #0071 + 0x1C1C030B, // 003C EQ R7 R1 R267 + 0x781E0006, // 003D JMPF R7 #0045 + 0x881C0D0B, // 003E GETMBR R7 R6 R267 + 0x781E0004, // 003F JMPF R7 #0045 + 0x8C1C0D0B, // 0040 GETMET R7 R6 R267 + 0x7C1C0200, // 0041 CALL R7 1 + 0xA8040002, // 0042 EXBLK 1 2 + 0x80040E00, // 0043 RET 1 R7 + 0x7002002B, // 0044 JMP #0071 + 0x1C1C030C, // 0045 EQ R7 R1 R268 + 0x781E0006, // 0046 JMPF R7 #004E + 0x881C0D0C, // 0047 GETMBR R7 R6 R268 + 0x781E0004, // 0048 JMPF R7 #004E + 0x8C1C0D0C, // 0049 GETMET R7 R6 R268 + 0x7C1C0200, // 004A CALL R7 1 + 0xA8040002, // 004B EXBLK 1 2 + 0x80040E00, // 004C RET 1 R7 + 0x70020022, // 004D JMP #0071 + 0x1C1C030D, // 004E EQ R7 R1 R269 + 0x781E0006, // 004F JMPF R7 #0057 + 0x881C0D0D, // 0050 GETMBR R7 R6 R269 + 0x781E0004, // 0051 JMPF R7 #0057 + 0x8C1C0D0D, // 0052 GETMET R7 R6 R269 + 0x7C1C0200, // 0053 CALL R7 1 + 0xA8040002, // 0054 EXBLK 1 2 + 0x80040E00, // 0055 RET 1 R7 + 0x70020019, // 0056 JMP #0071 + 0x1C1C030E, // 0057 EQ R7 R1 R270 + 0x781E0006, // 0058 JMPF R7 #0060 + 0x881C0D0E, // 0059 GETMBR R7 R6 R270 + 0x781E0004, // 005A JMPF R7 #0060 + 0x8C1C0D0E, // 005B GETMET R7 R6 R270 + 0x7C1C0200, // 005C CALL R7 1 + 0xA8040002, // 005D EXBLK 1 2 + 0x80040E00, // 005E RET 1 R7 + 0x70020010, // 005F JMP #0071 + 0x1C1C030F, // 0060 EQ R7 R1 R271 + 0x781E0006, // 0061 JMPF R7 #0069 + 0x881C0D0F, // 0062 GETMBR R7 R6 R271 + 0x781E0004, // 0063 JMPF R7 #0069 + 0x8C1C0D0F, // 0064 GETMET R7 R6 R271 + 0x7C1C0200, // 0065 CALL R7 1 + 0xA8040002, // 0066 EXBLK 1 2 + 0x80040E00, // 0067 RET 1 R7 + 0x70020007, // 0068 JMP #0071 + 0x1C1C0310, // 0069 EQ R7 R1 R272 + 0x781E0005, // 006A JMPF R7 #0071 + 0x881C0D10, // 006B GETMBR R7 R6 R272 + 0x781E0003, // 006C JMPF R7 #0071 + 0x8C1C0D10, // 006D GETMET R7 R6 R272 + 0x7C1C0200, // 006E CALL R7 1 + 0xA8040002, // 006F EXBLK 1 2 + 0x80040E00, // 0070 RET 1 R7 + 0xA8040001, // 0071 EXBLK 1 1 + 0x7002000A, // 0072 JMP #007E + 0xAC1C0002, // 0073 CATCH R7 0 2 + 0x70020007, // 0074 JMP #007D + 0xA4262200, // 0075 IMPORT R9 R273 + 0x8C280112, // 0076 GETMET R10 R0 R274 + 0x8C301313, // 0077 GETMET R12 R9 R275 + 0x58380014, // 0078 LDCONST R14 K20 + 0x583C0015, // 0079 LDCONST R15 K21 + 0x7C300600, // 007A CALL R12 3 + 0x7C280400, // 007B CALL R10 2 + 0x70020000, // 007C JMP #007E + 0xB0080000, // 007D RAISE 2 R0 R0 + 0x7001FFA7, // 007E JMP #0027 + 0x58140016, // 007F LDCONST R5 K22 + 0xAC140200, // 0080 CATCH R5 1 0 + 0xB0080000, // 0081 RAISE 2 R0 R0 + 0x80000000, // 0082 RET 0 R0 }; -static const bproto event_proto = { - NULL, // bgcobject *next - 8, // type - GC_CONST, // marked - 16, // nstack - 0, // nupvals - 5, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &event_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &event_code, // code - be_local_const_str(event_str_name), // name - 131, // codesize - 23, // nconst - 0, // nproto - be_local_const_str(event_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -static const bclosure event_closure = { - NULL, // bgcobject *next - 36, // type - GC_CONST, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &event_proto, // proto - { NULL } // upvals -}; +be_define_local_proto(event, 16, 5, 1, 0, 0); +be_define_local_closure(event); /*******************************************************************/ @@ -1766,10 +1701,10 @@ static const bclosure event_closure = { ** Solidified function: add_driver ********************************************************************/ -be_define_local_const_str(add_driver_str_name, "add_driver", 1654458371, 0, 10, 0); -be_define_local_const_str(add_driver_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(add_driver_str_0, "_drivers", -1034638311, 0, 8, 0); -be_define_local_const_str(add_driver_str_1, "push", -2022703139, 0, 4, 0); +be_define_local_const_str2(add_driver_str_name, "add_driver", 1654458371, 0, 10, 0); +be_define_local_const_str2(add_driver_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(add_driver_str_0, "_drivers", -1034638311, 0, 8, 0); +be_define_local_const_str2(add_driver_str_1, "push", -2022703139, 0, 4, 0); static const bvalue add_driver_ktab[2] = { { { .s=be_local_const_str(add_driver_str_0) }, BE_STRING}, @@ -1794,7 +1729,7 @@ static const uint32_t add_driver_code[12] = { static const bproto add_driver_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 5, // nstack 0, // nupvals 2, // argc @@ -1822,7 +1757,7 @@ static const bproto add_driver_proto = { const bclosure add_driver_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &add_driver_proto, // proto @@ -1868,24 +1803,24 @@ const bclosure add_driver_closure = { ** Solidified function: load ********************************************************************/ -be_define_local_const_str(load_str_name, "load", -435725847, 0, 4, 0); -be_define_local_const_str(load_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(load_str_0, "string", 398550328, 0, 6, 0); -be_define_local_const_str(load_str_1, "split", -2017972765, 0, 5, 0); -be_define_local_const_str(load_str_2, ".", 722245873, 0, 1, 0); -be_define_local_const_str(load_str_4, "be", 942383232, 0, 2, 0); -be_define_local_const_str(load_str_5, "bec", 1336821081, 0, 3, 0); -be_define_local_const_str(load_str_6, "file extension is not '.be' or '.bec'", -1199247657, 0, 37, 0); -be_define_local_const_str(load_str_7, "c", -435409838, 0, 1, 0); -be_define_local_const_str(load_str_9, "/", 705468254, 0, 1, 0); -be_define_local_const_str(load_str_10, "file", -1427482813, 0, 4, 0); -be_define_local_const_str(load_str_11, "save", -855671224, 0, 4, 0); -be_define_local_const_str(load_str_12, "log", 1062293841, 0, 3, 0); -be_define_local_const_str(load_str_13, "format", -1180859054, 0, 6, 0); -be_define_local_const_str(load_str_14, "BRY: could not save compiled file %s (%s)", 736659787, 0, 41, 0); -be_define_local_const_str(load_str_15, "BRY: sucessfully loaded '%s'", -675188639, 0, 28, 0); -be_define_local_const_str(load_str_16, "Could not load file '%s'", -708657871, 0, 24, 0); -be_define_local_const_str(load_str_17, "io_error", 1970281036, 0, 8, 0); +be_define_local_const_str2(load_str_name, "load", -435725847, 0, 4, 0); +be_define_local_const_str2(load_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(load_str_0, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(load_str_1, "split", -2017972765, 0, 5, 0); +be_define_local_const_str2(load_str_2, ".", 722245873, 0, 1, 0); +be_define_local_const_str2(load_str_4, "be", 942383232, 0, 2, 0); +be_define_local_const_str2(load_str_5, "bec", 1336821081, 0, 3, 0); +be_define_local_const_str2(load_str_6, "file extension is not '.be' or '.bec'", -1199247657, 0, 37, 0); +be_define_local_const_str2(load_str_7, "c", -435409838, 0, 1, 0); +be_define_local_const_str2(load_str_9, "/", 705468254, 0, 1, 0); +be_define_local_const_str2(load_str_10, "file", -1427482813, 0, 4, 0); +be_define_local_const_str2(load_str_11, "save", -855671224, 0, 4, 0); +be_define_local_const_str2(load_str_12, "log", 1062293841, 0, 3, 0); +be_define_local_const_str2(load_str_13, "format", -1180859054, 0, 6, 0); +be_define_local_const_str2(load_str_14, "BRY: could not save compiled file %s (%s)", 736659787, 0, 41, 0); +be_define_local_const_str2(load_str_15, "BRY: sucessfully loaded '%s'", -675188639, 0, 28, 0); +be_define_local_const_str2(load_str_16, "Could not load file '%s'", -708657871, 0, 24, 0); +be_define_local_const_str2(load_str_17, "io_error", 1970281036, 0, 8, 0); static const bvalue load_ktab[18] = { { { .s=be_local_const_str(load_str_0) }, BE_STRING}, @@ -1987,7 +1922,7 @@ static const uint32_t load_code[73] = { static const bproto load_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 14, // nstack 0, // nupvals 2, // argc @@ -2015,7 +1950,7 @@ static const bproto load_proto = { const bclosure load_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &load_proto, // proto @@ -2040,12 +1975,12 @@ const bclosure load_closure = { ** Solidified function: wire_scan ********************************************************************/ -be_define_local_const_str(wire_scan_str_name, "wire_scan", -1623691416, 0, 9, 0); -be_define_local_const_str(wire_scan_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(wire_scan_str_0, "i2c_enabled", 218388101, 0, 11, 0); -be_define_local_const_str(wire_scan_str_1, "wire1", -1082245877, 0, 5, 0); -be_define_local_const_str(wire_scan_str_2, "detect", 8884370, 0, 6, 0); -be_define_local_const_str(wire_scan_str_3, "wire2", -1065468258, 0, 5, 0); +be_define_local_const_str2(wire_scan_str_name, "wire_scan", -1623691416, 0, 9, 0); +be_define_local_const_str2(wire_scan_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(wire_scan_str_0, "i2c_enabled", 218388101, 0, 11, 0); +be_define_local_const_str2(wire_scan_str_1, "wire1", -1082245877, 0, 5, 0); +be_define_local_const_str2(wire_scan_str_2, "detect", 8884370, 0, 6, 0); +be_define_local_const_str2(wire_scan_str_3, "wire2", -1065468258, 0, 5, 0); static const bvalue wire_scan_ktab[4] = { { { .s=be_local_const_str(wire_scan_str_0) }, BE_STRING}, @@ -2085,7 +2020,7 @@ static const uint32_t wire_scan_code[25] = { static const bproto wire_scan_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 6, // nstack 0, // nupvals 3, // argc @@ -2113,7 +2048,7 @@ static const bproto wire_scan_proto = { static const bclosure wire_scan_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &wire_scan_proto, // proto @@ -2134,18 +2069,18 @@ static const bclosure wire_scan_closure = { ********************************************************************/ /********** Solidified proto: time_str */ -be_define_local_const_str(time_str_str_name, "time_str", -1681139684, 0, 8, 0); -be_define_local_const_str(time_str_str_source, "input", -103256197, 0, 5, 0); -be_define_local_const_str(time_str_str_0, "string", 398550328, 0, 6, 0); -be_define_local_const_str(time_str_str_1, "time_dump", -964556549, 0, 9, 0); -be_define_local_const_str(time_str_str_2, "format", -1180859054, 0, 6, 0); -be_define_local_const_str(time_str_str_3, "%04d-%02d-%02dT%02d:%02d:%02d", -869438695, 0, 29, 0); -be_define_local_const_str(time_str_str_4, "year", -1367388900, 0, 4, 0); -be_define_local_const_str(time_str_str_5, "month", -696646139, 0, 5, 0); -be_define_local_const_str(time_str_str_6, "day", -464576003, 0, 3, 0); -be_define_local_const_str(time_str_str_7, "hour", -1241306097, 0, 4, 0); -be_define_local_const_str(time_str_str_8, "min", -913357481, 0, 3, 0); -be_define_local_const_str(time_str_str_9, "sec", -1155074638, 0, 3, 0); +be_define_local_const_str(time_str_str_name, "time_str", -1681139684, 8); +be_define_local_const_str(time_str_str_source, "input", -103256197, 5); +be_define_local_const_str(time_str_str_0, "string", 398550328, 6); +be_define_local_const_str(time_str_str_1, "time_dump", -964556549, 9); +be_define_local_const_str(time_str_str_2, "format", -1180859054, 6); +be_define_local_const_str(time_str_str_3, "%04d-%02d-%02dT%02d:%02d:%02d", -869438695, 29); +be_define_local_const_str(time_str_str_4, "year", -1367388900, 4); +be_define_local_const_str(time_str_str_5, "month", -696646139, 5); +be_define_local_const_str(time_str_str_6, "day", -464576003, 3); +be_define_local_const_str(time_str_str_7, "hour", -1241306097, 4); +be_define_local_const_str(time_str_str_8, "min", -913357481, 3); +be_define_local_const_str(time_str_str_9, "sec", -1155074638, 3); static const bvalue time_str_ktab[10] = { { { .s=be_local_const_str(time_str_str_0) }, BE_STRING}, @@ -2199,13 +2134,13 @@ be_define_local_closure(time_str); ** Solidified function: cmd ********************************************************************/ -be_define_local_const_str(cmd_str_name, "cmd", -158181397, 0, 3, 0); -be_define_local_const_str(cmd_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(cmd_str_0, "json", 916562499, 0, 4, 0); -be_define_local_const_str(cmd_str_1, "_cmd", -875145154, 0, 4, 0); -be_define_local_const_str(cmd_str_2, "load", -435725847, 0, 4, 0); -be_define_local_const_str(cmd_str_3, "instance", 193386898, 0, 8, 0); -be_define_local_const_str(cmd_str_4, "response", 1499316702, 0, 8, 0); +be_define_local_const_str2(cmd_str_name, "cmd", -158181397, 0, 3, 0); +be_define_local_const_str2(cmd_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(cmd_str_0, "json", 916562499, 0, 4, 0); +be_define_local_const_str2(cmd_str_1, "_cmd", -875145154, 0, 4, 0); +be_define_local_const_str2(cmd_str_2, "load", -435725847, 0, 4, 0); +be_define_local_const_str2(cmd_str_3, "instance", 193386898, 0, 8, 0); +be_define_local_const_str2(cmd_str_4, "response", 1499316702, 0, 8, 0); static const bvalue cmd_ktab[5] = { { { .s=be_local_const_str(cmd_str_0) }, BE_STRING}, @@ -2240,7 +2175,7 @@ static const uint32_t cmd_code[19] = { static const bproto cmd_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 7, // nstack 0, // nupvals 2, // argc @@ -2268,7 +2203,7 @@ static const bproto cmd_proto = { static const bclosure cmd_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &cmd_proto, // proto @@ -2293,11 +2228,11 @@ static const bclosure cmd_closure = { ** Solidified function: get_light ********************************************************************/ -be_define_local_const_str(get_light_str_name, "get_light", 381930476, 0, 9, 0); -be_define_local_const_str(get_light_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(get_light_str_0, "tasmota.get_light() is deprecated, use light.get()", -769213649, 0, 50, 0); -be_define_local_const_str(get_light_str_1, "light", -493019601, 0, 5, 0); -be_define_local_const_str(get_light_str_2, "get", 1410115415, 0, 3, 0); +be_define_local_const_str2(get_light_str_name, "get_light", 381930476, 0, 9, 0); +be_define_local_const_str2(get_light_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(get_light_str_0, "tasmota.get_light() is deprecated, use light.get()", -769213649, 0, 50, 0); +be_define_local_const_str2(get_light_str_1, "light", -493019601, 0, 5, 0); +be_define_local_const_str2(get_light_str_2, "get", 1410115415, 0, 3, 0); static const bvalue get_light_ktab[3] = { { { .s=be_local_const_str(get_light_str_0) }, BE_STRING}, @@ -2327,7 +2262,7 @@ static const uint32_t get_light_code[16] = { static const bproto get_light_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 6, // nstack 0, // nupvals 2, // argc @@ -2355,7 +2290,7 @@ static const bproto get_light_proto = { static const bclosure get_light_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &get_light_proto, // proto @@ -2382,11 +2317,11 @@ static const bclosure get_light_closure = { ** Solidified function: set_light ********************************************************************/ -be_define_local_const_str(set_light_str_name, "set_light", -1118891144, 0, 9, 0); -be_define_local_const_str(set_light_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(set_light_str_0, "tasmota.set_light() is deprecated, use light.set()", 2124937871, 0, 50, 0); -be_define_local_const_str(set_light_str_1, "light", -493019601, 0, 5, 0); -be_define_local_const_str(set_light_str_2, "set", -970520829, 0, 3, 0); +be_define_local_const_str2(set_light_str_name, "set_light", -1118891144, 0, 9, 0); +be_define_local_const_str2(set_light_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(set_light_str_0, "tasmota.set_light() is deprecated, use light.set()", 2124937871, 0, 50, 0); +be_define_local_const_str2(set_light_str_1, "light", -493019601, 0, 5, 0); +be_define_local_const_str2(set_light_str_2, "set", -970520829, 0, 3, 0); static const bvalue set_light_ktab[3] = { { { .s=be_local_const_str(set_light_str_0) }, BE_STRING}, @@ -2418,7 +2353,7 @@ static const uint32_t set_light_code[18] = { static const bproto set_light_proto = { NULL, // bgcobject *next 8, // type - GC_CONST, // marked + 0x08, // marked 8, // nstack 0, // nupvals 3, // argc @@ -2446,7 +2381,7 @@ static const bproto set_light_proto = { static const bclosure set_light_closure = { NULL, // bgcobject *next 36, // type - GC_CONST, // marked + 0x08, // marked 0, // nupvals NULL, // bgcobject *gray (bproto*) &set_light_proto, // proto diff --git a/lib/libesp32/Berry/default/be_wirelib.c b/lib/libesp32/Berry/default/be_wirelib.c index ee75d6a54..21192c926 100644 --- a/lib/libesp32/Berry/default/be_wirelib.c +++ b/lib/libesp32/Berry/default/be_wirelib.c @@ -9,6 +9,8 @@ #include "be_string.h" #include "be_gc.h" +// temporary work-around +#define be_define_local_const_str2(a,b,c,d,e,f) be_define_local_const_str(a,b,c,e) #ifdef USE_I2C extern int b_wire_init(bvm *vm); @@ -43,14 +45,14 @@ extern int b_wire_detect(bvm *vm); ** Solidified function: read_bytes ********************************************************************/ -be_define_local_const_str(read_bytes_str_name, "read_bytes", -718234123, 0, 10, 0); -be_define_local_const_str(read_bytes_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(read_bytes_str_0, "_begin_transmission", -1515506120, 0, 19, 0); -be_define_local_const_str(read_bytes_str_1, "_write", -2079504471, 0, 6, 0); -be_define_local_const_str(read_bytes_str_2, "_end_transmission", -1057486896, 0, 17, 0); -be_define_local_const_str(read_bytes_str_3, "_request_from", -329818692, 0, 13, 0); -be_define_local_const_str(read_bytes_str_4, "_available", 1306196581, 0, 10, 0); -be_define_local_const_str(read_bytes_str_5, "_read", 346717030, 0, 5, 0); +be_define_local_const_str2(read_bytes_str_name, "read_bytes", -718234123, 0, 10, 0); +be_define_local_const_str2(read_bytes_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(read_bytes_str_0, "_begin_transmission", -1515506120, 0, 19, 0); +be_define_local_const_str2(read_bytes_str_1, "_write", -2079504471, 0, 6, 0); +be_define_local_const_str2(read_bytes_str_2, "_end_transmission", -1057486896, 0, 17, 0); +be_define_local_const_str2(read_bytes_str_3, "_request_from", -329818692, 0, 13, 0); +be_define_local_const_str2(read_bytes_str_4, "_available", 1306196581, 0, 10, 0); +be_define_local_const_str2(read_bytes_str_5, "_read", 346717030, 0, 5, 0); static const bvalue read_bytes_ktab[6] = { { { .s=be_local_const_str(read_bytes_str_0) }, BE_STRING}, @@ -141,11 +143,11 @@ const bclosure read_bytes_closure = { ** Solidified function: write_bytes ********************************************************************/ -be_define_local_const_str(write_bytes_str_name, "write_bytes", 1227543792, 0, 11, 0); -be_define_local_const_str(write_bytes_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str(write_bytes_str_0, "_begin_transmission", -1515506120, 0, 19, 0); -be_define_local_const_str(write_bytes_str_1, "_write", -2079504471, 0, 6, 0); -be_define_local_const_str(write_bytes_str_2, "_end_transmission", -1057486896, 0, 17, 0); +be_define_local_const_str2(write_bytes_str_name, "write_bytes", 1227543792, 0, 11, 0); +be_define_local_const_str2(write_bytes_str_source, "string", 398550328, 0, 6, 0); +be_define_local_const_str2(write_bytes_str_0, "_begin_transmission", -1515506120, 0, 19, 0); +be_define_local_const_str2(write_bytes_str_1, "_write", -2079504471, 0, 6, 0); +be_define_local_const_str2(write_bytes_str_2, "_end_transmission", -1057486896, 0, 17, 0); static const bvalue write_bytes_ktab[3] = { { { .s=be_local_const_str(write_bytes_str_0) }, BE_STRING}, diff --git a/lib/libesp32/Berry/src/be_solidifylib.c b/lib/libesp32/Berry/src/be_solidifylib.c index 338f6127b..c0f66da81 100644 --- a/lib/libesp32/Berry/src/be_solidifylib.c +++ b/lib/libesp32/Berry/src/be_solidifylib.c @@ -80,9 +80,9 @@ static void m_solidify_proto(bvm *vm, bproto *pr, const char * func_name, int bu } /* create static strings for name and source */ - logfmt("be_define_local_const_str(%s_str_name, \"%s\", %i, 0, %u, 0);\n", + logfmt("be_define_local_const_str(%s_str_name, \"%s\", %i, %u);\n", func_name, str(pr->name), be_strhash(pr->name), str_len(pr->name)); - logfmt("be_define_local_const_str(%s_str_source, \"%s\", %i, 0, %u, 0);\n", + logfmt("be_define_local_const_str(%s_str_source, \"%s\", %i, %u);\n", func_name, func_source, be_strhash(pr->source), str_len(pr->source)); /* create static strings first */ @@ -95,7 +95,7 @@ static void m_solidify_proto(bvm *vm, bproto *pr, const char * func_name, int bu if (len >= 255) { be_raise(vm, "internal_error", "Strings greater than 255 chars not supported yet"); } - logfmt("\", %i, 0, %zu, 0);\n", be_strhash(pr->ktab[i].v.s), len >= 255 ? 255 : len); + logfmt("\", %i, %zu);\n", be_strhash(pr->ktab[i].v.s), len >= 255 ? 255 : len); } } logfmt("\n"); diff --git a/lib/libesp32/Berry/src/berry.h b/lib/libesp32/Berry/src/berry.h index 6dd42cd21..708255439 100644 --- a/lib/libesp32/Berry/src/berry.h +++ b/lib/libesp32/Berry/src/berry.h @@ -252,15 +252,15 @@ typedef struct bntvmodule { /* support for solidified berry functions */ /* native const strings outside of global string hash */ -#define be_define_local_const_str(_name, _s, _hash, _extra, _len, _next) \ - static const bcstring be_local_const_str_##_name = { \ - .next = (bgcobject *)NULL, \ - .type = BE_STRING, \ - .marked = GC_CONST, \ - .extra = 0, \ - .slen = _len, \ - .hash = 0, \ - .s = _s \ +#define be_define_local_const_str(_name, _s, _hash, _len) \ + static const bcstring be_local_const_str_##_name = { \ + .next = (bgcobject *)NULL, \ + .type = BE_STRING, \ + .marked = 0x08, /* GC_CONST */ \ + .extra = 0, \ + .slen = _len, \ + .hash = 0, \ + .s = _s \ } #define be_local_const_str(_name) (bstring*) &be_local_const_str_##_name @@ -297,15 +297,15 @@ typedef struct bntvmodule { static const bproto _name##_proto = { \ NULL, /* bgcobject *next */ \ 8, /* type BE_PROTO */ \ - GC_CONST, /* marked outside of GC */ \ + 0x08, /* marked outside of GC */ \ (_nstack), /* nstack */ \ - BE_IIF(_is_upval)(sizeof(_name##_upvals)/sizeof(bupvaldesc),0),/* nupvals */ \ + BE_IIF(_is_upval)(sizeof(_name##_upvals)/sizeof(bupvaldesc),0),/* nupvals */ \ (_argc), /* argc */ \ 0, /* varg */ \ NULL, /* bgcobject *gray */ \ - BE_IIF(_is_upval)((bupvaldesc*)&_name##_upvals,NULL), /* bupvaldesc *upvals */ \ + BE_IIF(_is_upval)((bupvaldesc*)&_name##_upvals,NULL), /* bupvaldesc *upvals */\ BE_IIF(_is_const)((bvalue*)&_name##_ktab,NULL), /* ktab */ \ - BE_IIF(_is_subproto)((struct bproto**)&_name##_subproto,NULL),/* bproto **ptab */ \ + BE_IIF(_is_subproto)((struct bproto**)&_name##_subproto,NULL),/* bproto **ptab */\ (binstruction*) &_name##_code, /* code */ \ be_local_const_str(_name##_str_name), /* name */ \ sizeof(_name##_code)/sizeof(uint32_t), /* codesize */ \ @@ -320,7 +320,7 @@ typedef struct bntvmodule { const bclosure _name##_closure = { \ NULL, /* bgcobject *next */ \ 36, /* type BE_CLOSURE */ \ - GC_CONST, /* marked */ \ + 0x08, /* marked GC_CONST */ \ 0, /* nupvals */ \ NULL, /* bgcobject *gray */ \ (bproto*) &_name##_proto, /* proto */ \ From 072302d82141642d9197842de3f95067479bb54e Mon Sep 17 00:00:00 2001 From: twollweber Date: Wed, 28 Apr 2021 18:58:19 +0200 Subject: [PATCH 73/97] Fix for issue #11930 --- tasmota/xsns_75_prometheus.ino | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tasmota/xsns_75_prometheus.ino b/tasmota/xsns_75_prometheus.ino index 0b0251229..47f1d4f8d 100644 --- a/tasmota/xsns_75_prometheus.ino +++ b/tasmota/xsns_75_prometheus.ino @@ -50,6 +50,9 @@ const char *UnitfromType(const char *type) // find unit for measurment type if (strcmp(type, "humidity") == 0) { return "percentage"; } + if (strcmp(type, "id") == 0) { + return "untyped"; + } return ""; } @@ -148,8 +151,13 @@ void HandleMetrics(void) { String type = FormatMetricName(key2.getStr()); const char *unit = UnitfromType(type.c_str()); if (strcmp(type.c_str(), "totalstarttime") != 0) { // this metric causes prometheus of fail - WSContentSend_P(PSTR("# TYPE tasmota_sensors_%s_%s gauge\ntasmota_sensors_%s_%s{sensor=\"%s\"} %s\n"), - type.c_str(), unit, type.c_str(), unit, sensor.c_str(), value); + if (strcmp(type.c_str(), "id") == 0) { // this metric is NaN, so convert it to a label, see Wi-Fi metrics above + WSContentSend_P(PSTR("# TYPE tasmota_sensors_%s_%s gauge\ntasmota_sensors_%s_%s{sensor=\"%s\",id=\"%s\"} 1\n"), + type.c_str(), unit, type.c_str(), unit, sensor.c_str(), value); + } else { + WSContentSend_P(PSTR("# TYPE tasmota_sensors_%s_%s gauge\ntasmota_sensors_%s_%s{sensor=\"%s\"} %s\n"), + type.c_str(), unit, type.c_str(), unit, sensor.c_str(), value); + } } } } From 5b36e504c53777361dc14e89bb003e2a18b7d7b9 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 28 Apr 2021 19:30:19 +0200 Subject: [PATCH 74/97] Berry more solidification --- lib/libesp32/Berry/default/be_driverlib.c | 40 +- lib/libesp32/Berry/default/be_energylib.c | 11 +- lib/libesp32/Berry/default/be_gpio_lib.c | 3 +- lib/libesp32/Berry/default/be_light_lib.c | 18 +- .../Berry/default/be_lv_lvgl_module.c | 125 +- .../Berry/default/be_lvgl_color_lib.c | 3 +- lib/libesp32/Berry/default/be_lvgl_font_lib.c | 3 +- .../Berry/default/be_lvgl_widgets_lib.c | 3 +- lib/libesp32/Berry/default/be_tasmotalib.c | 332 +- lib/libesp32/Berry/default/be_wirelib.c | 69 +- lib/libesp32/Berry/generate/be_const_strtab.h | 3306 +++++------ .../Berry/generate/be_const_strtab_def.h | 4901 +++++++++-------- .../generate/be_fixed_be_class_tasmota.h | 67 + .../be_fixed_be_class_tasmota_driver.h | 26 + .../generate/be_fixed_be_class_tasmota_wire.h | 30 + .../generate/be_fixed_be_tasmota_driver.h | 25 + lib/libesp32/Berry/generate/be_fixed_energy.h | 17 + lib/libesp32/Berry/generate/be_fixed_light.h | 21 + .../Berry/generate/be_fixed_tasmota_driver.h | 25 + lib/libesp32/Berry/src/be_constobj.h | 19 +- lib/libesp32/Berry/src/berry.h | 8 +- tasmota/xdrv_52_7_berry_embedded.ino | 4 +- tools/lv_berry/convert.py | 125 +- 23 files changed, 4838 insertions(+), 4343 deletions(-) create mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h create mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_driver.h create mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_wire.h create mode 100644 lib/libesp32/Berry/generate/be_fixed_be_tasmota_driver.h create mode 100644 lib/libesp32/Berry/generate/be_fixed_energy.h create mode 100644 lib/libesp32/Berry/generate/be_fixed_light.h create mode 100644 lib/libesp32/Berry/generate/be_fixed_tasmota_driver.h diff --git a/lib/libesp32/Berry/default/be_driverlib.c b/lib/libesp32/Berry/default/be_driverlib.c index 2f44a3c85..0ab64e329 100644 --- a/lib/libesp32/Berry/default/be_driverlib.c +++ b/lib/libesp32/Berry/default/be_driverlib.c @@ -4,9 +4,7 @@ * To use: `d = Driver()` * *******************************************************************/ -#include "be_object.h" -#include "be_string.h" -#include "be_gc.h" +#include "be_constobj.h" extern int d_getTasmotaGlob(bvm *vm); @@ -77,10 +75,14 @@ be_define_local_closure(add_cmd); /*******************************************************************/ -// #if !BE_USE_PRECOMPILED_OBJECT -#if 1 // TODO we will do pre-compiled later -void be_load_driverlib(bvm *vm) -{ + + +#if BE_USE_PRECOMPILED_OBJECT +#include "../generate/be_fixed_be_class_tasmota_driver.h" +#endif + +void be_load_driverlib(bvm *vm) { +#if !BE_USE_PRECOMPILED_OBJECT static const bnfuncinfo members[] = { { "every_second", NULL }, { "every_100ms", NULL }, @@ -99,12 +101,26 @@ void be_load_driverlib(bvm *vm) { NULL, NULL } }; be_regclass(vm, "Driver", members); -} #else + be_pushntvclass(vm, &be_class_tasmota_driver); + be_setglobal(vm, "Driver"); + be_pop(vm, 1); +#endif +} /* @const_object_info_begin -module tasmota (scope: global, depend: 1) { - get_free_heap, func(l_getFreeHeap) + +class be_class_tasmota_driver (scope: global, name: Driver) { + every_second, var + every_100ms, var + web_add_button, var + web_add_main_button, var + save_before_restart, var + web_sensor, var + json_append, var + button_pressed, var + + get_tasmota, func(d_getTasmotaGlob) + + add_cmd, closure(add_cmd_closure) } @const_object_info_end */ -#include "../generate/be_fixed_tasmota.h" -#endif diff --git a/lib/libesp32/Berry/default/be_energylib.c b/lib/libesp32/Berry/default/be_energylib.c index 24400e85e..eb267f5db 100644 --- a/lib/libesp32/Berry/default/be_energylib.c +++ b/lib/libesp32/Berry/default/be_energylib.c @@ -5,14 +5,13 @@ * * read power values *******************************************************************/ -#include "be_object.h" +#include "be_constobj.h" #ifdef USE_ENERGY_SENSOR extern int b_nrg_read(bvm *vm); -// #if !BE_USE_PRECOMPILED_OBJECT -#if 1 // TODO we will do pre-compiled later +#if !BE_USE_PRECOMPILED_OBJECT be_native_module_attr_table(energy) { be_native_module_function("read", b_nrg_read), }; @@ -20,11 +19,11 @@ be_native_module_attr_table(energy) { be_define_native_module(energy, NULL); #else /* @const_object_info_begin -module tasmota (scope: global, depend: 1) { - get_free_heap, func(l_getFreeHeap) +module energy (scope: global) { + read, func(b_nrg_read) } @const_object_info_end */ -#include "../generate/be_fixed_tasmota.h" +#include "../generate/be_fixed_energy.h" #endif #endif // USE_ENERGY_SENSOR \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_gpio_lib.c b/lib/libesp32/Berry/default/be_gpio_lib.c index e52a50cdd..d2c9bf8db 100644 --- a/lib/libesp32/Berry/default/be_gpio_lib.c +++ b/lib/libesp32/Berry/default/be_gpio_lib.c @@ -5,7 +5,7 @@ * * read power values *******************************************************************/ -#include "be_object.h" +#include "be_constobj.h" // Tasmota specific @@ -17,7 +17,6 @@ extern int gp_pin_used(bvm *vm); extern int gp_pin(bvm *vm); #if !BE_USE_PRECOMPILED_OBJECT -// #if 1 // TODO we will do pre-compiled later be_native_module_attr_table(gpio) { // HIGH/LOW be_native_module_int("LOW", 0), diff --git a/lib/libesp32/Berry/default/be_light_lib.c b/lib/libesp32/Berry/default/be_light_lib.c index 28e95e6cc..a536fd6df 100644 --- a/lib/libesp32/Berry/default/be_light_lib.c +++ b/lib/libesp32/Berry/default/be_light_lib.c @@ -3,9 +3,7 @@ * * To use: `import tasmota` *******************************************************************/ -#include "be_object.h" -#include "be_string.h" -#include "be_gc.h" +#include "be_constobj.h" #ifdef USE_LIGHT extern int l_getlight(bvm *vm); @@ -15,8 +13,7 @@ extern int l_gamma8(bvm *vm); extern int l_gamma10(bvm *vm); extern int l_rev_gamma10(bvm *vm); -// #if !BE_USE_PRECOMPILED_OBJECT -#if 1 // TODO we will do pre-compiled later +#if !BE_USE_PRECOMPILED_OBJECT be_native_module_attr_table(light) { @@ -33,11 +30,16 @@ be_define_native_module(light, NULL); #else /* @const_object_info_begin -module tasmota (scope: global, depend: 1) { - get_free_heap, func(l_getFreeHeap) +module light (scope: global) { + get, func(l_getlight) + set, func(l_setlight) + + gamma8, func(l_gamma8) + gamma10, func(l_gamma10) + reverse_gamma10, func(l_rev_gamma10) } @const_object_info_end */ -#include "../generate/be_fixed_tasmota.h" +#include "../generate/be_fixed_light.h" #endif #endif // USE_LIGHT \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_lv_lvgl_module.c b/lib/libesp32/Berry/default/be_lv_lvgl_module.c index a5d6d330b..0bce12420 100644 --- a/lib/libesp32/Berry/default/be_lv_lvgl_module.c +++ b/lib/libesp32/Berry/default/be_lv_lvgl_module.c @@ -4,15 +4,10 @@ /******************************************************************** * LVGL Module *******************************************************************/ -#include "be_object.h" -#include "be_string.h" -#include "be_gc.h" +#include "be_constobj.h" #ifdef USE_LVGL -// temporary work-around -#define be_define_local_const_str2(a,b,c,d,e,f) be_define_local_const_str(a,b,c,e) - #include "lvgl.h" extern int lv0_start(bvm *vm); @@ -635,67 +630,67 @@ be_define_native_module(lvgl, NULL); #else -be_define_local_const_str2(SYMBOL_AUDIO, "\xef\x80\x81", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_VIDEO, "\xef\x80\x88", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_LIST, "\xef\x80\x8b", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_OK, "\xef\x80\x8c", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_CLOSE, "\xef\x80\x8d", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_POWER, "\xef\x80\x91", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_SETTINGS, "\xef\x80\x93", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_HOME, "\xef\x80\x95", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_DOWNLOAD, "\xef\x80\x99", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_DRIVE, "\xef\x80\x9c", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_REFRESH, "\xef\x80\xa1", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_MUTE, "\xef\x80\xa6", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_VOLUME_MID, "\xef\x80\xa7", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_VOLUME_MAX, "\xef\x80\xa8", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_IMAGE, "\xef\x80\xbe", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_EDIT, "\xef\x8C\x84", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_PREV, "\xef\x81\x88", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_PLAY, "\xef\x81\x8b", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_PAUSE, "\xef\x81\x8c", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_STOP, "\xef\x81\x8d", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_NEXT, "\xef\x81\x91", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_EJECT, "\xef\x81\x92", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_LEFT, "\xef\x81\x93", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_RIGHT, "\xef\x81\x94", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_PLUS, "\xef\x81\xa7", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_MINUS, "\xef\x81\xa8", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_EYE_OPEN, "\xef\x81\xae", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_EYE_CLOSE, "\xef\x81\xb0", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_WARNING, "\xef\x81\xb1", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_SHUFFLE, "\xef\x81\xb4", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_UP, "\xef\x81\xb7", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_DOWN, "\xef\x81\xb8", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_LOOP, "\xef\x81\xb9", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_DIRECTORY, "\xef\x81\xbb", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_UPLOAD, "\xef\x82\x93", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_CALL, "\xef\x82\x95", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_CUT, "\xef\x83\x84", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_COPY, "\xef\x83\x85", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_SAVE, "\xef\x83\x87", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_CHARGE, "\xef\x83\xa7", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_PASTE, "\xef\x83\xAA", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_BELL, "\xef\x83\xb3", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_KEYBOARD, "\xef\x84\x9c", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_GPS, "\xef\x84\xa4", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_FILE, "\xef\x85\x9b", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_WIFI, "\xef\x87\xab", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_BATTERY_FULL, "\xef\x89\x80", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_BATTERY_3, "\xef\x89\x81", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_BATTERY_2, "\xef\x89\x82", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_BATTERY_1, "\xef\x89\x83", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_BATTERY_EMPTY, "\xef\x89\x84", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_USB, "\xef\x8a\x87", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_BLUETOOTH, "\xef\x8a\x93", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_TRASH, "\xef\x8B\xAD", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_BACKSPACE, "\xef\x95\x9A", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_SD_CARD, "\xef\x9F\x82", 0, 0, 3, 0); -be_define_local_const_str2(SYMBOL_NEW_LINE, "\xef\xA2\xA2", 0, 0, 3, 0); +be_define_local_const_str(SYMBOL_AUDIO, "\xef\x80\x81", 0, 3); +be_define_local_const_str(SYMBOL_VIDEO, "\xef\x80\x88", 0, 3); +be_define_local_const_str(SYMBOL_LIST, "\xef\x80\x8b", 0, 3); +be_define_local_const_str(SYMBOL_OK, "\xef\x80\x8c", 0, 3); +be_define_local_const_str(SYMBOL_CLOSE, "\xef\x80\x8d", 0, 3); +be_define_local_const_str(SYMBOL_POWER, "\xef\x80\x91", 0, 3); +be_define_local_const_str(SYMBOL_SETTINGS, "\xef\x80\x93", 0, 3); +be_define_local_const_str(SYMBOL_HOME, "\xef\x80\x95", 0, 3); +be_define_local_const_str(SYMBOL_DOWNLOAD, "\xef\x80\x99", 0, 3); +be_define_local_const_str(SYMBOL_DRIVE, "\xef\x80\x9c", 0, 3); +be_define_local_const_str(SYMBOL_REFRESH, "\xef\x80\xa1", 0, 3); +be_define_local_const_str(SYMBOL_MUTE, "\xef\x80\xa6", 0, 3); +be_define_local_const_str(SYMBOL_VOLUME_MID, "\xef\x80\xa7", 0, 3); +be_define_local_const_str(SYMBOL_VOLUME_MAX, "\xef\x80\xa8", 0, 3); +be_define_local_const_str(SYMBOL_IMAGE, "\xef\x80\xbe", 0, 3); +be_define_local_const_str(SYMBOL_EDIT, "\xef\x8C\x84", 0, 3); +be_define_local_const_str(SYMBOL_PREV, "\xef\x81\x88", 0, 3); +be_define_local_const_str(SYMBOL_PLAY, "\xef\x81\x8b", 0, 3); +be_define_local_const_str(SYMBOL_PAUSE, "\xef\x81\x8c", 0, 3); +be_define_local_const_str(SYMBOL_STOP, "\xef\x81\x8d", 0, 3); +be_define_local_const_str(SYMBOL_NEXT, "\xef\x81\x91", 0, 3); +be_define_local_const_str(SYMBOL_EJECT, "\xef\x81\x92", 0, 3); +be_define_local_const_str(SYMBOL_LEFT, "\xef\x81\x93", 0, 3); +be_define_local_const_str(SYMBOL_RIGHT, "\xef\x81\x94", 0, 3); +be_define_local_const_str(SYMBOL_PLUS, "\xef\x81\xa7", 0, 3); +be_define_local_const_str(SYMBOL_MINUS, "\xef\x81\xa8", 0, 3); +be_define_local_const_str(SYMBOL_EYE_OPEN, "\xef\x81\xae", 0, 3); +be_define_local_const_str(SYMBOL_EYE_CLOSE, "\xef\x81\xb0", 0, 3); +be_define_local_const_str(SYMBOL_WARNING, "\xef\x81\xb1", 0, 3); +be_define_local_const_str(SYMBOL_SHUFFLE, "\xef\x81\xb4", 0, 3); +be_define_local_const_str(SYMBOL_UP, "\xef\x81\xb7", 0, 3); +be_define_local_const_str(SYMBOL_DOWN, "\xef\x81\xb8", 0, 3); +be_define_local_const_str(SYMBOL_LOOP, "\xef\x81\xb9", 0, 3); +be_define_local_const_str(SYMBOL_DIRECTORY, "\xef\x81\xbb", 0, 3); +be_define_local_const_str(SYMBOL_UPLOAD, "\xef\x82\x93", 0, 3); +be_define_local_const_str(SYMBOL_CALL, "\xef\x82\x95", 0, 3); +be_define_local_const_str(SYMBOL_CUT, "\xef\x83\x84", 0, 3); +be_define_local_const_str(SYMBOL_COPY, "\xef\x83\x85", 0, 3); +be_define_local_const_str(SYMBOL_SAVE, "\xef\x83\x87", 0, 3); +be_define_local_const_str(SYMBOL_CHARGE, "\xef\x83\xa7", 0, 3); +be_define_local_const_str(SYMBOL_PASTE, "\xef\x83\xAA", 0, 3); +be_define_local_const_str(SYMBOL_BELL, "\xef\x83\xb3", 0, 3); +be_define_local_const_str(SYMBOL_KEYBOARD, "\xef\x84\x9c", 0, 3); +be_define_local_const_str(SYMBOL_GPS, "\xef\x84\xa4", 0, 3); +be_define_local_const_str(SYMBOL_FILE, "\xef\x85\x9b", 0, 3); +be_define_local_const_str(SYMBOL_WIFI, "\xef\x87\xab", 0, 3); +be_define_local_const_str(SYMBOL_BATTERY_FULL, "\xef\x89\x80", 0, 3); +be_define_local_const_str(SYMBOL_BATTERY_3, "\xef\x89\x81", 0, 3); +be_define_local_const_str(SYMBOL_BATTERY_2, "\xef\x89\x82", 0, 3); +be_define_local_const_str(SYMBOL_BATTERY_1, "\xef\x89\x83", 0, 3); +be_define_local_const_str(SYMBOL_BATTERY_EMPTY, "\xef\x89\x84", 0, 3); +be_define_local_const_str(SYMBOL_USB, "\xef\x8a\x87", 0, 3); +be_define_local_const_str(SYMBOL_BLUETOOTH, "\xef\x8a\x93", 0, 3); +be_define_local_const_str(SYMBOL_TRASH, "\xef\x8B\xAD", 0, 3); +be_define_local_const_str(SYMBOL_BACKSPACE, "\xef\x95\x9A", 0, 3); +be_define_local_const_str(SYMBOL_SD_CARD, "\xef\x9F\x82", 0, 3); +be_define_local_const_str(SYMBOL_NEW_LINE, "\xef\xA2\xA2", 0, 3); -be_define_local_const_str2(SYMBOL_DUMMY, "\xEF\xA3\xBF", 0, 0, 3, 0); +be_define_local_const_str(SYMBOL_DUMMY, "\xEF\xA3\xBF", 0, 3); -be_define_local_const_str2(SYMBOL_BULLET, "\xE2\x80\xA2", 0, 0, 3, 0); +be_define_local_const_str(SYMBOL_BULLET, "\xE2\x80\xA2", 0, 3); /* @const_object_info_begin diff --git a/lib/libesp32/Berry/default/be_lvgl_color_lib.c b/lib/libesp32/Berry/default/be_lvgl_color_lib.c index b53e0228e..d76fd8ced 100644 --- a/lib/libesp32/Berry/default/be_lvgl_color_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_color_lib.c @@ -1,8 +1,7 @@ /******************************************************************** * Tasmota LVGL Font class *******************************************************************/ -#include "be_object.h" -#include "be_string.h" +#include "be_constobj.h" #ifdef USE_LVGL diff --git a/lib/libesp32/Berry/default/be_lvgl_font_lib.c b/lib/libesp32/Berry/default/be_lvgl_font_lib.c index d0ea031cf..0bf03c3f9 100644 --- a/lib/libesp32/Berry/default/be_lvgl_font_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_font_lib.c @@ -1,8 +1,7 @@ /******************************************************************** * Tasmota LVGL Font class *******************************************************************/ -#include "be_object.h" -#include "be_string.h" +#include "be_constobj.h" #ifdef USE_LVGL diff --git a/lib/libesp32/Berry/default/be_lvgl_widgets_lib.c b/lib/libesp32/Berry/default/be_lvgl_widgets_lib.c index 6b2b2d65e..22e398d7d 100644 --- a/lib/libesp32/Berry/default/be_lvgl_widgets_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_widgets_lib.c @@ -6,8 +6,7 @@ /******************************************************************** * Tasmota LVGL classes for widgets *******************************************************************/ -#include "be_object.h" -#include "be_string.h" +#include "be_constobj.h" #ifdef USE_LVGL diff --git a/lib/libesp32/Berry/default/be_tasmotalib.c b/lib/libesp32/Berry/default/be_tasmotalib.c index 709b202a3..d9539dcbe 100644 --- a/lib/libesp32/Berry/default/be_tasmotalib.c +++ b/lib/libesp32/Berry/default/be_tasmotalib.c @@ -3,12 +3,7 @@ * * To use: `import tasmota` *******************************************************************/ -#include "berry.h" -//#include "be_object.h" -#include "be_string.h" - -// temporary work-around -#define be_define_local_const_str2(a,b,c,d,e,f) be_define_local_const_str(a,b,c,e) +#include "be_constobj.h" extern int l_getFreeHeap(bvm *vm); extern int l_publish(bvm *vm); @@ -63,9 +58,9 @@ extern int l_i2cenabled(bvm *vm); ** Solidified function: chars_in_string ********************************************************************/ -be_define_local_const_str2(chars_in_string_str_name, "chars_in_string", -1146182164, 0, 15, 0); -be_define_local_const_str2(chars_in_string_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(chars_in_string_str_2, "stop_iteration", -121173395, 0, 14, 0); +be_define_local_const_str(chars_in_string_str_name, "chars_in_string", -1146182164, 15); +be_define_local_const_str(chars_in_string_str_source, "string", 398550328, 6); +be_define_local_const_str(chars_in_string_str_2, "stop_iteration", -121173395, 14); static const bvalue chars_in_string_ktab[3] = { { { .i=0 }, BE_INT}, @@ -179,13 +174,13 @@ end ** Solidified function: find_key_i ********************************************************************/ -be_define_local_const_str2(find_key_i_str_name, "find_key_i", 850136726, 0, 10, 0); -be_define_local_const_str2(find_key_i_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(find_key_i_str_0, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(find_key_i_str_1, "toupper", -602983720, 0, 7, 0); -be_define_local_const_str2(find_key_i_str_2, "keys", -112588595, 0, 4, 0); -be_define_local_const_str2(find_key_i_str_3, "?", 973910158, 0, 1, 0); -be_define_local_const_str2(find_key_i_str_4, "stop_iteration", -121173395, 0, 14, 0); +be_define_local_const_str(find_key_i_str_name, "find_key_i", 850136726, 10); +be_define_local_const_str(find_key_i_str_source, "string", 398550328, 6); +be_define_local_const_str(find_key_i_str_0, "string", 398550328, 6); +be_define_local_const_str(find_key_i_str_1, "toupper", -602983720, 7); +be_define_local_const_str(find_key_i_str_2, "keys", -112588595, 4); +be_define_local_const_str(find_key_i_str_3, "?", 973910158, 1); +be_define_local_const_str(find_key_i_str_4, "stop_iteration", -121173395, 14); static const bvalue find_key_i_ktab[5] = { { { .s=be_local_const_str(find_key_i_str_0) }, BE_STRING}, @@ -297,12 +292,12 @@ const bclosure find_key_i_closure = { ** Solidified function: find_op ********************************************************************/ -be_define_local_const_str2(find_op_str_name, "find_op", -528253920, 0, 7, 0); -be_define_local_const_str2(find_op_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(find_op_str_0, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(find_op_str_1, "=<>!", -1630497019, 0, 4, 0); -be_define_local_const_str2(find_op_str_2, "chars_in_string", -1146182164, 0, 15, 0); -be_define_local_const_str2(find_op_str_4, "split", -2017972765, 0, 5, 0); +be_define_local_const_str(find_op_str_name, "find_op", -528253920, 7); +be_define_local_const_str(find_op_str_source, "string", 398550328, 6); +be_define_local_const_str(find_op_str_0, "string", 398550328, 6); +be_define_local_const_str(find_op_str_1, "=<>!", -1630497019, 4); +be_define_local_const_str(find_op_str_2, "chars_in_string", -1146182164, 15); +be_define_local_const_str(find_op_str_4, "split", -2017972765, 5); static const bvalue find_op_ktab[6] = { { { .s=be_local_const_str(find_op_str_0) }, BE_STRING}, @@ -417,12 +412,12 @@ const bclosure find_op_closure = { ** Solidified function: add_rule ********************************************************************/ -be_define_local_const_str2(add_rule_str_name, "add_rule", 596540743, 0, 8, 0); -be_define_local_const_str2(add_rule_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(add_rule_str_0, "_rules", -28750191, 0, 6, 0); -be_define_local_const_str2(add_rule_str_1, "function", -1630125495, 0, 8, 0); -be_define_local_const_str2(add_rule_str_2, "value_error", 773297791, 0, 11, 0); -be_define_local_const_str2(add_rule_str_3, "the second argument is not a function", -340392827, 0, 37, 0); +be_define_local_const_str(add_rule_str_name, "add_rule", 596540743, 8); +be_define_local_const_str(add_rule_str_source, "string", 398550328, 6); +be_define_local_const_str(add_rule_str_0, "_rules", -28750191, 6); +be_define_local_const_str(add_rule_str_1, "function", -1630125495, 8); +be_define_local_const_str(add_rule_str_2, "value_error", 773297791, 11); +be_define_local_const_str(add_rule_str_3, "the second argument is not a function", -340392827, 37); static const bvalue add_rule_ktab[4] = { { { .s=be_local_const_str(add_rule_str_0) }, BE_STRING}, @@ -501,10 +496,10 @@ static const bclosure add_rule_closure = { ** Solidified function: remove_rule ********************************************************************/ -be_define_local_const_str2(remove_rule_str_name, "remove_rule", -838755968, 0, 11, 0); -be_define_local_const_str2(remove_rule_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(remove_rule_str_0, "_rules", -28750191, 0, 6, 0); -be_define_local_const_str2(remove_rule_str_1, "remove", -611183107, 0, 6, 0); +be_define_local_const_str(remove_rule_str_name, "remove_rule", -838755968, 11); +be_define_local_const_str(remove_rule_str_source, "string", 398550328, 6); +be_define_local_const_str(remove_rule_str_0, "_rules", -28750191, 6); +be_define_local_const_str(remove_rule_str_1, "remove", -611183107, 6); static const bvalue remove_rule_ktab[2] = { { { .s=be_local_const_str(remove_rule_str_0) }, BE_STRING}, @@ -603,22 +598,22 @@ static const bclosure remove_rule_closure = { ** Solidified function: try_rule ********************************************************************/ -be_define_local_const_str2(try_rule_str_name, "try_rule", 1986449405, 0, 8, 0); -be_define_local_const_str2(try_rule_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(try_rule_str_0, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(try_rule_str_1, "find_op", -528253920, 0, 7, 0); -be_define_local_const_str2(try_rule_str_2, "split", -2017972765, 0, 5, 0); -be_define_local_const_str2(try_rule_str_4, "#", 638357778, 0, 1, 0); -be_define_local_const_str2(try_rule_str_5, "find_key_i", 850136726, 0, 10, 0); -be_define_local_const_str2(try_rule_str_6, "stop_iteration", -121173395, 0, 14, 0); -be_define_local_const_str2(try_rule_str_9, "==", -1863000881, 0, 2, 0); -be_define_local_const_str2(try_rule_str_10, "!==", 559817114, 0, 3, 0); -be_define_local_const_str2(try_rule_str_11, "=", 940354920, 0, 1, 0); -be_define_local_const_str2(try_rule_str_12, "!=", -1866252285, 0, 2, 0); -be_define_local_const_str2(try_rule_str_13, ">", 990687777, 0, 1, 0); -be_define_local_const_str2(try_rule_str_14, ">=", 284975636, 0, 2, 0); -be_define_local_const_str2(try_rule_str_15, "<", 957132539, 0, 1, 0); -be_define_local_const_str2(try_rule_str_16, "<=", -1795743310, 0, 2, 0); +be_define_local_const_str(try_rule_str_name, "try_rule", 1986449405, 8); +be_define_local_const_str(try_rule_str_source, "string", 398550328, 6); +be_define_local_const_str(try_rule_str_0, "string", 398550328, 6); +be_define_local_const_str(try_rule_str_1, "find_op", -528253920, 7); +be_define_local_const_str(try_rule_str_2, "split", -2017972765, 5); +be_define_local_const_str(try_rule_str_4, "#", 638357778, 1); +be_define_local_const_str(try_rule_str_5, "find_key_i", 850136726, 10); +be_define_local_const_str(try_rule_str_6, "stop_iteration", -121173395, 14); +be_define_local_const_str(try_rule_str_9, "==", -1863000881, 2); +be_define_local_const_str(try_rule_str_10, "!==", 559817114, 3); +be_define_local_const_str(try_rule_str_11, "=", 940354920, 1); +be_define_local_const_str(try_rule_str_12, "!=", -1866252285, 2); +be_define_local_const_str(try_rule_str_13, ">", 990687777, 1); +be_define_local_const_str(try_rule_str_14, ">=", 284975636, 2); +be_define_local_const_str(try_rule_str_15, "<", 957132539, 1); +be_define_local_const_str(try_rule_str_16, "<=", -1795743310, 2); static const bvalue try_rule_ktab[17] = { { { .s=be_local_const_str(try_rule_str_0) }, BE_STRING}, @@ -853,15 +848,15 @@ static const bclosure try_rule_closure = { ** Solidified function: exec_rules ********************************************************************/ -be_define_local_const_str2(exec_rules_str_name, "exec_rules", 1445221092, 0, 10, 0); -be_define_local_const_str2(exec_rules_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(exec_rules_str_0, "_rules", -28750191, 0, 6, 0); -be_define_local_const_str2(exec_rules_str_1, "json", 916562499, 0, 4, 0); -be_define_local_const_str2(exec_rules_str_2, "load", -435725847, 0, 4, 0); -be_define_local_const_str2(exec_rules_str_3, "BRY: ERROR, bad json: ", -1579831487, 0, 22, 0); -be_define_local_const_str2(exec_rules_str_5, "keys", -112588595, 0, 4, 0); -be_define_local_const_str2(exec_rules_str_6, "try_rule", 1986449405, 0, 8, 0); -be_define_local_const_str2(exec_rules_str_7, "stop_iteration", -121173395, 0, 14, 0); +be_define_local_const_str(exec_rules_str_name, "exec_rules", 1445221092, 10); +be_define_local_const_str(exec_rules_str_source, "string", 398550328, 6); +be_define_local_const_str(exec_rules_str_0, "_rules", -28750191, 6); +be_define_local_const_str(exec_rules_str_1, "json", 916562499, 4); +be_define_local_const_str(exec_rules_str_2, "load", -435725847, 4); +be_define_local_const_str(exec_rules_str_3, "BRY: ERROR, bad json: ", -1579831487, 22); +be_define_local_const_str(exec_rules_str_5, "keys", -112588595, 4); +be_define_local_const_str(exec_rules_str_6, "try_rule", 1986449405, 8); +be_define_local_const_str(exec_rules_str_7, "stop_iteration", -121173395, 14); static const bvalue exec_rules_ktab[8] = { { { .s=be_local_const_str(exec_rules_str_0) }, BE_STRING}, @@ -968,11 +963,11 @@ const bclosure exec_rules_closure = { ** Solidified function: set_timer ********************************************************************/ -be_define_local_const_str2(set_timer_str_name, "set_timer", 2135414533, 0, 9, 0); -be_define_local_const_str2(set_timer_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(set_timer_str_0, "_timers", -1694866380, 0, 7, 0); -be_define_local_const_str2(set_timer_str_1, "push", -2022703139, 0, 4, 0); -be_define_local_const_str2(set_timer_str_2, "millis", 1214679063, 0, 6, 0); +be_define_local_const_str(set_timer_str_name, "set_timer", 2135414533, 9); +be_define_local_const_str(set_timer_str_source, "string", 398550328, 6); +be_define_local_const_str(set_timer_str_0, "_timers", -1694866380, 7); +be_define_local_const_str(set_timer_str_1, "push", -2022703139, 4); +be_define_local_const_str(set_timer_str_2, "millis", 1214679063, 6); static const bvalue set_timer_ktab[3] = { { { .s=be_local_const_str(set_timer_str_0) }, BE_STRING}, @@ -1061,12 +1056,12 @@ const bclosure set_timer_closure = { ** Solidified function: run_deferred ********************************************************************/ -be_define_local_const_str2(run_deferred_str_name, "run_deferred", 371594696, 0, 12, 0); -be_define_local_const_str2(run_deferred_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(run_deferred_str_0, "_timers", -1694866380, 0, 7, 0); -be_define_local_const_str2(run_deferred_str_2, "size", 597743964, 0, 4, 0); -be_define_local_const_str2(run_deferred_str_3, "time_reached", 2075136773, 0, 12, 0); -be_define_local_const_str2(run_deferred_str_5, "remove", -611183107, 0, 6, 0); +be_define_local_const_str(run_deferred_str_name, "run_deferred", 371594696, 12); +be_define_local_const_str(run_deferred_str_source, "string", 398550328, 6); +be_define_local_const_str(run_deferred_str_0, "_timers", -1694866380, 7); +be_define_local_const_str(run_deferred_str_2, "size", 597743964, 4); +be_define_local_const_str(run_deferred_str_3, "time_reached", 2075136773, 12); +be_define_local_const_str(run_deferred_str_5, "remove", -611183107, 6); static const bvalue run_deferred_ktab[6] = { { { .s=be_local_const_str(run_deferred_str_0) }, BE_STRING}, @@ -1165,12 +1160,12 @@ const bclosure run_deferred_closure = { ** Solidified function: add_cmd ********************************************************************/ -be_define_local_const_str2(add_cmd_str_name, "add_cmd", -933336417, 0, 7, 0); -be_define_local_const_str2(add_cmd_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(add_cmd_str_0, "_ccmd", -2131545883, 0, 5, 0); -be_define_local_const_str2(add_cmd_str_1, "function", -1630125495, 0, 8, 0); -be_define_local_const_str2(add_cmd_str_2, "value_error", 773297791, 0, 11, 0); -be_define_local_const_str2(add_cmd_str_3, "the second argument is not a function", -340392827, 0, 37, 0); +be_define_local_const_str(add_cmd_str_name, "add_cmd", -933336417, 7); +be_define_local_const_str(add_cmd_str_source, "string", 398550328, 6); +be_define_local_const_str(add_cmd_str_0, "_ccmd", -2131545883, 5); +be_define_local_const_str(add_cmd_str_1, "function", -1630125495, 8); +be_define_local_const_str(add_cmd_str_2, "value_error", 773297791, 11); +be_define_local_const_str(add_cmd_str_3, "the second argument is not a function", -340392827, 37); static const bvalue add_cmd_ktab[4] = { { { .s=be_local_const_str(add_cmd_str_0) }, BE_STRING}, @@ -1250,10 +1245,10 @@ static const bclosure add_cmd_closure = { ** Solidified function: remove_cmd ********************************************************************/ -be_define_local_const_str2(remove_cmd_str_name, "remove_cmd", -462651594, 0, 10, 0); -be_define_local_const_str2(remove_cmd_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(remove_cmd_str_0, "_ccmd", -2131545883, 0, 5, 0); -be_define_local_const_str2(remove_cmd_str_1, "remove", -611183107, 0, 6, 0); +be_define_local_const_str(remove_cmd_str_name, "remove_cmd", -462651594, 10); +be_define_local_const_str(remove_cmd_str_source, "string", 398550328, 6); +be_define_local_const_str(remove_cmd_str_0, "_ccmd", -2131545883, 5); +be_define_local_const_str(remove_cmd_str_1, "remove", -611183107, 6); static const bvalue remove_cmd_ktab[2] = { { { .s=be_local_const_str(remove_cmd_str_0) }, BE_STRING}, @@ -1330,13 +1325,13 @@ static const bclosure remove_cmd_closure = { ** Solidified function: exec_cmd ********************************************************************/ -be_define_local_const_str2(exec_cmd_str_name, "exec_cmd", 493567399, 0, 8, 0); -be_define_local_const_str2(exec_cmd_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(exec_cmd_str_0, "_ccmd", -2131545883, 0, 5, 0); -be_define_local_const_str2(exec_cmd_str_1, "json", 916562499, 0, 4, 0); -be_define_local_const_str2(exec_cmd_str_2, "load", -435725847, 0, 4, 0); -be_define_local_const_str2(exec_cmd_str_3, "find_key_i", 850136726, 0, 10, 0); -be_define_local_const_str2(exec_cmd_str_4, "resolvecmnd", 993361485, 0, 11, 0); +be_define_local_const_str(exec_cmd_str_name, "exec_cmd", 493567399, 8); +be_define_local_const_str(exec_cmd_str_source, "string", 398550328, 6); +be_define_local_const_str(exec_cmd_str_0, "_ccmd", -2131545883, 5); +be_define_local_const_str(exec_cmd_str_1, "json", 916562499, 4); +be_define_local_const_str(exec_cmd_str_2, "load", -435725847, 4); +be_define_local_const_str(exec_cmd_str_3, "find_key_i", 850136726, 10); +be_define_local_const_str(exec_cmd_str_4, "resolvecmnd", 993361485, 11); static const bvalue exec_cmd_ktab[5] = { { { .s=be_local_const_str(exec_cmd_str_0) }, BE_STRING}, @@ -1701,10 +1696,10 @@ be_define_local_closure(event); ** Solidified function: add_driver ********************************************************************/ -be_define_local_const_str2(add_driver_str_name, "add_driver", 1654458371, 0, 10, 0); -be_define_local_const_str2(add_driver_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(add_driver_str_0, "_drivers", -1034638311, 0, 8, 0); -be_define_local_const_str2(add_driver_str_1, "push", -2022703139, 0, 4, 0); +be_define_local_const_str(add_driver_str_name, "add_driver", 1654458371, 10); +be_define_local_const_str(add_driver_str_source, "string", 398550328, 6); +be_define_local_const_str(add_driver_str_0, "_drivers", -1034638311, 8); +be_define_local_const_str(add_driver_str_1, "push", -2022703139, 4); static const bvalue add_driver_ktab[2] = { { { .s=be_local_const_str(add_driver_str_0) }, BE_STRING}, @@ -1803,24 +1798,24 @@ const bclosure add_driver_closure = { ** Solidified function: load ********************************************************************/ -be_define_local_const_str2(load_str_name, "load", -435725847, 0, 4, 0); -be_define_local_const_str2(load_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(load_str_0, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(load_str_1, "split", -2017972765, 0, 5, 0); -be_define_local_const_str2(load_str_2, ".", 722245873, 0, 1, 0); -be_define_local_const_str2(load_str_4, "be", 942383232, 0, 2, 0); -be_define_local_const_str2(load_str_5, "bec", 1336821081, 0, 3, 0); -be_define_local_const_str2(load_str_6, "file extension is not '.be' or '.bec'", -1199247657, 0, 37, 0); -be_define_local_const_str2(load_str_7, "c", -435409838, 0, 1, 0); -be_define_local_const_str2(load_str_9, "/", 705468254, 0, 1, 0); -be_define_local_const_str2(load_str_10, "file", -1427482813, 0, 4, 0); -be_define_local_const_str2(load_str_11, "save", -855671224, 0, 4, 0); -be_define_local_const_str2(load_str_12, "log", 1062293841, 0, 3, 0); -be_define_local_const_str2(load_str_13, "format", -1180859054, 0, 6, 0); -be_define_local_const_str2(load_str_14, "BRY: could not save compiled file %s (%s)", 736659787, 0, 41, 0); -be_define_local_const_str2(load_str_15, "BRY: sucessfully loaded '%s'", -675188639, 0, 28, 0); -be_define_local_const_str2(load_str_16, "Could not load file '%s'", -708657871, 0, 24, 0); -be_define_local_const_str2(load_str_17, "io_error", 1970281036, 0, 8, 0); +be_define_local_const_str(load_str_name, "load", -435725847, 4); +be_define_local_const_str(load_str_source, "string", 398550328, 6); +be_define_local_const_str(load_str_0, "string", 398550328, 6); +be_define_local_const_str(load_str_1, "split", -2017972765, 5); +be_define_local_const_str(load_str_2, ".", 722245873, 1); +be_define_local_const_str(load_str_4, "be", 942383232, 2); +be_define_local_const_str(load_str_5, "bec", 1336821081, 3); +be_define_local_const_str(load_str_6, "file extension is not '.be' or '.bec'", -1199247657, 37); +be_define_local_const_str(load_str_7, "c", -435409838, 1); +be_define_local_const_str(load_str_9, "/", 705468254, 1); +be_define_local_const_str(load_str_10, "file", -1427482813, 4); +be_define_local_const_str(load_str_11, "save", -855671224, 4); +be_define_local_const_str(load_str_12, "log", 1062293841, 3); +be_define_local_const_str(load_str_13, "format", -1180859054, 6); +be_define_local_const_str(load_str_14, "BRY: could not save compiled file %s (%s)", 736659787, 41); +be_define_local_const_str(load_str_15, "BRY: sucessfully loaded '%s'", -675188639, 28); +be_define_local_const_str(load_str_16, "Could not load file '%s'", -708657871, 24); +be_define_local_const_str(load_str_17, "io_error", 1970281036, 8); static const bvalue load_ktab[18] = { { { .s=be_local_const_str(load_str_0) }, BE_STRING}, @@ -1975,12 +1970,12 @@ const bclosure load_closure = { ** Solidified function: wire_scan ********************************************************************/ -be_define_local_const_str2(wire_scan_str_name, "wire_scan", -1623691416, 0, 9, 0); -be_define_local_const_str2(wire_scan_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(wire_scan_str_0, "i2c_enabled", 218388101, 0, 11, 0); -be_define_local_const_str2(wire_scan_str_1, "wire1", -1082245877, 0, 5, 0); -be_define_local_const_str2(wire_scan_str_2, "detect", 8884370, 0, 6, 0); -be_define_local_const_str2(wire_scan_str_3, "wire2", -1065468258, 0, 5, 0); +be_define_local_const_str(wire_scan_str_name, "wire_scan", -1623691416, 9); +be_define_local_const_str(wire_scan_str_source, "string", 398550328, 6); +be_define_local_const_str(wire_scan_str_0, "i2c_enabled", 218388101, 11); +be_define_local_const_str(wire_scan_str_1, "wire1", -1082245877, 5); +be_define_local_const_str(wire_scan_str_2, "detect", 8884370, 6); +be_define_local_const_str(wire_scan_str_3, "wire2", -1065468258, 5); static const bvalue wire_scan_ktab[4] = { { { .s=be_local_const_str(wire_scan_str_0) }, BE_STRING}, @@ -2134,13 +2129,13 @@ be_define_local_closure(time_str); ** Solidified function: cmd ********************************************************************/ -be_define_local_const_str2(cmd_str_name, "cmd", -158181397, 0, 3, 0); -be_define_local_const_str2(cmd_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(cmd_str_0, "json", 916562499, 0, 4, 0); -be_define_local_const_str2(cmd_str_1, "_cmd", -875145154, 0, 4, 0); -be_define_local_const_str2(cmd_str_2, "load", -435725847, 0, 4, 0); -be_define_local_const_str2(cmd_str_3, "instance", 193386898, 0, 8, 0); -be_define_local_const_str2(cmd_str_4, "response", 1499316702, 0, 8, 0); +be_define_local_const_str(cmd_str_name, "cmd", -158181397, 3); +be_define_local_const_str(cmd_str_source, "string", 398550328, 6); +be_define_local_const_str(cmd_str_0, "json", 916562499, 4); +be_define_local_const_str(cmd_str_1, "_cmd", -875145154, 4); +be_define_local_const_str(cmd_str_2, "load", -435725847, 4); +be_define_local_const_str(cmd_str_3, "instance", 193386898, 8); +be_define_local_const_str(cmd_str_4, "response", 1499316702, 8); static const bvalue cmd_ktab[5] = { { { .s=be_local_const_str(cmd_str_0) }, BE_STRING}, @@ -2228,11 +2223,11 @@ static const bclosure cmd_closure = { ** Solidified function: get_light ********************************************************************/ -be_define_local_const_str2(get_light_str_name, "get_light", 381930476, 0, 9, 0); -be_define_local_const_str2(get_light_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(get_light_str_0, "tasmota.get_light() is deprecated, use light.get()", -769213649, 0, 50, 0); -be_define_local_const_str2(get_light_str_1, "light", -493019601, 0, 5, 0); -be_define_local_const_str2(get_light_str_2, "get", 1410115415, 0, 3, 0); +be_define_local_const_str(get_light_str_name, "get_light", 381930476, 9); +be_define_local_const_str(get_light_str_source, "string", 398550328, 6); +be_define_local_const_str(get_light_str_0, "tasmota.get_light() is deprecated, use light.get()", -769213649, 50); +be_define_local_const_str(get_light_str_1, "light", -493019601, 5); +be_define_local_const_str(get_light_str_2, "get", 1410115415, 3); static const bvalue get_light_ktab[3] = { { { .s=be_local_const_str(get_light_str_0) }, BE_STRING}, @@ -2317,11 +2312,11 @@ static const bclosure get_light_closure = { ** Solidified function: set_light ********************************************************************/ -be_define_local_const_str2(set_light_str_name, "set_light", -1118891144, 0, 9, 0); -be_define_local_const_str2(set_light_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(set_light_str_0, "tasmota.set_light() is deprecated, use light.set()", 2124937871, 0, 50, 0); -be_define_local_const_str2(set_light_str_1, "light", -493019601, 0, 5, 0); -be_define_local_const_str2(set_light_str_2, "set", -970520829, 0, 3, 0); +be_define_local_const_str(set_light_str_name, "set_light", -1118891144, 9); +be_define_local_const_str(set_light_str_source, "string", 398550328, 6); +be_define_local_const_str(set_light_str_0, "tasmota.set_light() is deprecated, use light.set()", 2124937871, 50); +be_define_local_const_str(set_light_str_1, "light", -493019601, 5); +be_define_local_const_str(set_light_str_2, "set", -970520829, 3); static const bvalue set_light_ktab[3] = { { { .s=be_local_const_str(set_light_str_0) }, BE_STRING}, @@ -2390,15 +2385,15 @@ static const bclosure set_light_closure = { /*******************************************************************/ -/******************************************************************** +#if BE_USE_PRECOMPILED_OBJECT +#include "../generate/be_fixed_be_class_tasmota.h" +#endif -********************************************************************/ -// #if !BE_USE_PRECOMPILED_OBJECT -#if 1 // TODO we will do pre-compiled later // Class definition void be_load_tasmota_ntvlib(bvm *vm) { +#if !BE_USE_PRECOMPILED_OBJECT static const bnfuncinfo members[] = { { "_rules", NULL }, { "_timers", NULL }, @@ -2462,14 +2457,73 @@ void be_load_tasmota_ntvlib(bvm *vm) { NULL, NULL } }; - be_regclass(vm, "Tasmota_ntv", members); + be_regclass(vm, "Tasmota", members); +#else + be_pushntvclass(vm, &be_class_tasmota); + be_setglobal(vm, "Tasmota"); + be_pop(vm, 1); +#endif } -#else /* @const_object_info_begin -module tasmota (scope: global, depend: 1) { +class be_class_tasmota (scope: global, name: Tasmota) { + _rules, var + _timers, var + _ccmd, var + _drivers, var + wire1, var + wire2, var + get_free_heap, func(l_getFreeHeap) + publish, func(l_publish) + _cmd, func(l_cmd) + get_option, func(l_getoption) + millis, func(l_millis) + time_reached, func(l_timereached) + rtc, func(l_rtc) + time_dump, func(l_time_dump) + yield, func(l_yield) + delay, func(l_delay) + scale_uint, func(l_scaleuint) + log, func(l_logInfo) + save, func(l_save) + + resp_cmnd, func(l_respCmnd) + resp_cmnd_str, func(l_respCmndStr) + resp_cmnd_done, func(l_respCmndDone) + resp_cmnd_error, func(l_respCmndError) + resp_cmnd_failed, func(l_respCmndFailed) + resolvecmnd, func(l_resolveCmnd) + + response_append, func(l_respAppend) + web_send_decimal, func(l_webSendDecimal) + + get_power, func(l_getpower) + set_power, func(l_setpower) + + i2c_enabled, func(l_i2cenabled) + + cmd, closure(cmd_closure) + chars_in_string, closure(chars_in_string_closure) + find_key_i, closure(find_key_i_closure) + find_op, closure(find_op_closure) + add_rule, closure(add_rule_closure) + remove_rule, closure(remove_rule_closure) + try_rule, closure(try_rule_closure) + exec_rules, closure(exec_rules_closure) + set_timer, closure(set_timer_closure) + run_deferred, closure(run_deferred_closure) + add_cmd, closure(add_cmd_closure) + remove_cmd, closure(remove_cmd_closure) + exec_cmd, closure(exec_cmd_closure) + gc, closure(gc_closure) + event, closure(event_closure) + add_driver, closure(add_driver_closure) + load, closure(load_closure) + wire_scan, closure(wire_scan_closure) + time_str, closure(time_str_closure) + + get_light, closure(get_light_closure) + set_light, closure(set_light_closure) } @const_object_info_end */ -#include "../generate/be_fixed_tasmota.h" -#endif diff --git a/lib/libesp32/Berry/default/be_wirelib.c b/lib/libesp32/Berry/default/be_wirelib.c index 21192c926..70de0989b 100644 --- a/lib/libesp32/Berry/default/be_wirelib.c +++ b/lib/libesp32/Berry/default/be_wirelib.c @@ -5,12 +5,8 @@ * * 2 wire communication - I2C *******************************************************************/ -#include "be_object.h" -#include "be_string.h" -#include "be_gc.h" +#include "be_constobj.h" -// temporary work-around -#define be_define_local_const_str2(a,b,c,d,e,f) be_define_local_const_str(a,b,c,e) #ifdef USE_I2C extern int b_wire_init(bvm *vm); @@ -45,14 +41,14 @@ extern int b_wire_detect(bvm *vm); ** Solidified function: read_bytes ********************************************************************/ -be_define_local_const_str2(read_bytes_str_name, "read_bytes", -718234123, 0, 10, 0); -be_define_local_const_str2(read_bytes_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(read_bytes_str_0, "_begin_transmission", -1515506120, 0, 19, 0); -be_define_local_const_str2(read_bytes_str_1, "_write", -2079504471, 0, 6, 0); -be_define_local_const_str2(read_bytes_str_2, "_end_transmission", -1057486896, 0, 17, 0); -be_define_local_const_str2(read_bytes_str_3, "_request_from", -329818692, 0, 13, 0); -be_define_local_const_str2(read_bytes_str_4, "_available", 1306196581, 0, 10, 0); -be_define_local_const_str2(read_bytes_str_5, "_read", 346717030, 0, 5, 0); +be_define_local_const_str(read_bytes_str_name, "read_bytes", -718234123, 10); +be_define_local_const_str(read_bytes_str_source, "string", 398550328, 6); +be_define_local_const_str(read_bytes_str_0, "_begin_transmission", -1515506120, 19); +be_define_local_const_str(read_bytes_str_1, "_write", -2079504471, 6); +be_define_local_const_str(read_bytes_str_2, "_end_transmission", -1057486896, 17); +be_define_local_const_str(read_bytes_str_3, "_request_from", -329818692, 13); +be_define_local_const_str(read_bytes_str_4, "_available", 1306196581, 10); +be_define_local_const_str(read_bytes_str_5, "_read", 346717030, 5); static const bvalue read_bytes_ktab[6] = { { { .s=be_local_const_str(read_bytes_str_0) }, BE_STRING}, @@ -143,11 +139,11 @@ const bclosure read_bytes_closure = { ** Solidified function: write_bytes ********************************************************************/ -be_define_local_const_str2(write_bytes_str_name, "write_bytes", 1227543792, 0, 11, 0); -be_define_local_const_str2(write_bytes_str_source, "string", 398550328, 0, 6, 0); -be_define_local_const_str2(write_bytes_str_0, "_begin_transmission", -1515506120, 0, 19, 0); -be_define_local_const_str2(write_bytes_str_1, "_write", -2079504471, 0, 6, 0); -be_define_local_const_str2(write_bytes_str_2, "_end_transmission", -1057486896, 0, 17, 0); +be_define_local_const_str(write_bytes_str_name, "write_bytes", 1227543792, 11); +be_define_local_const_str(write_bytes_str_source, "string", 398550328, 6); +be_define_local_const_str(write_bytes_str_0, "_begin_transmission", -1515506120, 19); +be_define_local_const_str(write_bytes_str_1, "_write", -2079504471, 6); +be_define_local_const_str(write_bytes_str_2, "_end_transmission", -1057486896, 17); static const bvalue write_bytes_ktab[3] = { { { .s=be_local_const_str(write_bytes_str_0) }, BE_STRING}, @@ -210,11 +206,12 @@ const bclosure write_bytes_closure = { /*******************************************************************/ +#if BE_USE_PRECOMPILED_OBJECT +#include "../generate/be_fixed_be_class_tasmota_wire.h" +#endif -// #if !BE_USE_PRECOMPILED_OBJECT -#if 1 // TODO we will do pre-compiled later -void be_load_wirelib(bvm *vm) -{ +void be_load_wirelib(bvm *vm) { +#if !BE_USE_PRECOMPILED_OBJECT static const bnfuncinfo members[] = { { "bus", NULL }, // bus number { "init", b_wire_init }, @@ -236,14 +233,32 @@ void be_load_wirelib(bvm *vm) { NULL, NULL } }; be_regclass(vm, "Wire", members); -} #else + be_pushntvclass(vm, &be_class_tasmota_wire); + be_setglobal(vm, "Wire"); + be_pop(vm, 1); +#endif +} /* @const_object_info_begin -module tasmota (scope: global, depend: 1) { - get_free_heap, func(l_getFreeHeap) + +class be_class_tasmota_wire (scope: global, name: Wire) { + bus, var + + init, func(b_wire_init) + _begin_transmission, func(b_wire_begintransmission) + _end_transmission, func(b_wire_endtransmission) + _request_from, func(b_wire_requestfrom) + _available, func(b_wire_available) + _write, func(b_wire_write) + _read, func(b_wire_read) + scan, func(b_wire_scan) + write, func(b_wire_validwrite) + read, func(b_wire_validread) + detect, func(b_wire_detect) + + read_bytes, closure(read_bytes_closure) + write_bytes, closure(write_bytes_closure) } @const_object_info_end */ -#include "../generate/be_fixed_tasmota.h" -#endif #endif // USE_I2C \ No newline at end of file diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 2fa5e5088..3254fc34e 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,1628 +1,1706 @@ -extern const bcstring be_const_str_set_edge_flash; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_TXT_FLAG_NONE; -extern const bcstring be_const_str_align_mid; -extern const bcstring be_const_str_get_scale_angle; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_get_min_value; -extern const bcstring be_const_str_set_max_height; -extern const bcstring be_const_str_draw_polygon; -extern const bcstring be_const_str_set_point_id; -extern const bcstring be_const_str_get_zoom; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_BORDER_SIDE_BOTTOM; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str_set_style_local_image_blend_mode; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_get_col_width; -extern const bcstring be_const_str_get_src; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_set_border_opa; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_set_hidden; -extern const bcstring be_const_str_set_style_local_pattern_image; -extern const bcstring be_const_str_PURPLE; -extern const bcstring be_const_str_set_insert_replace; -extern const bcstring be_const_str_set_series_axis; -extern const bcstring be_const_str_DROPDOWN_DIR_LEFT; -extern const bcstring be_const_str_CPICKER_COLOR_MODE_HUE; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_get_label_count; -extern const bcstring be_const_str_set_text_sel; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_add_btn; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_set_cell_merge_right; -extern const bcstring be_const_str_init_draw_line_dsc; -extern const bcstring be_const_str_SCROLLBAR_MODE_UNHIDE; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_get_base_dir; -extern const bcstring be_const_str_TXT_FLAG_EXPAND; -extern const bcstring be_const_str_STYLE_VALUE_LINE_SPACE; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_allocate_ext_attr; -extern const bcstring be_const_str_cursor_right; -extern const bcstring be_const_str_get_drag_dir; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_STYLE_RADIUS; -extern const bcstring be_const_str_get_style_pattern_recolor; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_get_focus_cb; -extern const bcstring be_const_str_get_text_sel_start; -extern const bcstring be_const_str_FS_RES_LOCKED; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_set_adjustable; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_del_char; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_BTN_STATE_RELEASED; -extern const bcstring be_const_str_get_style_size; -extern const bcstring be_const_str_get_style_text_line_space; -extern const bcstring be_const_str_DISP_ROT_180; -extern const bcstring be_const_str_get_style_transform_angle; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_ALIGN_OUT_RIGHT_TOP; -extern const bcstring be_const_str_get_inner_coords; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_MAGENTA; -extern const bcstring be_const_str_get_ext_attr; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_get_state; -extern const bcstring be_const_str_set_style_local_value_str; -extern const bcstring be_const_str_get_style_image_recolor; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_SLIDER_TYPE_NORMAL; -extern const bcstring be_const_str_TXT_CMD_STATE_WAIT; -extern const bcstring be_const_str_TXT_FLAG_RECOLOR; -extern const bcstring be_const_str_set_scale_border_width; -extern const bcstring be_const_str_set_transition_prop_3; -extern const bcstring be_const_str_BLACK; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_set_height_fit; -extern const bcstring be_const_str_NAVY; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_LAYOUT_COLUMN_RIGHT; -extern const bcstring be_const_str_OBJ_PART_ALL; -extern const bcstring be_const_str_get_auto_size; -extern const bcstring be_const_str_get_btn_img; -extern const bcstring be_const_str_set_outline_color; -extern const bcstring be_const_str_set_value_color; -extern const bcstring be_const_str_align_x; -extern const bcstring be_const_str_set_style_local_pad_inner; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_get_col_cnt; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_set_border_side; -extern const bcstring be_const_str_LAYOUT_COLUMN_LEFT; -extern const bcstring be_const_str_TABVIEW_TAB_POS_RIGHT; -extern const bcstring be_const_str_get_style_transition_prop_1; -extern const bcstring be_const_str_set_knob_colored; -extern const bcstring be_const_str_set_left_value; -extern const bcstring be_const_str_get_local_style; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_get_style_value_letter_space; -extern const bcstring be_const_str_set_bg_end_angle; -extern const bcstring be_const_str_set_style_local_bg_blend_mode; -extern const bcstring be_const_str_set_title; -extern const bcstring be_const_str_AQUA; -extern const bcstring be_const_str_layer_top; -extern const bcstring be_const_str_set_transition_prop_6; -extern const bcstring be_const_str_set_value_letter_space; -extern const bcstring be_const_str_set_style_local_text_font; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_set_anim_speed; -extern const bcstring be_const_str_set_border_width; -extern const bcstring be_const_str_set_transform_angle; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_STYLE_VALUE_BLEND_MODE; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_set_scale_grad_color; -extern const bcstring be_const_str_DISP_ROT_270; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_get_style_transition_prop_4; -extern const bcstring be_const_str_EVENT_SHORT_CLICKED; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_OPA_80; -extern const bcstring be_const_str_get_style_margin_bottom; -extern const bcstring be_const_str_set_scroll_propagation; -extern const bcstring be_const_str_EVENT_DEFOCUSED; -extern const bcstring be_const_str_CALENDAR_PART_BG; -extern const bcstring be_const_str_move_foreground; -extern const bcstring be_const_str_BORDER_SIDE_LEFT; -extern const bcstring be_const_str_set_style_local_pattern_repeat; -extern const bcstring be_const_str_set_transition_prop_5; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_set_pattern_image; -extern const bcstring be_const_str_CHECKBOX_PART_BG; -extern const bcstring be_const_str_OPA_60; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_get_style_pattern_opa; -extern const bcstring be_const_str_TABVIEW_TAB_POS_BOTTOM; -extern const bcstring be_const_str_CHART_PART_SERIES; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_YELLOW; -extern const bcstring be_const_str_set_pad_inner; -extern const bcstring be_const_str_get_day_of_week; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_set_style_local_text_letter_space; -extern const bcstring be_const_str_step_next; -extern const bcstring be_const_str_set_secondary_y_tick_length; -extern const bcstring be_const_str_STYLE_MARGIN_RIGHT; -extern const bcstring be_const_str_add_protect; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_set_day_names; -extern const bcstring be_const_str_set_scale_end_line_width; -extern const bcstring be_const_str_STYLE_SHADOW_COLOR; -extern const bcstring be_const_str_get_style_value_line_space; -extern const bcstring be_const_str_ins_text; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_STATE_DEFAULT; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_STYLE_SHADOW_OPA; -extern const bcstring be_const_str_set_style_local_text_opa; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_KEYBOARD_MODE_TEXT_UPPER; -extern const bcstring be_const_str_TXT_CMD_STATE_IN; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_set_margin_top; -extern const bcstring be_const_str_set_style_local_text_decor; -extern const bcstring be_const_str_up; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_CHART_TYPE_LINE; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_set_btn_ctrl_all; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_CHART_CURSOR_LEFT; -extern const bcstring be_const_str_LABEL_ALIGN_CENTER; -extern const bcstring be_const_str_KEY_END; -extern const bcstring be_const_str_set_y_invert; -extern const bcstring be_const_str_DRAG_DIR_VER; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_SPI; -extern const bcstring be_const_str_OPA_0; -extern const bcstring be_const_str_STYLE_SCALE_END_BORDER_WIDTH; -extern const bcstring be_const_str_get_tab_count; -extern const bcstring be_const_str_LIST_PART_SCROLLBAR; -extern const bcstring be_const_str_get_cursor_point; -extern const bcstring be_const_str_get_series_axis; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_set_tab_name; -extern const bcstring be_const_str_get_style_transition_time; -extern const bcstring be_const_str_refresh_ext_draw_pad; -extern const bcstring be_const_str_ALIGN_OUT_BOTTOM_RIGHT; -extern const bcstring be_const_str_get_style_scale_end_line_width; -extern const bcstring be_const_str_STYLE_LINE_BLEND_MODE; -extern const bcstring be_const_str_set_dir; -extern const bcstring be_const_str_update_mask; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_BTNMATRIX_CTRL_HIDDEN; -extern const bcstring be_const_str_BTN_STATE_DISABLED; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_get_height_grid; -extern const bcstring be_const_str_ALIGN_OUT_BOTTOM_MID; -extern const bcstring be_const_str_get_style_scale_end_border_width; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_get_style_image_opa; -extern const bcstring be_const_str_TEXTAREA_CURSOR_LAST; -extern const bcstring be_const_str_get_cursor_pos; -extern const bcstring be_const_str_OPA_50; -extern const bcstring be_const_str_set_accepted_chars; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_CALENDAR_PART_DAY_NAMES; -extern const bcstring be_const_str_get_x; -extern const bcstring be_const_str_set_style_local_scale_border_width; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_set_value_opa; -extern const bcstring be_const_str_FS_RES_OUT_OF_MEM; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_STYLE_PAD_LEFT; -extern const bcstring be_const_str_get_style_bg_opa; -extern const bcstring be_const_str_get_width_grid; -extern const bcstring be_const_str_set_points; -extern const bcstring be_const_str_cursor_down; -extern const bcstring be_const_str_set_style_local_pad_bottom; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_get_width_margin; -extern const bcstring be_const_str_CHART_AXIS_DRAW_LAST_TICK; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_get_color; -extern const bcstring be_const_str_get_label; -extern const bcstring be_const_str_BTNMATRIX_CTRL_DISABLED; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_SLIDER_TYPE_SYMMETRICAL; -extern const bcstring be_const_str_get_cursor_blink_time; -extern const bcstring be_const_str_set_margin_right; -extern const bcstring be_const_str_LABEL_ALIGN_AUTO; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_draw_line; -extern const bcstring be_const_str_get_style_value_ofs_y; -extern const bcstring be_const_str_set_text_decor; -extern const bcstring be_const_str_set_max_length; -extern const bcstring be_const_str_ALIGN_IN_BOTTOM_RIGHT; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_set_style_local_scale_width; -extern const bcstring be_const_str_TEMPL_STYLE_X; -extern const bcstring be_const_str_set_style_local_shadow_blend_mode; -extern const bcstring be_const_str_ARC_PART_BG; -extern const bcstring be_const_str_set_outline_opa; -extern const bcstring be_const_str_set_state; -extern const bcstring be_const_str_get_height_margin; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_move_background; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_get_parent; -extern const bcstring be_const_str_GRAY; -extern const bcstring be_const_str_STYLE_IMAGE_OPA; -extern const bcstring be_const_str_remove_style_local_prop; -extern const bcstring be_const_str_set_visible_row_count; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_add_text; -extern const bcstring be_const_str_set_outline_width; -extern const bcstring be_const_str_CHART_TYPE_COLUMN; -extern const bcstring be_const_str_STYLE_TRANSITION_PROP_3; -extern const bcstring be_const_str_get_fit_top; -extern const bcstring be_const_str_get_needle_img_pivot_y; -extern const bcstring be_const_str_get_scrollbar_mode; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_get_knob_colored; -extern const bcstring be_const_str_set_style_local_border_color; -extern const bcstring be_const_str_ALIGN_OUT_LEFT_TOP; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_ALIGN_IN_BOTTOM_MID; -extern const bcstring be_const_str_LAYOUT_PRETTY_BOTTOM; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_add_obj; -extern const bcstring be_const_str_get_offset_y; -extern const bcstring be_const_str_set_map; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_get_cell_value; -extern const bcstring be_const_str_get_row_cnt; -extern const bcstring be_const_str_STYLE_VALUE_OFS_Y; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_refr_text; -extern const bcstring be_const_str_SILVER; -extern const bcstring be_const_str_get_editing; -extern const bcstring be_const_str_set_point_count; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_send_data; -extern const bcstring be_const_str_set_image_recolor; -extern const bcstring be_const_str_STYLE_TRANSITION_PROP_4; -extern const bcstring be_const_str_EVENT_INSERT; -extern const bcstring be_const_str_PROTECT_FOLLOW; -extern const bcstring be_const_str_TXT_FLAG_CENTER; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_TABVIEW_TAB_POS_NONE; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_set_shadow_spread; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_set_line_dash_width; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_LAYOUT_CENTER; -extern const bcstring be_const_str_get_scrl_fit_top; -extern const bcstring be_const_str_get_style_scale_width; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_EVENT_REFRESH; -extern const bcstring be_const_str_get_style_outline_width; -extern const bcstring be_const_str_set_color; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_EVENT_LONG_PRESSED_REPEAT; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_set_border_post; -extern const bcstring be_const_str_set_style_local_transform_zoom; -extern const bcstring be_const_str_STYLE_LINE_OPA; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_get_height_fit; -extern const bcstring be_const_str_set_drag_dir; -extern const bcstring be_const_str_set_style_local_bg_grad_dir; -extern const bcstring be_const_str_EVENT_LEAVE; -extern const bcstring be_const_str_align; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_set_start_value; -extern const bcstring be_const_str_get_color_mode_fixed; -extern const bcstring be_const_str_set_style_local_line_color; -extern const bcstring be_const_str_set_style_local_outline_color; -extern const bcstring be_const_str_set_style_local_transform_height; -extern const bcstring be_const_str_SCROLLBAR_MODE_DRAG; -extern const bcstring be_const_str_set_cursor_click_pos; -extern const bcstring be_const_str_set_style_local_transition_prop_6; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_ALIGN_OUT_TOP_RIGHT; -extern const bcstring be_const_str_STYLE_LINE_DASH_GAP; -extern const bcstring be_const_str_LAYOUT_ROW_TOP; -extern const bcstring be_const_str_set_layout; -extern const bcstring be_const_str_set_style_local_outline_width; -extern const bcstring be_const_str_LED_PART_MAIN; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_get_ext_click_pad_right; -extern const bcstring be_const_str_set_color_mode; -extern const bcstring be_const_str_set_fit4; -extern const bcstring be_const_str_OPA_100; -extern const bcstring be_const_str_set_y_tick_length; -extern const bcstring be_const_str_FS_RES_UNKNOWN; -extern const bcstring be_const_str_SCROLLBAR_MODE_OFF; -extern const bcstring be_const_str_report_style_mod; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_STYLE_PAD_BOTTOM; -extern const bcstring be_const_str_DROPDOWN_DIR_UP; -extern const bcstring be_const_str_get_long_mode; -extern const bcstring be_const_str_get_top; -extern const bcstring be_const_str_set_style_local_value_blend_mode; -extern const bcstring be_const_str_get_btn_text; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_set_style_local_transition_prop_1; -extern const bcstring be_const_str_get_style_border_color; -extern const bcstring be_const_str_KEYBOARD_PART_BG; -extern const bcstring be_const_str_set_style_local_text_color; -extern const bcstring be_const_str_I2C; -extern const bcstring be_const_str_DROPDOWN_PART_SELECTED; -extern const bcstring be_const_str_get_style_text_sel_bg_color; -extern const bcstring be_const_str_set_disabled; -extern const bcstring be_const_str_FIT_MAX; -extern const bcstring be_const_str_DROPDOWN_PART_LIST; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_get_style_scale_end_color; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_STYLE_OUTLINE_BLEND_MODE; -extern const bcstring be_const_str_add_btn_left; -extern const bcstring be_const_str_blur_hor; -extern const bcstring be_const_str_step_prev; -extern const bcstring be_const_str_STYLE_TEXT_COLOR; -extern const bcstring be_const_str_align_mid_x; -extern const bcstring be_const_str_set_valid_positions; -extern const bcstring be_const_str_ARC_PART_INDIC; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_set_pos; -extern const bcstring be_const_str_FS_RES_BUSY; -extern const bcstring be_const_str_KEY_LEFT; -extern const bcstring be_const_str_get_child; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_get_checkable; -extern const bcstring be_const_str_get_max_length; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_RED; -extern const bcstring be_const_str_TEXT_DECOR_STRIKETHROUGH; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_set_style_local_shadow_opa; -extern const bcstring be_const_str_FS_RES_FS_ERR; -extern const bcstring be_const_str_STYLE_BG_MAIN_STOP; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_STYLE_PATTERN_RECOLOR_OPA; -extern const bcstring be_const_str_STYLE_SHADOW_OFS_X; -extern const bcstring be_const_str_set_style_local_clip_corner; -extern const bcstring be_const_str_CPICKER_PART_KNOB; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_set_drag; -extern const bcstring be_const_str_set_style_local_pattern_opa; -extern const bcstring be_const_str_set_row_cnt; -extern const bcstring be_const_str_set_text_sel_end; -extern const bcstring be_const_str_set_x; -extern const bcstring be_const_str_get_auto_realign; -extern const bcstring be_const_str_EVENT_DRAG_THROW_BEGIN; -extern const bcstring be_const_str_FS_RES_FULL; -extern const bcstring be_const_str_focus_freeze; -extern const bcstring be_const_str_ROLLER_MODE_INFINITE; -extern const bcstring be_const_str_LINEMETER_PART_MAIN; -extern const bcstring be_const_str_PROTECT_POS; -extern const bcstring be_const_str_refresh_style; -extern const bcstring be_const_str_set_fit; -extern const bcstring be_const_str_SPINNER_TYPE_SPINNING_ARC; -extern const bcstring be_const_str_area_is_visible; -extern const bcstring be_const_str_get_active_btn; -extern const bcstring be_const_str_set_pivot; -extern const bcstring be_const_str_get_dir; -extern const bcstring be_const_str_get_hidden; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_CHART_AXIS_SKIP_LAST_TICK; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_get_needle_img; -extern const bcstring be_const_str_set_offset_y; -extern const bcstring be_const_str_set_shadow_blend_mode; -extern const bcstring be_const_str_STYLE_VALUE_OPA; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_count_children; -extern const bcstring be_const_str_get_drag_parent; -extern const bcstring be_const_str_get_show_selected; -extern const bcstring be_const_str_set_transform_zoom; -extern const bcstring be_const_str_STYLE_SCALE_WIDTH; -extern const bcstring be_const_str_set_size; -extern const bcstring be_const_str_set_text_opa; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_fill_bg; -extern const bcstring be_const_str_LABEL_LONG_DOT; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_set_step; -extern const bcstring be_const_str_OPA_70; -extern const bcstring be_const_str_set_bright; -extern const bcstring be_const_str_set_show_selected; -extern const bcstring be_const_str_LIME; -extern const bcstring be_const_str_BORDER_SIDE_INTERNAL; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_title_set_alignment; -extern const bcstring be_const_str_get_needle_count; -extern const bcstring be_const_str_set_pwd_show_time; -extern const bcstring be_const_str_OPA_TRANSP; -extern const bcstring be_const_str_get_bg_angle_end; -extern const bcstring be_const_str_get_child_back; -extern const bcstring be_const_str_get_scrl_layout; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_GREEN; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_del; -extern const bcstring be_const_str_draw_scale; -extern const bcstring be_const_str_get_style_text_letter_space; -extern const bcstring be_const_str_focus_next; -extern const bcstring be_const_str_get_style_pattern_repeat; -extern const bcstring be_const_str_set_pwd_mode; -extern const bcstring be_const_str_DISP_ROT_90; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_set_text_static; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_increment; -extern const bcstring be_const_str_set_auto_realign; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_refresh; -extern const bcstring be_const_str_clear_state; -extern const bcstring be_const_str_del_async; -extern const bcstring be_const_str_ARC_TYPE_SYMMETRIC; -extern const bcstring be_const_str_STYLE_OUTLINE_PAD; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_glue_obj; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_get_btn_index; -extern const bcstring be_const_str_LAYOUT_GRID; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_decrement; -extern const bcstring be_const_str_set_style_local_scale_end_line_width; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_set_gesture_parent; -extern const bcstring be_const_str_set_style_local_bg_grad_stop; -extern const bcstring be_const_str_set_tab_act; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_get_letter_pos; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_toggle; -extern const bcstring be_const_str_KEY_ENTER; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_BAR_TYPE_CUSTOM; -extern const bcstring be_const_str_get_style_text_sel_color; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_STYLE_VALUE_COLOR; -extern const bcstring be_const_str_OPA_20; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_get_angle; -extern const bcstring be_const_str_get_rollover; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_get_height; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_draw_text; -extern const bcstring be_const_str_focus_obj; -extern const bcstring be_const_str_get_x_start_point; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_get_saturation; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_CHART_CURSOR_RIGHT; -extern const bcstring be_const_str_EVENT_VALUE_CHANGED; -extern const bcstring be_const_str_is_focused; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_get_cursor_hidden; -extern const bcstring be_const_str_get_selected_str; -extern const bcstring be_const_str_set_pattern_blend_mode; -extern const bcstring be_const_str_set_value_ofs_x; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_OLIVE; -extern const bcstring be_const_str_set_style_local_shadow_color; -extern const bcstring be_const_str_get_style_image_recolor_opa; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_set_style_local_text_line_space; -extern const bcstring be_const_str_set_parent; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_get_btn_label; -extern const bcstring be_const_str_set_bg_angles; -extern const bcstring be_const_str_GAUGE_PART_MAJOR; -extern const bcstring be_const_str_get_style_border_post; -extern const bcstring be_const_str_get_coords; -extern const bcstring be_const_str_get_text_sel_end; -extern const bcstring be_const_str_TABVIEW_TAB_POS_LEFT; -extern const bcstring be_const_str_get_px; -extern const bcstring be_const_str_EVENT_RELEASED; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_get_step; -extern const bcstring be_const_str_get_text; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_set_transition_prop_2; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_copy_buf; -extern const bcstring be_const_str_get_textarea; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_FS_MODE_WR; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_STYLE_SCALE_BORDER_WIDTH; -extern const bcstring be_const_str_STYLE_TRANSITION_DELAY; -extern const bcstring be_const_str_set_btn_width; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_set_scale_width; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_STYLE_VALUE_FONT; -extern const bcstring be_const_str_del_char_forward; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_STYLE_IMAGE_BLEND_MODE; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_align_y; -extern const bcstring be_const_str_set_style_local_transition_time; -extern const bcstring be_const_str_BAR_TYPE_NORMAL; -extern const bcstring be_const_str_BTN_STATE_PRESSED; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_FS_RES_INV_PARAM; -extern const bcstring be_const_str_set_click; -extern const bcstring be_const_str_ANIM_ON; -extern const bcstring be_const_str_DROPDOWN_DIR_DOWN; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_get_style_bg_color; -extern const bcstring be_const_str_set_placeholder_text; -extern const bcstring be_const_str_BTNMATRIX_CTRL_CHECK_STATE; -extern const bcstring be_const_str_FIT_NONE; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_set_bg_blend_mode; -extern const bcstring be_const_str_set_transition_prop_1; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_set_src; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_LAYOUT_ROW_BOTTOM; -extern const bcstring be_const_str_OBJ_PART_MAIN; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_set_hue; -extern const bcstring be_const_str_set_type; -extern const bcstring be_const_str_get_width_fit; -extern const bcstring be_const_str_set_editing; -extern const bcstring be_const_str_ALIGN_IN_TOP_MID; -extern const bcstring be_const_str_STYLE_SCALE_END_COLOR; -extern const bcstring be_const_str_get_click; -extern const bcstring be_const_str_get_width; -extern const bcstring be_const_str_set_focus_cb; -extern const bcstring be_const_str_set_pad_right; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_PAGE_EDGE_RIGHT; -extern const bcstring be_const_str_list_copy; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_set_transition_path; -extern const bcstring be_const_str_BLUE; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_set_transition_time; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_get_style_margin_top; -extern const bcstring be_const_str_STYLE_BG_GRAD_STOP; -extern const bcstring be_const_str_get_style_transition_prop_3; -extern const bcstring be_const_str_DRAG_DIR_BOTH; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_cursor_up; -extern const bcstring be_const_str_get_focused; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_get_anim_time; -extern const bcstring be_const_str_invalidate_area; -extern const bcstring be_const_str_remove_series; -extern const bcstring be_const_str_get_style_transform_height; -extern const bcstring be_const_str_set_scrollable_fit; -extern const bcstring be_const_str_set_shadow_color; -extern const bcstring be_const_str_set_transition_prop_4; -extern const bcstring be_const_str_is_dragged; -extern const bcstring be_const_str_set_angle_offset; -extern const bcstring be_const_str_set_line_dash_gap; -extern const bcstring be_const_str_set_shadow_ofs_y; -extern const bcstring be_const_str_SPINNER_TYPE_FILLSPIN_ARC; -extern const bcstring be_const_str_get_file_name; -extern const bcstring be_const_str_PROTECT_CHILD_CHG; -extern const bcstring be_const_str_TEAL; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_STYLE_PATTERN_RECOLOR; -extern const bcstring be_const_str_get_critical_value; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_set_margin_bottom; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_get_ext_click_pad_bottom; -extern const bcstring be_const_str_remove_prop; -extern const bcstring be_const_str_STYLE_TEXT_DECOR; -extern const bcstring be_const_str_set_spin_time; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_get_style_transition_prop_6; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_invalidate; -extern const bcstring be_const_str_BORDER_SIDE_RIGHT; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_get_adv_hittest; -extern const bcstring be_const_str_get_bright; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_set_style_local_line_width; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_get_type; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_set_saturation; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_layer_sys; -extern const bcstring be_const_str_list_init; -extern const bcstring be_const_str_set_pattern_recolor_opa; -extern const bcstring be_const_str_DRAG_DIR_HOR; -extern const bcstring be_const_str_is_point_on_coords; -extern const bcstring be_const_str_cut_text; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_set_tile_act; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_EVENT_PRESSING; -extern const bcstring be_const_str_set_text_sel_start; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_set_image_opa; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_FS_RES_DENIED; -extern const bcstring be_const_str_get_style_pad_left; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_get_option_cnt; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_CHART_AXIS_INVERSE_LABELS_ORDER; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_scroll_ver; -extern const bcstring be_const_str_get_antialias; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_STYLE_OUTLINE_WIDTH; extern const bcstring be_const_str_get_line_count; -extern const bcstring be_const_str_set_border_blend_mode; -extern const bcstring be_const_str_set_style_local_value_line_space; -extern const bcstring be_const_str_CHART_CURSOR_DOWN; -extern const bcstring be_const_str_LAYOUT_OFF; -extern const bcstring be_const_str_set_pad_top; -extern const bcstring be_const_str_STYLE_MARGIN_LEFT; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_set_style_local_pattern_recolor_opa; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_get_btn_width; -extern const bcstring be_const_str_set_style_local_shadow_spread; -extern const bcstring be_const_str_set_x_tick_length; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_STYLE_SIZE; -extern const bcstring be_const_str_set_auto_size; -extern const bcstring be_const_str_set_style_local_value_ofs_x; -extern const bcstring be_const_str_close_event_cb; -extern const bcstring be_const_str_remove_style; -extern const bcstring be_const_str_LABEL_ALIGN_LEFT; -extern const bcstring be_const_str_set_style_local_opa_scale; -extern const bcstring be_const_str_remove_mask; -extern const bcstring be_const_str_set_image_recolor_opa; -extern const bcstring be_const_str_CHART_AXIS_PRIMARY_Y; -extern const bcstring be_const_str_get_scrollable; -extern const bcstring be_const_str_CHART_AXIS_SECONDARY_Y; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_set_style_local_line_dash_gap; -extern const bcstring be_const_str_set_text_sel_color; -extern const bcstring be_const_str_get_spin_time; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_HSPI; -extern const bcstring be_const_str_OBJMASK_PART_MAIN; -extern const bcstring be_const_str_count_children_recursive; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_set_adv_hittest; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_set_checkable; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_ARC_TYPE_REVERSE; -extern const bcstring be_const_str_set_tasmota_logo; -extern const bcstring be_const_str_ALIGN_IN_LEFT_MID; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_EVENT_PRESS_LOST; -extern const bcstring be_const_str_STYLE_TEXT_FONT; -extern const bcstring be_const_str_set_style_local_scale_grad_color; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_get_style_outline_opa; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_set_col_cnt; -extern const bcstring be_const_str_set_width; -extern const bcstring be_const_str_KEY_PREV; -extern const bcstring be_const_str_set_text_fmt; -extern const bcstring be_const_str_get_scrl_height; -extern const bcstring be_const_str_set_arc_length; -extern const bcstring be_const_str_set_style_local_image_recolor_opa; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_FS_RES_OK; -extern const bcstring be_const_str_set_scrl_width; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_STYLE_VALUE_STR; -extern const bcstring be_const_str_ALIGN_IN_TOP_LEFT; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_transform; -extern const bcstring be_const_str_set_style_local_line_blend_mode; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_set_angle; -extern const bcstring be_const_str_set_today_date; -extern const bcstring be_const_str_PAGE_EDGE_BOTTOM; -extern const bcstring be_const_str_get_btns_pos; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_set_bg_grad_color; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_clear_protect; -extern const bcstring be_const_str_LABEL_LONG_BREAK; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_get_style_border_width; -extern const bcstring be_const_str_set_style_local_size; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_stop_auto_close; +extern const bcstring be_const_str_NRG_SEL_INV; extern const bcstring be_const_str_add_char; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_CHART_CURSOR_NONE; -extern const bcstring be_const_str_EVENT_KEY; -extern const bcstring be_const_str_del_anim_ready_cb; -extern const bcstring be_const_str_set_bg_opa; -extern const bcstring be_const_str_TEXT_DECOR_NONE; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_GRAD_DIR_VER; -extern const bcstring be_const_str_get_angle_end; -extern const bcstring be_const_str_set_drag_parent; -extern const bcstring be_const_str_set_recolor; -extern const bcstring be_const_str_set_style_local_text_sel_color; -extern const bcstring be_const_str_BLEND_MODE_SUBTRACTIVE; -extern const bcstring be_const_str_finish_transitions; -extern const bcstring be_const_str_realign; -extern const bcstring be_const_str_set_style_local_value_opa; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_get_start_value; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_OPA_40; -extern const bcstring be_const_str_get_active_btn_text; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_clear_selection; -extern const bcstring be_const_str_get_hor_res; -extern const bcstring be_const_str_get_offset_x; -extern const bcstring be_const_str_set_style_local_border_opa; -extern const bcstring be_const_str_DISP_SIZE_MEDIUM; -extern const bcstring be_const_str_FS_MODE_RD; -extern const bcstring be_const_str_get_scrl_width; -extern const bcstring be_const_str_get_style_pad_right; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_BTNMATRIX_CTRL_CLICK_TRIG; -extern const bcstring be_const_str_CHART_PART_SERIES_BG; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_get_scrl_fit_right; -extern const bcstring be_const_str_set_style_local_shadow_ofs_y; -extern const bcstring be_const_str_STYLE_PATTERN_IMAGE; -extern const bcstring be_const_str_STYLE_VALUE_OFS_X; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_TXT_FLAG_FIT; -extern const bcstring be_const_str_set_width_fit; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_DISP_SIZE_SMALL; -extern const bcstring be_const_str_STYLE_TRANSITION_PROP_5; -extern const bcstring be_const_str_set_bg_grad_stop; -extern const bcstring be_const_str_set_style_local_text_sel_bg_color; -extern const bcstring be_const_str_set_top; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_get_style_value_color; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_CPICKER_COLOR_MODE_VALUE; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_STYLE_TEXT_SEL_COLOR; -extern const bcstring be_const_str_set_hsv; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_CALENDAR_PART_DATE; -extern const bcstring be_const_str_add_element; -extern const bcstring be_const_str_set_scale; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_reset_style_list; -extern const bcstring be_const_str_set_parent_event; -extern const bcstring be_const_str_set_text_line_space; -extern const bcstring be_const_str_FIT_TIGHT; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_get_style_line_opa; -extern const bcstring be_const_str_get_style_line_rounded; -extern const bcstring be_const_str_get_nearest_index_from_coord; -extern const bcstring be_const_str_get_selected; -extern const bcstring be_const_str_set_long_mode; -extern const bcstring be_const_str_set_month_names; -extern const bcstring be_const_str_set_refocus_policy; -extern const bcstring be_const_str_DROPDOWN_DIR_RIGHT; -extern const bcstring be_const_str_set_line_blend_mode; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_STYLE_TRANSITION_PROP_6; -extern const bcstring be_const_str_get_fit_right; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_clear_btn_ctrl; -extern const bcstring be_const_str_set_align; -extern const bcstring be_const_str_set_style_local_margin_left; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_STYLE_CLIP_CORNER; -extern const bcstring be_const_str_VSPI; -extern const bcstring be_const_str_cursor_left; -extern const bcstring be_const_str_set_style_local_border_side; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_get_align; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_get_fit_bottom; -extern const bcstring be_const_str_set_style_local_transition_prop_5; -extern const bcstring be_const_str_get_ext_click_pad_left; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_set_focus_parent; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_DISP_ROT_NONE; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_set_opa_scale; -extern const bcstring be_const_str_CYAN; -extern const bcstring be_const_str_set_palette; -extern const bcstring be_const_str_get_pivot; -extern const bcstring be_const_str_BTNMATRIX_CTRL_NO_REPEAT; -extern const bcstring be_const_str_SCROLLBAR_MODE_HIDE; -extern const bcstring be_const_str_get_focused_btn; -extern const bcstring be_const_str_PROTECT_CLICK_FOCUS; -extern const bcstring be_const_str_is_visible; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_PROTECT_PRESS_LOST; -extern const bcstring be_const_str_get_hue; -extern const bcstring be_const_str_set_pattern_recolor; -extern const bcstring be_const_str_SSPI; -extern const bcstring be_const_str_get_style_line_dash_width; -extern const bcstring be_const_str_set_ctrl_map; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_get_text_sel_en; -extern const bcstring be_const_str_get_title; -extern const bcstring be_const_str_get_y_invert; -extern const bcstring be_const_str_GAUGE_PART_MAIN; -extern const bcstring be_const_str_get_btn_selected; -extern const bcstring be_const_str_PAGE_EDGE_TOP; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_set_style_local_line_opa; -extern const bcstring be_const_str_set_style_local_shadow_width; -extern const bcstring be_const_str_set_formatter_cb; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_get_adjustable; -extern const bcstring be_const_str_DRAG_DIR_ONE; -extern const bcstring be_const_str_STYLE_LINE_WIDTH; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_hittest; -extern const bcstring be_const_str_STYLE_BG_GRAD_DIR; -extern const bcstring be_const_str_get_drag_throw; -extern const bcstring be_const_str_set_style_local_transform_angle; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_draw_rect; -extern const bcstring be_const_str_get_user_data; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_set_options_static; -extern const bcstring be_const_str_set_value; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_set_mode; -extern const bcstring be_const_str_set_style_local_image_opa; -extern const bcstring be_const_str_set_style_local_outline_blend_mode; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_STYLE_SCALE_GRAD_COLOR; -extern const bcstring be_const_str_draw_img; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_set_style_local_transition_path; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_set_style_local_transition_prop_3; -extern const bcstring be_const_str_fade_in; -extern const bcstring be_const_str_set_angles; -extern const bcstring be_const_str_set_style_local_margin_right; -extern const bcstring be_const_str_get_one_check; -extern const bcstring be_const_str_set_highlighted_dates; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_get_style_outline_color; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_CHECKBOX_PART_BULLET; -extern const bcstring be_const_str_STYLE_BORDER_SIDE; -extern const bcstring be_const_str_get_anim_speed; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_KEY_HOME; -extern const bcstring be_const_str_focus_prev; -extern const bcstring be_const_str_STYLE_SHADOW_OFS_Y; -extern const bcstring be_const_str_BTN_STATE_CHECKED_RELEASED; -extern const bcstring be_const_str_get_pwd_mode; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_get_cell_merge_right; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_EVENT_APPLY; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_STYLE_PATTERN_BLEND_MODE; -extern const bcstring be_const_str_get_wrap; -extern const bcstring be_const_str_set_value_str; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_get_style_scale_border_width; -extern const bcstring be_const_str_set_shadow_width; -extern const bcstring be_const_str_ALIGN_OUT_RIGHT_BOTTOM; -extern const bcstring be_const_str_KEY_DEL; -extern const bcstring be_const_str_get_angle_offset; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_get_style_transform_width; -extern const bcstring be_const_str_set_bg_grad_dir; -extern const bcstring be_const_str_set_signal_cb; -extern const bcstring be_const_str_KEYBOARD_PART_BTN; -extern const bcstring be_const_str_get_content; -extern const bcstring be_const_str_set_focused_btn; -extern const bcstring be_const_str_set_offset_x; -extern const bcstring be_const_str_OPA_90; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_get_edge_flash; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_get_pressed_cell; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_STYLE_SHADOW_WIDTH; -extern const bcstring be_const_str_set_text_font; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_STYLE_LINE_COLOR; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_set_outline_pad; -extern const bcstring be_const_str_BAR_TYPE_SYMMETRICAL; -extern const bcstring be_const_str_set_height_margin; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_anim_cb; -extern const bcstring be_const_str_get_style_bg_main_stop; -extern const bcstring be_const_str_get_style_shadow_ofs_y; -extern const bcstring be_const_str_get_style_transform_zoom; -extern const bcstring be_const_str_set_line_rounded; -extern const bcstring be_const_str_set_style_local_pattern_recolor; -extern const bcstring be_const_str_EVENT_GESTURE; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_SCROLLBAR_MODE_ON; -extern const bcstring be_const_str_set_chg_rate; -extern const bcstring be_const_str_set_needle_count; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_set_text; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_ALIGN_IN_BOTTOM_LEFT; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_get_tile_act; -extern const bcstring be_const_str_set_value_font; -extern const bcstring be_const_str_get_angle_start; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_init_draw_rect_dsc; -extern const bcstring be_const_str_set_width_margin; -extern const bcstring be_const_str_STYLE_BG_COLOR; -extern const bcstring be_const_str_STYLE_TEXT_LETTER_SPACE; -extern const bcstring be_const_str_get_style_radius; -extern const bcstring be_const_str_set_zoom; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_FS_RES_NOT_EX; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_clean_style_list; -extern const bcstring be_const_str_LAYOUT_PRETTY_MID; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_get_scrl_fit_left; -extern const bcstring be_const_str_TABVIEW_TAB_POS_TOP; -extern const bcstring be_const_str_get_style_pad_bottom; -extern const bcstring be_const_str_BLEND_MODE_NORMAL; -extern const bcstring be_const_str_STYLE_BORDER_OPA; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_get_btnmatrix; -extern const bcstring be_const_str_DISP_SIZE_LARGE; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_set_text_align; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_get_x_from_index; -extern const bcstring be_const_str_set_style_local_margin_top; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_set_style_local_scale_end_border_width; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_STYLE_LINE_ROUNDED; -extern const bcstring be_const_str_STYLE_PAD_INNER; -extern const bcstring be_const_str_get_sb_mode; -extern const bcstring be_const_str_set_selected; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_set_scrl_height; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_add_btns; -extern const bcstring be_const_str_set_style_local_scale_end_color; -extern const bcstring be_const_str_get_style_text_opa; -extern const bcstring be_const_str_ALIGN_CENTER; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_title_get_alignment; -extern const bcstring be_const_str_EVENT_LONG_PRESSED; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_STYLE_PATTERN_OPA; -extern const bcstring be_const_str_draw_arc; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_set_scale_end_border_width; -extern const bcstring be_const_str_add_state; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_set_style_local_value_align; -extern const bcstring be_const_str_set_text_letter_space; -extern const bcstring be_const_str_set_value_ofs_y; -extern const bcstring be_const_str_ANIM_OFF; -extern const bcstring be_const_str_STYLE_BG_BLEND_MODE; -extern const bcstring be_const_str_get_options; -extern const bcstring be_const_str_set_style_local_pad_top; -extern const bcstring be_const_str_OBJ_PART_VIRTUAL_FIRST; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_set_anim_time; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_set_digit_format; -extern const bcstring be_const_str_set_secondary_y_tick_texts; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_FS_RES_HW_ERR; -extern const bcstring be_const_str_OPA_COVER; -extern const bcstring be_const_str_get_style_pad_top; -extern const bcstring be_const_str_set_height; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_get_header_height; -extern const bcstring be_const_str_set_x_start_point; -extern const bcstring be_const_str_DROPDOWN_PART_MAIN; -extern const bcstring be_const_str_KEY_ESC; -extern const bcstring be_const_str_set_checked; -extern const bcstring be_const_str_TXT_FLAG_RIGHT; -extern const bcstring be_const_str_set_style_local_text_blend_mode; -extern const bcstring be_const_str_blur_ver; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_set_y_range; -extern const bcstring be_const_str_PROTECT_NONE; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_get_next_btn; -extern const bcstring be_const_str_remove_all_objs; -extern const bcstring be_const_str_set_x_tick_texts; -extern const bcstring be_const_str_LIST_PART_EDGE_FLASH; -extern const bcstring be_const_str_WHITE; -extern const bcstring be_const_str_get_scrl_fit_bottom; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_STYLE_TEXT_BLEND_MODE; -extern const bcstring be_const_str_STYLE_MARGIN_BOTTOM; -extern const bcstring be_const_str_get_screen; -extern const bcstring be_const_str_set_border_color; -extern const bcstring be_const_str_SCROLLBAR_MODE_AUTO; -extern const bcstring be_const_str_STATE_PRESSED; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_set_cursor_blink_time; extern const bcstring be_const_str_clear_btn_ctrl_all; -extern const bcstring be_const_str_set_pattern_opa; -extern const bcstring be_const_str_set_bg_main_stop; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_set_end_angle; -extern const bcstring be_const_str_CHART_UPDATE_MODE_SHIFT; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_ALIGN_OUT_RIGHT_MID; -extern const bcstring be_const_str_set_header_height; -extern const bcstring be_const_str_LAYOUT_PRETTY_TOP; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_set_buffer; -extern const bcstring be_const_str_ROLLER_MODE_NORMAL; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_set_click_focus; -extern const bcstring be_const_str_set_user_data; -extern const bcstring be_const_str_KEY_NEXT; -extern const bcstring be_const_str_get_cell_crop; -extern const bcstring be_const_str_clear_series; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_set_style_local_pad_right; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_set_cell_crop; -extern const bcstring be_const_str_set_text_color; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_focus_btn; -extern const bcstring be_const_str_CHART_CURSOR_UP; -extern const bcstring be_const_str_is_checked; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_STATE_EDITED; -extern const bcstring be_const_str_ALIGN_IN_RIGHT_MID; -extern const bcstring be_const_str_get_style_line_width; -extern const bcstring be_const_str_start_auto_close; -extern const bcstring be_const_str_get_point_count; -extern const bcstring be_const_str_is_inactive; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_set_radius; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_get_style_transition_prop_2; -extern const bcstring be_const_str_GESTURE_DIR_LEFT; -extern const bcstring be_const_str_scroll_hor; -extern const bcstring be_const_str_BORDER_SIDE_TOP; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_STATE_FOCUSED; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_set_shadow_ofs_x; -extern const bcstring be_const_str_get_gesture_parent; -extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_set_col_cnt; +extern const bcstring be_const_str_STYLE_PATTERN_BLEND_MODE; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_SLIDER_TYPE_RANGE; +extern const bcstring be_const_str_get_angle; +extern const bcstring be_const_str_set_ctrl_map; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_get_tab_act; +extern const bcstring be_const_str_BTNMATRIX_CTRL_DISABLED; +extern const bcstring be_const_str_set_palette; +extern const bcstring be_const_str_KEY_UP; +extern const bcstring be_const_str_LED_PART_MAIN; +extern const bcstring be_const_str_LIST_PART_SCROLLBAR; +extern const bcstring be_const_str_get_hidden; +extern const bcstring be_const_str_get_style_value_line_space; +extern const bcstring be_const_str_add_btns; +extern const bcstring be_const_str_BAR_TYPE_CUSTOM; +extern const bcstring be_const_str_CHART_AXIS_INVERSE_LABELS_ORDER; extern const bcstring be_const_str_push; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_add_tab; -extern const bcstring be_const_str_STYLE_PAD_RIGHT; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_set_cursor_pos; -extern const bcstring be_const_str_PROTECT_PARENT; +extern const bcstring be_const_str_get_max_height; +extern const bcstring be_const_str_set_shadow_color; +extern const bcstring be_const_str_set_style_local_shadow_ofs_x; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_get_width_fit; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_report_style_mod; +extern const bcstring be_const_str_set_value_ofs_x; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_TXT_FLAG_RIGHT; +extern const bcstring be_const_str_get_align; +extern const bcstring be_const_str_get_style_transition_prop_6; +extern const bcstring be_const_str_set_cursor_manage; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_down; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_ALIGN_IN_TOP_RIGHT; +extern const bcstring be_const_str_set_style_local_transition_delay; +extern const bcstring be_const_str_get_spin_time; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_set_cell_crop; +extern const bcstring be_const_str_set_mirror; +extern const bcstring be_const_str_get_style_radius; +extern const bcstring be_const_str_start_auto_close; +extern const bcstring be_const_str_set_auto_size; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_STYLE_BORDER_WIDTH; +extern const bcstring be_const_str_STYLE_SHADOW_SPREAD; +extern const bcstring be_const_str_CHART_PART_CURSOR; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_get_pivot; +extern const bcstring be_const_str_scroll_ver; +extern const bcstring be_const_str_set_border_blend_mode; +extern const bcstring be_const_str_set_offset_x; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_get_cursor_blink_time; +extern const bcstring be_const_str_get_style_transition_delay; +extern const bcstring be_const_str_PAGE_EDGE_LEFT; +extern const bcstring be_const_str_STYLE_TRANSITION_PROP_3; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_get_style_pad_right; +extern const bcstring be_const_str_ARC_TYPE_REVERSE; +extern const bcstring be_const_str_STYLE_MARGIN_TOP; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_del_anim_ready_cb; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_ALIGN_OUT_RIGHT_BOTTOM; +extern const bcstring be_const_str_set_style_local_border_color; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_set_month_names; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_get_style_pattern_recolor_opa; +extern const bcstring be_const_str_STYLE_OUTLINE_COLOR; +extern const bcstring be_const_str_set_range; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_set_line_opa; +extern const bcstring be_const_str_DISP_SIZE_LARGE; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_get_height_fit; +extern const bcstring be_const_str_set_selected; +extern const bcstring be_const_str_set_style_local_pad_inner; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_get_auto_size; +extern const bcstring be_const_str_get_focused; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_STYLE_OPA_SCALE; +extern const bcstring be_const_str_init_draw_label_dsc; +extern const bcstring be_const_str_set_bg_start_angle; +extern const bcstring be_const_str_set_style_local_line_rounded; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_get_content; +extern const bcstring be_const_str_ALIGN_CENTER; +extern const bcstring be_const_str_CHART_AXIS_SKIP_LAST_TICK; +extern const bcstring be_const_str_KEY_BACKSPACE; +extern const bcstring be_const_str_CPICKER_COLOR_MODE_SATURATION; +extern const bcstring be_const_str_LABEL_ALIGN_AUTO; +extern const bcstring be_const_str_focus; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_LAYOUT_ROW_BOTTOM; +extern const bcstring be_const_str_get_letter_on; +extern const bcstring be_const_str_KEYBOARD_MODE_SPECIAL; +extern const bcstring be_const_str_get_color_mode_fixed; +extern const bcstring be_const_str_set_height_margin; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_get_header_height; +extern const bcstring be_const_str_get_protect; +extern const bcstring be_const_str_get_tile_act; +extern const bcstring be_const_str_set_style_local_bg_blend_mode; +extern const bcstring be_const_str_clean_tab; +extern const bcstring be_const_str_set_style_local_radius; +extern const bcstring be_const_str_BTN_STATE_PRESSED; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_SCROLLBAR_MODE_ON; +extern const bcstring be_const_str_remove_prop; +extern const bcstring be_const_str_TXT_CMD_STATE_PAR; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_SCROLLBAR_MODE_UNHIDE; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_LIST_PART_EDGE_FLASH; +extern const bcstring be_const_str_STYLE_BORDER_POST; +extern const bcstring be_const_str_set_style_local_transform_angle; +extern const bcstring be_const_str_DRAG_DIR_BOTH; extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_get_scroll_propagation; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_set_type; +extern const bcstring be_const_str_STYLE_PATTERN_RECOLOR_OPA; +extern const bcstring be_const_str_YELLOW; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_get_ext_attr; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_glue_obj; +extern const bcstring be_const_str_CALENDAR_PART_BG; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_TEXT_DECOR_UNDERLINE; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_get_style_text_line_space; +extern const bcstring be_const_str_scroll_hor; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_STYLE_PAD_LEFT; +extern const bcstring be_const_str_set_value_ofs_y; +extern const bcstring be_const_str_get_style_transition_prop_5; +extern const bcstring be_const_str_get_cell_value; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_set_pad_right; +extern const bcstring be_const_str_del_char; +extern const bcstring be_const_str_STYLE_VALUE_LINE_SPACE; +extern const bcstring be_const_str_get_bright; +extern const bcstring be_const_str_set_top; +extern const bcstring be_const_str_add_protect; +extern const bcstring be_const_str_set_bg_main_stop; +extern const bcstring be_const_str_set_scale_end_border_width; +extern const bcstring be_const_str_PROTECT_POS; +extern const bcstring be_const_str_STYLE_BG_OPA; +extern const bcstring be_const_str_ALIGN_IN_TOP_LEFT; +extern const bcstring be_const_str_ALIGN_OUT_LEFT_BOTTOM; +extern const bcstring be_const_str_BTN_STATE_RELEASED; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_get_btn_img; +extern const bcstring be_const_str_get_title; +extern const bcstring be_const_str_set_style_local_bg_main_stop; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_DISP_ROT_180; +extern const bcstring be_const_str_set_transition_path; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_get_top; +extern const bcstring be_const_str_move_background; +extern const bcstring be_const_str_get_style_margin_bottom; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_get_auto_fit; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_set_style_local_scale_end_color; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_set_line_dash_gap; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_get_pressed_cell; +extern const bcstring be_const_str_FS_RES_TOUT; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_get_start_value; +extern const bcstring be_const_str_BLEND_MODE_SUBTRACTIVE; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_CHART_PART_SERIES_BG; +extern const bcstring be_const_str_KEYBOARD_MODE_TEXT_UPPER; +extern const bcstring be_const_str_LABEL_ALIGN_LEFT; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_focus_prev; +extern const bcstring be_const_str_STYLE_TEXT_LINE_SPACE; +extern const bcstring be_const_str_get_click; +extern const bcstring be_const_str_BORDER_SIDE_NONE; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_PAGE_EDGE_RIGHT; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_OPA_0; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_set_one_line; +extern const bcstring be_const_str_set_visible_row_count; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_align_x; +extern const bcstring be_const_str_get_btn_width; +extern const bcstring be_const_str_TXT_CMD_STATE_WAIT; +extern const bcstring be_const_str_set_outline_color; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_set_auto_fit; +extern const bcstring be_const_str_set_digit_format; +extern const bcstring be_const_str_set_text_color; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_ALIGN_IN_BOTTOM_LEFT; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_add_obj; +extern const bcstring be_const_str_get_style_shadow_spread; +extern const bcstring be_const_str_KEY_RIGHT; +extern const bcstring be_const_str_set_x_tick_texts; +extern const bcstring be_const_str_STYLE_VALUE_ALIGN; +extern const bcstring be_const_str_get_btn_text; +extern const bcstring be_const_str_set_transition_prop_6; +extern const bcstring be_const_str_get_style_bg_opa; +extern const bcstring be_const_str_EVENT_LONG_PRESSED; +extern const bcstring be_const_str_LAYOUT_CENTER; +extern const bcstring be_const_str_OLIVE; +extern const bcstring be_const_str_ARC_PART_KNOB; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_get_ext_click_pad_bottom; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_set_knob_colored; +extern const bcstring be_const_str_MAGENTA; +extern const bcstring be_const_str_OPA_40; +extern const bcstring be_const_str_CPICKER_TYPE_DISC; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_set_style_local_value_blend_mode; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_set_color_mode_fixed; +extern const bcstring be_const_str_set_options; +extern const bcstring be_const_str_FS_RES_FS_ERR; +extern const bcstring be_const_str_FS_RES_INV_PARAM; +extern const bcstring be_const_str_PURPLE; +extern const bcstring be_const_str_cursor_left; +extern const bcstring be_const_str_PROTECT_CLICK_FOCUS; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_STYLE_BG_GRAD_DIR; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_set_long_mode; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_get_show_selected; +extern const bcstring be_const_str_set_pad_bottom; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_get_angle_start; +extern const bcstring be_const_str_get_scrl_width; +extern const bcstring be_const_str_KEY_NEXT; +extern const bcstring be_const_str_OBJ_PART_REAL_FIRST; +extern const bcstring be_const_str_set_style_local_outline_pad; +extern const bcstring be_const_str_get_bg_angle_end; +extern const bcstring be_const_str_get_pwd_show_time; +extern const bcstring be_const_str_get_style_pad_bottom; +extern const bcstring be_const_str_set_drag_throw; +extern const bcstring be_const_str_CHART_CURSOR_UP; +extern const bcstring be_const_str_get_child; +extern const bcstring be_const_str_set_drag_dir; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_set_color_mode; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_SCROLLBAR_MODE_DRAG; +extern const bcstring be_const_str_SCROLLBAR_MODE_HIDE; +extern const bcstring be_const_str_draw_scale; +extern const bcstring be_const_str_set_bright; +extern const bcstring be_const_str_KEYBOARD_MODE_NUM; +extern const bcstring be_const_str_STYLE_LINE_COLOR; +extern const bcstring be_const_str_set_bg_color; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_set_pwd_show_time; +extern const bcstring be_const_str_get_src; +extern const bcstring be_const_str_set_scale_end_line_width; +extern const bcstring be_const_str_STYLE_LINE_ROUNDED; +extern const bcstring be_const_str_SPINNER_DIR_FORWARD; +extern const bcstring be_const_str_get_style_transition_prop_4; +extern const bcstring be_const_str_CHART_TYPE_LINE; +extern const bcstring be_const_str_set_border_post; +extern const bcstring be_const_str_FS_RES_UNKNOWN; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_count_children; +extern const bcstring be_const_str_get_focused_btn; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_set_style_local_bg_grad_dir; +extern const bcstring be_const_str_set_style_local_pad_right; +extern const bcstring be_const_str_set_style_local_transform_height; +extern const bcstring be_const_str_set_style_local_border_post; +extern const bcstring be_const_str_get_parent; +extern const bcstring be_const_str_get_scrollable; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_set_pad_top; +extern const bcstring be_const_str_ALIGN_OUT_TOP_RIGHT; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_LABEL_LONG_SROLL_CIRC; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_update_mask; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_set_color; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_add_element; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_set_value_font; +extern const bcstring be_const_str_get_style_margin_top; +extern const bcstring be_const_str_CHART_UPDATE_MODE_CIRCULAR; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_align_mid_y; +extern const bcstring be_const_str_is_focused; +extern const bcstring be_const_str_set_chg_rate; +extern const bcstring be_const_str_set_text_font; +extern const bcstring be_const_str_CALENDAR_PART_DATE; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_STYLE_TRANSITION_PROP_1; +extern const bcstring be_const_str_SLIDER_TYPE_NORMAL; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_STYLE_TRANSFORM_ANGLE; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_get_one_line; +extern const bcstring be_const_str_set_anim_time; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_ARC_TYPE_SYMMETRIC; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_set_margin_right; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_STYLE_BG_BLEND_MODE; +extern const bcstring be_const_str_STYLE_IMAGE_BLEND_MODE; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_INPUT_PULLDOWN; extern const bcstring be_const_str_SYMBOL_LOOP; extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_DISP_SIZE_EXTRA_LARGE; -extern const bcstring be_const_str_get_series_area; -extern const bcstring be_const_str_get_style_clip_corner; -extern const bcstring be_const_str_get_style_transition_prop_5; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_LABEL_LONG_CROP; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_get_ext_click_pad_top; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_scr_act; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_get_style_bg_grad_color; -extern const bcstring be_const_str_get_ver_res; -extern const bcstring be_const_str_focus; -extern const bcstring be_const_str_set_scrollbar_mode; -extern const bcstring be_const_str_get_focus_parent; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_get_arc_length; -extern const bcstring be_const_str_set_div_line_count; -extern const bcstring be_const_str_BLEND_MODE_ADDITIVE; -extern const bcstring be_const_str_set_drag_throw; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_STYLE_BORDER_POST; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_BTN_STATE_CHECKED_PRESSED; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_get_highlighted_dates_num; -extern const bcstring be_const_str_set_textarea; -extern const bcstring be_const_str_set_clip_corner; -extern const bcstring be_const_str_set_cursor_manage; -extern const bcstring be_const_str_set_style_local_border_width; -extern const bcstring be_const_str_set_base_dir; -extern const bcstring be_const_str_STYLE_PAD_TOP; -extern const bcstring be_const_str_KEYBOARD_MODE_TEXT_LOWER; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_set_style_local_bg_main_stop; -extern const bcstring be_const_str_MAROON; -extern const bcstring be_const_str_STYLE_TRANSFORM_ZOOM; -extern const bcstring be_const_str_get_focused_obj; -extern const bcstring be_const_str_get_value; -extern const bcstring be_const_str_set_margin_left; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_get_hsv; -extern const bcstring be_const_str_get_prev_btn; -extern const bcstring be_const_str_set_outline_blend_mode; -extern const bcstring be_const_str_CHART_PART_CURSOR; -extern const bcstring be_const_str_set_mirror; -extern const bcstring be_const_str_set_pad_left; -extern const bcstring be_const_str_set_style_local_bg_color; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_create; -extern const bcstring be_const_str_get_style_value_str; -extern const bcstring be_const_str_set_cell_value; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_get_style_pattern_image; -extern const bcstring be_const_str_set_cell_type; -extern const bcstring be_const_str_STYLE_VALUE_LETTER_SPACE; -extern const bcstring be_const_str_set_btn_ctrl; -extern const bcstring be_const_str_set_style_local_value_color; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_set_padding_left; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_SPINNER_DIR_FORWARD; -extern const bcstring be_const_str_get_one_line; -extern const bcstring be_const_str_off; -extern const bcstring be_const_str_set_style_local_value_ofs_y; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_get_recolor; -extern const bcstring be_const_str_set_col_width; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_set_ext_click_area; -extern const bcstring be_const_str_set_transition_delay; -extern const bcstring be_const_str_get_accepted_chars; -extern const bcstring be_const_str_set_transform_width; -extern const bcstring be_const_str_get_style_pattern_recolor_opa; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_get_btn_ctrl; -extern const bcstring be_const_str_set_value_align; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_CPICKER_TYPE_RECT; -extern const bcstring be_const_str_EVENT_DRAG_BEGIN; -extern const bcstring be_const_str_EVENT_DRAG_END; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_set_line_opa; -extern const bcstring be_const_str_set_range; -extern const bcstring be_const_str_STYLE_TRANSITION_PATH; -extern const bcstring be_const_str_get_style_shadow_spread; -extern const bcstring be_const_str_STYLE_TEXT_OPA; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_FS_RES_NOT_IMP; -extern const bcstring be_const_str_GRAD_DIR_HOR; -extern const bcstring be_const_str_get_ext_draw_pad; -extern const bcstring be_const_str_get_max_value; -extern const bcstring be_const_str_set_cell_value_fmt; -extern const bcstring be_const_str_KEY_RIGHT; -extern const bcstring be_const_str_get_pwd_show_time; -extern const bcstring be_const_str_set_next; -extern const bcstring be_const_str_set_start_angle; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_STATE_CHECKED; -extern const bcstring be_const_str_get_y; -extern const bcstring be_const_str_set_bg_color; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_set_one_line; -extern const bcstring be_const_str_DROPDOWN_PART_SCROLLBAR; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_set_line_color; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_STYLE_PATTERN_REPEAT; -extern const bcstring be_const_str_get_style_shadow_opa; -extern const bcstring be_const_str_init_draw_img_dsc; -extern const bcstring be_const_str_handle_get_type_signal; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_STYLE_IMAGE_RECOLOR_OPA; -extern const bcstring be_const_str_set_auto_fit; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_set_style_local_margin_bottom; -extern const bcstring be_const_str_set_style_local_pattern_blend_mode; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_STYLE_TRANSFORM_HEIGHT; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_get_style_line_color; -extern const bcstring be_const_str_on_edge; -extern const bcstring be_const_str_CPICKER_COLOR_MODE_SATURATION; -extern const bcstring be_const_str_LABEL_LONG_SROLL_CIRC; -extern const bcstring be_const_str_STYLE_BORDER_BLEND_MODE; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_set_btns_pos; -extern const bcstring be_const_str_text_is_selected; -extern const bcstring be_const_str_STATE_HOVERED; -extern const bcstring be_const_str_set_style_local_line_rounded; -extern const bcstring be_const_str_set_style_local_value_font; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_set_symbol; -extern const bcstring be_const_str_set_wrap; -extern const bcstring be_const_str_STYLE_IMAGE_RECOLOR; -extern const bcstring be_const_str_STYLE_TRANSITION_PROP_1; -extern const bcstring be_const_str_get_style_value_ofs_x; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_SPINNER_DIR_BACKWARD; -extern const bcstring be_const_str_init_points; -extern const bcstring be_const_str_GESTURE_DIR_RIGHT; -extern const bcstring be_const_str_TEMPL_STYLE_Y; -extern const bcstring be_const_str_set_shadow_opa; -extern const bcstring be_const_str_set_style_local_radius; -extern const bcstring be_const_str_hide_series; -extern const bcstring be_const_str_set_text_sel_bg_color; -extern const bcstring be_const_str_KEY_UP; -extern const bcstring be_const_str_PAGE_EDGE_LEFT; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_TXT_CMD_STATE_PAR; -extern const bcstring be_const_str_LABEL_LONG_SROLL; -extern const bcstring be_const_str_CHART_TYPE_NONE; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_set_event_cb; -extern const bcstring be_const_str_set_style_local_pad_left; -extern const bcstring be_const_str_STYLE_TRANSFORM_WIDTH; -extern const bcstring be_const_str_set_style_local_shadow_ofs_x; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_ALIGN_OUT_BOTTOM_LEFT; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_BORDER_SIDE_FULL; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_get_symbol; -extern const bcstring be_const_str_get_style_margin_left; -extern const bcstring be_const_str_get_style_scale_grad_color; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_STYLE_OPA_SCALE; -extern const bcstring be_const_str_STYLE_TRANSITION_PROP_2; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_add_option; -extern const bcstring be_const_str_get_needle_img_pivot_x; -extern const bcstring be_const_str_set_transform_height; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_clear_options; -extern const bcstring be_const_str_set_antialias; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_set_scrl_layout; -extern const bcstring be_const_str_GAUGE_PART_NEEDLE; -extern const bcstring be_const_str_BORDER_SIDE_NONE; -extern const bcstring be_const_str_get_tab_act; -extern const bcstring be_const_str_get_click_focus; -extern const bcstring be_const_str_get_style_opa_scale; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_set_design_cb; -extern const bcstring be_const_str_CHART_UPDATE_MODE_CIRCULAR; -extern const bcstring be_const_str_OPA_10; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_get_style_shadow_color; -extern const bcstring be_const_str_SPINNER_TYPE_CONSTANT_ARC; -extern const bcstring be_const_str_set_needle_img; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_set_rollover; -extern const bcstring be_const_str_set_color_mode_fixed; -extern const bcstring be_const_str_set_fit2; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_get_max_height; -extern const bcstring be_const_str_set_one_check; -extern const bcstring be_const_str_EVENT_CLICKED; -extern const bcstring be_const_str_EVENT_FOCUSED; -extern const bcstring be_const_str_OPA_30; -extern const bcstring be_const_str_get_layout; -extern const bcstring be_const_str_KEYBOARD_MODE_SPECIAL; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_STATE_DISABLED; -extern const bcstring be_const_str_STYLE_BG_OPA; -extern const bcstring be_const_str_set_style_local_transition_prop_4; -extern const bcstring be_const_str_get_auto_fit; -extern const bcstring be_const_str_GESTURE_DIR_TOP; -extern const bcstring be_const_str_get_style_line_dash_gap; -extern const bcstring be_const_str_def_event_cb; -extern const bcstring be_const_str_set_px; -extern const bcstring be_const_str_list_get_local_style; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_set_cell_align; -extern const bcstring be_const_str_get_style_text_color; -extern const bcstring be_const_str_list_get_style; -extern const bcstring be_const_str_BTNMATRIX_CTRL_CHECKABLE; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_get_style_outline_pad; -extern const bcstring be_const_str_set_style_local_transition_delay; -extern const bcstring be_const_str_set_update_mode; -extern const bcstring be_const_str_FIT_PARENT; -extern const bcstring be_const_str_fade_out; -extern const bcstring be_const_str_get_style_margin_right; -extern const bcstring be_const_str_ALIGN_OUT_LEFT_BOTTOM; -extern const bcstring be_const_str_LIST_PART_BG; -extern const bcstring be_const_str_STYLE_TEXT_SEL_BG_COLOR; -extern const bcstring be_const_str_add_btn_right; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_STYLE_BORDER_COLOR; -extern const bcstring be_const_str_STYLE_OUTLINE_OPA; -extern const bcstring be_const_str_get_placeholder_text; -extern const bcstring be_const_str_CPICKER_TYPE_DISC; -extern const bcstring be_const_str_lv_page; extern const bcstring be_const_str_STYLE_SHADOW_BLEND_MODE; -extern const bcstring be_const_str_get_style_bg_grad_stop; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_get_cursor_click_pos; -extern const bcstring be_const_str_get_drag; -extern const bcstring be_const_str_get_style_shadow_width; -extern const bcstring be_const_str_is_char_under_pos; -extern const bcstring be_const_str_ALIGN_OUT_LEFT_MID; -extern const bcstring be_const_str_STYLE_VALUE_ALIGN; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_set_style_local_transform_width; -extern const bcstring be_const_str_set_cursor_point; -extern const bcstring be_const_str_get_style_transition_delay; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_STYLE_TEXT_LINE_SPACE; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_get_style_value_opa; -extern const bcstring be_const_str_EVENT_PRESSED; -extern const bcstring be_const_str_STYLE_LINE_DASH_WIDTH; -extern const bcstring be_const_str_clean_tab; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_get_tab; -extern const bcstring be_const_str_set_style_local_outline_pad; -extern const bcstring be_const_str_set_style_local_transition_prop_2; -extern const bcstring be_const_str_GRAD_DIR_NONE; -extern const bcstring be_const_str_SLIDER_TYPE_RANGE; -extern const bcstring be_const_str_LAYOUT_COLUMN_MID; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_get_style_pad_inner; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_get_y_from_index; -extern const bcstring be_const_str_set_pad_bottom; -extern const bcstring be_const_str_set_showed_date; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_get_bg_angle_start; -extern const bcstring be_const_str_stop_auto_close; -extern const bcstring be_const_str_STYLE_MARGIN_TOP; -extern const bcstring be_const_str_set_y_tick_texts; -extern const bcstring be_const_str_CALENDAR_PART_HEADER; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_clean; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_ALIGN_IN_TOP_RIGHT; -extern const bcstring be_const_str_ARC_TYPE_NORMAL; -extern const bcstring be_const_str_STYLE_BORDER_WIDTH; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_align_mid_y; -extern const bcstring be_const_str_set_image_blend_mode; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_get_point_id; -extern const bcstring be_const_str_set_ext_array; -extern const bcstring be_const_str_EVENT_DELETE; -extern const bcstring be_const_str_get_from_btn; -extern const bcstring be_const_str_ARC_PART_KNOB; -extern const bcstring be_const_str_STYLE_OUTLINE_COLOR; -extern const bcstring be_const_str_set_critical_value; +extern const bcstring be_const_str_set_transform_width; extern const bcstring be_const_str_set_value_blend_mode; -extern const bcstring be_const_str_get_protect; -extern const bcstring be_const_str_set_style_local_line_dash_width; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_GESTURE_DIR_BOTTOM; -extern const bcstring be_const_str_LAYOUT_ROW_MID; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_add_style; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_STYLE_SHADOW_SPREAD; -extern const bcstring be_const_str_set_cursor_hidden; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_ALIGN_OUT_TOP_MID; -extern const bcstring be_const_str_KEYBOARD_MODE_NUM; -extern const bcstring be_const_str_get_draw_rect_ext_pad_size; -extern const bcstring be_const_str_LABEL_LONG_EXPAND; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_set_value_line_space; -extern const bcstring be_const_str_set_y; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_STYLE_BG_GRAD_COLOR; -extern const bcstring be_const_str_STYLE_TRANSITION_TIME; -extern const bcstring be_const_str_TEXT_DECOR_UNDERLINE; -extern const bcstring be_const_str_get_fit_left; -extern const bcstring be_const_str_ALIGN_OUT_TOP_LEFT; -extern const bcstring be_const_str_EVENT_CANCEL; -extern const bcstring be_const_str_get_cursor_manage; -extern const bcstring be_const_str_set_bg_start_angle; -extern const bcstring be_const_str_set_options; -extern const bcstring be_const_str_set_style_local_bg_opa; -extern const bcstring be_const_str_set_style_local_value_letter_space; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_BTN_STATE_CHECKED_DISABLED; -extern const bcstring be_const_str_LABEL_ALIGN_RIGHT; -extern const bcstring be_const_str_set_content_size; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_set_text_blend_mode; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_get_style_shadow_ofs_x; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_set_pattern_repeat; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_is_protected; -extern const bcstring be_const_str_get_cell_type; -extern const bcstring be_const_str_set_scale_end_color; -extern const bcstring be_const_str_set_style_local_border_blend_mode; -extern const bcstring be_const_str_init_draw_label_dsc; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_STYLE_TRANSFORM_ANGLE; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_set_line_width; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_get_ext_draw_pad; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_CPICKER_COLOR_MODE_HUE; +extern const bcstring be_const_str_set_bg_grad_stop; +extern const bcstring be_const_str_KEYBOARD_PART_BG; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_allocate_ext_attr; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_SPINNER_TYPE_CONSTANT_ARC; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_PROTECT_NONE; +extern const bcstring be_const_str_get_text; +extern const bcstring be_const_str_set_opa_scale; extern const bcstring be_const_str_CHART_PART_BG; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_get_letter_on; +extern const bcstring be_const_str_STYLE_BORDER_BLEND_MODE; +extern const bcstring be_const_str_get_cell_crop; +extern const bcstring be_const_str_get_cursor_point; +extern const bcstring be_const_str_get_style_shadow_opa; +extern const bcstring be_const_str_align_y; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_SILVER; +extern const bcstring be_const_str_get_col_cnt; +extern const bcstring be_const_str_get_fit_left; +extern const bcstring be_const_str_set_style_local_value_color; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_get_style_text_sel_bg_color; +extern const bcstring be_const_str_CHART_AXIS_DRAW_LAST_TICK; +extern const bcstring be_const_str_OPA_90; +extern const bcstring be_const_str_FS_RES_NOT_IMP; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_get_style_transition_time; +extern const bcstring be_const_str_set_transition_prop_1; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_set_line_dash_width; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_get_style_outline_color; extern const bcstring be_const_str_set_rotation; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_OBJ_PART_REAL_FIRST; -extern const bcstring be_const_str_set_style_local_image_recolor; -extern const bcstring be_const_str_get_color_mode; -extern const bcstring be_const_str_FS_RES_TOUT; -extern const bcstring be_const_str_KEY_BACKSPACE; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_get_style_border_opa; -extern const bcstring be_const_str_get_left_value; -extern const bcstring be_const_str_get_parent_event; -extern const bcstring be_const_str_CPICKER_PART_MAIN; -extern const bcstring be_const_str_get_group; -extern const bcstring be_const_str_KEY_DOWN; -extern const bcstring be_const_str_PROTECT_EVENT_TO_DISABLED; -extern const bcstring be_const_str_STYLE_SCALE_END_LINE_WIDTH; +extern const bcstring be_const_str_set_text_opa; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_clean; +extern const bcstring be_const_str_set_cursor_click_pos; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_set_tasmota_logo; +extern const bcstring be_const_str_set_pattern_repeat; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_BTN_STATE_DISABLED; +extern const bcstring be_const_str_PAGE_EDGE_TOP; +extern const bcstring be_const_str_get_focus_cb; +extern const bcstring be_const_str_set_style_local_transition_prop_3; +extern const bcstring be_const_str_set_width_margin; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_ROLLER_MODE_INFINITE; +extern const bcstring be_const_str_set_pos; +extern const bcstring be_const_str_set_style_local_image_opa; +extern const bcstring be_const_str_get_style_border_post; +extern const bcstring be_const_str_KEY_DEL; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_layer_top; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_text_is_selected; +extern const bcstring be_const_str_BLEND_MODE_NORMAL; +extern const bcstring be_const_str_DISP_SIZE_EXTRA_LARGE; +extern const bcstring be_const_str_get_recolor; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_set_critical_value; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_get_next_btn; +extern const bcstring be_const_str_get_pwd_mode; +extern const bcstring be_const_str_get_style_image_recolor_opa; +extern const bcstring be_const_str_set_buffer; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_set_style_local_scale_width; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_LAYOUT_OFF; +extern const bcstring be_const_str_STYLE_TEXT_SEL_COLOR; +extern const bcstring be_const_str_get_style_pattern_recolor; +extern const bcstring be_const_str_EVENT_VALUE_CHANGED; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_draw_arc; +extern const bcstring be_const_str_set_edge_flash; +extern const bcstring be_const_str_get_style_scale_width; +extern const bcstring be_const_str_set_x_start_point; +extern const bcstring be_const_str_get_style_transition_prop_3; +extern const bcstring be_const_str_TABVIEW_TAB_POS_BOTTOM; +extern const bcstring be_const_str_draw_rect; +extern const bcstring be_const_str_set_bg_angles; +extern const bcstring be_const_str_set_margin_left; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_STYLE_VALUE_OFS_Y; +extern const bcstring be_const_str_get_angle_end; +extern const bcstring be_const_str_get_from_btn; +extern const bcstring be_const_str_set_style_local_value_ofs_x; +extern const bcstring be_const_str_OPA_100; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_set_next; +extern const bcstring be_const_str_step_next; +extern const bcstring be_const_str_get_style_line_dash_gap; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_FS_MODE_RD; +extern const bcstring be_const_str_STYLE_PAD_INNER; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_PROTECT_PARENT; +extern const bcstring be_const_str_get_sb_mode; +extern const bcstring be_const_str_get_style_value_color; +extern const bcstring be_const_str_ARC_PART_INDIC; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_set_style_local_line_width; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_set_btns_pos; +extern const bcstring be_const_str_set_signal_cb; +extern const bcstring be_const_str_set_style_local_scale_border_width; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_get_color; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_STYLE_TEXT_BLEND_MODE; extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_set_style_local_outline_opa; -extern const bcstring be_const_str_start_edge_flash; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_STYLE_OUTLINE_WIDTH; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_down; -extern const bcstring be_const_str_get_cell_align; -extern const bcstring be_const_str_remove_obj; +extern const bcstring be_const_str_set_focus_cb; +extern const bcstring be_const_str_set_style_local_pattern_blend_mode; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_align_mid_x; +extern const bcstring be_const_str_get_scrl_fit_left; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_get_scrl_fit_top; +extern const bcstring be_const_str_BORDER_SIDE_FULL; +extern const bcstring be_const_str_set_left_value; +extern const bcstring be_const_str_blur_hor; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_get_style_outline_width; extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_set_scrollable_fit2; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_set_style_local_border_post; -extern const bcstring be_const_str_set_style_local_bg_grad_color; +extern const bcstring be_const_str_layer_sys; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_BORDER_SIDE_LEFT; +extern const bcstring be_const_str_BTNMATRIX_CTRL_HIDDEN; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_get_tasmota; +extern const bcstring be_const_str_set_cell_type; +extern const bcstring be_const_str_set_show_selected; +extern const bcstring be_const_str_set_value; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_OBJ_PART_MAIN; +extern const bcstring be_const_str_EVENT_DRAG_THROW_BEGIN; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_ALIGN_OUT_BOTTOM_RIGHT; +extern const bcstring be_const_str_set_ext_click_area; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_EVENT_KEY; +extern const bcstring be_const_str_FS_RES_FULL; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_get_style_border_color; +extern const bcstring be_const_str_STYLE_MARGIN_BOTTOM; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_get_scrl_layout; +extern const bcstring be_const_str_LAYOUT_ROW_TOP; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_set_text_sel_start; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_set_style_local_shadow_spread; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_TEXTAREA_CURSOR_LAST; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_is_dragged; +extern const bcstring be_const_str_set_text_static; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_get_style_pattern_opa; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_list_get_local_style; +extern const bcstring be_const_str_on_edge; +extern const bcstring be_const_str_EVENT_RELEASED; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_TEMPL_STYLE_Y; +extern const bcstring be_const_str_set_style_local_outline_opa; +extern const bcstring be_const_str_LABEL_ALIGN_RIGHT; +extern const bcstring be_const_str_LAYOUT_PRETTY_BOTTOM; +extern const bcstring be_const_str_set_insert_replace; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_get_state; +extern const bcstring be_const_str_set_transition_time; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_set_content_size; +extern const bcstring be_const_str_set_needle_img; +extern const bcstring be_const_str_CYAN; +extern const bcstring be_const_str_set_outline_opa; +extern const bcstring be_const_str_get_ver_res; +extern const bcstring be_const_str_set_margin_top; +extern const bcstring be_const_str_set_user_data; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_set_style_local_bg_grad_stop; +extern const bcstring be_const_str_ALIGN_OUT_TOP_MID; +extern const bcstring be_const_str_OPA_80; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_get_btn_selected; +extern const bcstring be_const_str_set_style_local_transition_prop_2; +extern const bcstring be_const_str_CHECKBOX_PART_BG; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_clear_options; +extern const bcstring be_const_str_set_style_local_text_sel_bg_color; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_get_cell_type; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_set_needle_count; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_ARC_TYPE_NORMAL; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_get_style_text_sel_color; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_AQUA; extern const bcstring be_const_str_get_mirror; +extern const bcstring be_const_str_get_tab_count; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_get_style_scale_end_line_width; +extern const bcstring be_const_str_get_adjustable; +extern const bcstring be_const_str_set_style_local_value_font; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_init_draw_line_dsc; +extern const bcstring be_const_str_set_map; +extern const bcstring be_const_str_up; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_STYLE_LINE_DASH_WIDTH; +extern const bcstring be_const_str_is_checked; +extern const bcstring be_const_str_set_placeholder_text; +extern const bcstring be_const_str_set_secondary_y_tick_length; +extern const bcstring be_const_str_set_style_local_shadow_opa; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_get_bg_angle_start; +extern const bcstring be_const_str_get_prev_btn; +extern const bcstring be_const_str_set_radius; +extern const bcstring be_const_str_set_y_tick_texts; +extern const bcstring be_const_str_NAVY; +extern const bcstring be_const_str_BAR_TYPE_NORMAL; +extern const bcstring be_const_str_FS_RES_BUSY; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_get_style_transition_prop_2; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_STYLE_VALUE_LETTER_SPACE; +extern const bcstring be_const_str_STYLE_VALUE_OFS_X; +extern const bcstring be_const_str_set_style_local_margin_left; +extern const bcstring be_const_str_set_style_local_value_ofs_y; +extern const bcstring be_const_str_draw_text; +extern const bcstring be_const_str_set_angle_offset; +extern const bcstring be_const_str_PROTECT_EVENT_TO_DISABLED; +extern const bcstring be_const_str_STYLE_OUTLINE_OPA; +extern const bcstring be_const_str_set_border_color; +extern const bcstring be_const_str_STYLE_VALUE_OPA; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_set_hue; +extern const bcstring be_const_str_get_btn_index; +extern const bcstring be_const_str_get_drag_throw; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_BTNMATRIX_CTRL_NO_REPEAT; +extern const bcstring be_const_str_GAUGE_PART_NEEDLE; +extern const bcstring be_const_str_get_cell_align; +extern const bcstring be_const_str_set_scrollbar_mode; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_set_base_dir; +extern const bcstring be_const_str_DISP_ROT_NONE; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_set_src; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_set_style_local_pattern_image; +extern const bcstring be_const_str_LABEL_LONG_BREAK; +extern const bcstring be_const_str_get_cell_merge_right; +extern const bcstring be_const_str_set_shadow_blend_mode; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_set_text_line_space; +extern const bcstring be_const_str_set_parent; +extern const bcstring be_const_str_set_style_local_scale_end_border_width; +extern const bcstring be_const_str_set_style_local_value_opa; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_STYLE_BORDER_COLOR; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_get_selected; +extern const bcstring be_const_str_CHART_AXIS_SECONDARY_Y; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_SLIDER_TYPE_SYMMETRICAL; +extern const bcstring be_const_str_STATE_DEFAULT; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_set_cursor_hidden; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_finish_transitions; +extern const bcstring be_const_str_set_style_local_value_str; +extern const bcstring be_const_str_get_type; +extern const bcstring be_const_str_get_style_outline_opa; +extern const bcstring be_const_str_get_width_grid; +extern const bcstring be_const_str_set_refocus_policy; +extern const bcstring be_const_str_FIT_MAX; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_del_async; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_get_style_line_width; +extern const bcstring be_const_str_init_points; +extern const bcstring be_const_str_set_text_decor; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_CPICKER_COLOR_MODE_VALUE; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_get_style_bg_main_stop; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_set_shadow_ofs_y; +extern const bcstring be_const_str_set_text_align; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_get_style_outline_pad; +extern const bcstring be_const_str_is_protected; +extern const bcstring be_const_str_I2C; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_GRAD_DIR_NONE; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_set_pattern_opa; +extern const bcstring be_const_str_TEMPL_STYLE_X; +extern const bcstring be_const_str_get_antialias; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_set_transition_prop_3; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_STYLE_PAD_BOTTOM; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_STYLE_PATTERN_IMAGE; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_fade_out; +extern const bcstring be_const_str_hittest; +extern const bcstring be_const_str_SPINNER_TYPE_SPINNING_ARC; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_STYLE_PAD_TOP; +extern const bcstring be_const_str_TXT_CMD_STATE_IN; +extern const bcstring be_const_str_TABVIEW_TAB_POS_NONE; +extern const bcstring be_const_str_get_style_value_letter_space; +extern const bcstring be_const_str_set_update_mode; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_STYLE_SHADOW_OPA; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_get_scrollbar_mode; +extern const bcstring be_const_str_get_style_line_rounded; +extern const bcstring be_const_str_BORDER_SIDE_BOTTOM; +extern const bcstring be_const_str_FS_RES_DENIED; +extern const bcstring be_const_str_TEXT_DECOR_NONE; +extern const bcstring be_const_str_add_btn; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_clear_state; +extern const bcstring be_const_str_get_options; +extern const bcstring be_const_str_ALIGN_IN_BOTTOM_MID; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_GRAD_DIR_VER; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_SCROLLBAR_MODE_AUTO; +extern const bcstring be_const_str_get_rollover; +extern const bcstring be_const_str_set_style_local_transition_prop_1; +extern const bcstring be_const_str_set_value_align; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_button_pressed; +extern const bcstring be_const_str_BLUE; +extern const bcstring be_const_str_focus_freeze; +extern const bcstring be_const_str_get_min_value; +extern const bcstring be_const_str_get_critical_value; +extern const bcstring be_const_str_EVENT_DEFOCUSED; +extern const bcstring be_const_str_set_bg_opa; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_DROPDOWN_PART_LIST; +extern const bcstring be_const_str_LAYOUT_ROW_MID; +extern const bcstring be_const_str_set_style_local_pattern_opa; +extern const bcstring be_const_str_STYLE_TEXT_COLOR; +extern const bcstring be_const_str_del; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_ROLLER_MODE_NORMAL; +extern const bcstring be_const_str_GESTURE_DIR_LEFT; +extern const bcstring be_const_str_TABVIEW_TAB_POS_LEFT; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_set_layout; +extern const bcstring be_const_str_STYLE_MARGIN_LEFT; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_get_ext_click_pad_top; +extern const bcstring be_const_str_set_style_local_outline_width; +extern const bcstring be_const_str_get_style_scale_end_border_width; +extern const bcstring be_const_str_fade_in; +extern const bcstring be_const_str_get_anim_time; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_get_style_shadow_color; +extern const bcstring be_const_str_set_style_local_line_dash_gap; +extern const bcstring be_const_str_STYLE_SCALE_BORDER_WIDTH; +extern const bcstring be_const_str_TXT_FLAG_EXPAND; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_get_row_cnt; +extern const bcstring be_const_str_set_outline_pad; +extern const bcstring be_const_str_set_style_local_pattern_recolor; +extern const bcstring be_const_str_CHART_CURSOR_LEFT; +extern const bcstring be_const_str_get_style_transition_prop_1; +extern const bcstring be_const_str_set_col_width; +extern const bcstring be_const_str_CHART_AXIS_PRIMARY_Y; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_STYLE_TEXT_DECOR; +extern const bcstring be_const_str_get_fit_right; +extern const bcstring be_const_str_get_highlighted_dates_num; +extern const bcstring be_const_str_set_text; +extern const bcstring be_const_str_CHART_CURSOR_NONE; +extern const bcstring be_const_str_set_options_static; +extern const bcstring be_const_str_BTN_STATE_CHECKED_DISABLED; +extern const bcstring be_const_str_ALIGN_IN_TOP_MID; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_set_valid_positions; +extern const bcstring be_const_str_BORDER_SIDE_RIGHT; +extern const bcstring be_const_str_STYLE_VALUE_BLEND_MODE; +extern const bcstring be_const_str_title_get_alignment; +extern const bcstring be_const_str_set_pattern_recolor; +extern const bcstring be_const_str_set_style_local_line_opa; +extern const bcstring be_const_str_set_style_local_pad_left; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_get_dir; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_set_image_recolor; +extern const bcstring be_const_str_GESTURE_DIR_RIGHT; +extern const bcstring be_const_str_get_fit_top; +extern const bcstring be_const_str_get_point_id; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_LABEL_LONG_SROLL; +extern const bcstring be_const_str_SCROLLBAR_MODE_OFF; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_GAUGE_PART_MAIN; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_STYLE_SCALE_GRAD_COLOR; +extern const bcstring be_const_str_set_text_sel_color; +extern const bcstring be_const_str_FS_RES_NOT_EX; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_BAR_TYPE_SYMMETRICAL; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_STYLE_VALUE_STR; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_LINEMETER_PART_MAIN; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_set_tab_act; +extern const bcstring be_const_str_STYLE_CLIP_CORNER; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_set_focus_parent; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_get_long_mode; +extern const bcstring be_const_str_move_foreground; +extern const bcstring be_const_str_ARC_PART_BG; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_get_style_bg_grad_stop; +extern const bcstring be_const_str_set_style_local_bg_opa; +extern const bcstring be_const_str_LIST_PART_BG; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_DROPDOWN_PART_SELECTED; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_set_shadow_ofs_x; +extern const bcstring be_const_str_set_style_local_border_side; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_get_style_margin_right; +extern const bcstring be_const_str_get_width_margin; +extern const bcstring be_const_str_get_zoom; +extern const bcstring be_const_str_set_adv_hittest; +extern const bcstring be_const_str_get_ext_click_pad_left; +extern const bcstring be_const_str_STYLE_LINE_BLEND_MODE; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_STYLE_MARGIN_RIGHT; +extern const bcstring be_const_str_get_editing; +extern const bcstring be_const_str_is_visible; +extern const bcstring be_const_str_set_cell_merge_right; +extern const bcstring be_const_str_set_outline_blend_mode; +extern const bcstring be_const_str_set_arc_length; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_get_style_pattern_repeat; +extern const bcstring be_const_str_set_transition_prop_2; +extern const bcstring be_const_str_CPICKER_PART_KNOB; +extern const bcstring be_const_str_set_scale_grad_color; +extern const bcstring be_const_str_STYLE_BORDER_OPA; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_set_style_local_text_line_space; +extern const bcstring be_const_str_FS_RES_OK; +extern const bcstring be_const_str_KEY_END; +extern const bcstring be_const_str_STYLE_IMAGE_RECOLOR_OPA; +extern const bcstring be_const_str_get_point_count; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_get_style_scale_border_width; +extern const bcstring be_const_str_set_row_cnt; +extern const bcstring be_const_str_FIT_NONE; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_draw_polygon; +extern const bcstring be_const_str_set_pattern_recolor_opa; +extern const bcstring be_const_str_set_height_fit; +extern const bcstring be_const_str_set_transition_delay; +extern const bcstring be_const_str_STYLE_PATTERN_OPA; +extern const bcstring be_const_str_get_left_value; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_get_col_width; +extern const bcstring be_const_str_list_copy; +extern const bcstring be_const_str_set_angles; +extern const bcstring be_const_str_ALIGN_OUT_TOP_LEFT; +extern const bcstring be_const_str_ALIGN_OUT_BOTTOM_MID; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_EVENT_REFRESH; +extern const bcstring be_const_str_focus_obj; +extern const bcstring be_const_str_get_one_check; +extern const bcstring be_const_str_clear_protect; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_BTN_STATE_CHECKED_PRESSED; +extern const bcstring be_const_str_PAGE_EDGE_BOTTOM; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_get_style_value_opa; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_clear_btn_ctrl; +extern const bcstring be_const_str_get_group; +extern const bcstring be_const_str_get_symbol; +extern const bcstring be_const_str_web_add_main_button; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_set_value_letter_space; +extern const bcstring be_const_str_CPICKER_PART_MAIN; +extern const bcstring be_const_str_EVENT_SHORT_CLICKED; +extern const bcstring be_const_str_STYLE_TRANSFORM_WIDTH; +extern const bcstring be_const_str_VSPI; +extern const bcstring be_const_str_get_focused_obj; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_EVENT_DRAG_BEGIN; +extern const bcstring be_const_str_TABVIEW_TAB_POS_TOP; +extern const bcstring be_const_str_set_btn_ctrl_all; +extern const bcstring be_const_str_set_style_local_bg_grad_color; +extern const bcstring be_const_str_focus_next; +extern const bcstring be_const_str_set_style_local_image_blend_mode; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_SPINNER_DIR_BACKWARD; +extern const bcstring be_const_str_get_cursor_click_pos; +extern const bcstring be_const_str_set_style_local_clip_corner; +extern const bcstring be_const_str_ALIGN_IN_BOTTOM_RIGHT; +extern const bcstring be_const_str_set_style_local_transition_time; +extern const bcstring be_const_str_set_value_str; +extern const bcstring be_const_str_step_prev; +extern const bcstring be_const_str_WHITE; +extern const bcstring be_const_str_get_style_bg_color; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_set_style_local_line_blend_mode; +extern const bcstring be_const_str_STATE_DISABLED; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_get_placeholder_text; +extern const bcstring be_const_str_DROPDOWN_PART_MAIN; +extern const bcstring be_const_str_cursor_right; +extern const bcstring be_const_str_get_btns_pos; +extern const bcstring be_const_str_get_base_dir; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_set_hsv; +extern const bcstring be_const_str_KEY_HOME; +extern const bcstring be_const_str_CHART_PART_SERIES; +extern const bcstring be_const_str_get_series_axis; +extern const bcstring be_const_str_json_append; +extern const bcstring be_const_str_DROPDOWN_DIR_RIGHT; +extern const bcstring be_const_str_STYLE_BORDER_SIDE; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_get_y; +extern const bcstring be_const_str_DROPDOWN_DIR_UP; +extern const bcstring be_const_str_get_drag_dir; +extern const bcstring be_const_str_set_textarea; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_EVENT_CANCEL; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_align_mid; +extern const bcstring be_const_str_get_style_scale_end_color; +extern const bcstring be_const_str_get_style_transform_height; +extern const bcstring be_const_str_set_anim_speed; +extern const bcstring be_const_str_set_style_local_scale_grad_color; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_set_style_local_outline_blend_mode; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_ALIGN_OUT_RIGHT_MID; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_get_style_size; +extern const bcstring be_const_str_remove_series; +extern const bcstring be_const_str_STYLE_SHADOW_WIDTH; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_get_style_margin_left; +extern const bcstring be_const_str_set_bg_grad_color; +extern const bcstring be_const_str_set_style_local_line_color; +extern const bcstring be_const_str_get_style_image_opa; +extern const bcstring be_const_str_set_style_local_text_blend_mode; +extern const bcstring be_const_str_get_x_from_index; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_set_style_local_margin_bottom; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_get_cursor_pos; +extern const bcstring be_const_str_get_needle_count; +extern const bcstring be_const_str_set_cursor_point; +extern const bcstring be_const_str_set_max_length; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_STYLE_TRANSITION_PATH; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_create; +extern const bcstring be_const_str_get_draw_rect_ext_pad_size; +extern const bcstring be_const_str_set_click_focus; +extern const bcstring be_const_str_invalidate; +extern const bcstring be_const_str_set_click; +extern const bcstring be_const_str_set_point_id; +extern const bcstring be_const_str_set_text_sel; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_get_style_scale_grad_color; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_get_label; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_handle_get_type_signal; +extern const bcstring be_const_str_set_checkable; +extern const bcstring be_const_str_set_width_fit; +extern const bcstring be_const_str_DRAG_DIR_HOR; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_CPICKER_TYPE_RECT; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_get_scale_angle; +extern const bcstring be_const_str_set_style_local_image_recolor; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_set_text_fmt; +extern const bcstring be_const_str_set_x_tick_length; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_ALIGN_OUT_LEFT_TOP; +extern const bcstring be_const_str_EVENT_FOCUSED; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_get_cursor_hidden; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_set_tile_act; +extern const bcstring be_const_str_DISP_SIZE_MEDIUM; +extern const bcstring be_const_str_OPA_30; +extern const bcstring be_const_str_get_style_value_str; +extern const bcstring be_const_str_add_btn_right; +extern const bcstring be_const_str_get_gesture_parent; +extern const bcstring be_const_str_BTNMATRIX_CTRL_CHECK_STATE; +extern const bcstring be_const_str_STYLE_TRANSITION_PROP_6; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_set_formatter_cb; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_add_option; +extern const bcstring be_const_str_set_ext_array; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_STYLE_OUTLINE_PAD; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_SPINNER_TYPE_FILLSPIN_ARC; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_set_image_opa; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_ANIM_ON; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_set_auto_realign; +extern const bcstring be_const_str_set_style_local_pattern_recolor_opa; +extern const bcstring be_const_str_DRAG_DIR_VER; +extern const bcstring be_const_str_STYLE_OUTLINE_BLEND_MODE; +extern const bcstring be_const_str_STYLE_PAD_RIGHT; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_set_bg_end_angle; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_add_tab; +extern const bcstring be_const_str_get_edge_flash; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_BTNMATRIX_CTRL_CLICK_TRIG; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_set_wrap; +extern const bcstring be_const_str_STATE_EDITED; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_start_edge_flash; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_OPA_10; +extern const bcstring be_const_str_get_value; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_set_one_check; +extern const bcstring be_const_str_set_scrollable_fit2; +extern const bcstring be_const_str_PROTECT_CHILD_CHG; +extern const bcstring be_const_str_ALIGN_IN_LEFT_MID; +extern const bcstring be_const_str_ALIGN_OUT_LEFT_MID; +extern const bcstring be_const_str_get_cursor_manage; +extern const bcstring be_const_str_set_cell_value; +extern const bcstring be_const_str_set_cell_value_fmt; +extern const bcstring be_const_str_STATE_PRESSED; +extern const bcstring be_const_str_set_series_axis; +extern const bcstring be_const_str_ALIGN_OUT_BOTTOM_LEFT; +extern const bcstring be_const_str_get_active_btn_text; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_LAYOUT_COLUMN_LEFT; +extern const bcstring be_const_str_LAYOUT_PRETTY_TOP; +extern const bcstring be_const_str_draw_line; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_set_align; +extern const bcstring be_const_str_set_height; +extern const bcstring be_const_str_LAYOUT_GRID; +extern const bcstring be_const_str_STYLE_TRANSITION_DELAY; +extern const bcstring be_const_str_get_style_image_recolor; +extern const bcstring be_const_str_get_style_shadow_ofs_y; +extern const bcstring be_const_str_set_day_names; +extern const bcstring be_const_str_set_fit; +extern const bcstring be_const_str_set_style_local_text_decor; +extern const bcstring be_const_str_set_text_letter_space; +extern const bcstring be_const_str_STYLE_TEXT_FONT; +extern const bcstring be_const_str_increment; +extern const bcstring be_const_str_off; +extern const bcstring be_const_str_set_pad_left; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_get_x; +extern const bcstring be_const_str_PROTECT_PRESS_LOST; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_set_scroll_propagation; +extern const bcstring be_const_str_DISP_SIZE_SMALL; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_set_highlighted_dates; +extern const bcstring be_const_str_STYLE_SCALE_END_LINE_WIDTH; +extern const bcstring be_const_str_get_scrl_fit_right; +extern const bcstring be_const_str_STYLE_TRANSITION_TIME; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_OBJ_PART_VIRTUAL_FIRST; +extern const bcstring be_const_str_STYLE_PATTERN_REPEAT; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_Driver; +extern const bcstring be_const_str_MAROON; +extern const bcstring be_const_str_clear_selection; +extern const bcstring be_const_str_set_style_local_value_align; +extern const bcstring be_const_str_EVENT_PRESS_LOST; +extern const bcstring be_const_str_EVENT_INSERT; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_set_bg_grad_dir; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_set_style_local_value_line_space; +extern const bcstring be_const_str_CHART_UPDATE_MODE_SHIFT; +extern const bcstring be_const_str_refresh_ext_draw_pad; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_set_pivot; +extern const bcstring be_const_str_get_angle_offset; +extern const bcstring be_const_str_set_text_blend_mode; +extern const bcstring be_const_str_LABEL_ALIGN_CENTER; +extern const bcstring be_const_str_set_scrollable_fit; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_get_nearest_index_from_coord; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_set_value_color; +extern const bcstring be_const_str_STYLE_BG_COLOR; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_BORDER_SIDE_TOP; +extern const bcstring be_const_str_get_btn_label; +extern const bcstring be_const_str_set_adjustable; +extern const bcstring be_const_str_LABEL_LONG_DOT; +extern const bcstring be_const_str_remove_style; +extern const bcstring be_const_str_set_scrl_height; +extern const bcstring be_const_str_web_sensor; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_get_style_shadow_width; +extern const bcstring be_const_str_refresh_style; +extern const bcstring be_const_str_set_border_side; +extern const bcstring be_const_str_set_design_cb; +extern const bcstring be_const_str_set_style_local_transition_prop_6; +extern const bcstring be_const_str_CHECKBOX_PART_BULLET; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_set_style_local_pad_bottom; +extern const bcstring be_const_str_set_style_local_text_letter_space; +extern const bcstring be_const_str_ALIGN_OUT_RIGHT_TOP; +extern const bcstring be_const_str_get_coords; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_set_style_local_opa_scale; +extern const bcstring be_const_str_get_style_clip_corner; +extern const bcstring be_const_str_send_data; +extern const bcstring be_const_str_set_cell_align; +extern const bcstring be_const_str_set_style_local_border_blend_mode; +extern const bcstring be_const_str_get_inner_coords; +extern const bcstring be_const_str_get_max_length; +extern const bcstring be_const_str_get_style_line_opa; +extern const bcstring be_const_str_ANIM_OFF; +extern const bcstring be_const_str_blur_ver; +extern const bcstring be_const_str_clean_style_list; +extern const bcstring be_const_str_add_state; +extern const bcstring be_const_str_set_hidden; +extern const bcstring be_const_str_STYLE_SHADOW_OFS_X; +extern const bcstring be_const_str_set_outline_width; +extern const bcstring be_const_str_set_btn_ctrl; +extern const bcstring be_const_str_EVENT_GESTURE; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_set_fit2; +extern const bcstring be_const_str_OPA_20; +extern const bcstring be_const_str_close_event_cb; +extern const bcstring be_const_str_set_event_cb; +extern const bcstring be_const_str_FS_RES_HW_ERR; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_remove_obj; +extern const bcstring be_const_str_FS_RES_OUT_OF_MEM; +extern const bcstring be_const_str_get_btnmatrix; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_get_auto_realign; +extern const bcstring be_const_str_get_letter_pos; +extern const bcstring be_const_str_set_y_range; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_FS_RES_LOCKED; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_get_text_sel_end; +extern const bcstring be_const_str_remove_mask; +extern const bcstring be_const_str_set_pattern_image; +extern const bcstring be_const_str_LAYOUT_PRETTY_MID; +extern const bcstring be_const_str_set_style_local_text_sel_color; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_reset_style_list; +extern const bcstring be_const_str_STATE_FOCUSED; +extern const bcstring be_const_str_BLEND_MODE_ADDITIVE; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_get_click_focus; +extern const bcstring be_const_str_set_dir; +extern const bcstring be_const_str_set_title; +extern const bcstring be_const_str_every_second; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_FS_MODE_WR; +extern const bcstring be_const_str_OBJ_PART_ALL; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_get_style_line_color; +extern const bcstring be_const_str_get_style_pattern_image; +extern const bcstring be_const_str_set_recolor; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_set_points; +extern const bcstring be_const_str_set_shadow_width; +extern const bcstring be_const_str_get_hue; +extern const bcstring be_const_str_list_get_style; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_TXT_FLAG_RECOLOR; +extern const bcstring be_const_str_set_style_local_size; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_get_style_shadow_ofs_x; +extern const bcstring be_const_str_set_y_invert; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_TEXT_DECOR_STRIKETHROUGH; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_decrement; +extern const bcstring be_const_str_get_hor_res; +extern const bcstring be_const_str_del_char_forward; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_get_needle_img_pivot_x; +extern const bcstring be_const_str_get_file_name; +extern const bcstring be_const_str_set_scale_width; +extern const bcstring be_const_str_set_state; +extern const bcstring be_const_str_get_saturation; +extern const bcstring be_const_str_set_line_blend_mode; +extern const bcstring be_const_str_EVENT_PRESSING; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_get_style_text_letter_space; +extern const bcstring be_const_str_add_style; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_get_day_of_week; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_KEY_ESC; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_LABEL_LONG_CROP; +extern const bcstring be_const_str_STYLE_IMAGE_OPA; +extern const bcstring be_const_str_STYLE_LINE_DASH_GAP; +extern const bcstring be_const_str_set_line_width; +extern const bcstring be_const_str_HSPI; +extern const bcstring be_const_str_PROTECT_FOLLOW; +extern const bcstring be_const_str_set_scale_border_width; +extern const bcstring be_const_str_KEY_DOWN; +extern const bcstring be_const_str_is_inactive; +extern const bcstring be_const_str_set_cursor_blink_time; +extern const bcstring be_const_str_transform; +extern const bcstring be_const_str_save_before_restart; +extern const bcstring be_const_str_set_value_opa; +extern const bcstring be_const_str_LABEL_LONG_EXPAND; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_set_style_local_border_opa; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_set_style_local_scale_end_line_width; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_get_x_start_point; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_set_style_local_shadow_width; +extern const bcstring be_const_str_get_style_text_color; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_KEYBOARD_PART_BTN; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_align; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_set_pattern_blend_mode; +extern const bcstring be_const_str_get_tab; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_EVENT_LONG_PRESSED_REPEAT; +extern const bcstring be_const_str_set_style_local_transition_prop_5; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_set_clip_corner; +extern const bcstring be_const_str_set_pad_inner; +extern const bcstring be_const_str_set_style_local_line_dash_width; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_set_pwd_mode; +extern const bcstring be_const_str_SSPI; +extern const bcstring be_const_str_set_transform_height; +extern const bcstring be_const_str_STYLE_TRANSITION_PROP_4; +extern const bcstring be_const_str_get_parent_event; +extern const bcstring be_const_str_get_style_value_ofs_x; +extern const bcstring be_const_str_EVENT_PRESSED; +extern const bcstring be_const_str_STYLE_TRANSFORM_HEIGHT; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_KEY_ENTER; +extern const bcstring be_const_str_STYLE_SCALE_END_COLOR; +extern const bcstring be_const_str_STYLE_TEXT_OPA; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_get_focus_parent; +extern const bcstring be_const_str_STYLE_SHADOW_OFS_Y; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_set_drag; +extern const bcstring be_const_str_LAYOUT_COLUMN_MID; +extern const bcstring be_const_str_get_style_border_width; +extern const bcstring be_const_str_get_text_sel_start; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_ALIGN_IN_RIGHT_MID; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_get_checkable; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_toggle; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_focus_btn; +extern const bcstring be_const_str_get_style_bg_grad_color; +extern const bcstring be_const_str_get_style_transform_zoom; +extern const bcstring be_const_str_CHART_CURSOR_DOWN; +extern const bcstring be_const_str_GRAD_DIR_HOR; +extern const bcstring be_const_str_set_style_local_value_letter_space; +extern const bcstring be_const_str_get_text_sel_en; +extern const bcstring be_const_str_set_spin_time; +extern const bcstring be_const_str_anim_cb; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_set_antialias; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_LAYOUT_COLUMN_RIGHT; +extern const bcstring be_const_str_STYLE_TRANSFORM_ZOOM; +extern const bcstring be_const_str_get_hsv; +extern const bcstring be_const_str_set_style_local_text_font; +extern const bcstring be_const_str_set_tab_name; +extern const bcstring be_const_str_OPA_60; +extern const bcstring be_const_str_get_height_grid; +extern const bcstring be_const_str_get_arc_length; +extern const bcstring be_const_str_set_header_height; +extern const bcstring be_const_str_set_scrl_layout; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_DRAG_DIR_ONE; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_get_accepted_chars; +extern const bcstring be_const_str_GESTURE_DIR_TOP; +extern const bcstring be_const_str_get_layout; +extern const bcstring be_const_str_get_user_data; +extern const bcstring be_const_str_remove_all_objs; +extern const bcstring be_const_str_STYLE_SCALE_END_BORDER_WIDTH; +extern const bcstring be_const_str_TABVIEW_TAB_POS_RIGHT; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_BLACK; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_get_scrl_fit_bottom; +extern const bcstring be_const_str_set_start_angle; +extern const bcstring be_const_str_set_style_local_image_recolor_opa; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_get_active_btn; +extern const bcstring be_const_str_STYLE_VALUE_FONT; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_get_px; +extern const bcstring be_const_str_title_set_alignment; +extern const bcstring be_const_str_get_local_style; +extern const bcstring be_const_str_get_offset_y; +extern const bcstring be_const_str_hide_series; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_STYLE_PATTERN_RECOLOR; +extern const bcstring be_const_str_cursor_down; +extern const bcstring be_const_str_get_needle_img_pivot_y; +extern const bcstring be_const_str_set_style_local_shadow_blend_mode; +extern const bcstring be_const_str_get_style_border_opa; +extern const bcstring be_const_str_EVENT_DRAG_END; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_draw_img; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_EVENT_APPLY; +extern const bcstring be_const_str_GREEN; +extern const bcstring be_const_str_STYLE_SIZE; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_is_point_on_coords; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_STYLE_BG_GRAD_STOP; +extern const bcstring be_const_str_STYLE_LINE_WIDTH; +extern const bcstring be_const_str_every_100ms; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_STATE_CHECKED; +extern const bcstring be_const_str_get_label_count; +extern const bcstring be_const_str_set_style_local_margin_top; +extern const bcstring be_const_str_set_scrl_width; +extern const bcstring be_const_str_GRAY; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_set_start_value; +extern const bcstring be_const_str_STYLE_BG_MAIN_STOP; +extern const bcstring be_const_str_set_disabled; +extern const bcstring be_const_str_set_line_rounded; +extern const bcstring be_const_str_web_add_button; +extern const bcstring be_const_str_set_style_local_transition_path; +extern const bcstring be_const_str_invalidate_area; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_set_y_tick_length; +extern const bcstring be_const_str_def_event_cb; +extern const bcstring be_const_str_set_style_local_margin_right; +extern const bcstring be_const_str_set_saturation; +extern const bcstring be_const_str_FIT_PARENT; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_set_width; +extern const bcstring be_const_str_CALENDAR_PART_HEADER; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_get_y_from_index; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_BORDER_SIDE_INTERNAL; +extern const bcstring be_const_str_EVENT_CLICKED; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_set_rollover; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_set_style_local_pad_top; +extern const bcstring be_const_str_GAUGE_PART_MAJOR; +extern const bcstring be_const_str_KEY_LEFT; +extern const bcstring be_const_str_set_style_local_text_opa; +extern const bcstring be_const_str_get_scrl_height; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_set_style_local_transition_prop_4; +extern const bcstring be_const_str_SPI; +extern const bcstring be_const_str_ins_text; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_LIME; +extern const bcstring be_const_str_get_needle_img; +extern const bcstring be_const_str_STYLE_TRANSITION_PROP_5; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_get_style_value_ofs_y; +extern const bcstring be_const_str_STYLE_IMAGE_RECOLOR; +extern const bcstring be_const_str_cut_text; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_TXT_FLAG_FIT; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_clear_series; +extern const bcstring be_const_str_get_textarea; +extern const bcstring be_const_str_STYLE_SHADOW_COLOR; +extern const bcstring be_const_str_set_padding_left; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_cursor_up; +extern const bcstring be_const_str_get_selected_str; +extern const bcstring be_const_str_remove_style_local_prop; +extern const bcstring be_const_str_set_style_local_border_width; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_set_transform_zoom; +extern const bcstring be_const_str_CALENDAR_PART_DAY_NAMES; +extern const bcstring be_const_str_FIT_TIGHT; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_get_option_cnt; +extern const bcstring be_const_str_get_style_opa_scale; +extern const bcstring be_const_str_get_scroll_propagation; +extern const bcstring be_const_str_set_gesture_parent; +extern const bcstring be_const_str_set_line_color; +extern const bcstring be_const_str_set_today_date; +extern const bcstring be_const_str_set_end_angle; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_get_style_line_dash_width; +extern const bcstring be_const_str_BTNMATRIX_CTRL_CHECKABLE; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_set_btn_width; +extern const bcstring be_const_str_set_y; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_set_shadow_spread; +extern const bcstring be_const_str_get_ext_click_pad_right; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_set_bg_blend_mode; +extern const bcstring be_const_str_get_style_text_opa; +extern const bcstring be_const_str_OPA_COVER; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_RED; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_add_btn_left; +extern const bcstring be_const_str_set_style_local_transform_width; +extern const bcstring be_const_str_set_transition_prop_5; +extern const bcstring be_const_str_GESTURE_DIR_BOTTOM; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_refr_text; +extern const bcstring be_const_str_set_checked; +extern const bcstring be_const_str_set_zoom; +extern const bcstring be_const_str_set_editing; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_STYLE_TEXT_LETTER_SPACE; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_STYLE_TEXT_SEL_BG_COLOR; +extern const bcstring be_const_str_set_fit4; +extern const bcstring be_const_str_DROPDOWN_DIR_LEFT; +extern const bcstring be_const_str_TXT_FLAG_CENTER; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_set_secondary_y_tick_texts; +extern const bcstring be_const_str_set_style_local_pattern_repeat; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_set_accepted_chars; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_OPA_TRANSP; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_get_drag; +extern const bcstring be_const_str_get_offset_x; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_set_border_opa; +extern const bcstring be_const_str_get_max_value; +extern const bcstring be_const_str_list_init; +extern const bcstring be_const_str_KEYBOARD_MODE_TEXT_LOWER; +extern const bcstring be_const_str_get_y_invert; +extern const bcstring be_const_str_scr_act; +extern const bcstring be_const_str_get_wrap; +extern const bcstring be_const_str_CHART_CURSOR_RIGHT; +extern const bcstring be_const_str_set_parent_event; +extern const bcstring be_const_str_set_size; +extern const bcstring be_const_str_get_style_transform_angle; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_get_drag_parent; +extern const bcstring be_const_str_init_draw_img_dsc; +extern const bcstring be_const_str_set_style_local_text_color; +extern const bcstring be_const_str_get_height; +extern const bcstring be_const_str_set_style_local_shadow_ofs_y; +extern const bcstring be_const_str_add_text; +extern const bcstring be_const_str_init_draw_rect_dsc; +extern const bcstring be_const_str_DROPDOWN_DIR_DOWN; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_STYLE_VALUE_COLOR; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_TXT_FLAG_NONE; +extern const bcstring be_const_str_get_anim_speed; +extern const bcstring be_const_str_set_mode; +extern const bcstring be_const_str_set_div_line_count; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_STYLE_RADIUS; +extern const bcstring be_const_str_copy_buf; +extern const bcstring be_const_str_is_char_under_pos; +extern const bcstring be_const_str_set_scale; +extern const bcstring be_const_str_set_style_local_shadow_color; +extern const bcstring be_const_str_set_border_width; +extern const bcstring be_const_str_STATE_HOVERED; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_set_px; +extern const bcstring be_const_str_get_adv_hittest; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_get_child_back; +extern const bcstring be_const_str_TEAL; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_get_step; +extern const bcstring be_const_str_set_style_local_transform_zoom; +extern const bcstring be_const_str_DISP_ROT_270; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_KEY_PREV; +extern const bcstring be_const_str_get_style_pad_inner; +extern const bcstring be_const_str_set_text_sel_bg_color; +extern const bcstring be_const_str_STYLE_BG_GRAD_COLOR; +extern const bcstring be_const_str_get_series_area; +extern const bcstring be_const_str_STYLE_LINE_OPA; +extern const bcstring be_const_str_get_height_margin; +extern const bcstring be_const_str_EVENT_DELETE; +extern const bcstring be_const_str_set_drag_parent; +extern const bcstring be_const_str_set_offset_y; +extern const bcstring be_const_str_set_step; +extern const bcstring be_const_str_STYLE_TRANSITION_PROP_2; +extern const bcstring be_const_str_set_focused_btn; +extern const bcstring be_const_str_set_scale_end_color; +extern const bcstring be_const_str_get_fit_bottom; +extern const bcstring be_const_str_set_image_recolor_opa; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_count_children_recursive; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_get_style_pad_top; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_set_style_local_bg_color; +extern const bcstring be_const_str_BTN_STATE_CHECKED_RELEASED; +extern const bcstring be_const_str_CHART_TYPE_NONE; +extern const bcstring be_const_str_get_width; +extern const bcstring be_const_str_set_x; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_CHART_TYPE_COLUMN; +extern const bcstring be_const_str_DROPDOWN_PART_SCROLLBAR; +extern const bcstring be_const_str_EVENT_LEAVE; +extern const bcstring be_const_str_OPA_50; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_set_max_height; +extern const bcstring be_const_str_DISP_ROT_90; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_set_cursor_pos; +extern const bcstring be_const_str_set_value_line_space; +extern const bcstring be_const_str_area_is_visible; +extern const bcstring be_const_str_set_showed_date; +extern const bcstring be_const_str_set_point_count; +extern const bcstring be_const_str_set_angle; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_set_text_sel_end; +extern const bcstring be_const_str_set_transform_angle; +extern const bcstring be_const_str_set_image_blend_mode; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_get_btn_ctrl; +extern const bcstring be_const_str_get_screen; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_fill_bg; +extern const bcstring be_const_str_set_style_local_outline_color; +extern const bcstring be_const_str_get_knob_colored; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_refresh; +extern const bcstring be_const_str_set_transition_prop_4; +extern const bcstring be_const_str_get_color_mode; +extern const bcstring be_const_str_get_style_pad_left; +extern const bcstring be_const_str_get_style_transform_width; +extern const bcstring be_const_str_set_margin_bottom; +extern const bcstring be_const_str_OPA_70; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_set_symbol; +extern const bcstring be_const_str_OBJMASK_PART_MAIN; +extern const bcstring be_const_str_STYLE_SCALE_WIDTH; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_realign; +extern const bcstring be_const_str_set_shadow_opa; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index faa964c88..696d9067c 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,2440 +1,2557 @@ -be_define_const_str(set_edge_flash, "set_edge_flash", 1114840232u, 0, 14, NULL); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_TXT_FLAG_NONE); -be_define_const_str(TXT_FLAG_NONE, "TXT_FLAG_NONE", 3092237369u, 0, 13, &be_const_str_align_mid); -be_define_const_str(align_mid, "align_mid", 497514711u, 0, 9, &be_const_str_get_scale_angle); -be_define_const_str(get_scale_angle, "get_scale_angle", 845147062u, 0, 15, NULL); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_RC522_CS); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(get_min_value, "get_min_value", 3238705374u, 0, 13, &be_const_str_set_max_height); -be_define_const_str(set_max_height, "set_max_height", 394927448u, 0, 14, NULL); -be_define_const_str(draw_polygon, "draw_polygon", 271325674u, 0, 12, &be_const_str_set_point_id); -be_define_const_str(set_point_id, "set_point_id", 388814210u, 0, 12, NULL); -be_define_const_str(get_zoom, "get_zoom", 2259829907u, 0, 8, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, NULL); -be_define_const_str(BORDER_SIDE_BOTTOM, "BORDER_SIDE_BOTTOM", 1006865647u, 0, 18, &be_const_str_MHZ_RXD); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_set_style_local_image_blend_mode); -be_define_const_str(set_style_local_image_blend_mode, "set_style_local_image_blend_mode", 1792244615u, 0, 32, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_get_col_width); -be_define_const_str(get_col_width, "get_col_width", 638670073u, 0, 13, &be_const_str_get_src); -be_define_const_str(get_src, "get_src", 403557294u, 0, 7, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, &be_const_str_set_border_opa); -be_define_const_str(set_border_opa, "set_border_opa", 3722959347u, 0, 14, NULL); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_set_hidden); -be_define_const_str(set_hidden, "set_hidden", 2478665880u, 0, 10, &be_const_str_set_style_local_pattern_image); -be_define_const_str(set_style_local_pattern_image, "set_style_local_pattern_image", 350348106u, 0, 29, NULL); -be_define_const_str(PURPLE, "PURPLE", 2539335743u, 0, 6, &be_const_str_set_insert_replace); -be_define_const_str(set_insert_replace, "set_insert_replace", 1439171942u, 0, 18, &be_const_str_set_series_axis); -be_define_const_str(set_series_axis, "set_series_axis", 3828439823u, 0, 15, NULL); -be_define_const_str(DROPDOWN_DIR_LEFT, "DROPDOWN_DIR_LEFT", 3057408860u, 0, 17, NULL); -be_define_const_str(CPICKER_COLOR_MODE_HUE, "CPICKER_COLOR_MODE_HUE", 1583032607u, 0, 22, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_get_label_count); -be_define_const_str(get_label_count, "get_label_count", 1700997322u, 0, 15, &be_const_str_set_text_sel); -be_define_const_str(set_text_sel, "set_text_sel", 1928405316u, 0, 12, NULL); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_add_btn); -be_define_const_str(add_btn, "add_btn", 1053483819u, 0, 7, NULL); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_set_cell_merge_right); -be_define_const_str(set_cell_merge_right, "set_cell_merge_right", 3174593866u, 0, 20, NULL); -be_define_const_str(init_draw_line_dsc, "init_draw_line_dsc", 2507936040u, 0, 18, NULL); -be_define_const_str(SCROLLBAR_MODE_UNHIDE, "SCROLLBAR_MODE_UNHIDE", 827854473u, 0, 21, NULL); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_get_base_dir); -be_define_const_str(get_base_dir, "get_base_dir", 1814851485u, 0, 12, NULL); -be_define_const_str(TXT_FLAG_EXPAND, "TXT_FLAG_EXPAND", 964598951u, 0, 15, NULL); -be_define_const_str(STYLE_VALUE_LINE_SPACE, "STYLE_VALUE_LINE_SPACE", 2028376414u, 0, 22, &be_const_str_TFMINIPLUS_TX); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_allocate_ext_attr); -be_define_const_str(allocate_ext_attr, "allocate_ext_attr", 915956424u, 0, 17, &be_const_str_cursor_right); -be_define_const_str(cursor_right, "cursor_right", 2216262354u, 0, 12, &be_const_str_get_drag_dir); -be_define_const_str(get_drag_dir, "get_drag_dir", 3921105230u, 0, 12, &be_const_str_lv_calendar); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); -be_define_const_str(STYLE_RADIUS, "STYLE_RADIUS", 1029481353u, 0, 12, &be_const_str_get_style_pattern_recolor); -be_define_const_str(get_style_pattern_recolor, "get_style_pattern_recolor", 1808910091u, 0, 25, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_SM16716_DAT); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(get_focus_cb, "get_focus_cb", 3115584616u, 0, 12, NULL); -be_define_const_str(get_text_sel_start, "get_text_sel_start", 1075131103u, 0, 18, NULL); -be_define_const_str(FS_RES_LOCKED, "FS_RES_LOCKED", 3948147866u, 0, 13, &be_const_str_HIGH); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); -be_define_const_str(set_adjustable, "set_adjustable", 1573073815u, 0, 14, NULL); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str_del_char); -be_define_const_str(del_char, "del_char", 3624762103u, 0, 8, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, NULL); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(BTN_STATE_RELEASED, "BTN_STATE_RELEASED", 4133711537u, 0, 18, NULL); -be_define_const_str(get_style_size, "get_style_size", 3698157111u, 0, 14, NULL); -be_define_const_str(get_style_text_line_space, "get_style_text_line_space", 1588877665u, 0, 25, NULL); -be_define_const_str(DISP_ROT_180, "DISP_ROT_180", 1300448899u, 0, 12, &be_const_str_get_style_transform_angle); -be_define_const_str(get_style_transform_angle, "get_style_transform_angle", 1307352290u, 0, 25, NULL); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); -be_define_const_str(ALIGN_OUT_RIGHT_TOP, "ALIGN_OUT_RIGHT_TOP", 1142849712u, 0, 19, &be_const_str_get_inner_coords); -be_define_const_str(get_inner_coords, "get_inner_coords", 985433607u, 0, 16, NULL); -be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); -be_define_const_str(MAGENTA, "MAGENTA", 1444046984u, 0, 7, &be_const_str_get_ext_attr); -be_define_const_str(get_ext_attr, "get_ext_attr", 2125271231u, 0, 12, NULL); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_get_state); -be_define_const_str(get_state, "get_state", 3804504029u, 0, 9, &be_const_str_set_style_local_value_str); -be_define_const_str(set_style_local_value_str, "set_style_local_value_str", 3984127099u, 0, 25, NULL); -be_define_const_str(get_style_image_recolor, "get_style_image_recolor", 2369811232u, 0, 23, NULL); -be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); -be_define_const_str(SLIDER_TYPE_NORMAL, "SLIDER_TYPE_NORMAL", 613555481u, 0, 18, &be_const_str_TXT_CMD_STATE_WAIT); -be_define_const_str(TXT_CMD_STATE_WAIT, "TXT_CMD_STATE_WAIT", 1721068338u, 0, 18, &be_const_str_TXT_FLAG_RECOLOR); -be_define_const_str(TXT_FLAG_RECOLOR, "TXT_FLAG_RECOLOR", 2017218753u, 0, 16, &be_const_str_set_scale_border_width); -be_define_const_str(set_scale_border_width, "set_scale_border_width", 3210684730u, 0, 22, &be_const_str_set_transition_prop_3); -be_define_const_str(set_transition_prop_3, "set_transition_prop_3", 3000346107u, 0, 21, NULL); -be_define_const_str(BLACK, "BLACK", 1750494276u, 0, 5, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_set_height_fit); -be_define_const_str(set_height_fit, "set_height_fit", 4033083607u, 0, 14, NULL); -be_define_const_str(NAVY, "NAVY", 1719816465u, 0, 4, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_LAYOUT_COLUMN_RIGHT); -be_define_const_str(LAYOUT_COLUMN_RIGHT, "LAYOUT_COLUMN_RIGHT", 912913083u, 0, 19, &be_const_str_OBJ_PART_ALL); -be_define_const_str(OBJ_PART_ALL, "OBJ_PART_ALL", 3502425074u, 0, 12, &be_const_str_get_auto_size); -be_define_const_str(get_auto_size, "get_auto_size", 241966433u, 0, 13, &be_const_str_get_btn_img); -be_define_const_str(get_btn_img, "get_btn_img", 177039868u, 0, 11, &be_const_str_set_outline_color); -be_define_const_str(set_outline_color, "set_outline_color", 3028574774u, 0, 17, &be_const_str_set_value_color); -be_define_const_str(set_value_color, "set_value_color", 2148821625u, 0, 15, NULL); -be_define_const_str(align_x, "align_x", 3735213169u, 0, 7, &be_const_str_set_style_local_pad_inner); -be_define_const_str(set_style_local_pad_inner, "set_style_local_pad_inner", 3980353812u, 0, 25, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_get_col_cnt); -be_define_const_str(get_col_cnt, "get_col_cnt", 2182323590u, 0, 11, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(set_border_side, "set_border_side", 466446692u, 0, 15, NULL); -be_define_const_str(LAYOUT_COLUMN_LEFT, "LAYOUT_COLUMN_LEFT", 3178094182u, 0, 18, &be_const_str_TABVIEW_TAB_POS_RIGHT); -be_define_const_str(TABVIEW_TAB_POS_RIGHT, "TABVIEW_TAB_POS_RIGHT", 3809644849u, 0, 21, &be_const_str_get_style_transition_prop_1); -be_define_const_str(get_style_transition_prop_1, "get_style_transition_prop_1", 3404391627u, 0, 27, &be_const_str_set_knob_colored); -be_define_const_str(set_knob_colored, "set_knob_colored", 2285165409u, 0, 16, &be_const_str_set_left_value); -be_define_const_str(set_left_value, "set_left_value", 731130751u, 0, 14, NULL); -be_define_const_str(get_local_style, "get_local_style", 2060541417u, 0, 15, NULL); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); -be_define_const_str(get_style_value_letter_space, "get_style_value_letter_space", 193712565u, 0, 28, &be_const_str_set_bg_end_angle); -be_define_const_str(set_bg_end_angle, "set_bg_end_angle", 569028341u, 0, 16, &be_const_str_set_style_local_bg_blend_mode); -be_define_const_str(set_style_local_bg_blend_mode, "set_style_local_bg_blend_mode", 2691986893u, 0, 29, &be_const_str_set_title); -be_define_const_str(set_title, "set_title", 793032418u, 0, 9, NULL); -be_define_const_str(AQUA, "AQUA", 1203273877u, 0, 4, &be_const_str_layer_top); -be_define_const_str(layer_top, "layer_top", 645939682u, 0, 9, &be_const_str_set_transition_prop_6); -be_define_const_str(set_transition_prop_6, "set_transition_prop_6", 3050678964u, 0, 21, &be_const_str_set_value_letter_space); -be_define_const_str(set_value_letter_space, "set_value_letter_space", 1113519355u, 0, 22, NULL); -be_define_const_str(set_style_local_text_font, "set_style_local_text_font", 954295699u, 0, 25, NULL); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); -be_define_const_str(set_anim_speed, "set_anim_speed", 3709305189u, 0, 14, &be_const_str_set_border_width); -be_define_const_str(set_border_width, "set_border_width", 2740080977u, 0, 16, &be_const_str_set_transform_angle); -be_define_const_str(set_transform_angle, "set_transform_angle", 2657176848u, 0, 19, NULL); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, NULL); -be_define_const_str(STYLE_VALUE_BLEND_MODE, "STYLE_VALUE_BLEND_MODE", 930238626u, 0, 22, NULL); -be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(set_scale_grad_color, "set_scale_grad_color", 818937207u, 0, 20, NULL); -be_define_const_str(DISP_ROT_270, "DISP_ROT_270", 3187294969u, 0, 12, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, NULL); -be_define_const_str(get_style_transition_prop_4, "get_style_transition_prop_4", 3454724484u, 0, 27, NULL); -be_define_const_str(EVENT_SHORT_CLICKED, "EVENT_SHORT_CLICKED", 2804944112u, 0, 19, &be_const_str_LEDLNK); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_OPA_80); -be_define_const_str(OPA_80, "OPA_80", 4221864914u, 0, 6, &be_const_str_get_style_margin_bottom); -be_define_const_str(get_style_margin_bottom, "get_style_margin_bottom", 2589475122u, 0, 23, &be_const_str_set_scroll_propagation); -be_define_const_str(set_scroll_propagation, "set_scroll_propagation", 2960260372u, 0, 22, NULL); -be_define_const_str(EVENT_DEFOCUSED, "EVENT_DEFOCUSED", 1034310644u, 0, 15, NULL); -be_define_const_str(CALENDAR_PART_BG, "CALENDAR_PART_BG", 562605961u, 0, 16, &be_const_str_move_foreground); -be_define_const_str(move_foreground, "move_foreground", 2558800524u, 0, 15, NULL); -be_define_const_str(BORDER_SIDE_LEFT, "BORDER_SIDE_LEFT", 1415977349u, 0, 16, &be_const_str_set_style_local_pattern_repeat); -be_define_const_str(set_style_local_pattern_repeat, "set_style_local_pattern_repeat", 2930402426u, 0, 30, &be_const_str_set_transition_prop_5); -be_define_const_str(set_transition_prop_5, "set_transition_prop_5", 3101011821u, 0, 21, NULL); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_set_pattern_image); -be_define_const_str(set_pattern_image, "set_pattern_image", 1204394880u, 0, 17, NULL); -be_define_const_str(CHECKBOX_PART_BG, "CHECKBOX_PART_BG", 1308611434u, 0, 16, &be_const_str_OPA_60); -be_define_const_str(OPA_60, "OPA_60", 2008896492u, 0, 6, &be_const_str_TM1638CLK); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_get_style_pattern_opa); -be_define_const_str(get_style_pattern_opa, "get_style_pattern_opa", 865471869u, 0, 21, NULL); -be_define_const_str(TABVIEW_TAB_POS_BOTTOM, "TABVIEW_TAB_POS_BOTTOM", 3095544198u, 0, 22, NULL); -be_define_const_str(CHART_PART_SERIES, "CHART_PART_SERIES", 3401824459u, 0, 17, &be_const_str_KEY1_NP); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_YELLOW); -be_define_const_str(YELLOW, "YELLOW", 2964049737u, 0, 6, &be_const_str_set_pad_inner); -be_define_const_str(set_pad_inner, "set_pad_inner", 1662755314u, 0, 13, NULL); -be_define_const_str(get_day_of_week, "get_day_of_week", 3301373175u, 0, 15, NULL); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_set_style_local_text_letter_space); -be_define_const_str(set_style_local_text_letter_space, "set_style_local_text_letter_space", 2313398111u, 0, 33, &be_const_str_step_next); -be_define_const_str(step_next, "step_next", 3163156801u, 0, 9, NULL); -be_define_const_str(set_secondary_y_tick_length, "set_secondary_y_tick_length", 4022147583u, 0, 27, NULL); -be_define_const_str(STYLE_MARGIN_RIGHT, "STYLE_MARGIN_RIGHT", 1123385036u, 0, 18, NULL); -be_define_const_str(add_protect, "add_protect", 175601728u, 0, 11, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_set_day_names); -be_define_const_str(set_day_names, "set_day_names", 1217780097u, 0, 13, &be_const_str_set_scale_end_line_width); -be_define_const_str(set_scale_end_line_width, "set_scale_end_line_width", 1121812764u, 0, 24, NULL); -be_define_const_str(STYLE_SHADOW_COLOR, "STYLE_SHADOW_COLOR", 368908723u, 0, 18, &be_const_str_get_style_value_line_space); -be_define_const_str(get_style_value_line_space, "get_style_value_line_space", 592322595u, 0, 26, &be_const_str_ins_text); -be_define_const_str(ins_text, "ins_text", 2467863999u, 0, 8, NULL); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_SM16716_CLK); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_STATE_DEFAULT); -be_define_const_str(STATE_DEFAULT, "STATE_DEFAULT", 712406428u, 0, 13, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(STYLE_SHADOW_OPA, "STYLE_SHADOW_OPA", 3011667646u, 0, 16, &be_const_str_set_style_local_text_opa); -be_define_const_str(set_style_local_text_opa, "set_style_local_text_opa", 1391350156u, 0, 24, NULL); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_SYMBOL_CHARGE); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_SYMBOL_USB); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, NULL); -be_define_const_str(KEYBOARD_MODE_TEXT_UPPER, "KEYBOARD_MODE_TEXT_UPPER", 2335009259u, 0, 24, &be_const_str_TXT_CMD_STATE_IN); -be_define_const_str(TXT_CMD_STATE_IN, "TXT_CMD_STATE_IN", 2162626840u, 0, 16, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); -be_define_const_str(set_margin_top, "set_margin_top", 805678094u, 0, 14, NULL); -be_define_const_str(set_style_local_text_decor, "set_style_local_text_decor", 2615974143u, 0, 26, &be_const_str_up); -be_define_const_str(up, "up", 1128467232u, 0, 2, NULL); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); -be_define_const_str(CHART_TYPE_LINE, "CHART_TYPE_LINE", 1459459819u, 0, 15, &be_const_str_SSD1351_CS); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_set_btn_ctrl_all); -be_define_const_str(set_btn_ctrl_all, "set_btn_ctrl_all", 274690332u, 0, 16, NULL); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, NULL); -be_define_const_str(CHART_CURSOR_LEFT, "CHART_CURSOR_LEFT", 2003546122u, 0, 17, &be_const_str_LABEL_ALIGN_CENTER); -be_define_const_str(LABEL_ALIGN_CENTER, "LABEL_ALIGN_CENTER", 3698850161u, 0, 18, NULL); -be_define_const_str(KEY_END, "KEY_END", 1131758734u, 0, 7, &be_const_str_set_y_invert); -be_define_const_str(set_y_invert, "set_y_invert", 4003140588u, 0, 12, NULL); -be_define_const_str(DRAG_DIR_VER, "DRAG_DIR_VER", 3097064297u, 0, 12, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(SPI, "SPI", 1746663213u, 0, 3, NULL); -be_define_const_str(OPA_0, "OPA_0", 3351018670u, 0, 5, NULL); -be_define_const_str(STYLE_SCALE_END_BORDER_WIDTH, "STYLE_SCALE_END_BORDER_WIDTH", 763958239u, 0, 28, &be_const_str_get_tab_count); -be_define_const_str(get_tab_count, "get_tab_count", 218245863u, 0, 13, NULL); -be_define_const_str(LIST_PART_SCROLLBAR, "LIST_PART_SCROLLBAR", 3690731034u, 0, 19, &be_const_str_get_cursor_point); -be_define_const_str(get_cursor_point, "get_cursor_point", 2365780231u, 0, 16, &be_const_str_get_series_axis); -be_define_const_str(get_series_axis, "get_series_axis", 524215363u, 0, 15, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(set_tab_name, "set_tab_name", 2075400175u, 0, 12, NULL); -be_define_const_str(get_style_transition_time, "get_style_transition_time", 3928047247u, 0, 25, &be_const_str_refresh_ext_draw_pad); -be_define_const_str(refresh_ext_draw_pad, "refresh_ext_draw_pad", 3485714697u, 0, 20, NULL); -be_define_const_str(ALIGN_OUT_BOTTOM_RIGHT, "ALIGN_OUT_BOTTOM_RIGHT", 3680861364u, 0, 22, &be_const_str_get_style_scale_end_line_width); -be_define_const_str(get_style_scale_end_line_width, "get_style_scale_end_line_width", 1969204230u, 0, 30, NULL); -be_define_const_str(STYLE_LINE_BLEND_MODE, "STYLE_LINE_BLEND_MODE", 1400961281u, 0, 21, &be_const_str_set_dir); -be_define_const_str(set_dir, "set_dir", 331967531u, 0, 7, NULL); -be_define_const_str(update_mask, "update_mask", 833922029u, 0, 11, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(BTNMATRIX_CTRL_HIDDEN, "BTNMATRIX_CTRL_HIDDEN", 2766999187u, 0, 21, &be_const_str_BTN_STATE_DISABLED); -be_define_const_str(BTN_STATE_DISABLED, "BTN_STATE_DISABLED", 496829054u, 0, 18, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, NULL); -be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_get_height_grid); -be_define_const_str(get_height_grid, "get_height_grid", 1178822580u, 0, 15, NULL); -be_define_const_str(ALIGN_OUT_BOTTOM_MID, "ALIGN_OUT_BOTTOM_MID", 2853556972u, 0, 20, NULL); -be_define_const_str(get_style_scale_end_border_width, "get_style_scale_end_border_width", 2717605058u, 0, 32, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_CC1101_GDO0); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_CSE7766_RX); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_get_style_image_opa); -be_define_const_str(get_style_image_opa, "get_style_image_opa", 111986494u, 0, 19, NULL); -be_define_const_str(TEXTAREA_CURSOR_LAST, "TEXTAREA_CURSOR_LAST", 1393995267u, 0, 20, &be_const_str_get_cursor_pos); -be_define_const_str(get_cursor_pos, "get_cursor_pos", 3695280847u, 0, 14, NULL); -be_define_const_str(OPA_50, "OPA_50", 163902855u, 0, 6, &be_const_str_set_accepted_chars); -be_define_const_str(set_accepted_chars, "set_accepted_chars", 3900817531u, 0, 18, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, NULL); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, NULL); -be_define_const_str(CALENDAR_PART_DAY_NAMES, "CALENDAR_PART_DAY_NAMES", 1761763651u, 0, 23, &be_const_str_get_x); -be_define_const_str(get_x, "get_x", 1188742048u, 0, 5, &be_const_str_set_style_local_scale_border_width); -be_define_const_str(set_style_local_scale_border_width, "set_style_local_scale_border_width", 285010516u, 0, 34, NULL); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, NULL); -be_define_const_str(set_value_opa, "set_value_opa", 1055786128u, 0, 13, NULL); -be_define_const_str(FS_RES_OUT_OF_MEM, "FS_RES_OUT_OF_MEM", 802499854u, 0, 17, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, NULL); -be_define_const_str(STYLE_PAD_LEFT, "STYLE_PAD_LEFT", 1524023460u, 0, 14, &be_const_str_get_style_bg_opa); -be_define_const_str(get_style_bg_opa, "get_style_bg_opa", 1274566692u, 0, 16, &be_const_str_get_width_grid); -be_define_const_str(get_width_grid, "get_width_grid", 2821365517u, 0, 14, &be_const_str_set_points); -be_define_const_str(set_points, "set_points", 1252105979u, 0, 10, NULL); -be_define_const_str(cursor_down, "cursor_down", 657234748u, 0, 11, &be_const_str_set_style_local_pad_bottom); -be_define_const_str(set_style_local_pad_bottom, "set_style_local_pad_bottom", 1362436575u, 0, 26, NULL); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_SYMBOL_CUT); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_get_width_margin); -be_define_const_str(get_width_margin, "get_width_margin", 872387359u, 0, 16, NULL); -be_define_const_str(CHART_AXIS_DRAW_LAST_TICK, "CHART_AXIS_DRAW_LAST_TICK", 811055023u, 0, 25, &be_const_str_SYMBOL_WARNING); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, NULL); -be_define_const_str(get_color, "get_color", 754086191u, 0, 9, &be_const_str_get_label); -be_define_const_str(get_label, "get_label", 3416266470u, 0, 9, NULL); -be_define_const_str(BTNMATRIX_CTRL_DISABLED, "BTNMATRIX_CTRL_DISABLED", 2790045315u, 0, 23, &be_const_str_OUTPUT_OPEN_DRAIN); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_SLIDER_TYPE_SYMMETRICAL); -be_define_const_str(SLIDER_TYPE_SYMMETRICAL, "SLIDER_TYPE_SYMMETRICAL", 768283232u, 0, 23, &be_const_str_get_cursor_blink_time); -be_define_const_str(get_cursor_blink_time, "get_cursor_blink_time", 1960576829u, 0, 21, &be_const_str_set_margin_right); -be_define_const_str(set_margin_right, "set_margin_right", 283278459u, 0, 16, NULL); -be_define_const_str(LABEL_ALIGN_AUTO, "LABEL_ALIGN_AUTO", 1755016863u, 0, 16, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(draw_line, "draw_line", 1634465686u, 0, 9, &be_const_str_get_style_value_ofs_y); -be_define_const_str(get_style_value_ofs_y, "get_style_value_ofs_y", 4000868142u, 0, 21, &be_const_str_set_text_decor); -be_define_const_str(set_text_decor, "set_text_decor", 768023065u, 0, 14, NULL); -be_define_const_str(set_max_length, "set_max_length", 2269400999u, 0, 14, NULL); -be_define_const_str(ALIGN_IN_BOTTOM_RIGHT, "ALIGN_IN_BOTTOM_RIGHT", 1575436355u, 0, 21, &be_const_str_NEOPOOL_RX); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_set_style_local_scale_width); -be_define_const_str(set_style_local_scale_width, "set_style_local_scale_width", 2071128255u, 0, 27, NULL); -be_define_const_str(TEMPL_STYLE_X, "TEMPL_STYLE_X", 1980646216u, 0, 13, &be_const_str_set_style_local_shadow_blend_mode); -be_define_const_str(set_style_local_shadow_blend_mode, "set_style_local_shadow_blend_mode", 2580830900u, 0, 33, NULL); -be_define_const_str(ARC_PART_BG, "ARC_PART_BG", 3149008005u, 0, 11, &be_const_str_set_outline_opa); -be_define_const_str(set_outline_opa, "set_outline_opa", 1167424027u, 0, 15, &be_const_str_set_state); -be_define_const_str(set_state, "set_state", 905808233u, 0, 9, NULL); -be_define_const_str(get_height_margin, "get_height_margin", 4277714442u, 0, 17, NULL); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); -be_define_const_str(move_background, "move_background", 3375135217u, 0, 15, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_get_parent); -be_define_const_str(get_parent, "get_parent", 350250280u, 0, 10, NULL); -be_define_const_str(GRAY, "GRAY", 4159498394u, 0, 4, &be_const_str_STYLE_IMAGE_OPA); -be_define_const_str(STYLE_IMAGE_OPA, "STYLE_IMAGE_OPA", 1064316425u, 0, 15, &be_const_str_remove_style_local_prop); -be_define_const_str(remove_style_local_prop, "remove_style_local_prop", 1160046873u, 0, 23, &be_const_str_set_visible_row_count); -be_define_const_str(set_visible_row_count, "set_visible_row_count", 840407905u, 0, 21, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(add_text, "add_text", 2433225858u, 0, 8, NULL); -be_define_const_str(set_outline_width, "set_outline_width", 2428704969u, 0, 17, NULL); -be_define_const_str(CHART_TYPE_COLUMN, "CHART_TYPE_COLUMN", 385586299u, 0, 17, &be_const_str_STYLE_TRANSITION_PROP_3); -be_define_const_str(STYLE_TRANSITION_PROP_3, "STYLE_TRANSITION_PROP_3", 962719262u, 0, 23, NULL); -be_define_const_str(get_fit_top, "get_fit_top", 1805788963u, 0, 11, &be_const_str_get_needle_img_pivot_y); -be_define_const_str(get_needle_img_pivot_y, "get_needle_img_pivot_y", 1504958664u, 0, 22, &be_const_str_get_scrollbar_mode); -be_define_const_str(get_scrollbar_mode, "get_scrollbar_mode", 1258717108u, 0, 18, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_SYMBOL_EYE_CLOSE); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_get_knob_colored); -be_define_const_str(get_knob_colored, "get_knob_colored", 2664754853u, 0, 16, &be_const_str_set_style_local_border_color); -be_define_const_str(set_style_local_border_color, "set_style_local_border_color", 2798696056u, 0, 28, NULL); -be_define_const_str(ALIGN_OUT_LEFT_TOP, "ALIGN_OUT_LEFT_TOP", 2335540111u, 0, 18, &be_const_str_SYMBOL_BULLET); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_tostring); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(ALIGN_IN_BOTTOM_MID, "ALIGN_IN_BOTTOM_MID", 4192809251u, 0, 19, NULL); -be_define_const_str(LAYOUT_PRETTY_BOTTOM, "LAYOUT_PRETTY_BOTTOM", 2090319170u, 0, 20, &be_const_str_SSPI_MAX31865_CS1); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, NULL); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_add_obj); -be_define_const_str(add_obj, "add_obj", 3846256134u, 0, 7, NULL); -be_define_const_str(get_offset_y, "get_offset_y", 3939359167u, 0, 12, &be_const_str_set_map); -be_define_const_str(set_map, "set_map", 4012856954u, 0, 7, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); -be_define_const_str(get_cell_value, "get_cell_value", 3068122638u, 0, 14, &be_const_str_get_row_cnt); -be_define_const_str(get_row_cnt, "get_row_cnt", 541121788u, 0, 11, NULL); -be_define_const_str(STYLE_VALUE_OFS_Y, "STYLE_VALUE_OFS_Y", 1374857417u, 0, 17, &be_const_str_lv_spinner); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_refr_text); -be_define_const_str(refr_text, "refr_text", 3162090502u, 0, 9, NULL); -be_define_const_str(SILVER, "SILVER", 1471925664u, 0, 6, &be_const_str_get_editing); -be_define_const_str(get_editing, "get_editing", 281870028u, 0, 11, &be_const_str_set_point_count); -be_define_const_str(set_point_count, "set_point_count", 1721576758u, 0, 15, NULL); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_send_data); -be_define_const_str(send_data, "send_data", 4178328760u, 0, 9, &be_const_str_set_image_recolor); -be_define_const_str(set_image_recolor, "set_image_recolor", 271208598u, 0, 17, NULL); -be_define_const_str(STYLE_TRANSITION_PROP_4, "STYLE_TRANSITION_PROP_4", 1013052119u, 0, 23, NULL); -be_define_const_str(EVENT_INSERT, "EVENT_INSERT", 3754467621u, 0, 12, &be_const_str_PROTECT_FOLLOW); -be_define_const_str(PROTECT_FOLLOW, "PROTECT_FOLLOW", 44354676u, 0, 14, &be_const_str_TXT_FLAG_CENTER); -be_define_const_str(TXT_FLAG_CENTER, "TXT_FLAG_CENTER", 1125425546u, 0, 15, NULL); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_TABVIEW_TAB_POS_NONE); -be_define_const_str(TABVIEW_TAB_POS_NONE, "TABVIEW_TAB_POS_NONE", 3094416879u, 0, 20, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_set_shadow_spread); -be_define_const_str(set_shadow_spread, "set_shadow_spread", 3535503174u, 0, 17, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_set_line_dash_width); -be_define_const_str(set_line_dash_width, "set_line_dash_width", 347528132u, 0, 19, NULL); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); -be_define_const_str(LAYOUT_CENTER, "LAYOUT_CENTER", 1686380473u, 0, 13, &be_const_str_get_scrl_fit_top); -be_define_const_str(get_scrl_fit_top, "get_scrl_fit_top", 3432048672u, 0, 16, &be_const_str_get_style_scale_width); -be_define_const_str(get_style_scale_width, "get_style_scale_width", 2556361915u, 0, 21, NULL); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL); -be_define_const_str(EVENT_REFRESH, "EVENT_REFRESH", 741028651u, 0, 13, &be_const_str_get_style_outline_width); -be_define_const_str(get_style_outline_width, "get_style_outline_width", 1118345503u, 0, 23, NULL); -be_define_const_str(set_color, "set_color", 3381219579u, 0, 9, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_SPI_DC); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, NULL); -be_define_const_str(EVENT_LONG_PRESSED_REPEAT, "EVENT_LONG_PRESSED_REPEAT", 1734201539u, 0, 25, &be_const_str_SSD1351_DC); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_set_border_post); -be_define_const_str(set_border_post, "set_border_post", 2318575153u, 0, 15, NULL); -be_define_const_str(set_style_local_transform_zoom, "set_style_local_transform_zoom", 3474945744u, 0, 30, NULL); -be_define_const_str(STYLE_LINE_OPA, "STYLE_LINE_OPA", 1080991556u, 0, 14, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_get_height_fit); -be_define_const_str(get_height_fit, "get_height_fit", 2561566971u, 0, 14, &be_const_str_set_drag_dir); -be_define_const_str(set_drag_dir, "set_drag_dir", 2315801594u, 0, 12, &be_const_str_set_style_local_bg_grad_dir); -be_define_const_str(set_style_local_bg_grad_dir, "set_style_local_bg_grad_dir", 946802226u, 0, 27, NULL); -be_define_const_str(EVENT_LEAVE, "EVENT_LEAVE", 2218217823u, 0, 11, NULL); -be_define_const_str(align, "align", 1613521886u, 0, 5, NULL); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_set_start_value); -be_define_const_str(set_start_value, "set_start_value", 1399674154u, 0, 15, NULL); -be_define_const_str(get_color_mode_fixed, "get_color_mode_fixed", 2272722254u, 0, 20, &be_const_str_set_style_local_line_color); -be_define_const_str(set_style_local_line_color, "set_style_local_line_color", 1174390096u, 0, 26, &be_const_str_set_style_local_outline_color); -be_define_const_str(set_style_local_outline_color, "set_style_local_outline_color", 2290216412u, 0, 29, &be_const_str_set_style_local_transform_height); -be_define_const_str(set_style_local_transform_height, "set_style_local_transform_height", 2823225328u, 0, 32, NULL); -be_define_const_str(SCROLLBAR_MODE_DRAG, "SCROLLBAR_MODE_DRAG", 2145885996u, 0, 19, &be_const_str_set_cursor_click_pos); -be_define_const_str(set_cursor_click_pos, "set_cursor_click_pos", 641192476u, 0, 20, &be_const_str_set_style_local_transition_prop_6); -be_define_const_str(set_style_local_transition_prop_6, "set_style_local_transition_prop_6", 2535204486u, 0, 33, NULL); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, NULL); -be_define_const_str(ALIGN_OUT_TOP_RIGHT, "ALIGN_OUT_TOP_RIGHT", 1193969648u, 0, 19, &be_const_str_STYLE_LINE_DASH_GAP); -be_define_const_str(STYLE_LINE_DASH_GAP, "STYLE_LINE_DASH_GAP", 1823312065u, 0, 19, NULL); -be_define_const_str(LAYOUT_ROW_TOP, "LAYOUT_ROW_TOP", 4030593648u, 0, 14, &be_const_str_set_layout); -be_define_const_str(set_layout, "set_layout", 3108581018u, 0, 10, &be_const_str_set_style_local_outline_width); -be_define_const_str(set_style_local_outline_width, "set_style_local_outline_width", 3081743955u, 0, 29, NULL); -be_define_const_str(LED_PART_MAIN, "LED_PART_MAIN", 3314442918u, 0, 13, &be_const_str_MAX31855CS); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_get_ext_click_pad_right); -be_define_const_str(get_ext_click_pad_right, "get_ext_click_pad_right", 3976528463u, 0, 23, &be_const_str_set_color_mode); -be_define_const_str(set_color_mode, "set_color_mode", 1155621583u, 0, 14, &be_const_str_set_fit4); -be_define_const_str(set_fit4, "set_fit4", 31904989u, 0, 8, NULL); -be_define_const_str(OPA_100, "OPA_100", 3698564393u, 0, 7, &be_const_str_set_y_tick_length); -be_define_const_str(set_y_tick_length, "set_y_tick_length", 1194305306u, 0, 17, NULL); -be_define_const_str(FS_RES_UNKNOWN, "FS_RES_UNKNOWN", 352331702u, 0, 14, &be_const_str_SCROLLBAR_MODE_OFF); -be_define_const_str(SCROLLBAR_MODE_OFF, "SCROLLBAR_MODE_OFF", 3547490383u, 0, 18, &be_const_str_report_style_mod); -be_define_const_str(report_style_mod, "report_style_mod", 4174977870u, 0, 16, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, NULL); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); -be_define_const_str(STYLE_PAD_BOTTOM, "STYLE_PAD_BOTTOM", 3910623046u, 0, 16, NULL); -be_define_const_str(DROPDOWN_DIR_UP, "DROPDOWN_DIR_UP", 2415359156u, 0, 15, &be_const_str_get_long_mode); -be_define_const_str(get_long_mode, "get_long_mode", 2750961764u, 0, 13, NULL); -be_define_const_str(get_top, "get_top", 1711502355u, 0, 7, NULL); -be_define_const_str(set_style_local_value_blend_mode, "set_style_local_value_blend_mode", 1178211587u, 0, 32, NULL); -be_define_const_str(get_btn_text, "get_btn_text", 1417317686u, 0, 12, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, &be_const_str_set_style_local_transition_prop_1); -be_define_const_str(set_style_local_transition_prop_1, "set_style_local_transition_prop_1", 2585537343u, 0, 33, NULL); -be_define_const_str(get_style_border_color, "get_style_border_color", 4173187188u, 0, 22, NULL); -be_define_const_str(KEYBOARD_PART_BG, "KEYBOARD_PART_BG", 3167702710u, 0, 16, &be_const_str_set_style_local_text_color); -be_define_const_str(set_style_local_text_color, "set_style_local_text_color", 2285935637u, 0, 26, NULL); -be_define_const_str(I2C, "I2C", 4096783347u, 0, 3, NULL); -be_define_const_str(DROPDOWN_PART_SELECTED, "DROPDOWN_PART_SELECTED", 1685473920u, 0, 22, &be_const_str_get_style_text_sel_bg_color); -be_define_const_str(get_style_text_sel_bg_color, "get_style_text_sel_bg_color", 1889477676u, 0, 27, NULL); -be_define_const_str(set_disabled, "set_disabled", 3892741852u, 0, 12, NULL); -be_define_const_str(FIT_MAX, "FIT_MAX", 361794269u, 0, 7, NULL); -be_define_const_str(DROPDOWN_PART_LIST, "DROPDOWN_PART_LIST", 2923479101u, 0, 18, &be_const_str_PN532_RXD); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, NULL); -be_define_const_str(get_style_scale_end_color, "get_style_scale_end_color", 142275754u, 0, 25, NULL); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); -be_define_const_str(STYLE_OUTLINE_BLEND_MODE, "STYLE_OUTLINE_BLEND_MODE", 3861262655u, 0, 24, &be_const_str_add_btn_left); -be_define_const_str(add_btn_left, "add_btn_left", 3984572941u, 0, 12, &be_const_str_blur_hor); -be_define_const_str(blur_hor, "blur_hor", 346002478u, 0, 8, &be_const_str_step_prev); -be_define_const_str(step_prev, "step_prev", 2831593421u, 0, 9, NULL); -be_define_const_str(STYLE_TEXT_COLOR, "STYLE_TEXT_COLOR", 2549754876u, 0, 16, &be_const_str_align_mid_x); -be_define_const_str(align_mid_x, "align_mid_x", 1647423776u, 0, 11, &be_const_str_set_valid_positions); -be_define_const_str(set_valid_positions, "set_valid_positions", 358534097u, 0, 19, NULL); -be_define_const_str(ARC_PART_INDIC, "ARC_PART_INDIC", 1749778975u, 0, 14, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, &be_const_str_set_pos); -be_define_const_str(set_pos, "set_pos", 4146975678u, 0, 7, NULL); -be_define_const_str(FS_RES_BUSY, "FS_RES_BUSY", 3847519313u, 0, 11, &be_const_str_KEY_LEFT); -be_define_const_str(KEY_LEFT, "KEY_LEFT", 3050288868u, 0, 8, &be_const_str_get_child); -be_define_const_str(get_child, "get_child", 1282595182u, 0, 9, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_get_checkable); -be_define_const_str(get_checkable, "get_checkable", 2811548136u, 0, 13, &be_const_str_get_max_length); -be_define_const_str(get_max_length, "get_max_length", 13029699u, 0, 14, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_RED); -be_define_const_str(RED, "RED", 2211354620u, 0, 3, &be_const_str_TEXT_DECOR_STRIKETHROUGH); -be_define_const_str(TEXT_DECOR_STRIKETHROUGH, "TEXT_DECOR_STRIKETHROUGH", 2875711852u, 0, 24, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(set_style_local_shadow_opa, "set_style_local_shadow_opa", 2192328339u, 0, 26, NULL); -be_define_const_str(FS_RES_FS_ERR, "FS_RES_FS_ERR", 3587821087u, 0, 13, &be_const_str_STYLE_BG_MAIN_STOP); -be_define_const_str(STYLE_BG_MAIN_STOP, "STYLE_BG_MAIN_STOP", 376609633u, 0, 18, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_RISING); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_STYLE_PATTERN_RECOLOR_OPA); -be_define_const_str(STYLE_PATTERN_RECOLOR_OPA, "STYLE_PATTERN_RECOLOR_OPA", 3355859281u, 0, 25, &be_const_str_STYLE_SHADOW_OFS_X); -be_define_const_str(STYLE_SHADOW_OFS_X, "STYLE_SHADOW_OFS_X", 2707391813u, 0, 18, &be_const_str_set_style_local_clip_corner); -be_define_const_str(set_style_local_clip_corner, "set_style_local_clip_corner", 1588926036u, 0, 27, NULL); -be_define_const_str(CPICKER_PART_KNOB, "CPICKER_PART_KNOB", 4094649797u, 0, 17, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_set_drag); -be_define_const_str(set_drag, "set_drag", 2586329126u, 0, 8, &be_const_str_set_style_local_pattern_opa); -be_define_const_str(set_style_local_pattern_opa, "set_style_local_pattern_opa", 3467015361u, 0, 27, NULL); -be_define_const_str(set_row_cnt, "set_row_cnt", 3198609400u, 0, 11, NULL); -be_define_const_str(set_text_sel_end, "set_text_sel_end", 3422399078u, 0, 16, &be_const_str_set_x); -be_define_const_str(set_x, "set_x", 1849400772u, 0, 5, NULL); -be_define_const_str(get_auto_realign, "get_auto_realign", 4029512850u, 0, 16, NULL); -be_define_const_str(EVENT_DRAG_THROW_BEGIN, "EVENT_DRAG_THROW_BEGIN", 977261671u, 0, 22, &be_const_str_FS_RES_FULL); -be_define_const_str(FS_RES_FULL, "FS_RES_FULL", 3987964025u, 0, 11, &be_const_str_focus_freeze); -be_define_const_str(focus_freeze, "focus_freeze", 3394722079u, 0, 12, NULL); -be_define_const_str(ROLLER_MODE_INFINITE, "ROLLER_MODE_INFINITE", 288931678u, 0, 20, NULL); -be_define_const_str(LINEMETER_PART_MAIN, "LINEMETER_PART_MAIN", 1524851464u, 0, 19, &be_const_str_PROTECT_POS); -be_define_const_str(PROTECT_POS, "PROTECT_POS", 1960404285u, 0, 11, &be_const_str_refresh_style); -be_define_const_str(refresh_style, "refresh_style", 3029800338u, 0, 13, &be_const_str_set_fit); -be_define_const_str(set_fit, "set_fit", 4009334267u, 0, 7, NULL); -be_define_const_str(SPINNER_TYPE_SPINNING_ARC, "SPINNER_TYPE_SPINNING_ARC", 3298556409u, 0, 25, NULL); -be_define_const_str(area_is_visible, "area_is_visible", 4009415372u, 0, 15, &be_const_str_get_active_btn); -be_define_const_str(get_active_btn, "get_active_btn", 3720382749u, 0, 14, &be_const_str_set_pivot); -be_define_const_str(set_pivot, "set_pivot", 2329940872u, 0, 9, NULL); -be_define_const_str(get_dir, "get_dir", 1037382287u, 0, 7, &be_const_str_get_hidden); -be_define_const_str(get_hidden, "get_hidden", 2608152268u, 0, 10, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); -be_define_const_str(CHART_AXIS_SKIP_LAST_TICK, "CHART_AXIS_SKIP_LAST_TICK", 3664086830u, 0, 25, &be_const_str_SPI_MOSI); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_get_needle_img); -be_define_const_str(get_needle_img, "get_needle_img", 477560399u, 0, 14, &be_const_str_set_offset_y); -be_define_const_str(set_offset_y, "set_offset_y", 437927531u, 0, 12, &be_const_str_set_shadow_blend_mode); -be_define_const_str(set_shadow_blend_mode, "set_shadow_blend_mode", 3767233786u, 0, 21, NULL); -be_define_const_str(STYLE_VALUE_OPA, "STYLE_VALUE_OPA", 2917777025u, 0, 15, &be_const_str_SYMBOL_NEXT); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_count_children); -be_define_const_str(count_children, "count_children", 1689969950u, 0, 14, &be_const_str_get_drag_parent); -be_define_const_str(get_drag_parent, "get_drag_parent", 1546081183u, 0, 15, NULL); -be_define_const_str(get_show_selected, "get_show_selected", 3185075651u, 0, 17, &be_const_str_set_transform_zoom); -be_define_const_str(set_transform_zoom, "set_transform_zoom", 140970906u, 0, 18, NULL); -be_define_const_str(STYLE_SCALE_WIDTH, "STYLE_SCALE_WIDTH", 3756994736u, 0, 17, &be_const_str_set_size); -be_define_const_str(set_size, "set_size", 2183165325u, 0, 8, &be_const_str_set_text_opa); -be_define_const_str(set_text_opa, "set_text_opa", 3995853510u, 0, 12, NULL); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); -be_define_const_str(fill_bg, "fill_bg", 1581152214u, 0, 7, NULL); -be_define_const_str(LABEL_LONG_DOT, "LABEL_LONG_DOT", 1312457976u, 0, 14, NULL); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_set_step); -be_define_const_str(set_step, "set_step", 2114390790u, 0, 8, NULL); -be_define_const_str(OPA_70, "OPA_70", 2109709301u, 0, 6, &be_const_str_set_bright); -be_define_const_str(set_bright, "set_bright", 499797888u, 0, 10, NULL); -be_define_const_str(set_show_selected, "set_show_selected", 1276300495u, 0, 17, NULL); -be_define_const_str(LIME, "LIME", 87366652u, 0, 4, NULL); -be_define_const_str(BORDER_SIDE_INTERNAL, "BORDER_SIDE_INTERNAL", 4209377645u, 0, 20, &be_const_str_char); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_title_set_alignment); -be_define_const_str(title_set_alignment, "title_set_alignment", 192669664u, 0, 19, NULL); -be_define_const_str(get_needle_count, "get_needle_count", 2722615919u, 0, 16, NULL); -be_define_const_str(set_pwd_show_time, "set_pwd_show_time", 2699027795u, 0, 17, NULL); -be_define_const_str(OPA_TRANSP, "OPA_TRANSP", 2652293196u, 0, 10, &be_const_str_get_bg_angle_end); -be_define_const_str(get_bg_angle_end, "get_bg_angle_end", 602326541u, 0, 16, &be_const_str_get_child_back); -be_define_const_str(get_child_back, "get_child_back", 3815628204u, 0, 14, &be_const_str_get_scrl_layout); -be_define_const_str(get_scrl_layout, "get_scrl_layout", 2842797719u, 0, 15, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(GREEN, "GREEN", 2875364188u, 0, 5, &be_const_str_LEDLNK_INV); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_del); -be_define_const_str(del, "del", 3478752842u, 0, 3, &be_const_str_draw_scale); -be_define_const_str(draw_scale, "draw_scale", 3602887006u, 0, 10, &be_const_str_get_style_text_letter_space); -be_define_const_str(get_style_text_letter_space, "get_style_text_letter_space", 772735187u, 0, 27, NULL); -be_define_const_str(focus_next, "focus_next", 2510018461u, 0, 10, &be_const_str_get_style_pattern_repeat); -be_define_const_str(get_style_pattern_repeat, "get_style_pattern_repeat", 3530119950u, 0, 24, &be_const_str_set_pwd_mode); -be_define_const_str(set_pwd_mode, "set_pwd_mode", 1333849907u, 0, 12, NULL); -be_define_const_str(DISP_ROT_90, "DISP_ROT_90", 3961393585u, 0, 11, &be_const_str_WEBCAM_RESET); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_set_text_static); -be_define_const_str(set_text_static, "set_text_static", 3831207210u, 0, 15, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_WEBCAM_PWDN); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(increment, "increment", 940762942u, 0, 9, &be_const_str_set_auto_realign); -be_define_const_str(set_auto_realign, "set_auto_realign", 3175723934u, 0, 16, NULL); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_refresh); -be_define_const_str(refresh, "refresh", 3572655668u, 0, 7, NULL); -be_define_const_str(clear_state, "clear_state", 2113290696u, 0, 11, &be_const_str_del_async); -be_define_const_str(del_async, "del_async", 2148432385u, 0, 9, NULL); -be_define_const_str(ARC_TYPE_SYMMETRIC, "ARC_TYPE_SYMMETRIC", 3784955220u, 0, 18, &be_const_str_STYLE_OUTLINE_PAD); -be_define_const_str(STYLE_OUTLINE_PAD, "STYLE_OUTLINE_PAD", 2090004501u, 0, 17, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_glue_obj); -be_define_const_str(glue_obj, "glue_obj", 1757706238u, 0, 8, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_get_btn_index); -be_define_const_str(get_btn_index, "get_btn_index", 1289059379u, 0, 13, NULL); -be_define_const_str(LAYOUT_GRID, "LAYOUT_GRID", 1755252272u, 0, 11, &be_const_str_MCP39F5_RST); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_MCP39F5_RX); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_atan); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_decrement); -be_define_const_str(decrement, "decrement", 432748210u, 0, 9, &be_const_str_set_style_local_scale_end_line_width); -be_define_const_str(set_style_local_scale_end_line_width, "set_style_local_scale_end_line_width", 2316920258u, 0, 36, NULL); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_set_gesture_parent); -be_define_const_str(set_gesture_parent, "set_gesture_parent", 3726242272u, 0, 18, &be_const_str_set_style_local_bg_grad_stop); -be_define_const_str(set_style_local_bg_grad_stop, "set_style_local_bg_grad_stop", 1180238427u, 0, 28, NULL); -be_define_const_str(set_tab_act, "set_tab_act", 2505737680u, 0, 11, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_get_letter_pos); -be_define_const_str(get_letter_pos, "get_letter_pos", 1477814169u, 0, 14, NULL); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_toggle); -be_define_const_str(toggle, "toggle", 1076453893u, 0, 6, NULL); -be_define_const_str(KEY_ENTER, "KEY_ENTER", 2614103337u, 0, 9, &be_const_str_ROT1B); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, NULL); -be_define_const_str(BAR_TYPE_CUSTOM, "BAR_TYPE_CUSTOM", 895647203u, 0, 15, &be_const_str_get_style_text_sel_color); -be_define_const_str(get_style_text_sel_color, "get_style_text_sel_color", 1751096754u, 0, 24, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(STYLE_VALUE_COLOR, "STYLE_VALUE_COLOR", 2491635400u, 0, 17, NULL); -be_define_const_str(OPA_20, "OPA_20", 4289961128u, 0, 6, &be_const_str_PZEM016_RX); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_get_angle); -be_define_const_str(get_angle, "get_angle", 1113203995u, 0, 9, &be_const_str_get_rollover); -be_define_const_str(get_rollover, "get_rollover", 2637132577u, 0, 12, NULL); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_get_height); -be_define_const_str(get_height, "get_height", 3571755523u, 0, 10, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(draw_text, "draw_text", 25865715u, 0, 9, &be_const_str_focus_obj); -be_define_const_str(focus_obj, "focus_obj", 1075574617u, 0, 9, &be_const_str_get_x_start_point); -be_define_const_str(get_x_start_point, "get_x_start_point", 4100384878u, 0, 17, NULL); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, NULL); -be_define_const_str(get_saturation, "get_saturation", 3458845696u, 0, 14, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_CHART_CURSOR_RIGHT); -be_define_const_str(CHART_CURSOR_RIGHT, "CHART_CURSOR_RIGHT", 2464313335u, 0, 18, &be_const_str_EVENT_VALUE_CHANGED); -be_define_const_str(EVENT_VALUE_CHANGED, "EVENT_VALUE_CHANGED", 1871067374u, 0, 19, &be_const_str_is_focused); -be_define_const_str(is_focused, "is_focused", 2171112339u, 0, 10, NULL); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); -be_define_const_str(get_cursor_hidden, "get_cursor_hidden", 3032264799u, 0, 17, &be_const_str_get_selected_str); -be_define_const_str(get_selected_str, "get_selected_str", 1743823997u, 0, 16, &be_const_str_set_pattern_blend_mode); -be_define_const_str(set_pattern_blend_mode, "set_pattern_blend_mode", 4267769432u, 0, 22, &be_const_str_set_value_ofs_x); -be_define_const_str(set_value_ofs_x, "set_value_ofs_x", 112450803u, 0, 15, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); -be_define_const_str(OLIVE, "OLIVE", 1722893804u, 0, 5, &be_const_str_set_style_local_shadow_color); -be_define_const_str(set_style_local_shadow_color, "set_style_local_shadow_color", 2778451758u, 0, 28, NULL); -be_define_const_str(get_style_image_recolor_opa, "get_style_image_recolor_opa", 1049713209u, 0, 27, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_set_style_local_text_line_space); -be_define_const_str(set_style_local_text_line_space, "set_style_local_text_line_space", 3775207629u, 0, 31, NULL); -be_define_const_str(set_parent, "set_parent", 1528807100u, 0, 10, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_SYMBOL_EDIT); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, NULL); -be_define_const_str(get_btn_label, "get_btn_label", 3300200213u, 0, 13, &be_const_str_set_bg_angles); -be_define_const_str(set_bg_angles, "set_bg_angles", 2873640992u, 0, 13, NULL); -be_define_const_str(GAUGE_PART_MAJOR, "GAUGE_PART_MAJOR", 3656186174u, 0, 16, &be_const_str_get_style_border_post); -be_define_const_str(get_style_border_post, "get_style_border_post", 3537874563u, 0, 21, NULL); -be_define_const_str(get_coords, "get_coords", 1044089006u, 0, 10, &be_const_str_get_text_sel_end); -be_define_const_str(get_text_sel_end, "get_text_sel_end", 3650450346u, 0, 16, NULL); -be_define_const_str(TABVIEW_TAB_POS_LEFT, "TABVIEW_TAB_POS_LEFT", 897772772u, 0, 20, &be_const_str_get_px); -be_define_const_str(get_px, "get_px", 1651889344u, 0, 6, NULL); -be_define_const_str(EVENT_RELEASED, "EVENT_RELEASED", 4173795963u, 0, 14, &be_const_str_SM2135_DAT); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_get_step); -be_define_const_str(get_step, "get_step", 2497148826u, 0, 8, NULL); -be_define_const_str(get_text, "get_text", 3133031679u, 0, 8, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(set_transition_prop_2, "set_transition_prop_2", 2983568488u, 0, 21, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_HPMA_TX); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_copy_buf); -be_define_const_str(copy_buf, "copy_buf", 2209552774u, 0, 8, &be_const_str_get_textarea); -be_define_const_str(get_textarea, "get_textarea", 839445266u, 0, 12, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(FS_MODE_WR, "FS_MODE_WR", 2839601832u, 0, 10, &be_const_str_SR04_TRIG); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_STYLE_SCALE_BORDER_WIDTH); -be_define_const_str(STYLE_SCALE_BORDER_WIDTH, "STYLE_SCALE_BORDER_WIDTH", 4091410577u, 0, 24, NULL); -be_define_const_str(STYLE_TRANSITION_DELAY, "STYLE_TRANSITION_DELAY", 251340916u, 0, 22, &be_const_str_set_btn_width); -be_define_const_str(set_btn_width, "set_btn_width", 2736013227u, 0, 13, NULL); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_NRF24_DC); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_set_scale_width); -be_define_const_str(set_scale_width, "set_scale_width", 2442490229u, 0, 15, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_STYLE_VALUE_FONT); -be_define_const_str(STYLE_VALUE_FONT, "STYLE_VALUE_FONT", 1861540608u, 0, 16, &be_const_str_del_char_forward); -be_define_const_str(del_char_forward, "del_char_forward", 400381733u, 0, 16, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_STYLE_IMAGE_BLEND_MODE); -be_define_const_str(STYLE_IMAGE_BLEND_MODE, "STYLE_IMAGE_BLEND_MODE", 3457971258u, 0, 22, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_align_y); -be_define_const_str(align_y, "align_y", 3718435550u, 0, 7, NULL); -be_define_const_str(set_style_local_transition_time, "set_style_local_transition_time", 1761097355u, 0, 31, NULL); -be_define_const_str(BAR_TYPE_NORMAL, "BAR_TYPE_NORMAL", 3652519691u, 0, 15, &be_const_str_BTN_STATE_PRESSED); -be_define_const_str(BTN_STATE_PRESSED, "BTN_STATE_PRESSED", 1194269292u, 0, 17, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_PROJECTOR_CTRL_RX); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_PWM1); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, NULL); -be_define_const_str(FS_RES_INV_PARAM, "FS_RES_INV_PARAM", 2676717305u, 0, 16, &be_const_str_set_click); -be_define_const_str(set_click, "set_click", 2550101068u, 0, 9, NULL); -be_define_const_str(ANIM_ON, "ANIM_ON", 1377334024u, 0, 7, &be_const_str_DROPDOWN_DIR_DOWN); -be_define_const_str(DROPDOWN_DIR_DOWN, "DROPDOWN_DIR_DOWN", 214322625u, 0, 17, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_get_style_bg_color); -be_define_const_str(get_style_bg_color, "get_style_bg_color", 964794381u, 0, 18, &be_const_str_set_placeholder_text); -be_define_const_str(set_placeholder_text, "set_placeholder_text", 1413918705u, 0, 20, NULL); -be_define_const_str(BTNMATRIX_CTRL_CHECK_STATE, "BTNMATRIX_CTRL_CHECK_STATE", 377731u, 0, 26, &be_const_str_FIT_NONE); -be_define_const_str(FIT_NONE, "FIT_NONE", 692142959u, 0, 8, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_set_bg_blend_mode); -be_define_const_str(set_bg_blend_mode, "set_bg_blend_mode", 2432224687u, 0, 17, &be_const_str_set_transition_prop_1); -be_define_const_str(set_transition_prop_1, "set_transition_prop_1", 3033901345u, 0, 21, NULL); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_set_src); -be_define_const_str(set_src, "set_src", 1156089058u, 0, 7, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_LAYOUT_ROW_BOTTOM); -be_define_const_str(LAYOUT_ROW_BOTTOM, "LAYOUT_ROW_BOTTOM", 1098190350u, 0, 17, &be_const_str_OBJ_PART_MAIN); -be_define_const_str(OBJ_PART_MAIN, "OBJ_PART_MAIN", 658062838u, 0, 13, &be_const_str_PMS5003_TX); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_set_hue); -be_define_const_str(set_hue, "set_hue", 830075074u, 0, 7, &be_const_str_set_type); -be_define_const_str(set_type, "set_type", 4284078396u, 0, 8, NULL); -be_define_const_str(get_width_fit, "get_width_fit", 416240192u, 0, 13, &be_const_str_set_editing); -be_define_const_str(set_editing, "set_editing", 1742905400u, 0, 11, NULL); -be_define_const_str(ALIGN_IN_TOP_MID, "ALIGN_IN_TOP_MID", 717802025u, 0, 16, &be_const_str_STYLE_SCALE_END_COLOR); -be_define_const_str(STYLE_SCALE_END_COLOR, "STYLE_SCALE_END_COLOR", 1403682869u, 0, 21, NULL); -be_define_const_str(get_click, "get_click", 1755279632u, 0, 9, NULL); -be_define_const_str(get_width, "get_width", 3293417300u, 0, 9, &be_const_str_set_focus_cb); -be_define_const_str(set_focus_cb, "set_focus_cb", 4094066116u, 0, 12, &be_const_str_set_pad_right); -be_define_const_str(set_pad_right, "set_pad_right", 4274005568u, 0, 13, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_PAGE_EDGE_RIGHT); -be_define_const_str(PAGE_EDGE_RIGHT, "PAGE_EDGE_RIGHT", 1268763615u, 0, 15, &be_const_str_list_copy); -be_define_const_str(list_copy, "list_copy", 680267399u, 0, 9, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_set_transition_path); -be_define_const_str(set_transition_path, "set_transition_path", 689428023u, 0, 19, NULL); -be_define_const_str(BLUE, "BLUE", 750204685u, 0, 4, &be_const_str_SWT1_NP); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_set_transition_time); -be_define_const_str(set_transition_time, "set_transition_time", 887720041u, 0, 19, NULL); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_get_style_margin_top); -be_define_const_str(get_style_margin_top, "get_style_margin_top", 2201799028u, 0, 20, NULL); -be_define_const_str(STYLE_BG_GRAD_STOP, "STYLE_BG_GRAD_STOP", 1591142422u, 0, 18, &be_const_str_get_style_transition_prop_3); -be_define_const_str(get_style_transition_prop_3, "get_style_transition_prop_3", 3437946865u, 0, 27, NULL); -be_define_const_str(DRAG_DIR_BOTH, "DRAG_DIR_BOTH", 740935659u, 0, 13, &be_const_str_HRE_CLOCK); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_cursor_up); -be_define_const_str(cursor_up, "cursor_up", 4142217213u, 0, 9, &be_const_str_get_focused); -be_define_const_str(get_focused, "get_focused", 973974289u, 0, 11, NULL); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, NULL); -be_define_const_str(get_anim_time, "get_anim_time", 641972335u, 0, 13, &be_const_str_invalidate_area); -be_define_const_str(invalidate_area, "invalidate_area", 1904223292u, 0, 15, &be_const_str_remove_series); -be_define_const_str(remove_series, "remove_series", 2007033791u, 0, 13, NULL); -be_define_const_str(get_style_transform_height, "get_style_transform_height", 3736737548u, 0, 26, &be_const_str_set_scrollable_fit); -be_define_const_str(set_scrollable_fit, "set_scrollable_fit", 4068661613u, 0, 18, &be_const_str_set_shadow_color); -be_define_const_str(set_shadow_color, "set_shadow_color", 1565203920u, 0, 16, &be_const_str_set_transition_prop_4); -be_define_const_str(set_transition_prop_4, "set_transition_prop_4", 3084234202u, 0, 21, NULL); -be_define_const_str(is_dragged, "is_dragged", 1443807988u, 0, 10, &be_const_str_set_angle_offset); -be_define_const_str(set_angle_offset, "set_angle_offset", 1203695731u, 0, 16, &be_const_str_set_line_dash_gap); -be_define_const_str(set_line_dash_gap, "set_line_dash_gap", 3499494412u, 0, 17, &be_const_str_set_shadow_ofs_y); -be_define_const_str(set_shadow_ofs_y, "set_shadow_ofs_y", 3086758033u, 0, 16, NULL); -be_define_const_str(SPINNER_TYPE_FILLSPIN_ARC, "SPINNER_TYPE_FILLSPIN_ARC", 2324275006u, 0, 25, &be_const_str_get_file_name); -be_define_const_str(get_file_name, "get_file_name", 3239886120u, 0, 13, NULL); -be_define_const_str(PROTECT_CHILD_CHG, "PROTECT_CHILD_CHG", 998079554u, 0, 17, &be_const_str_TEAL); -be_define_const_str(TEAL, "TEAL", 1728307679u, 0, 4, NULL); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_STYLE_PATTERN_RECOLOR); -be_define_const_str(STYLE_PATTERN_RECOLOR, "STYLE_PATTERN_RECOLOR", 2178713592u, 0, 21, &be_const_str_get_critical_value); -be_define_const_str(get_critical_value, "get_critical_value", 4180625515u, 0, 18, NULL); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_set_margin_bottom); -be_define_const_str(set_margin_bottom, "set_margin_bottom", 1238288976u, 0, 17, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_get_ext_click_pad_bottom); -be_define_const_str(get_ext_click_pad_bottom, "get_ext_click_pad_bottom", 1405930484u, 0, 24, &be_const_str_remove_prop); -be_define_const_str(remove_prop, "remove_prop", 4280941095u, 0, 11, NULL); -be_define_const_str(STYLE_TEXT_DECOR, "STYLE_TEXT_DECOR", 2624841926u, 0, 16, &be_const_str_set_spin_time); -be_define_const_str(set_spin_time, "set_spin_time", 1386363784u, 0, 13, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_get_style_transition_prop_6); -be_define_const_str(get_style_transition_prop_6, "get_style_transition_prop_6", 3488279722u, 0, 27, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_invalidate); -be_define_const_str(invalidate, "invalidate", 2649734928u, 0, 10, NULL); -be_define_const_str(BORDER_SIDE_RIGHT, "BORDER_SIDE_RIGHT", 1842095998u, 0, 17, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_get_adv_hittest); -be_define_const_str(get_adv_hittest, "get_adv_hittest", 1985963887u, 0, 15, NULL); -be_define_const_str(get_bright, "get_bright", 203831460u, 0, 10, NULL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_set_style_local_line_width); -be_define_const_str(set_style_local_line_width, "set_style_local_line_width", 1133761671u, 0, 26, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_get_type); -be_define_const_str(get_type, "get_type", 2996227024u, 0, 8, NULL); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_set_saturation); -be_define_const_str(set_saturation, "set_saturation", 2225192852u, 0, 14, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(layer_sys, "layer_sys", 593658256u, 0, 9, &be_const_str_list_init); -be_define_const_str(list_init, "list_init", 2798529232u, 0, 9, &be_const_str_set_pattern_recolor_opa); -be_define_const_str(set_pattern_recolor_opa, "set_pattern_recolor_opa", 1479951840u, 0, 23, NULL); -be_define_const_str(DRAG_DIR_HOR, "DRAG_DIR_HOR", 1213227361u, 0, 12, &be_const_str_is_point_on_coords); -be_define_const_str(is_point_on_coords, "is_point_on_coords", 2479052471u, 0, 18, NULL); -be_define_const_str(cut_text, "cut_text", 3023853443u, 0, 8, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, &be_const_str_set_tile_act); -be_define_const_str(set_tile_act, "set_tile_act", 1400046115u, 0, 12, NULL); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(EVENT_PRESSING, "EVENT_PRESSING", 2840400065u, 0, 14, &be_const_str_set_text_sel_start); -be_define_const_str(set_text_sel_start, "set_text_sel_start", 886455347u, 0, 18, NULL); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_set_image_opa); -be_define_const_str(set_image_opa, "set_image_opa", 517268068u, 0, 13, NULL); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(FS_RES_DENIED, "FS_RES_DENIED", 63556207u, 0, 13, &be_const_str_get_style_pad_left); -be_define_const_str(get_style_pad_left, "get_style_pad_left", 2843013833u, 0, 18, NULL); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_get_option_cnt); -be_define_const_str(get_option_cnt, "get_option_cnt", 2922481u, 0, 14, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(CHART_AXIS_INVERSE_LABELS_ORDER, "CHART_AXIS_INVERSE_LABELS_ORDER", 1279914111u, 0, 31, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); -be_define_const_str(scroll_ver, "scroll_ver", 3241545950u, 0, 10, NULL); -be_define_const_str(get_antialias, "get_antialias", 220729812u, 0, 13, &be_const_str_get_line_count); -be_define_const_str(get_line_count, "get_line_count", 4160991390u, 0, 14, &be_const_str_set_border_blend_mode); -be_define_const_str(set_border_blend_mode, "set_border_blend_mode", 882247636u, 0, 21, &be_const_str_set_style_local_value_line_space); -be_define_const_str(set_style_local_value_line_space, "set_style_local_value_line_space", 987261567u, 0, 32, NULL); -be_define_const_str(CHART_CURSOR_DOWN, "CHART_CURSOR_DOWN", 790177263u, 0, 17, &be_const_str_LAYOUT_OFF); -be_define_const_str(LAYOUT_OFF, "LAYOUT_OFF", 3375414885u, 0, 10, &be_const_str_set_pad_top); -be_define_const_str(set_pad_top, "set_pad_top", 193376421u, 0, 11, NULL); -be_define_const_str(STYLE_MARGIN_LEFT, "STYLE_MARGIN_LEFT", 671809443u, 0, 17, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, &be_const_str_set_style_local_pattern_recolor_opa); -be_define_const_str(set_style_local_pattern_recolor_opa, "set_style_local_pattern_recolor_opa", 2215956762u, 0, 35, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_KEY1_INV_NP); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_get_btn_width); -be_define_const_str(get_btn_width, "get_btn_width", 254956887u, 0, 13, &be_const_str_set_style_local_shadow_spread); -be_define_const_str(set_style_local_shadow_spread, "set_style_local_shadow_spread", 850759600u, 0, 29, &be_const_str_set_x_tick_length); -be_define_const_str(set_x_tick_length, "set_x_tick_length", 3530536821u, 0, 17, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_STYLE_SIZE); -be_define_const_str(STYLE_SIZE, "STYLE_SIZE", 2268500266u, 0, 10, &be_const_str_set_auto_size); -be_define_const_str(set_auto_size, "set_auto_size", 903259741u, 0, 13, &be_const_str_set_style_local_value_ofs_x); -be_define_const_str(set_style_local_value_ofs_x, "set_style_local_value_ofs_x", 3057670197u, 0, 27, NULL); -be_define_const_str(close_event_cb, "close_event_cb", 1180945172u, 0, 14, NULL); -be_define_const_str(remove_style, "remove_style", 3826054475u, 0, 12, NULL); -be_define_const_str(LABEL_ALIGN_LEFT, "LABEL_ALIGN_LEFT", 49345529u, 0, 16, &be_const_str_set_style_local_opa_scale); -be_define_const_str(set_style_local_opa_scale, "set_style_local_opa_scale", 2718681341u, 0, 25, NULL); -be_define_const_str(remove_mask, "remove_mask", 1680723542u, 0, 11, &be_const_str_set_image_recolor_opa); -be_define_const_str(set_image_recolor_opa, "set_image_recolor_opa", 558003471u, 0, 21, NULL); -be_define_const_str(CHART_AXIS_PRIMARY_Y, "CHART_AXIS_PRIMARY_Y", 2499204580u, 0, 20, &be_const_str_get_scrollable); -be_define_const_str(get_scrollable, "get_scrollable", 1510903497u, 0, 14, NULL); -be_define_const_str(CHART_AXIS_SECONDARY_Y, "CHART_AXIS_SECONDARY_Y", 755580820u, 0, 22, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, NULL); -be_define_const_str(set_style_local_line_dash_gap, "set_style_local_line_dash_gap", 923588498u, 0, 29, &be_const_str_set_text_sel_color); -be_define_const_str(set_text_sel_color, "set_text_sel_color", 1561573604u, 0, 18, NULL); -be_define_const_str(get_spin_time, "get_spin_time", 1036768940u, 0, 13, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(HSPI, "HSPI", 2263006151u, 0, 4, &be_const_str_OBJMASK_PART_MAIN); -be_define_const_str(OBJMASK_PART_MAIN, "OBJMASK_PART_MAIN", 1960600366u, 0, 17, &be_const_str_count_children_recursive); -be_define_const_str(count_children_recursive, "count_children_recursive", 497030885u, 0, 24, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_OUTPUT_LO); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_set_adv_hittest); -be_define_const_str(set_adv_hittest, "set_adv_hittest", 2312818651u, 0, 15, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, NULL); -be_define_const_str(set_checkable, "set_checkable", 3024222852u, 0, 13, NULL); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL); -be_define_const_str(ARC_TYPE_REVERSE, "ARC_TYPE_REVERSE", 3290331433u, 0, 16, NULL); -be_define_const_str(set_tasmota_logo, "set_tasmota_logo", 4090375591u, 0, 16, NULL); -be_define_const_str(ALIGN_IN_LEFT_MID, "ALIGN_IN_LEFT_MID", 60432565u, 0, 17, &be_const_str_CC1101_GDO2); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_EVENT_PRESS_LOST); -be_define_const_str(EVENT_PRESS_LOST, "EVENT_PRESS_LOST", 3685074190u, 0, 16, &be_const_str_STYLE_TEXT_FONT); -be_define_const_str(STYLE_TEXT_FONT, "STYLE_TEXT_FONT", 75931268u, 0, 15, &be_const_str_set_style_local_scale_grad_color); -be_define_const_str(set_style_local_scale_grad_color, "set_style_local_scale_grad_color", 1682685285u, 0, 32, NULL); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_get_style_outline_opa); -be_define_const_str(get_style_outline_opa, "get_style_outline_opa", 1286010513u, 0, 21, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, &be_const_str_set_col_cnt); -be_define_const_str(set_col_cnt, "set_col_cnt", 3803893298u, 0, 11, &be_const_str_set_width); -be_define_const_str(set_width, "set_width", 484671920u, 0, 9, NULL); -be_define_const_str(KEY_PREV, "KEY_PREV", 3127352148u, 0, 8, NULL); -be_define_const_str(set_text_fmt, "set_text_fmt", 699875119u, 0, 12, NULL); -be_define_const_str(get_scrl_height, "get_scrl_height", 1933731194u, 0, 15, &be_const_str_set_arc_length); -be_define_const_str(set_arc_length, "set_arc_length", 2972977809u, 0, 14, &be_const_str_set_style_local_image_recolor_opa); -be_define_const_str(set_style_local_image_recolor_opa, "set_style_local_image_recolor_opa", 1752356781u, 0, 33, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_FS_RES_OK); -be_define_const_str(FS_RES_OK, "FS_RES_OK", 223294622u, 0, 9, &be_const_str_set_scrl_width); -be_define_const_str(set_scrl_width, "set_scrl_width", 2522533355u, 0, 14, NULL); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_STYLE_VALUE_STR); -be_define_const_str(STYLE_VALUE_STR, "STYLE_VALUE_STR", 144639168u, 0, 15, NULL); -be_define_const_str(ALIGN_IN_TOP_LEFT, "ALIGN_IN_TOP_LEFT", 1231214604u, 0, 17, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_transform); -be_define_const_str(transform, "transform", 3786248987u, 0, 9, NULL); -be_define_const_str(set_style_local_line_blend_mode, "set_style_local_line_blend_mode", 2166063994u, 0, 31, NULL); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_set_angle); -be_define_const_str(set_angle, "set_angle", 2542866927u, 0, 9, &be_const_str_set_today_date); -be_define_const_str(set_today_date, "set_today_date", 3983571786u, 0, 14, NULL); -be_define_const_str(PAGE_EDGE_BOTTOM, "PAGE_EDGE_BOTTOM", 3735543556u, 0, 16, NULL); -be_define_const_str(get_btns_pos, "get_btns_pos", 2951340984u, 0, 12, NULL); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_set_bg_grad_color); -be_define_const_str(set_bg_grad_color, "set_bg_grad_color", 51037480u, 0, 17, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(clear_protect, "clear_protect", 2408863094u, 0, 13, NULL); -be_define_const_str(LABEL_LONG_BREAK, "LABEL_LONG_BREAK", 3669129840u, 0, 16, &be_const_str_SDM630_RX); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_get_style_border_width); -be_define_const_str(get_style_border_width, "get_style_border_width", 3436292763u, 0, 22, &be_const_str_set_style_local_size); -be_define_const_str(set_style_local_size, "set_style_local_size", 1442450187u, 0, 20, NULL); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, NULL); -be_define_const_str(add_char, "add_char", 2276421097u, 0, 8, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(CHART_CURSOR_NONE, "CHART_CURSOR_NONE", 2955624997u, 0, 17, NULL); -be_define_const_str(EVENT_KEY, "EVENT_KEY", 2739613983u, 0, 9, &be_const_str_del_anim_ready_cb); -be_define_const_str(del_anim_ready_cb, "del_anim_ready_cb", 1276516666u, 0, 17, NULL); -be_define_const_str(set_bg_opa, "set_bg_opa", 3379539138u, 0, 10, NULL); -be_define_const_str(TEXT_DECOR_NONE, "TEXT_DECOR_NONE", 2700466131u, 0, 15, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_GRAD_DIR_VER); -be_define_const_str(GRAD_DIR_VER, "GRAD_DIR_VER", 1112540859u, 0, 12, &be_const_str_get_angle_end); -be_define_const_str(get_angle_end, "get_angle_end", 2420725825u, 0, 13, &be_const_str_set_drag_parent); -be_define_const_str(set_drag_parent, "set_drag_parent", 3979167347u, 0, 15, &be_const_str_set_recolor); -be_define_const_str(set_recolor, "set_recolor", 2750390248u, 0, 11, &be_const_str_set_style_local_text_sel_color); -be_define_const_str(set_style_local_text_sel_color, "set_style_local_text_sel_color", 3749375246u, 0, 30, NULL); -be_define_const_str(BLEND_MODE_SUBTRACTIVE, "BLEND_MODE_SUBTRACTIVE", 3202763511u, 0, 22, &be_const_str_finish_transitions); -be_define_const_str(finish_transitions, "finish_transitions", 1663237457u, 0, 18, &be_const_str_realign); -be_define_const_str(realign, "realign", 170046109u, 0, 7, &be_const_str_set_style_local_value_opa); -be_define_const_str(set_style_local_value_opa, "set_style_local_value_opa", 3003874062u, 0, 25, NULL); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_get_start_value); -be_define_const_str(get_start_value, "get_start_value", 2039237390u, 0, 15, NULL); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(OPA_40, "OPA_40", 2210522110u, 0, 6, &be_const_str_get_active_btn_text); -be_define_const_str(get_active_btn_text, "get_active_btn_text", 2709356149u, 0, 19, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(clear_selection, "clear_selection", 4157132227u, 0, 15, &be_const_str_get_hor_res); -be_define_const_str(get_hor_res, "get_hor_res", 37131144u, 0, 11, &be_const_str_get_offset_x); -be_define_const_str(get_offset_x, "get_offset_x", 3922581548u, 0, 12, &be_const_str_set_style_local_border_opa); -be_define_const_str(set_style_local_border_opa, "set_style_local_border_opa", 2125961393u, 0, 26, NULL); -be_define_const_str(DISP_SIZE_MEDIUM, "DISP_SIZE_MEDIUM", 3336923135u, 0, 16, &be_const_str_FS_MODE_RD); -be_define_const_str(FS_MODE_RD, "FS_MODE_RD", 2906271023u, 0, 10, &be_const_str_get_scrl_width); -be_define_const_str(get_scrl_width, "get_scrl_width", 1498509239u, 0, 14, &be_const_str_get_style_pad_right); -be_define_const_str(get_style_pad_right, "get_style_pad_right", 3150287466u, 0, 19, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); -be_define_const_str(BTNMATRIX_CTRL_CLICK_TRIG, "BTNMATRIX_CTRL_CLICK_TRIG", 2305639872u, 0, 25, &be_const_str_CHART_PART_SERIES_BG); -be_define_const_str(CHART_PART_SERIES_BG, "CHART_PART_SERIES_BG", 4240790375u, 0, 20, &be_const_str_DDSU666_RX); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_get_scrl_fit_right); -be_define_const_str(get_scrl_fit_right, "get_scrl_fit_right", 4214186985u, 0, 18, &be_const_str_set_style_local_shadow_ofs_y); -be_define_const_str(set_style_local_shadow_ofs_y, "set_style_local_shadow_ofs_y", 1635871223u, 0, 28, NULL); -be_define_const_str(STYLE_PATTERN_IMAGE, "STYLE_PATTERN_IMAGE", 3293741009u, 0, 19, &be_const_str_STYLE_VALUE_OFS_X); -be_define_const_str(STYLE_VALUE_OFS_X, "STYLE_VALUE_OFS_X", 1358079798u, 0, 17, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_TXT_FLAG_FIT); -be_define_const_str(TXT_FLAG_FIT, "TXT_FLAG_FIT", 3174579022u, 0, 12, &be_const_str_set_width_fit); -be_define_const_str(set_width_fit, "set_width_fit", 703845988u, 0, 13, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); -be_define_const_str(DISP_SIZE_SMALL, "DISP_SIZE_SMALL", 722343095u, 0, 15, &be_const_str_STYLE_TRANSITION_PROP_5); -be_define_const_str(STYLE_TRANSITION_PROP_5, "STYLE_TRANSITION_PROP_5", 996274500u, 0, 23, &be_const_str_set_bg_grad_stop); -be_define_const_str(set_bg_grad_stop, "set_bg_grad_stop", 1329650389u, 0, 16, &be_const_str_set_style_local_text_sel_bg_color); -be_define_const_str(set_style_local_text_sel_bg_color, "set_style_local_text_sel_bg_color", 501411296u, 0, 33, &be_const_str_set_top); -be_define_const_str(set_top, "set_top", 1234335895u, 0, 7, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_get_style_value_color); -be_define_const_str(get_style_value_color, "get_style_value_color", 76857167u, 0, 21, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_CPICKER_COLOR_MODE_VALUE); -be_define_const_str(CPICKER_COLOR_MODE_VALUE, "CPICKER_COLOR_MODE_VALUE", 980055508u, 0, 24, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_STYLE_TEXT_SEL_COLOR); -be_define_const_str(STYLE_TEXT_SEL_COLOR, "STYLE_TEXT_SEL_COLOR", 1096559567u, 0, 20, &be_const_str_set_hsv); -be_define_const_str(set_hsv, "set_hsv", 545841289u, 0, 7, NULL); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(CALENDAR_PART_DATE, "CALENDAR_PART_DATE", 1097756842u, 0, 18, &be_const_str_add_element); -be_define_const_str(add_element, "add_element", 940011507u, 0, 11, &be_const_str_set_scale); -be_define_const_str(set_scale, "set_scale", 3828634574u, 0, 9, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_WEBCAM_HREF); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_reset_style_list); -be_define_const_str(reset_style_list, "reset_style_list", 4135460875u, 0, 16, &be_const_str_set_parent_event); -be_define_const_str(set_parent_event, "set_parent_event", 49610579u, 0, 16, &be_const_str_set_text_line_space); -be_define_const_str(set_text_line_space, "set_text_line_space", 3186151063u, 0, 19, NULL); -be_define_const_str(FIT_TIGHT, "FIT_TIGHT", 2710930043u, 0, 9, &be_const_str_SYMBOL_DRIVE); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_get_style_line_opa); -be_define_const_str(get_style_line_opa, "get_style_line_opa", 3653868853u, 0, 18, &be_const_str_get_style_line_rounded); -be_define_const_str(get_style_line_rounded, "get_style_line_rounded", 2936625238u, 0, 22, NULL); -be_define_const_str(get_nearest_index_from_coord, "get_nearest_index_from_coord", 847963620u, 0, 28, &be_const_str_get_selected); -be_define_const_str(get_selected, "get_selected", 2280142225u, 0, 12, &be_const_str_set_long_mode); -be_define_const_str(set_long_mode, "set_long_mode", 1177453792u, 0, 13, NULL); -be_define_const_str(set_month_names, "set_month_names", 158482125u, 0, 15, NULL); -be_define_const_str(set_refocus_policy, "set_refocus_policy", 3274550126u, 0, 18, NULL); -be_define_const_str(DROPDOWN_DIR_RIGHT, "DROPDOWN_DIR_RIGHT", 103533641u, 0, 18, &be_const_str_set_line_blend_mode); -be_define_const_str(set_line_blend_mode, "set_line_blend_mode", 350784568u, 0, 19, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_STYLE_TRANSITION_PROP_6); -be_define_const_str(STYLE_TRANSITION_PROP_6, "STYLE_TRANSITION_PROP_6", 1046607357u, 0, 23, NULL); -be_define_const_str(get_fit_right, "get_fit_right", 2037949402u, 0, 13, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_clear_btn_ctrl); -be_define_const_str(clear_btn_ctrl, "clear_btn_ctrl", 2659827935u, 0, 14, &be_const_str_set_align); -be_define_const_str(set_align, "set_align", 2592958913u, 0, 9, NULL); -be_define_const_str(set_style_local_margin_left, "set_style_local_margin_left", 3162175100u, 0, 27, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, NULL); -be_define_const_str(STYLE_CLIP_CORNER, "STYLE_CLIP_CORNER", 2883973343u, 0, 17, &be_const_str_VSPI); -be_define_const_str(VSPI, "VSPI", 790634249u, 0, 4, &be_const_str_cursor_left); -be_define_const_str(cursor_left, "cursor_left", 785231665u, 0, 11, &be_const_str_set_style_local_border_side); -be_define_const_str(set_style_local_border_side, "set_style_local_border_side", 2699338750u, 0, 27, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_get_align); -be_define_const_str(get_align, "get_align", 1275859045u, 0, 9, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_get_fit_bottom); -be_define_const_str(get_fit_bottom, "get_fit_bottom", 664659611u, 0, 14, &be_const_str_set_style_local_transition_prop_5); -be_define_const_str(set_style_local_transition_prop_5, "set_style_local_transition_prop_5", 2518426867u, 0, 33, NULL); -be_define_const_str(get_ext_click_pad_left, "get_ext_click_pad_left", 1709871714u, 0, 22, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_set_focus_parent); -be_define_const_str(set_focus_parent, "set_focus_parent", 2829293865u, 0, 16, NULL); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(DISP_ROT_NONE, "DISP_ROT_NONE", 1805190226u, 0, 13, &be_const_str_DSB); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_set_opa_scale); -be_define_const_str(set_opa_scale, "set_opa_scale", 1694654867u, 0, 13, NULL); -be_define_const_str(CYAN, "CYAN", 1196590906u, 0, 4, &be_const_str_set_palette); -be_define_const_str(set_palette, "set_palette", 4093380483u, 0, 11, NULL); -be_define_const_str(get_pivot, "get_pivot", 2963122652u, 0, 9, NULL); -be_define_const_str(BTNMATRIX_CTRL_NO_REPEAT, "BTNMATRIX_CTRL_NO_REPEAT", 2228999978u, 0, 24, &be_const_str_SCROLLBAR_MODE_HIDE); -be_define_const_str(SCROLLBAR_MODE_HIDE, "SCROLLBAR_MODE_HIDE", 3451699170u, 0, 19, &be_const_str_get_focused_btn); -be_define_const_str(get_focused_btn, "get_focused_btn", 1271435326u, 0, 15, NULL); -be_define_const_str(PROTECT_CLICK_FOCUS, "PROTECT_CLICK_FOCUS", 293740268u, 0, 19, NULL); -be_define_const_str(is_visible, "is_visible", 597904624u, 0, 10, NULL); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_PROTECT_PRESS_LOST); -be_define_const_str(PROTECT_PRESS_LOST, "PROTECT_PRESS_LOST", 2967498203u, 0, 18, &be_const_str_get_hue); -be_define_const_str(get_hue, "get_hue", 1060457518u, 0, 7, &be_const_str_set_pattern_recolor); -be_define_const_str(set_pattern_recolor, "set_pattern_recolor", 3136030237u, 0, 19, NULL); -be_define_const_str(SSPI, "SSPI", 2469416576u, 0, 4, &be_const_str_get_style_line_dash_width); -be_define_const_str(get_style_line_dash_width, "get_style_line_dash_width", 4191923846u, 0, 25, &be_const_str_set_ctrl_map); -be_define_const_str(set_ctrl_map, "set_ctrl_map", 305774832u, 0, 12, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_get_text_sel_en); -be_define_const_str(get_text_sel_en, "get_text_sel_en", 500051850u, 0, 15, &be_const_str_get_title); -be_define_const_str(get_title, "get_title", 1263271230u, 0, 9, &be_const_str_get_y_invert); -be_define_const_str(get_y_invert, "get_y_invert", 2518095240u, 0, 12, NULL); -be_define_const_str(GAUGE_PART_MAIN, "GAUGE_PART_MAIN", 3145322556u, 0, 15, &be_const_str_get_btn_selected); -be_define_const_str(get_btn_selected, "get_btn_selected", 1715353004u, 0, 16, NULL); -be_define_const_str(PAGE_EDGE_TOP, "PAGE_EDGE_TOP", 869728962u, 0, 13, NULL); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(set_style_local_line_opa, "set_style_local_line_opa", 909807497u, 0, 24, &be_const_str_set_style_local_shadow_width); -be_define_const_str(set_style_local_shadow_width, "set_style_local_shadow_width", 2466053617u, 0, 28, NULL); -be_define_const_str(set_formatter_cb, "set_formatter_cb", 1245371562u, 0, 16, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(get_adjustable, "get_adjustable", 982674931u, 0, 14, NULL); -be_define_const_str(DRAG_DIR_ONE, "DRAG_DIR_ONE", 2088479808u, 0, 12, &be_const_str_STYLE_LINE_WIDTH); -be_define_const_str(STYLE_LINE_WIDTH, "STYLE_LINE_WIDTH", 537342374u, 0, 16, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_hittest); -be_define_const_str(hittest, "hittest", 4018046250u, 0, 7, NULL); -be_define_const_str(STYLE_BG_GRAD_DIR, "STYLE_BG_GRAD_DIR", 2986594357u, 0, 17, &be_const_str_get_drag_throw); -be_define_const_str(get_drag_throw, "get_drag_throw", 2409838001u, 0, 14, NULL); -be_define_const_str(set_style_local_transform_angle, "set_style_local_transform_angle", 3618600326u, 0, 31, NULL); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_RF_SENSOR); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_draw_rect); -be_define_const_str(draw_rect, "draw_rect", 1619240338u, 0, 9, &be_const_str_get_user_data); -be_define_const_str(get_user_data, "get_user_data", 1175796436u, 0, 13, NULL); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_set_options_static); -be_define_const_str(set_options_static, "set_options_static", 652047717u, 0, 18, &be_const_str_set_value); -be_define_const_str(set_value, "set_value", 2288413965u, 0, 9, NULL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_set_mode); -be_define_const_str(set_mode, "set_mode", 4109106455u, 0, 8, &be_const_str_set_style_local_image_opa); -be_define_const_str(set_style_local_image_opa, "set_style_local_image_opa", 3630403626u, 0, 25, &be_const_str_set_style_local_outline_blend_mode); -be_define_const_str(set_style_local_outline_blend_mode, "set_style_local_outline_blend_mode", 3321200446u, 0, 34, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_STYLE_SCALE_GRAD_COLOR); -be_define_const_str(STYLE_SCALE_GRAD_COLOR, "STYLE_SCALE_GRAD_COLOR", 3981239948u, 0, 22, &be_const_str_draw_img); -be_define_const_str(draw_img, "draw_img", 3217263339u, 0, 8, NULL); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_set_style_local_transition_path); -be_define_const_str(set_style_local_transition_path, "set_style_local_transition_path", 1414572505u, 0, 31, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(set_style_local_transition_prop_3, "set_style_local_transition_prop_3", 2619092581u, 0, 33, NULL); -be_define_const_str(fade_in, "fade_in", 3410278043u, 0, 7, &be_const_str_set_angles); -be_define_const_str(set_angles, "set_angles", 895400084u, 0, 10, NULL); -be_define_const_str(set_style_local_margin_right, "set_style_local_margin_right", 2606287945u, 0, 28, NULL); -be_define_const_str(get_one_check, "get_one_check", 2649478907u, 0, 13, &be_const_str_set_highlighted_dates); -be_define_const_str(set_highlighted_dates, "set_highlighted_dates", 344528435u, 0, 21, NULL); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_get_style_outline_color); -be_define_const_str(get_style_outline_color, "get_style_outline_color", 3936324952u, 0, 23, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(CHECKBOX_PART_BULLET, "CHECKBOX_PART_BULLET", 3413099789u, 0, 20, &be_const_str_STYLE_BORDER_SIDE); -be_define_const_str(STYLE_BORDER_SIDE, "STYLE_BORDER_SIDE", 3876109589u, 0, 17, &be_const_str_get_anim_speed); -be_define_const_str(get_anim_speed, "get_anim_speed", 1731518217u, 0, 14, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, NULL); -be_define_const_str(KEY_HOME, "KEY_HOME", 2722222682u, 0, 8, &be_const_str_focus_prev); -be_define_const_str(focus_prev, "focus_prev", 2639915985u, 0, 10, NULL); -be_define_const_str(STYLE_SHADOW_OFS_Y, "STYLE_SHADOW_OFS_Y", 2690614194u, 0, 18, NULL); -be_define_const_str(BTN_STATE_CHECKED_RELEASED, "BTN_STATE_CHECKED_RELEASED", 571978995u, 0, 26, NULL); -be_define_const_str(get_pwd_mode, "get_pwd_mode", 364593807u, 0, 12, NULL); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); -be_define_const_str(get_cell_merge_right, "get_cell_merge_right", 207626582u, 0, 20, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(EVENT_APPLY, "EVENT_APPLY", 1983056372u, 0, 11, &be_const_str_ROT1A_NP); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, NULL); -be_define_const_str(STYLE_PATTERN_BLEND_MODE, "STYLE_PATTERN_BLEND_MODE", 2331743867u, 0, 24, &be_const_str_get_wrap); -be_define_const_str(get_wrap, "get_wrap", 52299084u, 0, 8, &be_const_str_set_value_str); -be_define_const_str(set_value_str, "set_value_str", 2950562969u, 0, 13, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_get_style_scale_border_width); -be_define_const_str(get_style_scale_border_width, "get_style_scale_border_width", 206289592u, 0, 28, &be_const_str_set_shadow_width); -be_define_const_str(set_shadow_width, "set_shadow_width", 1524575495u, 0, 16, NULL); -be_define_const_str(ALIGN_OUT_RIGHT_BOTTOM, "ALIGN_OUT_RIGHT_BOTTOM", 3786852942u, 0, 22, NULL); -be_define_const_str(KEY_DEL, "KEY_DEL", 1749022830u, 0, 7, &be_const_str_get_angle_offset); -be_define_const_str(get_angle_offset, "get_angle_offset", 2775374871u, 0, 16, NULL); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_get_style_transform_width); -be_define_const_str(get_style_transform_width, "get_style_transform_width", 713115893u, 0, 25, &be_const_str_set_bg_grad_dir); -be_define_const_str(set_bg_grad_dir, "set_bg_grad_dir", 1390928996u, 0, 15, &be_const_str_set_signal_cb); -be_define_const_str(set_signal_cb, "set_signal_cb", 1476300744u, 0, 13, NULL); -be_define_const_str(KEYBOARD_PART_BTN, "KEYBOARD_PART_BTN", 875459207u, 0, 17, &be_const_str_get_content); -be_define_const_str(get_content, "get_content", 2390895261u, 0, 11, &be_const_str_set_focused_btn); -be_define_const_str(set_focused_btn, "set_focused_btn", 4211166978u, 0, 15, &be_const_str_set_offset_x); -be_define_const_str(set_offset_x, "set_offset_x", 421149912u, 0, 12, NULL); -be_define_const_str(OPA_90, "OPA_90", 27710427u, 0, 6, &be_const_str_SYMBOL_VIDEO); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); -be_define_const_str(get_edge_flash, "get_edge_flash", 3226611892u, 0, 14, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(get_pressed_cell, "get_pressed_cell", 2707217039u, 0, 16, NULL); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, NULL); -be_define_const_str(STYLE_SHADOW_WIDTH, "STYLE_SHADOW_WIDTH", 629491480u, 0, 18, &be_const_str_set_text_font); -be_define_const_str(set_text_font, "set_text_font", 724363521u, 0, 13, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_STYLE_LINE_COLOR); -be_define_const_str(STYLE_LINE_COLOR, "STYLE_LINE_COLOR", 623603885u, 0, 16, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_set_outline_pad); -be_define_const_str(set_outline_pad, "set_outline_pad", 2845869448u, 0, 15, NULL); -be_define_const_str(BAR_TYPE_SYMMETRICAL, "BAR_TYPE_SYMMETRICAL", 1357819710u, 0, 20, &be_const_str_set_height_margin); -be_define_const_str(set_height_margin, "set_height_margin", 3083248294u, 0, 17, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_TXD); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_anim_cb); -be_define_const_str(anim_cb, "anim_cb", 2120778920u, 0, 7, &be_const_str_get_style_bg_main_stop); -be_define_const_str(get_style_bg_main_stop, "get_style_bg_main_stop", 3096799724u, 0, 22, &be_const_str_get_style_shadow_ofs_y); -be_define_const_str(get_style_shadow_ofs_y, "get_style_shadow_ofs_y", 2337159315u, 0, 22, &be_const_str_get_style_transform_zoom); -be_define_const_str(get_style_transform_zoom, "get_style_transform_zoom", 380604044u, 0, 24, &be_const_str_set_line_rounded); -be_define_const_str(set_line_rounded, "set_line_rounded", 1057786792u, 0, 16, &be_const_str_set_style_local_pattern_recolor); -be_define_const_str(set_style_local_pattern_recolor, "set_style_local_pattern_recolor", 2810797623u, 0, 31, NULL); -be_define_const_str(EVENT_GESTURE, "EVENT_GESTURE", 2506519243u, 0, 13, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, NULL); -be_define_const_str(SCROLLBAR_MODE_ON, "SCROLLBAR_MODE_ON", 1562259499u, 0, 17, &be_const_str_set_chg_rate); -be_define_const_str(set_chg_rate, "set_chg_rate", 1522157679u, 0, 12, &be_const_str_set_needle_count); -be_define_const_str(set_needle_count, "set_needle_count", 2611099555u, 0, 16, NULL); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_set_text); -be_define_const_str(set_text, "set_text", 1849641155u, 0, 8, NULL); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, NULL); -be_define_const_str(ALIGN_IN_BOTTOM_LEFT, "ALIGN_IN_BOTTOM_LEFT", 3951704846u, 0, 20, NULL); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(get_tile_act, "get_tile_act", 3705631119u, 0, 12, &be_const_str_set_value_font); -be_define_const_str(set_value_font, "set_value_font", 3846644343u, 0, 14, NULL); -be_define_const_str(get_angle_start, "get_angle_start", 99415936u, 0, 15, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(init_draw_rect_dsc, "init_draw_rect_dsc", 4242061620u, 0, 18, &be_const_str_set_width_margin); -be_define_const_str(set_width_margin, "set_width_margin", 2313657923u, 0, 16, NULL); -be_define_const_str(STYLE_BG_COLOR, "STYLE_BG_COLOR", 2207533444u, 0, 14, &be_const_str_STYLE_TEXT_LETTER_SPACE); -be_define_const_str(STYLE_TEXT_LETTER_SPACE, "STYLE_TEXT_LETTER_SPACE", 2264289484u, 0, 23, NULL); -be_define_const_str(get_style_radius, "get_style_radius", 1315526516u, 0, 16, NULL); -be_define_const_str(set_zoom, "set_zoom", 1925134407u, 0, 8, NULL); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); -be_define_const_str(FS_RES_NOT_EX, "FS_RES_NOT_EX", 3124641355u, 0, 13, &be_const_str_SYMBOL_POWER); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); -be_define_const_str(clean_style_list, "clean_style_list", 1108481805u, 0, 16, NULL); -be_define_const_str(LAYOUT_PRETTY_MID, "LAYOUT_PRETTY_MID", 2040633917u, 0, 17, &be_const_str_VL53L0X_XSHUT1); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str___upper__); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_get_scrl_fit_left); -be_define_const_str(get_scrl_fit_left, "get_scrl_fit_left", 1227937692u, 0, 17, NULL); -be_define_const_str(TABVIEW_TAB_POS_TOP, "TABVIEW_TAB_POS_TOP", 4224766616u, 0, 19, &be_const_str_get_style_pad_bottom); -be_define_const_str(get_style_pad_bottom, "get_style_pad_bottom", 1749510283u, 0, 20, NULL); -be_define_const_str(BLEND_MODE_NORMAL, "BLEND_MODE_NORMAL", 1282739232u, 0, 17, NULL); -be_define_const_str(STYLE_BORDER_OPA, "STYLE_BORDER_OPA", 2705633552u, 0, 16, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, NULL); -be_define_const_str(get_btnmatrix, "get_btnmatrix", 1628630681u, 0, 13, NULL); -be_define_const_str(DISP_SIZE_LARGE, "DISP_SIZE_LARGE", 3377069231u, 0, 15, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_set_text_align); -be_define_const_str(set_text_align, "set_text_align", 2734674049u, 0, 14, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, NULL); -be_define_const_str(get_x_from_index, "get_x_from_index", 2843960746u, 0, 16, &be_const_str_set_style_local_margin_top); -be_define_const_str(set_style_local_margin_top, "set_style_local_margin_top", 2065926016u, 0, 26, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_set_style_local_scale_end_border_width); -be_define_const_str(set_style_local_scale_end_border_width, "set_style_local_scale_end_border_width", 3774452254u, 0, 38, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_STYLE_LINE_ROUNDED); -be_define_const_str(STYLE_LINE_ROUNDED, "STYLE_LINE_ROUNDED", 3677440219u, 0, 18, &be_const_str_STYLE_PAD_INNER); -be_define_const_str(STYLE_PAD_INNER, "STYLE_PAD_INNER", 1651002267u, 0, 15, &be_const_str_get_sb_mode); -be_define_const_str(get_sb_mode, "get_sb_mode", 2283093353u, 0, 11, &be_const_str_set_selected); -be_define_const_str(set_selected, "set_selected", 386442685u, 0, 12, NULL); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_set_scrl_height); -be_define_const_str(set_scrl_height, "set_scrl_height", 3462735686u, 0, 15, NULL); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); -be_define_const_str(add_btns, "add_btns", 828629896u, 0, 8, &be_const_str_set_style_local_scale_end_color); -be_define_const_str(set_style_local_scale_end_color, "set_style_local_scale_end_color", 2968375966u, 0, 31, NULL); -be_define_const_str(get_style_text_opa, "get_style_text_opa", 2378295432u, 0, 18, NULL); -be_define_const_str(ALIGN_CENTER, "ALIGN_CENTER", 622705366u, 0, 12, &be_const_str_PROJECTOR_CTRL_TX); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_title_get_alignment); -be_define_const_str(title_get_alignment, "title_get_alignment", 3374080476u, 0, 19, NULL); -be_define_const_str(EVENT_LONG_PRESSED, "EVENT_LONG_PRESSED", 1806426939u, 0, 18, &be_const_str_MGC3130_XFER); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_STYLE_PATTERN_OPA); -be_define_const_str(STYLE_PATTERN_OPA, "STYLE_PATTERN_OPA", 1423872118u, 0, 17, &be_const_str_draw_arc); -be_define_const_str(draw_arc, "draw_arc", 1828251676u, 0, 8, NULL); -be_define_const_str(print, "print", 372738696u, 0, 5, NULL); -be_define_const_str(set_scale_end_border_width, "set_scale_end_border_width", 3280087724u, 0, 26, NULL); -be_define_const_str(add_state, "add_state", 934613858u, 0, 9, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, &be_const_str_set_style_local_value_align); -be_define_const_str(set_style_local_value_align, "set_style_local_value_align", 17354185u, 0, 27, &be_const_str_set_text_letter_space); -be_define_const_str(set_text_letter_space, "set_text_letter_space", 4274937273u, 0, 21, &be_const_str_set_value_ofs_y); -be_define_const_str(set_value_ofs_y, "set_value_ofs_y", 95673184u, 0, 15, NULL); -be_define_const_str(ANIM_OFF, "ANIM_OFF", 3664307970u, 0, 8, &be_const_str_STYLE_BG_BLEND_MODE); -be_define_const_str(STYLE_BG_BLEND_MODE, "STYLE_BG_BLEND_MODE", 1458637206u, 0, 19, &be_const_str_get_options); -be_define_const_str(get_options, "get_options", 1198221094u, 0, 11, &be_const_str_set_style_local_pad_top); -be_define_const_str(set_style_local_pad_top, "set_style_local_pad_top", 785256663u, 0, 23, NULL); -be_define_const_str(OBJ_PART_VIRTUAL_FIRST, "OBJ_PART_VIRTUAL_FIRST", 1744058739u, 0, 22, &be_const_str_TM1638STB); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_set_anim_time); -be_define_const_str(set_anim_time, "set_anim_time", 1473685427u, 0, 13, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_set_digit_format); -be_define_const_str(set_digit_format, "set_digit_format", 293274625u, 0, 16, &be_const_str_set_secondary_y_tick_texts); -be_define_const_str(set_secondary_y_tick_texts, "set_secondary_y_tick_texts", 2165523729u, 0, 26, NULL); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_FS_RES_HW_ERR); -be_define_const_str(FS_RES_HW_ERR, "FS_RES_HW_ERR", 1676324085u, 0, 13, &be_const_str_OPA_COVER); -be_define_const_str(OPA_COVER, "OPA_COVER", 3000088857u, 0, 9, &be_const_str_get_style_pad_top); -be_define_const_str(get_style_pad_top, "get_style_pad_top", 2896917811u, 0, 17, &be_const_str_set_height); -be_define_const_str(set_height, "set_height", 1080207399u, 0, 10, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_get_header_height); -be_define_const_str(get_header_height, "get_header_height", 3313773581u, 0, 17, &be_const_str_set_x_start_point); -be_define_const_str(set_x_start_point, "set_x_start_point", 257195034u, 0, 17, NULL); -be_define_const_str(DROPDOWN_PART_MAIN, "DROPDOWN_PART_MAIN", 1806576308u, 0, 18, &be_const_str_KEY_ESC); -be_define_const_str(KEY_ESC, "KEY_ESC", 915768258u, 0, 7, &be_const_str_set_checked); -be_define_const_str(set_checked, "set_checked", 1119609005u, 0, 11, NULL); -be_define_const_str(TXT_FLAG_RIGHT, "TXT_FLAG_RIGHT", 3664649251u, 0, 14, &be_const_str_set_style_local_text_blend_mode); -be_define_const_str(set_style_local_text_blend_mode, "set_style_local_text_blend_mode", 3467626777u, 0, 31, NULL); -be_define_const_str(blur_ver, "blur_ver", 2584500226u, 0, 8, NULL); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_set_y_range); -be_define_const_str(set_y_range, "set_y_range", 1531043725u, 0, 11, NULL); -be_define_const_str(PROTECT_NONE, "PROTECT_NONE", 2861685391u, 0, 12, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_get_next_btn); -be_define_const_str(get_next_btn, "get_next_btn", 1221160406u, 0, 12, &be_const_str_remove_all_objs); -be_define_const_str(remove_all_objs, "remove_all_objs", 2136122696u, 0, 15, &be_const_str_set_x_tick_texts); -be_define_const_str(set_x_tick_texts, "set_x_tick_texts", 481792535u, 0, 16, NULL); -be_define_const_str(LIST_PART_EDGE_FLASH, "LIST_PART_EDGE_FLASH", 549302352u, 0, 20, &be_const_str_WHITE); -be_define_const_str(WHITE, "WHITE", 2856149510u, 0, 5, &be_const_str_get_scrl_fit_bottom); -be_define_const_str(get_scrl_fit_bottom, "get_scrl_fit_bottom", 446102398u, 0, 19, NULL); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_STYLE_TEXT_BLEND_MODE); -be_define_const_str(STYLE_TEXT_BLEND_MODE, "STYLE_TEXT_BLEND_MODE", 44336606u, 0, 21, NULL); -be_define_const_str(STYLE_MARGIN_BOTTOM, "STYLE_MARGIN_BOTTOM", 4176801053u, 0, 19, &be_const_str_get_screen); -be_define_const_str(get_screen, "get_screen", 2759490796u, 0, 10, &be_const_str_set_border_color); -be_define_const_str(set_border_color, "set_border_color", 2628124814u, 0, 16, NULL); -be_define_const_str(SCROLLBAR_MODE_AUTO, "SCROLLBAR_MODE_AUTO", 2882381917u, 0, 19, &be_const_str_STATE_PRESSED); -be_define_const_str(STATE_PRESSED, "STATE_PRESSED", 2471016259u, 0, 13, NULL); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, NULL); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_set_cursor_blink_time); -be_define_const_str(set_cursor_blink_time, "set_cursor_blink_time", 3508000825u, 0, 21, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_STYLE_OUTLINE_WIDTH); +be_define_const_str(STYLE_OUTLINE_WIDTH, "STYLE_OUTLINE_WIDTH", 2786055068u, 0, 19, &be_const_str_get_line_count); +be_define_const_str(get_line_count, "get_line_count", 4160991390u, 0, 14, &be_const_str_stop_auto_close); +be_define_const_str(stop_auto_close, "stop_auto_close", 3282451958u, 0, 15, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_add_char); +be_define_const_str(add_char, "add_char", 2276421097u, 0, 8, &be_const_str_clear_btn_ctrl_all); be_define_const_str(clear_btn_ctrl_all, "clear_btn_ctrl_all", 895272499u, 0, 18, NULL); -be_define_const_str(set_pattern_opa, "set_pattern_opa", 3749193119u, 0, 15, NULL); -be_define_const_str(set_bg_main_stop, "set_bg_main_stop", 1702668926u, 0, 16, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_SDS0X1_TX); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_set_end_angle); -be_define_const_str(set_end_angle, "set_end_angle", 2783087761u, 0, 13, NULL); -be_define_const_str(CHART_UPDATE_MODE_SHIFT, "CHART_UPDATE_MODE_SHIFT", 1343723110u, 0, 23, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(ALIGN_OUT_RIGHT_MID, "ALIGN_OUT_RIGHT_MID", 2298501353u, 0, 19, &be_const_str_set_header_height); -be_define_const_str(set_header_height, "set_header_height", 2913303849u, 0, 17, NULL); -be_define_const_str(LAYOUT_PRETTY_TOP, "LAYOUT_PRETTY_TOP", 725519108u, 0, 17, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_set_buffer); -be_define_const_str(set_buffer, "set_buffer", 311233742u, 0, 10, NULL); -be_define_const_str(ROLLER_MODE_NORMAL, "ROLLER_MODE_NORMAL", 72783697u, 0, 18, &be_const_str_ST7789_DC); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_set_click_focus); -be_define_const_str(set_click_focus, "set_click_focus", 3544636103u, 0, 15, &be_const_str_set_user_data); -be_define_const_str(set_user_data, "set_user_data", 3596043360u, 0, 13, NULL); -be_define_const_str(KEY_NEXT, "KEY_NEXT", 4124880692u, 0, 8, &be_const_str_get_cell_crop); -be_define_const_str(get_cell_crop, "get_cell_crop", 2916382555u, 0, 13, NULL); -be_define_const_str(clear_series, "clear_series", 3353669054u, 0, 12, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_set_style_local_pad_right); -be_define_const_str(set_style_local_pad_right, "set_style_local_pad_right", 1126712366u, 0, 25, NULL); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); -be_define_const_str(set_cell_crop, "set_cell_crop", 1055583431u, 0, 13, &be_const_str_set_text_color); -be_define_const_str(set_text_color, "set_text_color", 2780604091u, 0, 14, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SYMBOL_DUMMY); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); -be_define_const_str(focus_btn, "focus_btn", 1087954772u, 0, 9, NULL); -be_define_const_str(CHART_CURSOR_UP, "CHART_CURSOR_UP", 2345195814u, 0, 15, &be_const_str_is_checked); -be_define_const_str(is_checked, "is_checked", 3623625615u, 0, 10, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_STATE_EDITED); -be_define_const_str(STATE_EDITED, "STATE_EDITED", 46966454u, 0, 12, NULL); -be_define_const_str(ALIGN_IN_RIGHT_MID, "ALIGN_IN_RIGHT_MID", 1518023108u, 0, 18, &be_const_str_get_style_line_width); -be_define_const_str(get_style_line_width, "get_style_line_width", 1172338835u, 0, 20, &be_const_str_start_auto_close); -be_define_const_str(start_auto_close, "start_auto_close", 2189620188u, 0, 16, NULL); -be_define_const_str(get_point_count, "get_point_count", 617480290u, 0, 15, &be_const_str_is_inactive); -be_define_const_str(is_inactive, "is_inactive", 2737113619u, 0, 11, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_set_radius); -be_define_const_str(set_radius, "set_radius", 1362452298u, 0, 10, NULL); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, NULL); -be_define_const_str(get_style_transition_prop_2, "get_style_transition_prop_2", 3421169246u, 0, 27, NULL); -be_define_const_str(GESTURE_DIR_LEFT, "GESTURE_DIR_LEFT", 1888875816u, 0, 16, NULL); -be_define_const_str(scroll_hor, "scroll_hor", 4153158354u, 0, 10, NULL); -be_define_const_str(BORDER_SIDE_TOP, "BORDER_SIDE_TOP", 3643834727u, 0, 15, &be_const_str_ELECTRIQ_MOODL_TX); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SR04_ECHO); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, NULL); -be_define_const_str(STATE_FOCUSED, "STATE_FOCUSED", 3780463572u, 0, 13, &be_const_str_SYMBOL_GPS); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_SYMBOL_KEYBOARD); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_set_shadow_ofs_x); -be_define_const_str(set_shadow_ofs_x, "set_shadow_ofs_x", 3069980414u, 0, 16, NULL); -be_define_const_str(get_gesture_parent, "get_gesture_parent", 2610282188u, 0, 18, NULL); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_push); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, &be_const_str_set_col_cnt); +be_define_const_str(set_col_cnt, "set_col_cnt", 3803893298u, 0, 11, NULL); +be_define_const_str(STYLE_PATTERN_BLEND_MODE, "STYLE_PATTERN_BLEND_MODE", 2331743867u, 0, 24, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, NULL); +be_define_const_str(SLIDER_TYPE_RANGE, "SLIDER_TYPE_RANGE", 1380197143u, 0, 17, &be_const_str_get_angle); +be_define_const_str(get_angle, "get_angle", 1113203995u, 0, 9, NULL); +be_define_const_str(set_ctrl_map, "set_ctrl_map", 305774832u, 0, 12, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_get_tab_act); +be_define_const_str(get_tab_act, "get_tab_act", 2665251652u, 0, 11, NULL); +be_define_const_str(BTNMATRIX_CTRL_DISABLED, "BTNMATRIX_CTRL_DISABLED", 2790045315u, 0, 23, &be_const_str_set_palette); +be_define_const_str(set_palette, "set_palette", 4093380483u, 0, 11, NULL); +be_define_const_str(KEY_UP, "KEY_UP", 1961213356u, 0, 6, &be_const_str_LED_PART_MAIN); +be_define_const_str(LED_PART_MAIN, "LED_PART_MAIN", 3314442918u, 0, 13, &be_const_str_LIST_PART_SCROLLBAR); +be_define_const_str(LIST_PART_SCROLLBAR, "LIST_PART_SCROLLBAR", 3690731034u, 0, 19, &be_const_str_get_hidden); +be_define_const_str(get_hidden, "get_hidden", 2608152268u, 0, 10, NULL); +be_define_const_str(get_style_value_line_space, "get_style_value_line_space", 592322595u, 0, 26, NULL); +be_define_const_str(add_btns, "add_btns", 828629896u, 0, 8, NULL); +be_define_const_str(BAR_TYPE_CUSTOM, "BAR_TYPE_CUSTOM", 895647203u, 0, 15, &be_const_str_CHART_AXIS_INVERSE_LABELS_ORDER); +be_define_const_str(CHART_AXIS_INVERSE_LABELS_ORDER, "CHART_AXIS_INVERSE_LABELS_ORDER", 1279914111u, 0, 31, &be_const_str_push); be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_add_tab); -be_define_const_str(add_tab, "add_tab", 1821901608u, 0, 7, NULL); -be_define_const_str(STYLE_PAD_RIGHT, "STYLE_PAD_RIGHT", 4135691505u, 0, 15, &be_const_str_SWT1); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_set_cursor_pos); -be_define_const_str(set_cursor_pos, "set_cursor_pos", 1354380555u, 0, 14, NULL); -be_define_const_str(PROTECT_PARENT, "PROTECT_PARENT", 3109095353u, 0, 14, &be_const_str_SI7021); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_get_scroll_propagation); -be_define_const_str(get_scroll_propagation, "get_scroll_propagation", 431556896u, 0, 22, NULL); +be_define_const_str(get_max_height, "get_max_height", 3803847844u, 0, 14, &be_const_str_set_shadow_color); +be_define_const_str(set_shadow_color, "set_shadow_color", 1565203920u, 0, 16, &be_const_str_set_style_local_shadow_ofs_x); +be_define_const_str(set_style_local_shadow_ofs_x, "set_style_local_shadow_ofs_x", 1619093604u, 0, 28, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_asstring); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_get_width_fit); +be_define_const_str(get_width_fit, "get_width_fit", 416240192u, 0, 13, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_report_style_mod); +be_define_const_str(report_style_mod, "report_style_mod", 4174977870u, 0, 16, NULL); +be_define_const_str(set_value_ofs_x, "set_value_ofs_x", 112450803u, 0, 15, NULL); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_SYMBOL_USB); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(TXT_FLAG_RIGHT, "TXT_FLAG_RIGHT", 3664649251u, 0, 14, &be_const_str_get_align); +be_define_const_str(get_align, "get_align", 1275859045u, 0, 9, NULL); +be_define_const_str(get_style_transition_prop_6, "get_style_transition_prop_6", 3488279722u, 0, 27, &be_const_str_set_cursor_manage); +be_define_const_str(set_cursor_manage, "set_cursor_manage", 2587391084u, 0, 17, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_down); +be_define_const_str(down, "down", 1035581717u, 0, 4, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_HPMA_TX); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); +be_define_const_str(ALIGN_IN_TOP_RIGHT, "ALIGN_IN_TOP_RIGHT", 3273089785u, 0, 18, &be_const_str_set_style_local_transition_delay); +be_define_const_str(set_style_local_transition_delay, "set_style_local_transition_delay", 958588397u, 0, 32, NULL); +be_define_const_str(get_spin_time, "get_spin_time", 1036768940u, 0, 13, &be_const_str_lv_tabview); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); +be_define_const_str(set_cell_crop, "set_cell_crop", 1055583431u, 0, 13, &be_const_str_set_mirror); +be_define_const_str(set_mirror, "set_mirror", 1608447367u, 0, 10, NULL); +be_define_const_str(get_style_radius, "get_style_radius", 1315526516u, 0, 16, &be_const_str_start_auto_close); +be_define_const_str(start_auto_close, "start_auto_close", 2189620188u, 0, 16, NULL); +be_define_const_str(set_auto_size, "set_auto_size", 903259741u, 0, 13, NULL); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(STYLE_BORDER_WIDTH, "STYLE_BORDER_WIDTH", 2777818658u, 0, 18, NULL); +be_define_const_str(STYLE_SHADOW_SPREAD, "STYLE_SHADOW_SPREAD", 3685821355u, 0, 19, NULL); +be_define_const_str(CHART_PART_CURSOR, "CHART_PART_CURSOR", 2123603184u, 0, 17, &be_const_str_MAX7219CLK); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_get_pivot); +be_define_const_str(get_pivot, "get_pivot", 2963122652u, 0, 9, &be_const_str_scroll_ver); +be_define_const_str(scroll_ver, "scroll_ver", 3241545950u, 0, 10, &be_const_str_set_border_blend_mode); +be_define_const_str(set_border_blend_mode, "set_border_blend_mode", 882247636u, 0, 21, &be_const_str_set_offset_x); +be_define_const_str(set_offset_x, "set_offset_x", 421149912u, 0, 12, NULL); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_get_cursor_blink_time); +be_define_const_str(get_cursor_blink_time, "get_cursor_blink_time", 1960576829u, 0, 21, &be_const_str_get_style_transition_delay); +be_define_const_str(get_style_transition_delay, "get_style_transition_delay", 1536173465u, 0, 26, NULL); +be_define_const_str(PAGE_EDGE_LEFT, "PAGE_EDGE_LEFT", 4240364242u, 0, 14, &be_const_str_STYLE_TRANSITION_PROP_3); +be_define_const_str(STYLE_TRANSITION_PROP_3, "STYLE_TRANSITION_PROP_3", 962719262u, 0, 23, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_get_style_pad_right); +be_define_const_str(get_style_pad_right, "get_style_pad_right", 3150287466u, 0, 19, NULL); +be_define_const_str(ARC_TYPE_REVERSE, "ARC_TYPE_REVERSE", 3290331433u, 0, 16, &be_const_str_STYLE_MARGIN_TOP); +be_define_const_str(STYLE_MARGIN_TOP, "STYLE_MARGIN_TOP", 4150683665u, 0, 16, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(del_anim_ready_cb, "del_anim_ready_cb", 1276516666u, 0, 17, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(ALIGN_OUT_RIGHT_BOTTOM, "ALIGN_OUT_RIGHT_BOTTOM", 3786852942u, 0, 22, &be_const_str_set_style_local_border_color); +be_define_const_str(set_style_local_border_color, "set_style_local_border_color", 2798696056u, 0, 28, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, &be_const_str_set_month_names); +be_define_const_str(set_month_names, "set_month_names", 158482125u, 0, 15, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_get_style_pattern_recolor_opa); +be_define_const_str(get_style_pattern_recolor_opa, "get_style_pattern_recolor_opa", 1906150798u, 0, 29, NULL); +be_define_const_str(STYLE_OUTLINE_COLOR, "STYLE_OUTLINE_COLOR", 2723763111u, 0, 19, &be_const_str_set_range); +be_define_const_str(set_range, "set_range", 228092793u, 0, 9, NULL); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(set_line_opa, "set_line_opa", 2983219519u, 0, 12, NULL); +be_define_const_str(DISP_SIZE_LARGE, "DISP_SIZE_LARGE", 3377069231u, 0, 15, &be_const_str_EPD_DATA); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_get_height_fit); +be_define_const_str(get_height_fit, "get_height_fit", 2561566971u, 0, 14, &be_const_str_set_selected); +be_define_const_str(set_selected, "set_selected", 386442685u, 0, 12, NULL); +be_define_const_str(set_style_local_pad_inner, "set_style_local_pad_inner", 3980353812u, 0, 25, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_get_auto_size); +be_define_const_str(get_auto_size, "get_auto_size", 241966433u, 0, 13, &be_const_str_get_focused); +be_define_const_str(get_focused, "get_focused", 973974289u, 0, 11, NULL); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_STYLE_OPA_SCALE); +be_define_const_str(STYLE_OPA_SCALE, "STYLE_OPA_SCALE", 4014485970u, 0, 15, &be_const_str_init_draw_label_dsc); +be_define_const_str(init_draw_label_dsc, "init_draw_label_dsc", 3549659870u, 0, 19, &be_const_str_set_bg_start_angle); +be_define_const_str(set_bg_start_angle, "set_bg_start_angle", 2285338772u, 0, 18, &be_const_str_set_style_local_line_rounded); +be_define_const_str(set_style_local_line_rounded, "set_style_local_line_rounded", 3167871810u, 0, 28, NULL); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_get_content); +be_define_const_str(get_content, "get_content", 2390895261u, 0, 11, NULL); +be_define_const_str(ALIGN_CENTER, "ALIGN_CENTER", 622705366u, 0, 12, &be_const_str_CHART_AXIS_SKIP_LAST_TICK); +be_define_const_str(CHART_AXIS_SKIP_LAST_TICK, "CHART_AXIS_SKIP_LAST_TICK", 3664086830u, 0, 25, &be_const_str_KEY_BACKSPACE); +be_define_const_str(KEY_BACKSPACE, "KEY_BACKSPACE", 269443424u, 0, 13, NULL); +be_define_const_str(CPICKER_COLOR_MODE_SATURATION, "CPICKER_COLOR_MODE_SATURATION", 1463184715u, 0, 29, &be_const_str_LABEL_ALIGN_AUTO); +be_define_const_str(LABEL_ALIGN_AUTO, "LABEL_ALIGN_AUTO", 1755016863u, 0, 16, NULL); +be_define_const_str(focus, "focus", 337658899u, 0, 5, NULL); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, NULL); +be_define_const_str(LAYOUT_ROW_BOTTOM, "LAYOUT_ROW_BOTTOM", 1098190350u, 0, 17, &be_const_str_get_letter_on); +be_define_const_str(get_letter_on, "get_letter_on", 3272656192u, 0, 13, NULL); +be_define_const_str(KEYBOARD_MODE_SPECIAL, "KEYBOARD_MODE_SPECIAL", 968590554u, 0, 21, &be_const_str_get_color_mode_fixed); +be_define_const_str(get_color_mode_fixed, "get_color_mode_fixed", 2272722254u, 0, 20, &be_const_str_set_height_margin); +be_define_const_str(set_height_margin, "set_height_margin", 3083248294u, 0, 17, NULL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_get_header_height); +be_define_const_str(get_header_height, "get_header_height", 3313773581u, 0, 17, &be_const_str_get_protect); +be_define_const_str(get_protect, "get_protect", 4241180167u, 0, 11, &be_const_str_get_tile_act); +be_define_const_str(get_tile_act, "get_tile_act", 3705631119u, 0, 12, &be_const_str_set_style_local_bg_blend_mode); +be_define_const_str(set_style_local_bg_blend_mode, "set_style_local_bg_blend_mode", 2691986893u, 0, 29, NULL); +be_define_const_str(clean_tab, "clean_tab", 3280421962u, 0, 9, &be_const_str_set_style_local_radius); +be_define_const_str(set_style_local_radius, "set_style_local_radius", 1410446896u, 0, 22, NULL); +be_define_const_str(BTN_STATE_PRESSED, "BTN_STATE_PRESSED", 1194269292u, 0, 17, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_SCROLLBAR_MODE_ON); +be_define_const_str(SCROLLBAR_MODE_ON, "SCROLLBAR_MODE_ON", 1562259499u, 0, 17, &be_const_str_remove_prop); +be_define_const_str(remove_prop, "remove_prop", 4280941095u, 0, 11, NULL); +be_define_const_str(TXT_CMD_STATE_PAR, "TXT_CMD_STATE_PAR", 159232374u, 0, 17, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, NULL); +be_define_const_str(SCROLLBAR_MODE_UNHIDE, "SCROLLBAR_MODE_UNHIDE", 827854473u, 0, 21, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(LIST_PART_EDGE_FLASH, "LIST_PART_EDGE_FLASH", 549302352u, 0, 20, &be_const_str_STYLE_BORDER_POST); +be_define_const_str(STYLE_BORDER_POST, "STYLE_BORDER_POST", 1815444696u, 0, 17, &be_const_str_set_style_local_transform_angle); +be_define_const_str(set_style_local_transform_angle, "set_style_local_transform_angle", 3618600326u, 0, 31, NULL); +be_define_const_str(DRAG_DIR_BOTH, "DRAG_DIR_BOTH", 740935659u, 0, 13, &be_const_str_SI7021); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_set_type); +be_define_const_str(set_type, "set_type", 4284078396u, 0, 8, NULL); +be_define_const_str(STYLE_PATTERN_RECOLOR_OPA, "STYLE_PATTERN_RECOLOR_OPA", 3355859281u, 0, 25, &be_const_str_YELLOW); +be_define_const_str(YELLOW, "YELLOW", 2964049737u, 0, 6, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_get_ext_attr); +be_define_const_str(get_ext_attr, "get_ext_attr", 2125271231u, 0, 12, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, NULL); +be_define_const_str(glue_obj, "glue_obj", 1757706238u, 0, 8, NULL); +be_define_const_str(CALENDAR_PART_BG, "CALENDAR_PART_BG", 562605961u, 0, 16, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, NULL); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, NULL); +be_define_const_str(TEXT_DECOR_UNDERLINE, "TEXT_DECOR_UNDERLINE", 1425097719u, 0, 20, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_get_style_text_line_space); +be_define_const_str(get_style_text_line_space, "get_style_text_line_space", 1588877665u, 0, 25, NULL); +be_define_const_str(scroll_hor, "scroll_hor", 4153158354u, 0, 10, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(STYLE_PAD_LEFT, "STYLE_PAD_LEFT", 1524023460u, 0, 14, &be_const_str_set_value_ofs_y); +be_define_const_str(set_value_ofs_y, "set_value_ofs_y", 95673184u, 0, 15, NULL); +be_define_const_str(get_style_transition_prop_5, "get_style_transition_prop_5", 3471502103u, 0, 27, NULL); +be_define_const_str(get_cell_value, "get_cell_value", 3068122638u, 0, 14, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_set_pad_right); +be_define_const_str(set_pad_right, "set_pad_right", 4274005568u, 0, 13, NULL); +be_define_const_str(del_char, "del_char", 3624762103u, 0, 8, NULL); +be_define_const_str(STYLE_VALUE_LINE_SPACE, "STYLE_VALUE_LINE_SPACE", 2028376414u, 0, 22, NULL); +be_define_const_str(get_bright, "get_bright", 203831460u, 0, 10, NULL); +be_define_const_str(set_top, "set_top", 1234335895u, 0, 7, NULL); +be_define_const_str(add_protect, "add_protect", 175601728u, 0, 11, &be_const_str_set_bg_main_stop); +be_define_const_str(set_bg_main_stop, "set_bg_main_stop", 1702668926u, 0, 16, &be_const_str_set_scale_end_border_width); +be_define_const_str(set_scale_end_border_width, "set_scale_end_border_width", 3280087724u, 0, 26, NULL); +be_define_const_str(PROTECT_POS, "PROTECT_POS", 1960404285u, 0, 11, &be_const_str_STYLE_BG_OPA); +be_define_const_str(STYLE_BG_OPA, "STYLE_BG_OPA", 1487941245u, 0, 12, NULL); +be_define_const_str(ALIGN_IN_TOP_LEFT, "ALIGN_IN_TOP_LEFT", 1231214604u, 0, 17, NULL); +be_define_const_str(ALIGN_OUT_LEFT_BOTTOM, "ALIGN_OUT_LEFT_BOTTOM", 1578004935u, 0, 21, &be_const_str_BTN_STATE_RELEASED); +be_define_const_str(BTN_STATE_RELEASED, "BTN_STATE_RELEASED", 4133711537u, 0, 18, &be_const_str_EPAPER42_CS); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, NULL); +be_define_const_str(get_btn_img, "get_btn_img", 177039868u, 0, 11, &be_const_str_get_title); +be_define_const_str(get_title, "get_title", 1263271230u, 0, 9, &be_const_str_set_style_local_bg_main_stop); +be_define_const_str(set_style_local_bg_main_stop, "set_style_local_bg_main_stop", 2599091600u, 0, 28, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_DISP_ROT_180); +be_define_const_str(DISP_ROT_180, "DISP_ROT_180", 1300448899u, 0, 12, &be_const_str_set_transition_path); +be_define_const_str(set_transition_path, "set_transition_path", 689428023u, 0, 19, NULL); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_get_top); +be_define_const_str(get_top, "get_top", 1711502355u, 0, 7, &be_const_str_move_background); +be_define_const_str(move_background, "move_background", 3375135217u, 0, 15, NULL); +be_define_const_str(get_style_margin_bottom, "get_style_margin_bottom", 2589475122u, 0, 23, NULL); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_get_auto_fit); +be_define_const_str(get_auto_fit, "get_auto_fit", 2158692767u, 0, 12, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); +be_define_const_str(set_style_local_scale_end_color, "set_style_local_scale_end_color", 2968375966u, 0, 31, NULL); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_set_line_dash_gap); +be_define_const_str(set_line_dash_gap, "set_line_dash_gap", 3499494412u, 0, 17, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(get_pressed_cell, "get_pressed_cell", 2707217039u, 0, 16, NULL); +be_define_const_str(FS_RES_TOUT, "FS_RES_TOUT", 733368644u, 0, 11, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_get_start_value); +be_define_const_str(get_start_value, "get_start_value", 2039237390u, 0, 15, NULL); +be_define_const_str(BLEND_MODE_SUBTRACTIVE, "BLEND_MODE_SUBTRACTIVE", 3202763511u, 0, 22, NULL); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, NULL); +be_define_const_str(CHART_PART_SERIES_BG, "CHART_PART_SERIES_BG", 4240790375u, 0, 20, &be_const_str_KEYBOARD_MODE_TEXT_UPPER); +be_define_const_str(KEYBOARD_MODE_TEXT_UPPER, "KEYBOARD_MODE_TEXT_UPPER", 2335009259u, 0, 24, &be_const_str_LABEL_ALIGN_LEFT); +be_define_const_str(LABEL_ALIGN_LEFT, "LABEL_ALIGN_LEFT", 49345529u, 0, 16, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); +be_define_const_str(focus_prev, "focus_prev", 2639915985u, 0, 10, NULL); +be_define_const_str(STYLE_TEXT_LINE_SPACE, "STYLE_TEXT_LINE_SPACE", 4185649482u, 0, 21, &be_const_str_get_click); +be_define_const_str(get_click, "get_click", 1755279632u, 0, 9, NULL); +be_define_const_str(BORDER_SIDE_NONE, "BORDER_SIDE_NONE", 3808959734u, 0, 16, &be_const_str_ILI9341_DC); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); +be_define_const_str(PAGE_EDGE_RIGHT, "PAGE_EDGE_RIGHT", 1268763615u, 0, 15, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(OPA_0, "OPA_0", 3351018670u, 0, 5, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_set_one_line); +be_define_const_str(set_one_line, "set_one_line", 3397406135u, 0, 12, &be_const_str_set_visible_row_count); +be_define_const_str(set_visible_row_count, "set_visible_row_count", 840407905u, 0, 21, NULL); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_align_x); +be_define_const_str(align_x, "align_x", 3735213169u, 0, 7, &be_const_str_get_btn_width); +be_define_const_str(get_btn_width, "get_btn_width", 254956887u, 0, 13, NULL); +be_define_const_str(TXT_CMD_STATE_WAIT, "TXT_CMD_STATE_WAIT", 1721068338u, 0, 18, &be_const_str_set_outline_color); +be_define_const_str(set_outline_color, "set_outline_color", 3028574774u, 0, 17, NULL); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_set_auto_fit); +be_define_const_str(set_auto_fit, "set_auto_fit", 1407948747u, 0, 12, &be_const_str_set_digit_format); +be_define_const_str(set_digit_format, "set_digit_format", 293274625u, 0, 16, &be_const_str_set_text_color); +be_define_const_str(set_text_color, "set_text_color", 2780604091u, 0, 14, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); +be_define_const_str(ALIGN_IN_BOTTOM_LEFT, "ALIGN_IN_BOTTOM_LEFT", 3951704846u, 0, 20, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_add_obj); +be_define_const_str(add_obj, "add_obj", 3846256134u, 0, 7, &be_const_str_get_style_shadow_spread); +be_define_const_str(get_style_shadow_spread, "get_style_shadow_spread", 1343265468u, 0, 23, NULL); +be_define_const_str(KEY_RIGHT, "KEY_RIGHT", 3690237745u, 0, 9, &be_const_str_set_x_tick_texts); +be_define_const_str(set_x_tick_texts, "set_x_tick_texts", 481792535u, 0, 16, NULL); +be_define_const_str(STYLE_VALUE_ALIGN, "STYLE_VALUE_ALIGN", 3531731246u, 0, 17, &be_const_str_get_btn_text); +be_define_const_str(get_btn_text, "get_btn_text", 1417317686u, 0, 12, &be_const_str_set_transition_prop_6); +be_define_const_str(set_transition_prop_6, "set_transition_prop_6", 3050678964u, 0, 21, NULL); +be_define_const_str(get_style_bg_opa, "get_style_bg_opa", 1274566692u, 0, 16, NULL); +be_define_const_str(EVENT_LONG_PRESSED, "EVENT_LONG_PRESSED", 1806426939u, 0, 18, &be_const_str_LAYOUT_CENTER); +be_define_const_str(LAYOUT_CENTER, "LAYOUT_CENTER", 1686380473u, 0, 13, NULL); +be_define_const_str(OLIVE, "OLIVE", 1722893804u, 0, 5, NULL); +be_define_const_str(ARC_PART_KNOB, "ARC_PART_KNOB", 1431875030u, 0, 13, &be_const_str_DI); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_get_ext_click_pad_bottom); +be_define_const_str(get_ext_click_pad_bottom, "get_ext_click_pad_bottom", 1405930484u, 0, 24, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_ROT1B); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_SWT1_NP); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_set_knob_colored); +be_define_const_str(set_knob_colored, "set_knob_colored", 2285165409u, 0, 16, NULL); +be_define_const_str(MAGENTA, "MAGENTA", 1444046984u, 0, 7, &be_const_str_OPA_40); +be_define_const_str(OPA_40, "OPA_40", 2210522110u, 0, 6, NULL); +be_define_const_str(CPICKER_TYPE_DISC, "CPICKER_TYPE_DISC", 2110878147u, 0, 17, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, &be_const_str_set_style_local_value_blend_mode); +be_define_const_str(set_style_local_value_blend_mode, "set_style_local_value_blend_mode", 1178211587u, 0, 32, NULL); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_set_color_mode_fixed); +be_define_const_str(set_color_mode_fixed, "set_color_mode_fixed", 802591178u, 0, 20, &be_const_str_set_options); +be_define_const_str(set_options, "set_options", 2975436170u, 0, 11, NULL); +be_define_const_str(FS_RES_FS_ERR, "FS_RES_FS_ERR", 3587821087u, 0, 13, &be_const_str_FS_RES_INV_PARAM); +be_define_const_str(FS_RES_INV_PARAM, "FS_RES_INV_PARAM", 2676717305u, 0, 16, &be_const_str_PURPLE); +be_define_const_str(PURPLE, "PURPLE", 2539335743u, 0, 6, &be_const_str_cursor_left); +be_define_const_str(cursor_left, "cursor_left", 785231665u, 0, 11, NULL); +be_define_const_str(PROTECT_CLICK_FOCUS, "PROTECT_CLICK_FOCUS", 293740268u, 0, 19, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_STYLE_BG_GRAD_DIR); +be_define_const_str(STYLE_BG_GRAD_DIR, "STYLE_BG_GRAD_DIR", 2986594357u, 0, 17, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_set_long_mode); +be_define_const_str(set_long_mode, "set_long_mode", 1177453792u, 0, 13, NULL); +be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_get_show_selected); +be_define_const_str(get_show_selected, "get_show_selected", 3185075651u, 0, 17, &be_const_str_set_pad_bottom); +be_define_const_str(set_pad_bottom, "set_pad_bottom", 900543569u, 0, 14, NULL); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_get_angle_start); +be_define_const_str(get_angle_start, "get_angle_start", 99415936u, 0, 15, NULL); +be_define_const_str(get_scrl_width, "get_scrl_width", 1498509239u, 0, 14, NULL); +be_define_const_str(KEY_NEXT, "KEY_NEXT", 4124880692u, 0, 8, &be_const_str_OBJ_PART_REAL_FIRST); +be_define_const_str(OBJ_PART_REAL_FIRST, "OBJ_PART_REAL_FIRST", 819443818u, 0, 19, &be_const_str_set_style_local_outline_pad); +be_define_const_str(set_style_local_outline_pad, "set_style_local_outline_pad", 3480414734u, 0, 27, NULL); +be_define_const_str(get_bg_angle_end, "get_bg_angle_end", 602326541u, 0, 16, &be_const_str_get_pwd_show_time); +be_define_const_str(get_pwd_show_time, "get_pwd_show_time", 2965915687u, 0, 17, &be_const_str_get_style_pad_bottom); +be_define_const_str(get_style_pad_bottom, "get_style_pad_bottom", 1749510283u, 0, 20, &be_const_str_set_drag_throw); +be_define_const_str(set_drag_throw, "set_drag_throw", 2511679421u, 0, 14, NULL); +be_define_const_str(CHART_CURSOR_UP, "CHART_CURSOR_UP", 2345195814u, 0, 15, &be_const_str_get_child); +be_define_const_str(get_child, "get_child", 1282595182u, 0, 9, &be_const_str_set_drag_dir); +be_define_const_str(set_drag_dir, "set_drag_dir", 2315801594u, 0, 12, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_set_color_mode); +be_define_const_str(set_color_mode, "set_color_mode", 1155621583u, 0, 14, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(SCROLLBAR_MODE_DRAG, "SCROLLBAR_MODE_DRAG", 2145885996u, 0, 19, &be_const_str_SCROLLBAR_MODE_HIDE); +be_define_const_str(SCROLLBAR_MODE_HIDE, "SCROLLBAR_MODE_HIDE", 3451699170u, 0, 19, &be_const_str_draw_scale); +be_define_const_str(draw_scale, "draw_scale", 3602887006u, 0, 10, &be_const_str_set_bright); +be_define_const_str(set_bright, "set_bright", 499797888u, 0, 10, NULL); +be_define_const_str(KEYBOARD_MODE_NUM, "KEYBOARD_MODE_NUM", 2625982609u, 0, 17, &be_const_str_STYLE_LINE_COLOR); +be_define_const_str(STYLE_LINE_COLOR, "STYLE_LINE_COLOR", 623603885u, 0, 16, &be_const_str_set_bg_color); +be_define_const_str(set_bg_color, "set_bg_color", 3381646455u, 0, 12, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, NULL); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_set_pwd_show_time); +be_define_const_str(set_pwd_show_time, "set_pwd_show_time", 2699027795u, 0, 17, NULL); +be_define_const_str(get_src, "get_src", 403557294u, 0, 7, &be_const_str_set_scale_end_line_width); +be_define_const_str(set_scale_end_line_width, "set_scale_end_line_width", 1121812764u, 0, 24, NULL); +be_define_const_str(STYLE_LINE_ROUNDED, "STYLE_LINE_ROUNDED", 3677440219u, 0, 18, NULL); +be_define_const_str(SPINNER_DIR_FORWARD, "SPINNER_DIR_FORWARD", 660203948u, 0, 19, &be_const_str_get_style_transition_prop_4); +be_define_const_str(get_style_transition_prop_4, "get_style_transition_prop_4", 3454724484u, 0, 27, NULL); +be_define_const_str(CHART_TYPE_LINE, "CHART_TYPE_LINE", 1459459819u, 0, 15, &be_const_str_set_border_post); +be_define_const_str(set_border_post, "set_border_post", 2318575153u, 0, 15, NULL); +be_define_const_str(FS_RES_UNKNOWN, "FS_RES_UNKNOWN", 352331702u, 0, 14, &be_const_str_SM2135_DAT); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_count_children); +be_define_const_str(count_children, "count_children", 1689969950u, 0, 14, &be_const_str_get_focused_btn); +be_define_const_str(get_focused_btn, "get_focused_btn", 1271435326u, 0, 15, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_set_style_local_bg_grad_dir); +be_define_const_str(set_style_local_bg_grad_dir, "set_style_local_bg_grad_dir", 946802226u, 0, 27, &be_const_str_set_style_local_pad_right); +be_define_const_str(set_style_local_pad_right, "set_style_local_pad_right", 1126712366u, 0, 25, &be_const_str_set_style_local_transform_height); +be_define_const_str(set_style_local_transform_height, "set_style_local_transform_height", 2823225328u, 0, 32, NULL); +be_define_const_str(set_style_local_border_post, "set_style_local_border_post", 4148896231u, 0, 27, NULL); +be_define_const_str(get_parent, "get_parent", 350250280u, 0, 10, NULL); +be_define_const_str(get_scrollable, "get_scrollable", 1510903497u, 0, 14, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_set_pad_top); +be_define_const_str(set_pad_top, "set_pad_top", 193376421u, 0, 11, NULL); +be_define_const_str(ALIGN_OUT_TOP_RIGHT, "ALIGN_OUT_TOP_RIGHT", 1193969648u, 0, 19, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL); +be_define_const_str(LABEL_LONG_SROLL_CIRC, "LABEL_LONG_SROLL_CIRC", 179427009u, 0, 21, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_update_mask); +be_define_const_str(update_mask, "update_mask", 833922029u, 0, 11, NULL); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, NULL); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_set_color); +be_define_const_str(set_color, "set_color", 3381219579u, 0, 9, NULL); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); +be_define_const_str(add_element, "add_element", 940011507u, 0, 11, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_set_value_font); +be_define_const_str(set_value_font, "set_value_font", 3846644343u, 0, 14, NULL); +be_define_const_str(get_style_margin_top, "get_style_margin_top", 2201799028u, 0, 20, NULL); +be_define_const_str(CHART_UPDATE_MODE_CIRCULAR, "CHART_UPDATE_MODE_CIRCULAR", 776810859u, 0, 26, &be_const_str_KEY1); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_SM16716_CLK); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_align_mid_y); +be_define_const_str(align_mid_y, "align_mid_y", 1664201395u, 0, 11, &be_const_str_is_focused); +be_define_const_str(is_focused, "is_focused", 2171112339u, 0, 10, &be_const_str_set_chg_rate); +be_define_const_str(set_chg_rate, "set_chg_rate", 1522157679u, 0, 12, &be_const_str_set_text_font); +be_define_const_str(set_text_font, "set_text_font", 724363521u, 0, 13, NULL); +be_define_const_str(CALENDAR_PART_DATE, "CALENDAR_PART_DATE", 1097756842u, 0, 18, &be_const_str_HPMA_RX); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_STYLE_TRANSITION_PROP_1); +be_define_const_str(STYLE_TRANSITION_PROP_1, "STYLE_TRANSITION_PROP_1", 929164024u, 0, 23, NULL); +be_define_const_str(SLIDER_TYPE_NORMAL, "SLIDER_TYPE_NORMAL", 613555481u, 0, 18, &be_const_str_SM2135_CLK); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, NULL); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_STYLE_TRANSFORM_ANGLE); +be_define_const_str(STYLE_TRANSFORM_ANGLE, "STYLE_TRANSFORM_ANGLE", 411149629u, 0, 21, &be_const_str_deg); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_get_one_line); +be_define_const_str(get_one_line, "get_one_line", 3981525171u, 0, 12, &be_const_str_set_anim_time); +be_define_const_str(set_anim_time, "set_anim_time", 1473685427u, 0, 13, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_ARC_TYPE_SYMMETRIC); +be_define_const_str(ARC_TYPE_SYMMETRIC, "ARC_TYPE_SYMMETRIC", 3784955220u, 0, 18, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_set_margin_right); +be_define_const_str(set_margin_right, "set_margin_right", 283278459u, 0, 16, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_STYLE_BG_BLEND_MODE); +be_define_const_str(STYLE_BG_BLEND_MODE, "STYLE_BG_BLEND_MODE", 1458637206u, 0, 19, &be_const_str_STYLE_IMAGE_BLEND_MODE); +be_define_const_str(STYLE_IMAGE_BLEND_MODE, "STYLE_IMAGE_BLEND_MODE", 3457971258u, 0, 22, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_INPUT_PULLDOWN); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, NULL); be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_deinit); be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); -be_define_const_str(DISP_SIZE_EXTRA_LARGE, "DISP_SIZE_EXTRA_LARGE", 3382996246u, 0, 21, &be_const_str_get_series_area); -be_define_const_str(get_series_area, "get_series_area", 1561258251u, 0, 15, &be_const_str_get_style_clip_corner); -be_define_const_str(get_style_clip_corner, "get_style_clip_corner", 352453368u, 0, 21, &be_const_str_get_style_transition_prop_5); -be_define_const_str(get_style_transition_prop_5, "get_style_transition_prop_5", 3471502103u, 0, 27, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_LABEL_LONG_CROP); -be_define_const_str(LABEL_LONG_CROP, "LABEL_LONG_CROP", 4057484127u, 0, 15, &be_const_str_NRF24_CS); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_get_ext_click_pad_top); -be_define_const_str(get_ext_click_pad_top, "get_ext_click_pad_top", 284862450u, 0, 21, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_scr_act); -be_define_const_str(scr_act, "scr_act", 2080211456u, 0, 7, NULL); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_get_style_bg_grad_color); -be_define_const_str(get_style_bg_grad_color, "get_style_bg_grad_color", 4149817886u, 0, 23, &be_const_str_get_ver_res); -be_define_const_str(get_ver_res, "get_ver_res", 4160557208u, 0, 11, NULL); -be_define_const_str(focus, "focus", 337658899u, 0, 5, &be_const_str_set_scrollbar_mode); -be_define_const_str(set_scrollbar_mode, "set_scrollbar_mode", 3373216512u, 0, 18, NULL); -be_define_const_str(get_focus_parent, "get_focus_parent", 1187935525u, 0, 16, NULL); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_get_arc_length); -be_define_const_str(get_arc_length, "get_arc_length", 2763412693u, 0, 14, &be_const_str_set_div_line_count); -be_define_const_str(set_div_line_count, "set_div_line_count", 918956222u, 0, 18, NULL); -be_define_const_str(BLEND_MODE_ADDITIVE, "BLEND_MODE_ADDITIVE", 3732684283u, 0, 19, &be_const_str_set_drag_throw); -be_define_const_str(set_drag_throw, "set_drag_throw", 2511679421u, 0, 14, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_RXD); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_STYLE_BORDER_POST); -be_define_const_str(STYLE_BORDER_POST, "STYLE_BORDER_POST", 1815444696u, 0, 17, NULL); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); -be_define_const_str(BTN_STATE_CHECKED_PRESSED, "BTN_STATE_CHECKED_PRESSED", 2837756846u, 0, 25, &be_const_str_SSD1331_CS); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(get_highlighted_dates_num, "get_highlighted_dates_num", 82319360u, 0, 25, &be_const_str_set_textarea); -be_define_const_str(set_textarea, "set_textarea", 1978833518u, 0, 12, NULL); -be_define_const_str(set_clip_corner, "set_clip_corner", 2280572814u, 0, 15, &be_const_str_set_cursor_manage); -be_define_const_str(set_cursor_manage, "set_cursor_manage", 2587391084u, 0, 17, &be_const_str_set_style_local_border_width); -be_define_const_str(set_style_local_border_width, "set_style_local_border_width", 4234107199u, 0, 28, NULL); -be_define_const_str(set_base_dir, "set_base_dir", 1813064609u, 0, 12, NULL); -be_define_const_str(STYLE_PAD_TOP, "STYLE_PAD_TOP", 2731711064u, 0, 13, NULL); -be_define_const_str(KEYBOARD_MODE_TEXT_LOWER, "KEYBOARD_MODE_TEXT_LOWER", 3755201214u, 0, 24, &be_const_str_PULLDOWN); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_set_style_local_bg_main_stop); -be_define_const_str(set_style_local_bg_main_stop, "set_style_local_bg_main_stop", 2599091600u, 0, 28, NULL); -be_define_const_str(MAROON, "MAROON", 770976181u, 0, 6, &be_const_str_STYLE_TRANSFORM_ZOOM); -be_define_const_str(STYLE_TRANSFORM_ZOOM, "STYLE_TRANSFORM_ZOOM", 224871941u, 0, 20, &be_const_str_get_focused_obj); -be_define_const_str(get_focused_obj, "get_focused_obj", 208302839u, 0, 15, &be_const_str_get_value); -be_define_const_str(get_value, "get_value", 3844420137u, 0, 9, &be_const_str_set_margin_left); -be_define_const_str(set_margin_left, "set_margin_left", 4194347462u, 0, 15, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_get_hsv); -be_define_const_str(get_hsv, "get_hsv", 774943805u, 0, 7, &be_const_str_get_prev_btn); -be_define_const_str(get_prev_btn, "get_prev_btn", 4150536586u, 0, 12, &be_const_str_set_outline_blend_mode); -be_define_const_str(set_outline_blend_mode, "set_outline_blend_mode", 4273381132u, 0, 22, NULL); -be_define_const_str(CHART_PART_CURSOR, "CHART_PART_CURSOR", 2123603184u, 0, 17, &be_const_str_set_mirror); -be_define_const_str(set_mirror, "set_mirror", 1608447367u, 0, 10, &be_const_str_set_pad_left); -be_define_const_str(set_pad_left, "set_pad_left", 3931796175u, 0, 12, &be_const_str_set_style_local_bg_color); -be_define_const_str(set_style_local_bg_color, "set_style_local_bg_color", 3796704273u, 0, 24, NULL); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_create); -be_define_const_str(create, "create", 649812317u, 0, 6, &be_const_str_get_style_value_str); -be_define_const_str(get_style_value_str, "get_style_value_str", 967747319u, 0, 19, NULL); -be_define_const_str(set_cell_value, "set_cell_value", 3982436570u, 0, 14, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(get_style_pattern_image, "get_style_pattern_image", 2402970102u, 0, 23, &be_const_str_set_cell_type); -be_define_const_str(set_cell_type, "set_cell_type", 1502464221u, 0, 13, NULL); -be_define_const_str(STYLE_VALUE_LETTER_SPACE, "STYLE_VALUE_LETTER_SPACE", 2129682704u, 0, 24, &be_const_str_set_btn_ctrl); -be_define_const_str(set_btn_ctrl, "set_btn_ctrl", 3999876128u, 0, 12, &be_const_str_set_style_local_value_color); -be_define_const_str(set_style_local_value_color, "set_style_local_value_color", 2695342403u, 0, 27, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_set_padding_left); -be_define_const_str(set_padding_left, "set_padding_left", 1230478487u, 0, 16, NULL); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_SPINNER_DIR_FORWARD); -be_define_const_str(SPINNER_DIR_FORWARD, "SPINNER_DIR_FORWARD", 660203948u, 0, 19, &be_const_str_get_one_line); -be_define_const_str(get_one_line, "get_one_line", 3981525171u, 0, 12, &be_const_str_off); -be_define_const_str(off, "off", 2872740362u, 0, 3, NULL); -be_define_const_str(set_style_local_value_ofs_y, "set_style_local_value_ofs_y", 3040892578u, 0, 27, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_get_recolor); -be_define_const_str(get_recolor, "get_recolor", 4128330436u, 0, 11, &be_const_str_set_col_width); -be_define_const_str(set_col_width, "set_col_width", 28420413u, 0, 13, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_set_ext_click_area); -be_define_const_str(set_ext_click_area, "set_ext_click_area", 1298742324u, 0, 18, &be_const_str_set_transition_delay); -be_define_const_str(set_transition_delay, "set_transition_delay", 2787845599u, 0, 20, NULL); -be_define_const_str(get_accepted_chars, "get_accepted_chars", 2210030087u, 0, 18, &be_const_str_set_transform_width); -be_define_const_str(set_transform_width, "set_transform_width", 3190371031u, 0, 19, NULL); -be_define_const_str(get_style_pattern_recolor_opa, "get_style_pattern_recolor_opa", 1906150798u, 0, 29, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(get_btn_ctrl, "get_btn_ctrl", 370184444u, 0, 12, &be_const_str_set_value_align); -be_define_const_str(set_value_align, "set_value_align", 1467667831u, 0, 15, NULL); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); -be_define_const_str(CPICKER_TYPE_RECT, "CPICKER_TYPE_RECT", 126543004u, 0, 17, &be_const_str_EVENT_DRAG_BEGIN); -be_define_const_str(EVENT_DRAG_BEGIN, "EVENT_DRAG_BEGIN", 25766504u, 0, 16, &be_const_str_EVENT_DRAG_END); -be_define_const_str(EVENT_DRAG_END, "EVENT_DRAG_END", 3617672228u, 0, 14, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_set_line_opa); -be_define_const_str(set_line_opa, "set_line_opa", 2983219519u, 0, 12, &be_const_str_set_range); -be_define_const_str(set_range, "set_range", 228092793u, 0, 9, NULL); -be_define_const_str(STYLE_TRANSITION_PATH, "STYLE_TRANSITION_PATH", 3341574330u, 0, 21, &be_const_str_get_style_shadow_spread); -be_define_const_str(get_style_shadow_spread, "get_style_shadow_spread", 1343265468u, 0, 23, NULL); -be_define_const_str(STYLE_TEXT_OPA, "STYLE_TEXT_OPA", 3094351509u, 0, 14, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, NULL); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(FS_RES_NOT_IMP, "FS_RES_NOT_IMP", 3493778168u, 0, 14, &be_const_str_GRAD_DIR_HOR); -be_define_const_str(GRAD_DIR_HOR, "GRAD_DIR_HOR", 2383101491u, 0, 12, &be_const_str_get_ext_draw_pad); -be_define_const_str(get_ext_draw_pad, "get_ext_draw_pad", 3775653652u, 0, 16, &be_const_str_get_max_value); -be_define_const_str(get_max_value, "get_max_value", 2625343304u, 0, 13, NULL); -be_define_const_str(set_cell_value_fmt, "set_cell_value_fmt", 355090466u, 0, 18, NULL); -be_define_const_str(KEY_RIGHT, "KEY_RIGHT", 3690237745u, 0, 9, NULL); -be_define_const_str(get_pwd_show_time, "get_pwd_show_time", 2965915687u, 0, 17, &be_const_str_set_next); -be_define_const_str(set_next, "set_next", 1039873613u, 0, 8, &be_const_str_set_start_angle); -be_define_const_str(set_start_angle, "set_start_angle", 3152567416u, 0, 15, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(STATE_CHECKED, "STATE_CHECKED", 136056964u, 0, 13, NULL); -be_define_const_str(get_y, "get_y", 1205519667u, 0, 5, &be_const_str_set_bg_color); -be_define_const_str(set_bg_color, "set_bg_color", 3381646455u, 0, 12, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, NULL); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_set_one_line); -be_define_const_str(set_one_line, "set_one_line", 3397406135u, 0, 12, NULL); -be_define_const_str(DROPDOWN_PART_SCROLLBAR, "DROPDOWN_PART_SCROLLBAR", 699787861u, 0, 23, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_set_line_color); -be_define_const_str(set_line_color, "set_line_color", 2944146362u, 0, 14, NULL); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, NULL); -be_define_const_str(STYLE_PATTERN_REPEAT, "STYLE_PATTERN_REPEAT", 721793275u, 0, 20, &be_const_str_get_style_shadow_opa); -be_define_const_str(get_style_shadow_opa, "get_style_shadow_opa", 2392646767u, 0, 20, &be_const_str_init_draw_img_dsc); -be_define_const_str(init_draw_img_dsc, "init_draw_img_dsc", 1278847223u, 0, 17, NULL); -be_define_const_str(handle_get_type_signal, "handle_get_type_signal", 3735097350u, 0, 22, NULL); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_STYLE_IMAGE_RECOLOR_OPA); -be_define_const_str(STYLE_IMAGE_RECOLOR_OPA, "STYLE_IMAGE_RECOLOR_OPA", 3785340258u, 0, 23, &be_const_str_set_auto_fit); -be_define_const_str(set_auto_fit, "set_auto_fit", 1407948747u, 0, 12, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, NULL); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_set_style_local_margin_bottom); -be_define_const_str(set_style_local_margin_bottom, "set_style_local_margin_bottom", 3687231326u, 0, 29, &be_const_str_set_style_local_pattern_blend_mode); -be_define_const_str(set_style_local_pattern_blend_mode, "set_style_local_pattern_blend_mode", 3861434146u, 0, 34, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, NULL); -be_define_const_str(STYLE_TRANSFORM_HEIGHT, "STYLE_TRANSFORM_HEIGHT", 953009101u, 0, 22, NULL); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_get_style_line_color); -be_define_const_str(get_style_line_color, "get_style_line_color", 805371932u, 0, 20, &be_const_str_on_edge); -be_define_const_str(on_edge, "on_edge", 1159443540u, 0, 7, NULL); -be_define_const_str(CPICKER_COLOR_MODE_SATURATION, "CPICKER_COLOR_MODE_SATURATION", 1463184715u, 0, 29, &be_const_str_LABEL_LONG_SROLL_CIRC); -be_define_const_str(LABEL_LONG_SROLL_CIRC, "LABEL_LONG_SROLL_CIRC", 179427009u, 0, 21, &be_const_str_STYLE_BORDER_BLEND_MODE); -be_define_const_str(STYLE_BORDER_BLEND_MODE, "STYLE_BORDER_BLEND_MODE", 3752388357u, 0, 23, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_set_btns_pos); -be_define_const_str(set_btns_pos, "set_btns_pos", 3991891940u, 0, 12, &be_const_str_text_is_selected); -be_define_const_str(text_is_selected, "text_is_selected", 3422750433u, 0, 16, NULL); -be_define_const_str(STATE_HOVERED, "STATE_HOVERED", 1864667050u, 0, 13, &be_const_str_set_style_local_line_rounded); -be_define_const_str(set_style_local_line_rounded, "set_style_local_line_rounded", 3167871810u, 0, 28, NULL); -be_define_const_str(set_style_local_value_font, "set_style_local_value_font", 117758217u, 0, 26, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_set_symbol); -be_define_const_str(set_symbol, "set_symbol", 2254998928u, 0, 10, NULL); -be_define_const_str(set_wrap, "set_wrap", 776352320u, 0, 8, NULL); -be_define_const_str(STYLE_IMAGE_RECOLOR, "STYLE_IMAGE_RECOLOR", 1769022527u, 0, 19, &be_const_str_STYLE_TRANSITION_PROP_1); -be_define_const_str(STYLE_TRANSITION_PROP_1, "STYLE_TRANSITION_PROP_1", 929164024u, 0, 23, &be_const_str_get_style_value_ofs_x); -be_define_const_str(get_style_value_ofs_x, "get_style_value_ofs_x", 4017645761u, 0, 21, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_OLED_RESET); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_DEEPSLEEP); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_SPINNER_DIR_BACKWARD); -be_define_const_str(SPINNER_DIR_BACKWARD, "SPINNER_DIR_BACKWARD", 4078587842u, 0, 20, &be_const_str_init_points); -be_define_const_str(init_points, "init_points", 718504203u, 0, 11, NULL); -be_define_const_str(GESTURE_DIR_RIGHT, "GESTURE_DIR_RIGHT", 3761728861u, 0, 17, &be_const_str_TEMPL_STYLE_Y); -be_define_const_str(TEMPL_STYLE_Y, "TEMPL_STYLE_Y", 1997423835u, 0, 13, NULL); -be_define_const_str(set_shadow_opa, "set_shadow_opa", 1336611849u, 0, 14, &be_const_str_set_style_local_radius); -be_define_const_str(set_style_local_radius, "set_style_local_radius", 1410446896u, 0, 22, NULL); -be_define_const_str(hide_series, "hide_series", 3053662735u, 0, 11, &be_const_str_set_text_sel_bg_color); -be_define_const_str(set_text_sel_bg_color, "set_text_sel_bg_color", 3929347886u, 0, 21, NULL); -be_define_const_str(KEY_UP, "KEY_UP", 1961213356u, 0, 6, NULL); -be_define_const_str(PAGE_EDGE_LEFT, "PAGE_EDGE_LEFT", 4240364242u, 0, 14, &be_const_str_SYMBOL_OK); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_TXT_CMD_STATE_PAR); -be_define_const_str(TXT_CMD_STATE_PAR, "TXT_CMD_STATE_PAR", 159232374u, 0, 17, NULL); -be_define_const_str(LABEL_LONG_SROLL, "LABEL_LONG_SROLL", 3854826277u, 0, 16, NULL); -be_define_const_str(CHART_TYPE_NONE, "CHART_TYPE_NONE", 1127256103u, 0, 15, &be_const_str_RFRECV); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_SSPI_SCLK); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_set_event_cb); -be_define_const_str(set_event_cb, "set_event_cb", 3611711604u, 0, 12, &be_const_str_set_style_local_pad_left); -be_define_const_str(set_style_local_pad_left, "set_style_local_pad_left", 279437461u, 0, 24, NULL); -be_define_const_str(STYLE_TRANSFORM_WIDTH, "STYLE_TRANSFORM_WIDTH", 2096880210u, 0, 21, &be_const_str_set_style_local_shadow_ofs_x); -be_define_const_str(set_style_local_shadow_ofs_x, "set_style_local_shadow_ofs_x", 1619093604u, 0, 28, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(ALIGN_OUT_BOTTOM_LEFT, "ALIGN_OUT_BOTTOM_LEFT", 1302083659u, 0, 21, &be_const_str_MIEL_HVAC_RX); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, NULL); -be_define_const_str(BORDER_SIDE_FULL, "BORDER_SIDE_FULL", 703648713u, 0, 16, &be_const_str_DSB_OUT); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_get_symbol); -be_define_const_str(get_symbol, "get_symbol", 2697453548u, 0, 10, NULL); -be_define_const_str(get_style_margin_left, "get_style_margin_left", 1765248440u, 0, 21, &be_const_str_get_style_scale_grad_color); -be_define_const_str(get_style_scale_grad_color, "get_style_scale_grad_color", 715761969u, 0, 26, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_STYLE_OPA_SCALE); -be_define_const_str(STYLE_OPA_SCALE, "STYLE_OPA_SCALE", 4014485970u, 0, 15, &be_const_str_STYLE_TRANSITION_PROP_2); -be_define_const_str(STYLE_TRANSITION_PROP_2, "STYLE_TRANSITION_PROP_2", 979496881u, 0, 23, &be_const_str_lv_tabview); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(add_option, "add_option", 3444380864u, 0, 10, &be_const_str_get_needle_img_pivot_x); -be_define_const_str(get_needle_img_pivot_x, "get_needle_img_pivot_x", 1521736283u, 0, 22, NULL); -be_define_const_str(set_transform_height, "set_transform_height", 3869973274u, 0, 20, NULL); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, NULL); -be_define_const_str(clear_options, "clear_options", 1509347603u, 0, 13, &be_const_str_set_antialias); -be_define_const_str(set_antialias, "set_antialias", 1998560096u, 0, 13, NULL); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_set_scrl_layout); -be_define_const_str(set_scrl_layout, "set_scrl_layout", 2051800603u, 0, 15, NULL); -be_define_const_str(GAUGE_PART_NEEDLE, "GAUGE_PART_NEEDLE", 154997366u, 0, 17, NULL); -be_define_const_str(BORDER_SIDE_NONE, "BORDER_SIDE_NONE", 3808959734u, 0, 16, &be_const_str_get_tab_act); -be_define_const_str(get_tab_act, "get_tab_act", 2665251652u, 0, 11, NULL); -be_define_const_str(get_click_focus, "get_click_focus", 1418740299u, 0, 15, &be_const_str_get_style_opa_scale); -be_define_const_str(get_style_opa_scale, "get_style_opa_scale", 568621865u, 0, 19, &be_const_str_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); -be_define_const_str(set_design_cb, "set_design_cb", 1469311634u, 0, 13, NULL); -be_define_const_str(CHART_UPDATE_MODE_CIRCULAR, "CHART_UPDATE_MODE_CIRCULAR", 776810859u, 0, 26, &be_const_str_OPA_10); -be_define_const_str(OPA_10, "OPA_10", 1908083683u, 0, 6, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_get_style_shadow_color); -be_define_const_str(get_style_shadow_color, "get_style_shadow_color", 920648234u, 0, 22, NULL); -be_define_const_str(SPINNER_TYPE_CONSTANT_ARC, "SPINNER_TYPE_CONSTANT_ARC", 2728560979u, 0, 25, &be_const_str_set_needle_img); -be_define_const_str(set_needle_img, "set_needle_img", 1214192915u, 0, 14, NULL); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_set_rollover); -be_define_const_str(set_rollover, "set_rollover", 1838959037u, 0, 12, NULL); -be_define_const_str(set_color_mode_fixed, "set_color_mode_fixed", 802591178u, 0, 20, &be_const_str_set_fit2); -be_define_const_str(set_fit2, "set_fit2", 4226206571u, 0, 8, NULL); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_get_max_height); -be_define_const_str(get_max_height, "get_max_height", 3803847844u, 0, 14, NULL); -be_define_const_str(set_one_check, "set_one_check", 1355948919u, 0, 13, NULL); -be_define_const_str(EVENT_CLICKED, "EVENT_CLICKED", 243475129u, 0, 13, &be_const_str_EVENT_FOCUSED); -be_define_const_str(EVENT_FOCUSED, "EVENT_FOCUSED", 3253401785u, 0, 13, &be_const_str_OPA_30); -be_define_const_str(OPA_30, "OPA_30", 95806641u, 0, 6, &be_const_str_get_layout); -be_define_const_str(get_layout, "get_layout", 2537311278u, 0, 10, NULL); -be_define_const_str(KEYBOARD_MODE_SPECIAL, "KEYBOARD_MODE_SPECIAL", 968590554u, 0, 21, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_OUTPUT_HI); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SYMBOL_DOWN); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, NULL); -be_define_const_str(STATE_DISABLED, "STATE_DISABLED", 3398267003u, 0, 14, &be_const_str_STYLE_BG_OPA); -be_define_const_str(STYLE_BG_OPA, "STYLE_BG_OPA", 1487941245u, 0, 12, &be_const_str_set_style_local_transition_prop_4); -be_define_const_str(set_style_local_transition_prop_4, "set_style_local_transition_prop_4", 2501649248u, 0, 33, NULL); -be_define_const_str(get_auto_fit, "get_auto_fit", 2158692767u, 0, 12, NULL); -be_define_const_str(GESTURE_DIR_TOP, "GESTURE_DIR_TOP", 84881028u, 0, 15, &be_const_str_get_style_line_dash_gap); -be_define_const_str(get_style_line_dash_gap, "get_style_line_dash_gap", 1205629734u, 0, 23, NULL); -be_define_const_str(def_event_cb, "def_event_cb", 3544166485u, 0, 12, NULL); -be_define_const_str(set_px, "set_px", 1137035068u, 0, 6, NULL); -be_define_const_str(list_get_local_style, "list_get_local_style", 2313938368u, 0, 20, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_set_cell_align); -be_define_const_str(set_cell_align, "set_cell_align", 3036710638u, 0, 14, NULL); -be_define_const_str(get_style_text_color, "get_style_text_color", 1013168305u, 0, 20, &be_const_str_list_get_style); -be_define_const_str(list_get_style, "list_get_style", 2060904236u, 0, 14, NULL); -be_define_const_str(BTNMATRIX_CTRL_CHECKABLE, "BTNMATRIX_CTRL_CHECKABLE", 2892484613u, 0, 24, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(get_style_outline_pad, "get_style_outline_pad", 4225397162u, 0, 21, &be_const_str_set_style_local_transition_delay); -be_define_const_str(set_style_local_transition_delay, "set_style_local_transition_delay", 958588397u, 0, 32, NULL); -be_define_const_str(set_update_mode, "set_update_mode", 2089081509u, 0, 15, NULL); -be_define_const_str(FIT_PARENT, "FIT_PARENT", 3852740121u, 0, 10, NULL); -be_define_const_str(fade_out, "fade_out", 215415112u, 0, 8, &be_const_str_get_style_margin_right); -be_define_const_str(get_style_margin_right, "get_style_margin_right", 2672767757u, 0, 22, NULL); -be_define_const_str(ALIGN_OUT_LEFT_BOTTOM, "ALIGN_OUT_LEFT_BOTTOM", 1578004935u, 0, 21, &be_const_str_LIST_PART_BG); -be_define_const_str(LIST_PART_BG, "LIST_PART_BG", 1920031543u, 0, 12, &be_const_str_STYLE_TEXT_SEL_BG_COLOR); -be_define_const_str(STYLE_TEXT_SEL_BG_COLOR, "STYLE_TEXT_SEL_BG_COLOR", 2758212579u, 0, 23, &be_const_str_add_btn_right); -be_define_const_str(add_btn_right, "add_btn_right", 2154922694u, 0, 13, &be_const_str_get_size); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, NULL); -be_define_const_str(STYLE_BORDER_COLOR, "STYLE_BORDER_COLOR", 809973177u, 0, 18, &be_const_str_STYLE_OUTLINE_OPA); -be_define_const_str(STYLE_OUTLINE_OPA, "STYLE_OUTLINE_OPA", 1357184754u, 0, 17, NULL); -be_define_const_str(get_placeholder_text, "get_placeholder_text", 1148345333u, 0, 20, NULL); -be_define_const_str(CPICKER_TYPE_DISC, "CPICKER_TYPE_DISC", 2110878147u, 0, 17, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(STYLE_SHADOW_BLEND_MODE, "STYLE_SHADOW_BLEND_MODE", 4197731411u, 0, 23, NULL); -be_define_const_str(get_style_bg_grad_stop, "get_style_bg_grad_stop", 1023453943u, 0, 22, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, NULL); -be_define_const_str(get_cursor_click_pos, "get_cursor_click_pos", 3249294464u, 0, 20, &be_const_str_get_drag); -be_define_const_str(get_drag, "get_drag", 1996600010u, 0, 8, &be_const_str_get_style_shadow_width); -be_define_const_str(get_style_shadow_width, "get_style_shadow_width", 4237112141u, 0, 22, &be_const_str_is_char_under_pos); -be_define_const_str(is_char_under_pos, "is_char_under_pos", 2744967102u, 0, 17, NULL); -be_define_const_str(ALIGN_OUT_LEFT_MID, "ALIGN_OUT_LEFT_MID", 4283557662u, 0, 18, &be_const_str_STYLE_VALUE_ALIGN); -be_define_const_str(STYLE_VALUE_ALIGN, "STYLE_VALUE_ALIGN", 3531731246u, 0, 17, &be_const_str_TASMOTACLIENT_TXD); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_set_style_local_transform_width); -be_define_const_str(set_style_local_transform_width, "set_style_local_transform_width", 3850555169u, 0, 31, NULL); -be_define_const_str(set_cursor_point, "set_cursor_point", 4201331267u, 0, 16, NULL); -be_define_const_str(get_style_transition_delay, "get_style_transition_delay", 1536173465u, 0, 26, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_STYLE_TEXT_LINE_SPACE); -be_define_const_str(STYLE_TEXT_LINE_SPACE, "STYLE_TEXT_LINE_SPACE", 4185649482u, 0, 21, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_get_style_value_opa); -be_define_const_str(get_style_value_opa, "get_style_value_opa", 1671026074u, 0, 19, NULL); -be_define_const_str(EVENT_PRESSED, "EVENT_PRESSED", 3734627670u, 0, 13, &be_const_str_STYLE_LINE_DASH_WIDTH); -be_define_const_str(STYLE_LINE_DASH_WIDTH, "STYLE_LINE_DASH_WIDTH", 1366928369u, 0, 21, &be_const_str_clean_tab); -be_define_const_str(clean_tab, "clean_tab", 3280421962u, 0, 9, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_get_tab); -be_define_const_str(get_tab, "get_tab", 2415176615u, 0, 7, &be_const_str_set_style_local_outline_pad); -be_define_const_str(set_style_local_outline_pad, "set_style_local_outline_pad", 3480414734u, 0, 27, &be_const_str_set_style_local_transition_prop_2); -be_define_const_str(set_style_local_transition_prop_2, "set_style_local_transition_prop_2", 2602314962u, 0, 33, NULL); -be_define_const_str(GRAD_DIR_NONE, "GRAD_DIR_NONE", 1627825480u, 0, 13, &be_const_str_SLIDER_TYPE_RANGE); -be_define_const_str(SLIDER_TYPE_RANGE, "SLIDER_TYPE_RANGE", 1380197143u, 0, 17, NULL); -be_define_const_str(LAYOUT_COLUMN_MID, "LAYOUT_COLUMN_MID", 669575067u, 0, 17, NULL); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(get_style_pad_inner, "get_style_pad_inner", 213811544u, 0, 19, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_SYMBOL_PLAY); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_get_y_from_index); -be_define_const_str(get_y_from_index, "get_y_from_index", 2777682943u, 0, 16, &be_const_str_set_pad_bottom); -be_define_const_str(set_pad_bottom, "set_pad_bottom", 900543569u, 0, 14, &be_const_str_set_showed_date); -be_define_const_str(set_showed_date, "set_showed_date", 158767501u, 0, 15, NULL); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); -be_define_const_str(get_bg_angle_start, "get_bg_angle_start", 1794378932u, 0, 18, &be_const_str_stop_auto_close); -be_define_const_str(stop_auto_close, "stop_auto_close", 3282451958u, 0, 15, NULL); -be_define_const_str(STYLE_MARGIN_TOP, "STYLE_MARGIN_TOP", 4150683665u, 0, 16, &be_const_str_set_y_tick_texts); -be_define_const_str(set_y_tick_texts, "set_y_tick_texts", 1388790058u, 0, 16, NULL); -be_define_const_str(CALENDAR_PART_HEADER, "CALENDAR_PART_HEADER", 1199188911u, 0, 20, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_clean); -be_define_const_str(clean, "clean", 1349386046u, 0, 5, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(ALIGN_IN_TOP_RIGHT, "ALIGN_IN_TOP_RIGHT", 3273089785u, 0, 18, NULL); -be_define_const_str(ARC_TYPE_NORMAL, "ARC_TYPE_NORMAL", 1554666574u, 0, 15, &be_const_str_STYLE_BORDER_WIDTH); -be_define_const_str(STYLE_BORDER_WIDTH, "STYLE_BORDER_WIDTH", 2777818658u, 0, 18, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_align_mid_y); -be_define_const_str(align_mid_y, "align_mid_y", 1664201395u, 0, 11, &be_const_str_set_image_blend_mode); -be_define_const_str(set_image_blend_mode, "set_image_blend_mode", 2083195553u, 0, 20, NULL); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); -be_define_const_str(get_point_id, "get_point_id", 2837084878u, 0, 12, &be_const_str_set_ext_array); -be_define_const_str(set_ext_array, "set_ext_array", 3579382093u, 0, 13, NULL); -be_define_const_str(EVENT_DELETE, "EVENT_DELETE", 282828603u, 0, 12, &be_const_str_get_from_btn); -be_define_const_str(get_from_btn, "get_from_btn", 2802016263u, 0, 12, NULL); -be_define_const_str(ARC_PART_KNOB, "ARC_PART_KNOB", 1431875030u, 0, 13, &be_const_str_STYLE_OUTLINE_COLOR); -be_define_const_str(STYLE_OUTLINE_COLOR, "STYLE_OUTLINE_COLOR", 2723763111u, 0, 19, &be_const_str_set_critical_value); -be_define_const_str(set_critical_value, "set_critical_value", 1194587727u, 0, 18, &be_const_str_set_value_blend_mode); +be_define_const_str(STYLE_SHADOW_BLEND_MODE, "STYLE_SHADOW_BLEND_MODE", 4197731411u, 0, 23, &be_const_str_set_transform_width); +be_define_const_str(set_transform_width, "set_transform_width", 3190371031u, 0, 19, &be_const_str_set_value_blend_mode); be_define_const_str(set_value_blend_mode, "set_value_blend_mode", 86539269u, 0, 20, NULL); -be_define_const_str(get_protect, "get_protect", 4241180167u, 0, 11, &be_const_str_set_style_local_line_dash_width); -be_define_const_str(set_style_local_line_dash_width, "set_style_local_line_dash_width", 3177951154u, 0, 31, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_GESTURE_DIR_BOTTOM); -be_define_const_str(GESTURE_DIR_BOTTOM, "GESTURE_DIR_BOTTOM", 336208834u, 0, 18, &be_const_str_LAYOUT_ROW_MID); -be_define_const_str(LAYOUT_ROW_MID, "LAYOUT_ROW_MID", 932854697u, 0, 14, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_SOLAXX1_TX); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_SYMBOL_MINUS); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_add_style); -be_define_const_str(add_style, "add_style", 2931235026u, 0, 9, NULL); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(STYLE_SHADOW_SPREAD, "STYLE_SHADOW_SPREAD", 3685821355u, 0, 19, &be_const_str_set_cursor_hidden); -be_define_const_str(set_cursor_hidden, "set_cursor_hidden", 647911755u, 0, 17, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(ALIGN_OUT_TOP_MID, "ALIGN_OUT_TOP_MID", 1680148984u, 0, 17, &be_const_str_KEYBOARD_MODE_NUM); -be_define_const_str(KEYBOARD_MODE_NUM, "KEYBOARD_MODE_NUM", 2625982609u, 0, 17, &be_const_str_get_draw_rect_ext_pad_size); -be_define_const_str(get_draw_rect_ext_pad_size, "get_draw_rect_ext_pad_size", 3223809685u, 0, 26, NULL); -be_define_const_str(LABEL_LONG_EXPAND, "LABEL_LONG_EXPAND", 2357238585u, 0, 17, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, NULL); -be_define_const_str(set_value_line_space, "set_value_line_space", 355798025u, 0, 20, &be_const_str_set_y); -be_define_const_str(set_y, "set_y", 1866178391u, 0, 5, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_STYLE_BG_GRAD_COLOR); -be_define_const_str(STYLE_BG_GRAD_COLOR, "STYLE_BG_GRAD_COLOR", 444266945u, 0, 19, &be_const_str_STYLE_TRANSITION_TIME); -be_define_const_str(STYLE_TRANSITION_TIME, "STYLE_TRANSITION_TIME", 3058729752u, 0, 21, &be_const_str_TEXT_DECOR_UNDERLINE); -be_define_const_str(TEXT_DECOR_UNDERLINE, "TEXT_DECOR_UNDERLINE", 1425097719u, 0, 20, &be_const_str_get_fit_left); -be_define_const_str(get_fit_left, "get_fit_left", 2671576953u, 0, 12, NULL); -be_define_const_str(ALIGN_OUT_TOP_LEFT, "ALIGN_OUT_TOP_LEFT", 1073920927u, 0, 18, &be_const_str_EVENT_CANCEL); -be_define_const_str(EVENT_CANCEL, "EVENT_CANCEL", 3703374138u, 0, 12, &be_const_str_get_cursor_manage); -be_define_const_str(get_cursor_manage, "get_cursor_manage", 2216849296u, 0, 17, &be_const_str_set_bg_start_angle); -be_define_const_str(set_bg_start_angle, "set_bg_start_angle", 2285338772u, 0, 18, NULL); -be_define_const_str(set_options, "set_options", 2975436170u, 0, 11, &be_const_str_set_style_local_bg_opa); -be_define_const_str(set_style_local_bg_opa, "set_style_local_bg_opa", 1720245992u, 0, 22, &be_const_str_set_style_local_value_letter_space); -be_define_const_str(set_style_local_value_letter_space, "set_style_local_value_letter_space", 826246017u, 0, 34, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(BTN_STATE_CHECKED_DISABLED, "BTN_STATE_CHECKED_DISABLED", 1537172432u, 0, 26, &be_const_str_LABEL_ALIGN_RIGHT); -be_define_const_str(LABEL_ALIGN_RIGHT, "LABEL_ALIGN_RIGHT", 3127457722u, 0, 17, &be_const_str_set_content_size); -be_define_const_str(set_content_size, "set_content_size", 10638115u, 0, 16, NULL); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_set_text_blend_mode); -be_define_const_str(set_text_blend_mode, "set_text_blend_mode", 1236604715u, 0, 19, NULL); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_get_style_shadow_ofs_x); -be_define_const_str(get_style_shadow_ofs_x, "get_style_shadow_ofs_x", 2320381696u, 0, 22, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_set_pattern_repeat); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_get_ext_draw_pad); +be_define_const_str(get_ext_draw_pad, "get_ext_draw_pad", 3775653652u, 0, 16, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(CPICKER_COLOR_MODE_HUE, "CPICKER_COLOR_MODE_HUE", 1583032607u, 0, 22, &be_const_str_set_bg_grad_stop); +be_define_const_str(set_bg_grad_stop, "set_bg_grad_stop", 1329650389u, 0, 16, NULL); +be_define_const_str(KEYBOARD_PART_BG, "KEYBOARD_PART_BG", 3167702710u, 0, 16, &be_const_str_SR04_ECHO); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_allocate_ext_attr); +be_define_const_str(allocate_ext_attr, "allocate_ext_attr", 915956424u, 0, 17, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_DHT11); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_SPINNER_TYPE_CONSTANT_ARC); +be_define_const_str(SPINNER_TYPE_CONSTANT_ARC, "SPINNER_TYPE_CONSTANT_ARC", 2728560979u, 0, 25, &be_const_str_SYMBOL_LEFT); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_PROTECT_NONE); +be_define_const_str(PROTECT_NONE, "PROTECT_NONE", 2861685391u, 0, 12, &be_const_str_get_text); +be_define_const_str(get_text, "get_text", 3133031679u, 0, 8, &be_const_str_set_opa_scale); +be_define_const_str(set_opa_scale, "set_opa_scale", 1694654867u, 0, 13, NULL); +be_define_const_str(CHART_PART_BG, "CHART_PART_BG", 990069269u, 0, 13, &be_const_str_STYLE_BORDER_BLEND_MODE); +be_define_const_str(STYLE_BORDER_BLEND_MODE, "STYLE_BORDER_BLEND_MODE", 3752388357u, 0, 23, &be_const_str_get_cell_crop); +be_define_const_str(get_cell_crop, "get_cell_crop", 2916382555u, 0, 13, &be_const_str_get_cursor_point); +be_define_const_str(get_cursor_point, "get_cursor_point", 2365780231u, 0, 16, &be_const_str_get_style_shadow_opa); +be_define_const_str(get_style_shadow_opa, "get_style_shadow_opa", 2392646767u, 0, 20, NULL); +be_define_const_str(align_y, "align_y", 3718435550u, 0, 7, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); +be_define_const_str(SILVER, "SILVER", 1471925664u, 0, 6, &be_const_str_get_col_cnt); +be_define_const_str(get_col_cnt, "get_col_cnt", 2182323590u, 0, 11, NULL); +be_define_const_str(get_fit_left, "get_fit_left", 2671576953u, 0, 12, &be_const_str_set_style_local_value_color); +be_define_const_str(set_style_local_value_color, "set_style_local_value_color", 2695342403u, 0, 27, NULL); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_get_style_text_sel_bg_color); +be_define_const_str(get_style_text_sel_bg_color, "get_style_text_sel_bg_color", 1889477676u, 0, 27, NULL); +be_define_const_str(CHART_AXIS_DRAW_LAST_TICK, "CHART_AXIS_DRAW_LAST_TICK", 811055023u, 0, 25, &be_const_str_OPA_90); +be_define_const_str(OPA_90, "OPA_90", 27710427u, 0, 6, NULL); +be_define_const_str(FS_RES_NOT_IMP, "FS_RES_NOT_IMP", 3493778168u, 0, 14, NULL); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_get_style_transition_time); +be_define_const_str(get_style_transition_time, "get_style_transition_time", 3928047247u, 0, 25, &be_const_str_set_transition_prop_1); +be_define_const_str(set_transition_prop_1, "set_transition_prop_1", 3033901345u, 0, 21, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(set_line_dash_width, "set_line_dash_width", 347528132u, 0, 19, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_get_style_outline_color); +be_define_const_str(get_style_outline_color, "get_style_outline_color", 3936324952u, 0, 23, &be_const_str_set_rotation); +be_define_const_str(set_rotation, "set_rotation", 2130936338u, 0, 12, &be_const_str_set_text_opa); +be_define_const_str(set_text_opa, "set_text_opa", 3995853510u, 0, 12, NULL); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_clean); +be_define_const_str(clean, "clean", 1349386046u, 0, 5, &be_const_str_set_cursor_click_pos); +be_define_const_str(set_cursor_click_pos, "set_cursor_click_pos", 641192476u, 0, 20, NULL); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_set_tasmota_logo); +be_define_const_str(set_tasmota_logo, "set_tasmota_logo", 4090375591u, 0, 16, NULL); be_define_const_str(set_pattern_repeat, "set_pattern_repeat", 553014028u, 0, 18, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_is_protected); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(BTN_STATE_DISABLED, "BTN_STATE_DISABLED", 496829054u, 0, 18, &be_const_str_PAGE_EDGE_TOP); +be_define_const_str(PAGE_EDGE_TOP, "PAGE_EDGE_TOP", 869728962u, 0, 13, &be_const_str_get_focus_cb); +be_define_const_str(get_focus_cb, "get_focus_cb", 3115584616u, 0, 12, NULL); +be_define_const_str(set_style_local_transition_prop_3, "set_style_local_transition_prop_3", 2619092581u, 0, 33, &be_const_str_set_width_margin); +be_define_const_str(set_width_margin, "set_width_margin", 2313657923u, 0, 16, NULL); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_ROLLER_MODE_INFINITE); +be_define_const_str(ROLLER_MODE_INFINITE, "ROLLER_MODE_INFINITE", 288931678u, 0, 20, &be_const_str_set_pos); +be_define_const_str(set_pos, "set_pos", 4146975678u, 0, 7, &be_const_str_set_style_local_image_opa); +be_define_const_str(set_style_local_image_opa, "set_style_local_image_opa", 3630403626u, 0, 25, NULL); +be_define_const_str(get_style_border_post, "get_style_border_post", 3537874563u, 0, 21, NULL); +be_define_const_str(KEY_DEL, "KEY_DEL", 1749022830u, 0, 7, &be_const_str_ST7789_CS); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_layer_top); +be_define_const_str(layer_top, "layer_top", 645939682u, 0, 9, NULL); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_text_is_selected); +be_define_const_str(text_is_selected, "text_is_selected", 3422750433u, 0, 16, NULL); +be_define_const_str(BLEND_MODE_NORMAL, "BLEND_MODE_NORMAL", 1282739232u, 0, 17, &be_const_str_DISP_SIZE_EXTRA_LARGE); +be_define_const_str(DISP_SIZE_EXTRA_LARGE, "DISP_SIZE_EXTRA_LARGE", 3382996246u, 0, 21, &be_const_str_get_recolor); +be_define_const_str(get_recolor, "get_recolor", 4128330436u, 0, 11, NULL); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_set_critical_value); +be_define_const_str(set_critical_value, "set_critical_value", 1194587727u, 0, 18, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_get_next_btn); +be_define_const_str(get_next_btn, "get_next_btn", 1221160406u, 0, 12, NULL); +be_define_const_str(get_pwd_mode, "get_pwd_mode", 364593807u, 0, 12, &be_const_str_get_style_image_recolor_opa); +be_define_const_str(get_style_image_recolor_opa, "get_style_image_recolor_opa", 1049713209u, 0, 27, NULL); +be_define_const_str(set_buffer, "set_buffer", 311233742u, 0, 10, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_set_style_local_scale_width); +be_define_const_str(set_style_local_scale_width, "set_style_local_scale_width", 2071128255u, 0, 27, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_BUZZER_INV); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_LAYOUT_OFF); +be_define_const_str(LAYOUT_OFF, "LAYOUT_OFF", 3375414885u, 0, 10, &be_const_str_STYLE_TEXT_SEL_COLOR); +be_define_const_str(STYLE_TEXT_SEL_COLOR, "STYLE_TEXT_SEL_COLOR", 1096559567u, 0, 20, &be_const_str_get_style_pattern_recolor); +be_define_const_str(get_style_pattern_recolor, "get_style_pattern_recolor", 1808910091u, 0, 25, NULL); +be_define_const_str(EVENT_VALUE_CHANGED, "EVENT_VALUE_CHANGED", 1871067374u, 0, 19, &be_const_str_RF_SENSOR); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, NULL); +be_define_const_str(draw_arc, "draw_arc", 1828251676u, 0, 8, &be_const_str_set_edge_flash); +be_define_const_str(set_edge_flash, "set_edge_flash", 1114840232u, 0, 14, NULL); +be_define_const_str(get_style_scale_width, "get_style_scale_width", 2556361915u, 0, 21, NULL); +be_define_const_str(set_x_start_point, "set_x_start_point", 257195034u, 0, 17, NULL); +be_define_const_str(get_style_transition_prop_3, "get_style_transition_prop_3", 3437946865u, 0, 27, NULL); +be_define_const_str(TABVIEW_TAB_POS_BOTTOM, "TABVIEW_TAB_POS_BOTTOM", 3095544198u, 0, 22, &be_const_str_draw_rect); +be_define_const_str(draw_rect, "draw_rect", 1619240338u, 0, 9, &be_const_str_set_bg_angles); +be_define_const_str(set_bg_angles, "set_bg_angles", 2873640992u, 0, 13, &be_const_str_set_margin_left); +be_define_const_str(set_margin_left, "set_margin_left", 4194347462u, 0, 15, NULL); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_STYLE_VALUE_OFS_Y); +be_define_const_str(STYLE_VALUE_OFS_Y, "STYLE_VALUE_OFS_Y", 1374857417u, 0, 17, &be_const_str_get_angle_end); +be_define_const_str(get_angle_end, "get_angle_end", 2420725825u, 0, 13, &be_const_str_get_from_btn); +be_define_const_str(get_from_btn, "get_from_btn", 2802016263u, 0, 12, &be_const_str_set_style_local_value_ofs_x); +be_define_const_str(set_style_local_value_ofs_x, "set_style_local_value_ofs_x", 3057670197u, 0, 27, NULL); +be_define_const_str(OPA_100, "OPA_100", 3698564393u, 0, 7, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_set_next); +be_define_const_str(set_next, "set_next", 1039873613u, 0, 8, &be_const_str_step_next); +be_define_const_str(step_next, "step_next", 3163156801u, 0, 9, NULL); +be_define_const_str(get_style_line_dash_gap, "get_style_line_dash_gap", 1205629734u, 0, 23, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(FS_MODE_RD, "FS_MODE_RD", 2906271023u, 0, 10, &be_const_str_STYLE_PAD_INNER); +be_define_const_str(STYLE_PAD_INNER, "STYLE_PAD_INNER", 1651002267u, 0, 15, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(PROTECT_PARENT, "PROTECT_PARENT", 3109095353u, 0, 14, &be_const_str_get_sb_mode); +be_define_const_str(get_sb_mode, "get_sb_mode", 2283093353u, 0, 11, &be_const_str_get_style_value_color); +be_define_const_str(get_style_value_color, "get_style_value_color", 76857167u, 0, 21, NULL); +be_define_const_str(ARC_PART_INDIC, "ARC_PART_INDIC", 1749778975u, 0, 14, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_set_style_local_line_width); +be_define_const_str(set_style_local_line_width, "set_style_local_line_width", 1133761671u, 0, 26, NULL); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_set_btns_pos); +be_define_const_str(set_btns_pos, "set_btns_pos", 3991891940u, 0, 12, &be_const_str_set_signal_cb); +be_define_const_str(set_signal_cb, "set_signal_cb", 1476300744u, 0, 13, &be_const_str_set_style_local_scale_border_width); +be_define_const_str(set_style_local_scale_border_width, "set_style_local_scale_border_width", 285010516u, 0, 34, NULL); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_SYMBOL_BACKSPACE); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_get_color); +be_define_const_str(get_color, "get_color", 754086191u, 0, 9, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_STYLE_TEXT_BLEND_MODE); +be_define_const_str(STYLE_TEXT_BLEND_MODE, "STYLE_TEXT_BLEND_MODE", 44336606u, 0, 21, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_set_focus_cb); +be_define_const_str(set_focus_cb, "set_focus_cb", 4094066116u, 0, 12, &be_const_str_set_style_local_pattern_blend_mode); +be_define_const_str(set_style_local_pattern_blend_mode, "set_style_local_pattern_blend_mode", 3861434146u, 0, 34, NULL); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_align_mid_x); +be_define_const_str(align_mid_x, "align_mid_x", 1647423776u, 0, 11, &be_const_str_get_scrl_fit_left); +be_define_const_str(get_scrl_fit_left, "get_scrl_fit_left", 1227937692u, 0, 17, NULL); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); +be_define_const_str(get_scrl_fit_top, "get_scrl_fit_top", 3432048672u, 0, 16, NULL); +be_define_const_str(BORDER_SIDE_FULL, "BORDER_SIDE_FULL", 703648713u, 0, 16, &be_const_str_set_left_value); +be_define_const_str(set_left_value, "set_left_value", 731130751u, 0, 14, NULL); +be_define_const_str(blur_hor, "blur_hor", 346002478u, 0, 8, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(get_style_outline_width, "get_style_outline_width", 1118345503u, 0, 23, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); +be_define_const_str(layer_sys, "layer_sys", 593658256u, 0, 9, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); +be_define_const_str(BORDER_SIDE_LEFT, "BORDER_SIDE_LEFT", 1415977349u, 0, 16, &be_const_str_BTNMATRIX_CTRL_HIDDEN); +be_define_const_str(BTNMATRIX_CTRL_HIDDEN, "BTNMATRIX_CTRL_HIDDEN", 2766999187u, 0, 21, &be_const_str_HIGH); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_get_tasmota); +be_define_const_str(get_tasmota, "get_tasmota", 334356779u, 0, 11, &be_const_str_set_cell_type); +be_define_const_str(set_cell_type, "set_cell_type", 1502464221u, 0, 13, &be_const_str_set_show_selected); +be_define_const_str(set_show_selected, "set_show_selected", 1276300495u, 0, 17, &be_const_str_set_value); +be_define_const_str(set_value, "set_value", 2288413965u, 0, 9, NULL); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_OBJ_PART_MAIN); +be_define_const_str(OBJ_PART_MAIN, "OBJ_PART_MAIN", 658062838u, 0, 13, NULL); +be_define_const_str(EVENT_DRAG_THROW_BEGIN, "EVENT_DRAG_THROW_BEGIN", 977261671u, 0, 22, &be_const_str_MHZ_TXD); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(ALIGN_OUT_BOTTOM_RIGHT, "ALIGN_OUT_BOTTOM_RIGHT", 3680861364u, 0, 22, &be_const_str_set_ext_click_area); +be_define_const_str(set_ext_click_area, "set_ext_click_area", 1298742324u, 0, 18, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_EVENT_KEY); +be_define_const_str(EVENT_KEY, "EVENT_KEY", 2739613983u, 0, 9, &be_const_str_FS_RES_FULL); +be_define_const_str(FS_RES_FULL, "FS_RES_FULL", 3987964025u, 0, 11, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_SR04_TRIG); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, NULL); +be_define_const_str(get_style_border_color, "get_style_border_color", 4173187188u, 0, 22, NULL); +be_define_const_str(STYLE_MARGIN_BOTTOM, "STYLE_MARGIN_BOTTOM", 4176801053u, 0, 19, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_get_scrl_layout); +be_define_const_str(get_scrl_layout, "get_scrl_layout", 2842797719u, 0, 15, NULL); +be_define_const_str(LAYOUT_ROW_TOP, "LAYOUT_ROW_TOP", 4030593648u, 0, 14, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); +be_define_const_str(set_text_sel_start, "set_text_sel_start", 886455347u, 0, 18, NULL); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, &be_const_str_set_style_local_shadow_spread); +be_define_const_str(set_style_local_shadow_spread, "set_style_local_shadow_spread", 850759600u, 0, 29, NULL); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_TEXTAREA_CURSOR_LAST); +be_define_const_str(TEXTAREA_CURSOR_LAST, "TEXTAREA_CURSOR_LAST", 1393995267u, 0, 20, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(is_dragged, "is_dragged", 1443807988u, 0, 10, &be_const_str_set_text_static); +be_define_const_str(set_text_static, "set_text_static", 3831207210u, 0, 15, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(get_style_pattern_opa, "get_style_pattern_opa", 865471869u, 0, 21, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_list_get_local_style); +be_define_const_str(list_get_local_style, "list_get_local_style", 2313938368u, 0, 20, &be_const_str_on_edge); +be_define_const_str(on_edge, "on_edge", 1159443540u, 0, 7, NULL); +be_define_const_str(EVENT_RELEASED, "EVENT_RELEASED", 4173795963u, 0, 14, &be_const_str_P9813_CLK); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_TEMPL_STYLE_Y); +be_define_const_str(TEMPL_STYLE_Y, "TEMPL_STYLE_Y", 1997423835u, 0, 13, &be_const_str_set_style_local_outline_opa); +be_define_const_str(set_style_local_outline_opa, "set_style_local_outline_opa", 1280559349u, 0, 27, NULL); +be_define_const_str(LABEL_ALIGN_RIGHT, "LABEL_ALIGN_RIGHT", 3127457722u, 0, 17, &be_const_str_LAYOUT_PRETTY_BOTTOM); +be_define_const_str(LAYOUT_PRETTY_BOTTOM, "LAYOUT_PRETTY_BOTTOM", 2090319170u, 0, 20, &be_const_str_set_insert_replace); +be_define_const_str(set_insert_replace, "set_insert_replace", 1439171942u, 0, 18, NULL); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_get_state); +be_define_const_str(get_state, "get_state", 3804504029u, 0, 9, &be_const_str_set_transition_time); +be_define_const_str(set_transition_time, "set_transition_time", 887720041u, 0, 19, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, NULL); +be_define_const_str(set_content_size, "set_content_size", 10638115u, 0, 16, &be_const_str_set_needle_img); +be_define_const_str(set_needle_img, "set_needle_img", 1214192915u, 0, 14, NULL); +be_define_const_str(CYAN, "CYAN", 1196590906u, 0, 4, NULL); +be_define_const_str(set_outline_opa, "set_outline_opa", 1167424027u, 0, 15, NULL); +be_define_const_str(get_ver_res, "get_ver_res", 4160557208u, 0, 11, &be_const_str_set_margin_top); +be_define_const_str(set_margin_top, "set_margin_top", 805678094u, 0, 14, &be_const_str_set_user_data); +be_define_const_str(set_user_data, "set_user_data", 3596043360u, 0, 13, NULL); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_set_style_local_bg_grad_stop); +be_define_const_str(set_style_local_bg_grad_stop, "set_style_local_bg_grad_stop", 1180238427u, 0, 28, NULL); +be_define_const_str(ALIGN_OUT_TOP_MID, "ALIGN_OUT_TOP_MID", 1680148984u, 0, 17, &be_const_str_OPA_80); +be_define_const_str(OPA_80, "OPA_80", 4221864914u, 0, 6, &be_const_str_SYMBOL_PLUS); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_get_btn_selected); +be_define_const_str(get_btn_selected, "get_btn_selected", 1715353004u, 0, 16, &be_const_str_set_style_local_transition_prop_2); +be_define_const_str(set_style_local_transition_prop_2, "set_style_local_transition_prop_2", 2602314962u, 0, 33, NULL); +be_define_const_str(CHECKBOX_PART_BG, "CHECKBOX_PART_BG", 1308611434u, 0, 16, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(clear_options, "clear_options", 1509347603u, 0, 13, NULL); +be_define_const_str(set_style_local_text_sel_bg_color, "set_style_local_text_sel_bg_color", 501411296u, 0, 33, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_get_cell_type); +be_define_const_str(get_cell_type, "get_cell_type", 3348412009u, 0, 13, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_set_needle_count); +be_define_const_str(set_needle_count, "set_needle_count", 2611099555u, 0, 16, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_ARC_TYPE_NORMAL); +be_define_const_str(ARC_TYPE_NORMAL, "ARC_TYPE_NORMAL", 1554666574u, 0, 15, &be_const_str_OPEN_DRAIN); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_get_style_text_sel_color); +be_define_const_str(get_style_text_sel_color, "get_style_text_sel_color", 1751096754u, 0, 24, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(AQUA, "AQUA", 1203273877u, 0, 4, &be_const_str_get_mirror); +be_define_const_str(get_mirror, "get_mirror", 2155743435u, 0, 10, &be_const_str_get_tab_count); +be_define_const_str(get_tab_count, "get_tab_count", 218245863u, 0, 13, NULL); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_get_style_scale_end_line_width); +be_define_const_str(get_style_scale_end_line_width, "get_style_scale_end_line_width", 1969204230u, 0, 30, NULL); +be_define_const_str(get_adjustable, "get_adjustable", 982674931u, 0, 14, &be_const_str_set_style_local_value_font); +be_define_const_str(set_style_local_value_font, "set_style_local_value_font", 117758217u, 0, 26, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_init_draw_line_dsc); +be_define_const_str(init_draw_line_dsc, "init_draw_line_dsc", 2507936040u, 0, 18, &be_const_str_set_map); +be_define_const_str(set_map, "set_map", 4012856954u, 0, 7, &be_const_str_up); +be_define_const_str(up, "up", 1128467232u, 0, 2, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_STYLE_LINE_DASH_WIDTH); +be_define_const_str(STYLE_LINE_DASH_WIDTH, "STYLE_LINE_DASH_WIDTH", 1366928369u, 0, 21, &be_const_str_is_checked); +be_define_const_str(is_checked, "is_checked", 3623625615u, 0, 10, &be_const_str_set_placeholder_text); +be_define_const_str(set_placeholder_text, "set_placeholder_text", 1413918705u, 0, 20, &be_const_str_set_secondary_y_tick_length); +be_define_const_str(set_secondary_y_tick_length, "set_secondary_y_tick_length", 4022147583u, 0, 27, &be_const_str_set_style_local_shadow_opa); +be_define_const_str(set_style_local_shadow_opa, "set_style_local_shadow_opa", 2192328339u, 0, 26, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_MAX31855DO); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_get_bg_angle_start); +be_define_const_str(get_bg_angle_start, "get_bg_angle_start", 1794378932u, 0, 18, &be_const_str_get_prev_btn); +be_define_const_str(get_prev_btn, "get_prev_btn", 4150536586u, 0, 12, &be_const_str_set_radius); +be_define_const_str(set_radius, "set_radius", 1362452298u, 0, 10, &be_const_str_set_y_tick_texts); +be_define_const_str(set_y_tick_texts, "set_y_tick_texts", 1388790058u, 0, 16, NULL); +be_define_const_str(NAVY, "NAVY", 1719816465u, 0, 4, NULL); +be_define_const_str(BAR_TYPE_NORMAL, "BAR_TYPE_NORMAL", 3652519691u, 0, 15, &be_const_str_FS_RES_BUSY); +be_define_const_str(FS_RES_BUSY, "FS_RES_BUSY", 3847519313u, 0, 11, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_PMS5003_TX); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_SYMBOL_LIST); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_get_style_transition_prop_2); +be_define_const_str(get_style_transition_prop_2, "get_style_transition_prop_2", 3421169246u, 0, 27, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(STYLE_VALUE_LETTER_SPACE, "STYLE_VALUE_LETTER_SPACE", 2129682704u, 0, 24, &be_const_str_STYLE_VALUE_OFS_X); +be_define_const_str(STYLE_VALUE_OFS_X, "STYLE_VALUE_OFS_X", 1358079798u, 0, 17, &be_const_str_set_style_local_margin_left); +be_define_const_str(set_style_local_margin_left, "set_style_local_margin_left", 3162175100u, 0, 27, &be_const_str_set_style_local_value_ofs_y); +be_define_const_str(set_style_local_value_ofs_y, "set_style_local_value_ofs_y", 3040892578u, 0, 27, NULL); +be_define_const_str(draw_text, "draw_text", 25865715u, 0, 9, &be_const_str_set_angle_offset); +be_define_const_str(set_angle_offset, "set_angle_offset", 1203695731u, 0, 16, NULL); +be_define_const_str(PROTECT_EVENT_TO_DISABLED, "PROTECT_EVENT_TO_DISABLED", 330306814u, 0, 25, &be_const_str_STYLE_OUTLINE_OPA); +be_define_const_str(STYLE_OUTLINE_OPA, "STYLE_OUTLINE_OPA", 1357184754u, 0, 17, &be_const_str_set_border_color); +be_define_const_str(set_border_color, "set_border_color", 2628124814u, 0, 16, NULL); +be_define_const_str(STYLE_VALUE_OPA, "STYLE_VALUE_OPA", 2917777025u, 0, 15, NULL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_set_hue); +be_define_const_str(set_hue, "set_hue", 830075074u, 0, 7, NULL); +be_define_const_str(get_btn_index, "get_btn_index", 1289059379u, 0, 13, &be_const_str_get_drag_throw); +be_define_const_str(get_drag_throw, "get_drag_throw", 2409838001u, 0, 14, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(BTNMATRIX_CTRL_NO_REPEAT, "BTNMATRIX_CTRL_NO_REPEAT", 2228999978u, 0, 24, &be_const_str_GAUGE_PART_NEEDLE); +be_define_const_str(GAUGE_PART_NEEDLE, "GAUGE_PART_NEEDLE", 154997366u, 0, 17, &be_const_str_get_cell_align); +be_define_const_str(get_cell_align, "get_cell_align", 2284605658u, 0, 14, &be_const_str_set_scrollbar_mode); +be_define_const_str(set_scrollbar_mode, "set_scrollbar_mode", 3373216512u, 0, 18, NULL); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_set_base_dir); +be_define_const_str(set_base_dir, "set_base_dir", 1813064609u, 0, 12, NULL); +be_define_const_str(DISP_ROT_NONE, "DISP_ROT_NONE", 1805190226u, 0, 13, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_set_src); +be_define_const_str(set_src, "set_src", 1156089058u, 0, 7, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_MAX7219DIN); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); +be_define_const_str(set_style_local_pattern_image, "set_style_local_pattern_image", 350348106u, 0, 29, NULL); +be_define_const_str(LABEL_LONG_BREAK, "LABEL_LONG_BREAK", 3669129840u, 0, 16, &be_const_str_get_cell_merge_right); +be_define_const_str(get_cell_merge_right, "get_cell_merge_right", 207626582u, 0, 20, &be_const_str_set_shadow_blend_mode); +be_define_const_str(set_shadow_blend_mode, "set_shadow_blend_mode", 3767233786u, 0, 21, NULL); +be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_set_text_line_space); +be_define_const_str(set_text_line_space, "set_text_line_space", 3186151063u, 0, 19, NULL); +be_define_const_str(set_parent, "set_parent", 1528807100u, 0, 10, &be_const_str_set_style_local_scale_end_border_width); +be_define_const_str(set_style_local_scale_end_border_width, "set_style_local_scale_end_border_width", 3774452254u, 0, 38, &be_const_str_set_style_local_value_opa); +be_define_const_str(set_style_local_value_opa, "set_style_local_value_opa", 3003874062u, 0, 25, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_STYLE_BORDER_COLOR); +be_define_const_str(STYLE_BORDER_COLOR, "STYLE_BORDER_COLOR", 809973177u, 0, 18, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_get_selected); +be_define_const_str(get_selected, "get_selected", 2280142225u, 0, 12, NULL); +be_define_const_str(CHART_AXIS_SECONDARY_Y, "CHART_AXIS_SECONDARY_Y", 755580820u, 0, 22, &be_const_str_HRXL_RX); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_SLIDER_TYPE_SYMMETRICAL); +be_define_const_str(SLIDER_TYPE_SYMMETRICAL, "SLIDER_TYPE_SYMMETRICAL", 768283232u, 0, 23, &be_const_str_STATE_DEFAULT); +be_define_const_str(STATE_DEFAULT, "STATE_DEFAULT", 712406428u, 0, 13, &be_const_str_SYMBOL_CLOSE); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, NULL); +be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_set_cursor_hidden); +be_define_const_str(set_cursor_hidden, "set_cursor_hidden", 647911755u, 0, 17, NULL); +be_define_const_str(number, "number", 467038368u, 0, 6, NULL); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_finish_transitions); +be_define_const_str(finish_transitions, "finish_transitions", 1663237457u, 0, 18, &be_const_str_set_style_local_value_str); +be_define_const_str(set_style_local_value_str, "set_style_local_value_str", 3984127099u, 0, 25, NULL); +be_define_const_str(get_type, "get_type", 2996227024u, 0, 8, NULL); +be_define_const_str(get_style_outline_opa, "get_style_outline_opa", 1286010513u, 0, 21, &be_const_str_get_width_grid); +be_define_const_str(get_width_grid, "get_width_grid", 2821365517u, 0, 14, NULL); +be_define_const_str(set_refocus_policy, "set_refocus_policy", 3274550126u, 0, 18, NULL); +be_define_const_str(FIT_MAX, "FIT_MAX", 361794269u, 0, 7, &be_const_str_ILI9488_CS); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_del_async); +be_define_const_str(del_async, "del_async", 2148432385u, 0, 9, NULL); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_get_style_line_width); +be_define_const_str(get_style_line_width, "get_style_line_width", 1172338835u, 0, 20, &be_const_str_init_points); +be_define_const_str(init_points, "init_points", 718504203u, 0, 11, &be_const_str_set_text_decor); +be_define_const_str(set_text_decor, "set_text_decor", 768023065u, 0, 14, NULL); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(CPICKER_COLOR_MODE_VALUE, "CPICKER_COLOR_MODE_VALUE", 980055508u, 0, 24, &be_const_str_ceil); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_get_style_bg_main_stop); +be_define_const_str(get_style_bg_main_stop, "get_style_bg_main_stop", 3096799724u, 0, 22, NULL); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_set_shadow_ofs_y); +be_define_const_str(set_shadow_ofs_y, "set_shadow_ofs_y", 3086758033u, 0, 16, &be_const_str_set_text_align); +be_define_const_str(set_text_align, "set_text_align", 2734674049u, 0, 14, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, NULL); +be_define_const_str(get_style_outline_pad, "get_style_outline_pad", 4225397162u, 0, 21, &be_const_str_is_protected); be_define_const_str(is_protected, "is_protected", 1864002268u, 0, 12, NULL); -be_define_const_str(get_cell_type, "get_cell_type", 3348412009u, 0, 13, &be_const_str_set_scale_end_color); -be_define_const_str(set_scale_end_color, "set_scale_end_color", 355018320u, 0, 19, &be_const_str_set_style_local_border_blend_mode); -be_define_const_str(set_style_local_border_blend_mode, "set_style_local_border_blend_mode", 3453690930u, 0, 33, NULL); -be_define_const_str(init_draw_label_dsc, "init_draw_label_dsc", 3549659870u, 0, 19, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_TASMOTACLIENT_RST); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, NULL); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_STYLE_TRANSFORM_ANGLE); -be_define_const_str(STYLE_TRANSFORM_ANGLE, "STYLE_TRANSFORM_ANGLE", 411149629u, 0, 21, &be_const_str_TUYA_TX); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_set_line_width); -be_define_const_str(set_line_width, "set_line_width", 908110269u, 0, 14, NULL); -be_define_const_str(CHART_PART_BG, "CHART_PART_BG", 990069269u, 0, 13, &be_const_str_WS2812); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); -be_define_const_str(get_letter_on, "get_letter_on", 3272656192u, 0, 13, &be_const_str_set_rotation); -be_define_const_str(set_rotation, "set_rotation", 2130936338u, 0, 12, NULL); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_SHELLY_DIMMER_RST_INV); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_SYMBOL_PLUS); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, NULL); -be_define_const_str(OBJ_PART_REAL_FIRST, "OBJ_PART_REAL_FIRST", 819443818u, 0, 19, &be_const_str_set_style_local_image_recolor); -be_define_const_str(set_style_local_image_recolor, "set_style_local_image_recolor", 43538644u, 0, 29, NULL); -be_define_const_str(get_color_mode, "get_color_mode", 833403171u, 0, 14, NULL); -be_define_const_str(FS_RES_TOUT, "FS_RES_TOUT", 733368644u, 0, 11, &be_const_str_KEY_BACKSPACE); -be_define_const_str(KEY_BACKSPACE, "KEY_BACKSPACE", 269443424u, 0, 13, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_get_style_border_opa); -be_define_const_str(get_style_border_opa, "get_style_border_opa", 140307373u, 0, 20, NULL); +be_define_const_str(I2C, "I2C", 4096783347u, 0, 3, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); +be_define_const_str(GRAD_DIR_NONE, "GRAD_DIR_NONE", 1627825480u, 0, 13, &be_const_str_SPI_CS); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); +be_define_const_str(set_pattern_opa, "set_pattern_opa", 3749193119u, 0, 15, NULL); +be_define_const_str(TEMPL_STYLE_X, "TEMPL_STYLE_X", 1980646216u, 0, 13, &be_const_str_get_antialias); +be_define_const_str(get_antialias, "get_antialias", 220729812u, 0, 13, NULL); +be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_set_transition_prop_3); +be_define_const_str(set_transition_prop_3, "set_transition_prop_3", 3000346107u, 0, 21, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_STYLE_PAD_BOTTOM); +be_define_const_str(STYLE_PAD_BOTTOM, "STYLE_PAD_BOTTOM", 3910623046u, 0, 16, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(STYLE_PATTERN_IMAGE, "STYLE_PATTERN_IMAGE", 3293741009u, 0, 19, NULL); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_fade_out); +be_define_const_str(fade_out, "fade_out", 215415112u, 0, 8, &be_const_str_hittest); +be_define_const_str(hittest, "hittest", 4018046250u, 0, 7, NULL); +be_define_const_str(SPINNER_TYPE_SPINNING_ARC, "SPINNER_TYPE_SPINNING_ARC", 3298556409u, 0, 25, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_STYLE_PAD_TOP); +be_define_const_str(STYLE_PAD_TOP, "STYLE_PAD_TOP", 2731711064u, 0, 13, &be_const_str_TXT_CMD_STATE_IN); +be_define_const_str(TXT_CMD_STATE_IN, "TXT_CMD_STATE_IN", 2162626840u, 0, 16, NULL); +be_define_const_str(TABVIEW_TAB_POS_NONE, "TABVIEW_TAB_POS_NONE", 3094416879u, 0, 20, &be_const_str_get_style_value_letter_space); +be_define_const_str(get_style_value_letter_space, "get_style_value_letter_space", 193712565u, 0, 28, &be_const_str_set_update_mode); +be_define_const_str(set_update_mode, "set_update_mode", 2089081509u, 0, 15, NULL); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_STYLE_SHADOW_OPA); +be_define_const_str(STYLE_SHADOW_OPA, "STYLE_SHADOW_OPA", 3011667646u, 0, 16, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_get_scrollbar_mode); +be_define_const_str(get_scrollbar_mode, "get_scrollbar_mode", 1258717108u, 0, 18, &be_const_str_get_style_line_rounded); +be_define_const_str(get_style_line_rounded, "get_style_line_rounded", 2936625238u, 0, 22, NULL); +be_define_const_str(BORDER_SIDE_BOTTOM, "BORDER_SIDE_BOTTOM", 1006865647u, 0, 18, &be_const_str_FS_RES_DENIED); +be_define_const_str(FS_RES_DENIED, "FS_RES_DENIED", 63556207u, 0, 13, &be_const_str_TEXT_DECOR_NONE); +be_define_const_str(TEXT_DECOR_NONE, "TEXT_DECOR_NONE", 2700466131u, 0, 15, &be_const_str_add_btn); +be_define_const_str(add_btn, "add_btn", 1053483819u, 0, 7, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_clear_state); +be_define_const_str(clear_state, "clear_state", 2113290696u, 0, 11, &be_const_str_get_options); +be_define_const_str(get_options, "get_options", 1198221094u, 0, 11, NULL); +be_define_const_str(ALIGN_IN_BOTTOM_MID, "ALIGN_IN_BOTTOM_MID", 4192809251u, 0, 19, &be_const_str_AS3935); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_GRAD_DIR_VER); +be_define_const_str(GRAD_DIR_VER, "GRAD_DIR_VER", 1112540859u, 0, 12, &be_const_str_SAIR_RX); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_SCROLLBAR_MODE_AUTO); +be_define_const_str(SCROLLBAR_MODE_AUTO, "SCROLLBAR_MODE_AUTO", 2882381917u, 0, 19, &be_const_str_get_rollover); +be_define_const_str(get_rollover, "get_rollover", 2637132577u, 0, 12, &be_const_str_set_style_local_transition_prop_1); +be_define_const_str(set_style_local_transition_prop_1, "set_style_local_transition_prop_1", 2585537343u, 0, 33, &be_const_str_set_value_align); +be_define_const_str(set_value_align, "set_value_align", 1467667831u, 0, 15, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_RDM6300_RX); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_button_pressed); +be_define_const_str(button_pressed, "button_pressed", 1694209616u, 0, 14, NULL); +be_define_const_str(BLUE, "BLUE", 750204685u, 0, 4, &be_const_str_focus_freeze); +be_define_const_str(focus_freeze, "focus_freeze", 3394722079u, 0, 12, NULL); +be_define_const_str(get_min_value, "get_min_value", 3238705374u, 0, 13, NULL); +be_define_const_str(get_critical_value, "get_critical_value", 4180625515u, 0, 18, NULL); +be_define_const_str(EVENT_DEFOCUSED, "EVENT_DEFOCUSED", 1034310644u, 0, 15, &be_const_str_set_bg_opa); +be_define_const_str(set_bg_opa, "set_bg_opa", 3379539138u, 0, 10, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(DROPDOWN_PART_LIST, "DROPDOWN_PART_LIST", 2923479101u, 0, 18, &be_const_str_LAYOUT_ROW_MID); +be_define_const_str(LAYOUT_ROW_MID, "LAYOUT_ROW_MID", 932854697u, 0, 14, &be_const_str_set_style_local_pattern_opa); +be_define_const_str(set_style_local_pattern_opa, "set_style_local_pattern_opa", 3467015361u, 0, 27, NULL); +be_define_const_str(STYLE_TEXT_COLOR, "STYLE_TEXT_COLOR", 2549754876u, 0, 16, &be_const_str_del); +be_define_const_str(del, "del", 3478752842u, 0, 3, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, NULL); +be_define_const_str(ROLLER_MODE_NORMAL, "ROLLER_MODE_NORMAL", 72783697u, 0, 18, NULL); +be_define_const_str(GESTURE_DIR_LEFT, "GESTURE_DIR_LEFT", 1888875816u, 0, 16, &be_const_str_TABVIEW_TAB_POS_LEFT); +be_define_const_str(TABVIEW_TAB_POS_LEFT, "TABVIEW_TAB_POS_LEFT", 897772772u, 0, 20, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_set_layout); +be_define_const_str(set_layout, "set_layout", 3108581018u, 0, 10, NULL); +be_define_const_str(STYLE_MARGIN_LEFT, "STYLE_MARGIN_LEFT", 671809443u, 0, 17, &be_const_str_SYMBOL_IMAGE); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, NULL); +be_define_const_str(get_ext_click_pad_top, "get_ext_click_pad_top", 284862450u, 0, 21, NULL); +be_define_const_str(set_style_local_outline_width, "set_style_local_outline_width", 3081743955u, 0, 29, NULL); +be_define_const_str(get_style_scale_end_border_width, "get_style_scale_end_border_width", 2717605058u, 0, 32, NULL); +be_define_const_str(fade_in, "fade_in", 3410278043u, 0, 7, &be_const_str_get_anim_time); +be_define_const_str(get_anim_time, "get_anim_time", 641972335u, 0, 13, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_PROJECTOR_CTRL_RX); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_get_style_shadow_color); +be_define_const_str(get_style_shadow_color, "get_style_shadow_color", 920648234u, 0, 22, &be_const_str_set_style_local_line_dash_gap); +be_define_const_str(set_style_local_line_dash_gap, "set_style_local_line_dash_gap", 923588498u, 0, 29, NULL); +be_define_const_str(STYLE_SCALE_BORDER_WIDTH, "STYLE_SCALE_BORDER_WIDTH", 4091410577u, 0, 24, &be_const_str_TXT_FLAG_EXPAND); +be_define_const_str(TXT_FLAG_EXPAND, "TXT_FLAG_EXPAND", 964598951u, 0, 15, NULL); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_get_row_cnt); +be_define_const_str(get_row_cnt, "get_row_cnt", 541121788u, 0, 11, &be_const_str_set_outline_pad); +be_define_const_str(set_outline_pad, "set_outline_pad", 2845869448u, 0, 15, NULL); +be_define_const_str(set_style_local_pattern_recolor, "set_style_local_pattern_recolor", 2810797623u, 0, 31, NULL); +be_define_const_str(CHART_CURSOR_LEFT, "CHART_CURSOR_LEFT", 2003546122u, 0, 17, NULL); +be_define_const_str(get_style_transition_prop_1, "get_style_transition_prop_1", 3404391627u, 0, 27, &be_const_str_set_col_width); +be_define_const_str(set_col_width, "set_col_width", 28420413u, 0, 13, NULL); +be_define_const_str(CHART_AXIS_PRIMARY_Y, "CHART_AXIS_PRIMARY_Y", 2499204580u, 0, 20, &be_const_str_DDS2382_TX); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_STYLE_TEXT_DECOR); +be_define_const_str(STYLE_TEXT_DECOR, "STYLE_TEXT_DECOR", 2624841926u, 0, 16, &be_const_str_get_fit_right); +be_define_const_str(get_fit_right, "get_fit_right", 2037949402u, 0, 13, &be_const_str_get_highlighted_dates_num); +be_define_const_str(get_highlighted_dates_num, "get_highlighted_dates_num", 82319360u, 0, 25, NULL); +be_define_const_str(set_text, "set_text", 1849641155u, 0, 8, NULL); +be_define_const_str(CHART_CURSOR_NONE, "CHART_CURSOR_NONE", 2955624997u, 0, 17, &be_const_str_set_options_static); +be_define_const_str(set_options_static, "set_options_static", 652047717u, 0, 18, NULL); +be_define_const_str(BTN_STATE_CHECKED_DISABLED, "BTN_STATE_CHECKED_DISABLED", 1537172432u, 0, 26, NULL); +be_define_const_str(ALIGN_IN_TOP_MID, "ALIGN_IN_TOP_MID", 717802025u, 0, 16, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_set_valid_positions); +be_define_const_str(set_valid_positions, "set_valid_positions", 358534097u, 0, 19, NULL); +be_define_const_str(BORDER_SIDE_RIGHT, "BORDER_SIDE_RIGHT", 1842095998u, 0, 17, &be_const_str_STYLE_VALUE_BLEND_MODE); +be_define_const_str(STYLE_VALUE_BLEND_MODE, "STYLE_VALUE_BLEND_MODE", 930238626u, 0, 22, &be_const_str_title_get_alignment); +be_define_const_str(title_get_alignment, "title_get_alignment", 3374080476u, 0, 19, NULL); +be_define_const_str(set_pattern_recolor, "set_pattern_recolor", 3136030237u, 0, 19, &be_const_str_set_style_local_line_opa); +be_define_const_str(set_style_local_line_opa, "set_style_local_line_opa", 909807497u, 0, 24, &be_const_str_set_style_local_pad_left); +be_define_const_str(set_style_local_pad_left, "set_style_local_pad_left", 279437461u, 0, 24, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_ROT1B_NP); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_get_dir); +be_define_const_str(get_dir, "get_dir", 1037382287u, 0, 7, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_set_image_recolor); +be_define_const_str(set_image_recolor, "set_image_recolor", 271208598u, 0, 17, NULL); +be_define_const_str(GESTURE_DIR_RIGHT, "GESTURE_DIR_RIGHT", 3761728861u, 0, 17, &be_const_str_get_fit_top); +be_define_const_str(get_fit_top, "get_fit_top", 1805788963u, 0, 11, NULL); +be_define_const_str(get_point_id, "get_point_id", 2837084878u, 0, 12, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(LABEL_LONG_SROLL, "LABEL_LONG_SROLL", 3854826277u, 0, 16, &be_const_str_SCROLLBAR_MODE_OFF); +be_define_const_str(SCROLLBAR_MODE_OFF, "SCROLLBAR_MODE_OFF", 3547490383u, 0, 18, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); +be_define_const_str(GAUGE_PART_MAIN, "GAUGE_PART_MAIN", 3145322556u, 0, 15, &be_const_str_OUTPUT_OPEN_DRAIN); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_STYLE_SCALE_GRAD_COLOR); +be_define_const_str(STYLE_SCALE_GRAD_COLOR, "STYLE_SCALE_GRAD_COLOR", 3981239948u, 0, 22, NULL); +be_define_const_str(set_text_sel_color, "set_text_sel_color", 1561573604u, 0, 18, NULL); +be_define_const_str(FS_RES_NOT_EX, "FS_RES_NOT_EX", 3124641355u, 0, 13, &be_const_str_SDM120_RX); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, NULL); +be_define_const_str(BAR_TYPE_SYMMETRICAL, "BAR_TYPE_SYMMETRICAL", 1357819710u, 0, 20, &be_const_str_SSD1351_CS); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); +be_define_const_str(STYLE_VALUE_STR, "STYLE_VALUE_STR", 144639168u, 0, 15, NULL); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(LINEMETER_PART_MAIN, "LINEMETER_PART_MAIN", 1524851464u, 0, 19, &be_const_str__cmd); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_set_tab_act); +be_define_const_str(set_tab_act, "set_tab_act", 2505737680u, 0, 11, NULL); +be_define_const_str(STYLE_CLIP_CORNER, "STYLE_CLIP_CORNER", 2883973343u, 0, 17, NULL); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); +be_define_const_str(set_focus_parent, "set_focus_parent", 2829293865u, 0, 16, NULL); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_WEBCAM_PSCLK); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_get_long_mode); +be_define_const_str(get_long_mode, "get_long_mode", 2750961764u, 0, 13, &be_const_str_move_foreground); +be_define_const_str(move_foreground, "move_foreground", 2558800524u, 0, 15, NULL); +be_define_const_str(ARC_PART_BG, "ARC_PART_BG", 3149008005u, 0, 11, &be_const_str_SDM72_RX); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_get_style_bg_grad_stop); +be_define_const_str(get_style_bg_grad_stop, "get_style_bg_grad_stop", 1023453943u, 0, 22, NULL); +be_define_const_str(set_style_local_bg_opa, "set_style_local_bg_opa", 1720245992u, 0, 22, NULL); +be_define_const_str(LIST_PART_BG, "LIST_PART_BG", 1920031543u, 0, 12, &be_const_str_SYMBOL_BATTERY_EMPTY); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); +be_define_const_str(DROPDOWN_PART_SELECTED, "DROPDOWN_PART_SELECTED", 1685473920u, 0, 22, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, &be_const_str_set_shadow_ofs_x); +be_define_const_str(set_shadow_ofs_x, "set_shadow_ofs_x", 3069980414u, 0, 16, &be_const_str_set_style_local_border_side); +be_define_const_str(set_style_local_border_side, "set_style_local_border_side", 2699338750u, 0, 27, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_get_style_margin_right); +be_define_const_str(get_style_margin_right, "get_style_margin_right", 2672767757u, 0, 22, &be_const_str_get_width_margin); +be_define_const_str(get_width_margin, "get_width_margin", 872387359u, 0, 16, &be_const_str_get_zoom); +be_define_const_str(get_zoom, "get_zoom", 2259829907u, 0, 8, &be_const_str_set_adv_hittest); +be_define_const_str(set_adv_hittest, "set_adv_hittest", 2312818651u, 0, 15, NULL); +be_define_const_str(get_ext_click_pad_left, "get_ext_click_pad_left", 1709871714u, 0, 22, NULL); +be_define_const_str(STYLE_LINE_BLEND_MODE, "STYLE_LINE_BLEND_MODE", 1400961281u, 0, 21, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); +be_define_const_str(STYLE_MARGIN_RIGHT, "STYLE_MARGIN_RIGHT", 1123385036u, 0, 18, &be_const_str_get_editing); +be_define_const_str(get_editing, "get_editing", 281870028u, 0, 11, &be_const_str_is_visible); +be_define_const_str(is_visible, "is_visible", 597904624u, 0, 10, &be_const_str_set_cell_merge_right); +be_define_const_str(set_cell_merge_right, "set_cell_merge_right", 3174593866u, 0, 20, &be_const_str_set_outline_blend_mode); +be_define_const_str(set_outline_blend_mode, "set_outline_blend_mode", 4273381132u, 0, 22, NULL); +be_define_const_str(set_arc_length, "set_arc_length", 2972977809u, 0, 14, NULL); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, NULL); +be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_get_style_pattern_repeat); +be_define_const_str(get_style_pattern_repeat, "get_style_pattern_repeat", 3530119950u, 0, 24, &be_const_str_set_transition_prop_2); +be_define_const_str(set_transition_prop_2, "set_transition_prop_2", 2983568488u, 0, 21, NULL); +be_define_const_str(CPICKER_PART_KNOB, "CPICKER_PART_KNOB", 4094649797u, 0, 17, &be_const_str_set_scale_grad_color); +be_define_const_str(set_scale_grad_color, "set_scale_grad_color", 818937207u, 0, 20, NULL); +be_define_const_str(STYLE_BORDER_OPA, "STYLE_BORDER_OPA", 2705633552u, 0, 16, NULL); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_set_style_local_text_line_space); +be_define_const_str(set_style_local_text_line_space, "set_style_local_text_line_space", 3775207629u, 0, 31, NULL); +be_define_const_str(FS_RES_OK, "FS_RES_OK", 223294622u, 0, 9, &be_const_str_KEY_END); +be_define_const_str(KEY_END, "KEY_END", 1131758734u, 0, 7, &be_const_str_STYLE_IMAGE_RECOLOR_OPA); +be_define_const_str(STYLE_IMAGE_RECOLOR_OPA, "STYLE_IMAGE_RECOLOR_OPA", 3785340258u, 0, 23, &be_const_str_get_point_count); +be_define_const_str(get_point_count, "get_point_count", 617480290u, 0, 15, NULL); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_SYMBOL_NEXT); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_get_style_scale_border_width); +be_define_const_str(get_style_scale_border_width, "get_style_scale_border_width", 206289592u, 0, 28, &be_const_str_set_row_cnt); +be_define_const_str(set_row_cnt, "set_row_cnt", 3198609400u, 0, 11, NULL); +be_define_const_str(FIT_NONE, "FIT_NONE", 692142959u, 0, 8, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_draw_polygon); +be_define_const_str(draw_polygon, "draw_polygon", 271325674u, 0, 12, &be_const_str_set_pattern_recolor_opa); +be_define_const_str(set_pattern_recolor_opa, "set_pattern_recolor_opa", 1479951840u, 0, 23, NULL); +be_define_const_str(set_height_fit, "set_height_fit", 4033083607u, 0, 14, NULL); +be_define_const_str(set_transition_delay, "set_transition_delay", 2787845599u, 0, 20, NULL); +be_define_const_str(STYLE_PATTERN_OPA, "STYLE_PATTERN_OPA", 1423872118u, 0, 17, NULL); be_define_const_str(get_left_value, "get_left_value", 1136489099u, 0, 14, NULL); -be_define_const_str(get_parent_event, "get_parent_event", 102705295u, 0, 16, NULL); -be_define_const_str(CPICKER_PART_MAIN, "CPICKER_PART_MAIN", 4275135052u, 0, 17, &be_const_str_get_group); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, NULL); +be_define_const_str(get_col_width, "get_col_width", 638670073u, 0, 13, &be_const_str_list_copy); +be_define_const_str(list_copy, "list_copy", 680267399u, 0, 9, NULL); +be_define_const_str(set_angles, "set_angles", 895400084u, 0, 10, NULL); +be_define_const_str(ALIGN_OUT_TOP_LEFT, "ALIGN_OUT_TOP_LEFT", 1073920927u, 0, 18, NULL); +be_define_const_str(ALIGN_OUT_BOTTOM_MID, "ALIGN_OUT_BOTTOM_MID", 2853556972u, 0, 20, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_EVENT_REFRESH); +be_define_const_str(EVENT_REFRESH, "EVENT_REFRESH", 741028651u, 0, 13, &be_const_str_focus_obj); +be_define_const_str(focus_obj, "focus_obj", 1075574617u, 0, 9, &be_const_str_get_one_check); +be_define_const_str(get_one_check, "get_one_check", 2649478907u, 0, 13, NULL); +be_define_const_str(clear_protect, "clear_protect", 2408863094u, 0, 13, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SYMBOL_BATTERY_3); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, NULL); +be_define_const_str(BTN_STATE_CHECKED_PRESSED, "BTN_STATE_CHECKED_PRESSED", 2837756846u, 0, 25, &be_const_str_PAGE_EDGE_BOTTOM); +be_define_const_str(PAGE_EDGE_BOTTOM, "PAGE_EDGE_BOTTOM", 3735543556u, 0, 16, &be_const_str_SYMBOL_BLUETOOTH); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str_get_style_value_opa); +be_define_const_str(get_style_value_opa, "get_style_value_opa", 1671026074u, 0, 19, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, NULL); +be_define_const_str(clear_btn_ctrl, "clear_btn_ctrl", 2659827935u, 0, 14, &be_const_str_get_group); be_define_const_str(get_group, "get_group", 1497401467u, 0, 9, NULL); -be_define_const_str(KEY_DOWN, "KEY_DOWN", 2353719865u, 0, 8, &be_const_str_PROTECT_EVENT_TO_DISABLED); -be_define_const_str(PROTECT_EVENT_TO_DISABLED, "PROTECT_EVENT_TO_DISABLED", 330306814u, 0, 25, NULL); -be_define_const_str(STYLE_SCALE_END_LINE_WIDTH, "STYLE_SCALE_END_LINE_WIDTH", 2154819175u, 0, 26, &be_const_str_hex); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, &be_const_str_set_style_local_outline_opa); -be_define_const_str(set_style_local_outline_opa, "set_style_local_outline_opa", 1280559349u, 0, 27, &be_const_str_start_edge_flash); -be_define_const_str(start_edge_flash, "start_edge_flash", 305008300u, 0, 16, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_STYLE_OUTLINE_WIDTH); -be_define_const_str(STYLE_OUTLINE_WIDTH, "STYLE_OUTLINE_WIDTH", 2786055068u, 0, 19, &be_const_str_byte); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_down); -be_define_const_str(down, "down", 1035581717u, 0, 4, &be_const_str_get_cell_align); -be_define_const_str(get_cell_align, "get_cell_align", 2284605658u, 0, 14, &be_const_str_remove_obj); -be_define_const_str(remove_obj, "remove_obj", 2093082931u, 0, 10, NULL); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_set_scrollable_fit2); -be_define_const_str(set_scrollable_fit2, "set_scrollable_fit2", 586952845u, 0, 19, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_set_style_local_border_post); -be_define_const_str(set_style_local_border_post, "set_style_local_border_post", 4148896231u, 0, 27, NULL); +be_define_const_str(get_symbol, "get_symbol", 2697453548u, 0, 10, &be_const_str_web_add_main_button); +be_define_const_str(web_add_main_button, "web_add_main_button", 3960367664u, 0, 19, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_lv_spinner); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_set_value_letter_space); +be_define_const_str(set_value_letter_space, "set_value_letter_space", 1113519355u, 0, 22, NULL); +be_define_const_str(CPICKER_PART_MAIN, "CPICKER_PART_MAIN", 4275135052u, 0, 17, &be_const_str_EVENT_SHORT_CLICKED); +be_define_const_str(EVENT_SHORT_CLICKED, "EVENT_SHORT_CLICKED", 2804944112u, 0, 19, &be_const_str_STYLE_TRANSFORM_WIDTH); +be_define_const_str(STYLE_TRANSFORM_WIDTH, "STYLE_TRANSFORM_WIDTH", 2096880210u, 0, 21, NULL); +be_define_const_str(VSPI, "VSPI", 790634249u, 0, 4, &be_const_str_get_focused_obj); +be_define_const_str(get_focused_obj, "get_focused_obj", 208302839u, 0, 15, NULL); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_EVENT_DRAG_BEGIN); +be_define_const_str(EVENT_DRAG_BEGIN, "EVENT_DRAG_BEGIN", 25766504u, 0, 16, &be_const_str_TABVIEW_TAB_POS_TOP); +be_define_const_str(TABVIEW_TAB_POS_TOP, "TABVIEW_TAB_POS_TOP", 4224766616u, 0, 19, &be_const_str_set_btn_ctrl_all); +be_define_const_str(set_btn_ctrl_all, "set_btn_ctrl_all", 274690332u, 0, 16, &be_const_str_set_style_local_bg_grad_color); be_define_const_str(set_style_local_bg_grad_color, "set_style_local_bg_grad_color", 3774593842u, 0, 29, NULL); -be_define_const_str(get_mirror, "get_mirror", 2155743435u, 0, 10, NULL); +be_define_const_str(focus_next, "focus_next", 2510018461u, 0, 10, &be_const_str_set_style_local_image_blend_mode); +be_define_const_str(set_style_local_image_blend_mode, "set_style_local_image_blend_mode", 1792244615u, 0, 32, NULL); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, NULL); +be_define_const_str(SPINNER_DIR_BACKWARD, "SPINNER_DIR_BACKWARD", 4078587842u, 0, 20, &be_const_str_get_cursor_click_pos); +be_define_const_str(get_cursor_click_pos, "get_cursor_click_pos", 3249294464u, 0, 20, &be_const_str_set_style_local_clip_corner); +be_define_const_str(set_style_local_clip_corner, "set_style_local_clip_corner", 1588926036u, 0, 27, NULL); +be_define_const_str(ALIGN_IN_BOTTOM_RIGHT, "ALIGN_IN_BOTTOM_RIGHT", 1575436355u, 0, 21, &be_const_str_set_style_local_transition_time); +be_define_const_str(set_style_local_transition_time, "set_style_local_transition_time", 1761097355u, 0, 31, &be_const_str_set_value_str); +be_define_const_str(set_value_str, "set_value_str", 2950562969u, 0, 13, &be_const_str_step_prev); +be_define_const_str(step_prev, "step_prev", 2831593421u, 0, 9, NULL); +be_define_const_str(WHITE, "WHITE", 2856149510u, 0, 5, NULL); +be_define_const_str(get_style_bg_color, "get_style_bg_color", 964794381u, 0, 18, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_set_style_local_line_blend_mode); +be_define_const_str(set_style_local_line_blend_mode, "set_style_local_line_blend_mode", 2166063994u, 0, 31, NULL); +be_define_const_str(STATE_DISABLED, "STATE_DISABLED", 3398267003u, 0, 14, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_exec_cmd); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, NULL); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_get_placeholder_text); +be_define_const_str(get_placeholder_text, "get_placeholder_text", 1148345333u, 0, 20, NULL); +be_define_const_str(DROPDOWN_PART_MAIN, "DROPDOWN_PART_MAIN", 1806576308u, 0, 18, &be_const_str_cursor_right); +be_define_const_str(cursor_right, "cursor_right", 2216262354u, 0, 12, &be_const_str_get_btns_pos); +be_define_const_str(get_btns_pos, "get_btns_pos", 2951340984u, 0, 12, NULL); +be_define_const_str(get_base_dir, "get_base_dir", 1814851485u, 0, 12, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, &be_const_str_set_hsv); +be_define_const_str(set_hsv, "set_hsv", 545841289u, 0, 7, NULL); +be_define_const_str(KEY_HOME, "KEY_HOME", 2722222682u, 0, 8, NULL); +be_define_const_str(CHART_PART_SERIES, "CHART_PART_SERIES", 3401824459u, 0, 17, &be_const_str_get_series_axis); +be_define_const_str(get_series_axis, "get_series_axis", 524215363u, 0, 15, NULL); +be_define_const_str(json_append, "json_append", 3002019284u, 0, 11, NULL); +be_define_const_str(DROPDOWN_DIR_RIGHT, "DROPDOWN_DIR_RIGHT", 103533641u, 0, 18, &be_const_str_STYLE_BORDER_SIDE); +be_define_const_str(STYLE_BORDER_SIDE, "STYLE_BORDER_SIDE", 3876109589u, 0, 17, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); +be_define_const_str(get_y, "get_y", 1205519667u, 0, 5, NULL); +be_define_const_str(DROPDOWN_DIR_UP, "DROPDOWN_DIR_UP", 2415359156u, 0, 15, &be_const_str_get_drag_dir); +be_define_const_str(get_drag_dir, "get_drag_dir", 3921105230u, 0, 12, &be_const_str_set_textarea); +be_define_const_str(set_textarea, "set_textarea", 1978833518u, 0, 12, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(EVENT_CANCEL, "EVENT_CANCEL", 3703374138u, 0, 12, &be_const_str_PULLDOWN); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_align_mid); +be_define_const_str(align_mid, "align_mid", 497514711u, 0, 9, NULL); +be_define_const_str(get_style_scale_end_color, "get_style_scale_end_color", 142275754u, 0, 25, &be_const_str_get_style_transform_height); +be_define_const_str(get_style_transform_height, "get_style_transform_height", 3736737548u, 0, 26, NULL); +be_define_const_str(set_anim_speed, "set_anim_speed", 3709305189u, 0, 14, &be_const_str_set_style_local_scale_grad_color); +be_define_const_str(set_style_local_scale_grad_color, "set_style_local_scale_grad_color", 1682685285u, 0, 32, NULL); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_SYMBOL_DUMMY); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_set_style_local_outline_blend_mode); +be_define_const_str(set_style_local_outline_blend_mode, "set_style_local_outline_blend_mode", 3321200446u, 0, 34, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(ALIGN_OUT_RIGHT_MID, "ALIGN_OUT_RIGHT_MID", 2298501353u, 0, 19, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_get_style_size); +be_define_const_str(get_style_size, "get_style_size", 3698157111u, 0, 14, &be_const_str_remove_series); +be_define_const_str(remove_series, "remove_series", 2007033791u, 0, 13, NULL); +be_define_const_str(STYLE_SHADOW_WIDTH, "STYLE_SHADOW_WIDTH", 629491480u, 0, 18, &be_const_str_SYMBOL_AUDIO); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_get_style_margin_left); +be_define_const_str(get_style_margin_left, "get_style_margin_left", 1765248440u, 0, 21, &be_const_str_set_bg_grad_color); +be_define_const_str(set_bg_grad_color, "set_bg_grad_color", 51037480u, 0, 17, &be_const_str_set_style_local_line_color); +be_define_const_str(set_style_local_line_color, "set_style_local_line_color", 1174390096u, 0, 26, NULL); +be_define_const_str(get_style_image_opa, "get_style_image_opa", 111986494u, 0, 19, NULL); +be_define_const_str(set_style_local_text_blend_mode, "set_style_local_text_blend_mode", 3467626777u, 0, 31, NULL); +be_define_const_str(get_x_from_index, "get_x_from_index", 2843960746u, 0, 16, NULL); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_set_style_local_margin_bottom); +be_define_const_str(set_style_local_margin_bottom, "set_style_local_margin_bottom", 3687231326u, 0, 29, NULL); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_get_cursor_pos); +be_define_const_str(get_cursor_pos, "get_cursor_pos", 3695280847u, 0, 14, &be_const_str_get_needle_count); +be_define_const_str(get_needle_count, "get_needle_count", 2722615919u, 0, 16, &be_const_str_set_cursor_point); +be_define_const_str(set_cursor_point, "set_cursor_point", 4201331267u, 0, 16, &be_const_str_set_max_length); +be_define_const_str(set_max_length, "set_max_length", 2269400999u, 0, 14, NULL); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_STYLE_TRANSITION_PATH); +be_define_const_str(STYLE_TRANSITION_PATH, "STYLE_TRANSITION_PATH", 3341574330u, 0, 21, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(create, "create", 649812317u, 0, 6, &be_const_str_get_draw_rect_ext_pad_size); +be_define_const_str(get_draw_rect_ext_pad_size, "get_draw_rect_ext_pad_size", 3223809685u, 0, 26, &be_const_str_set_click_focus); +be_define_const_str(set_click_focus, "set_click_focus", 3544636103u, 0, 15, NULL); +be_define_const_str(invalidate, "invalidate", 2649734928u, 0, 10, &be_const_str_set_click); +be_define_const_str(set_click, "set_click", 2550101068u, 0, 9, &be_const_str_set_point_id); +be_define_const_str(set_point_id, "set_point_id", 388814210u, 0, 12, &be_const_str_set_text_sel); +be_define_const_str(set_text_sel, "set_text_sel", 1928405316u, 0, 12, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_get_style_scale_grad_color); +be_define_const_str(get_style_scale_grad_color, "get_style_scale_grad_color", 715761969u, 0, 26, NULL); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_exec_rules); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_get_label); +be_define_const_str(get_label, "get_label", 3416266470u, 0, 9, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, NULL); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_handle_get_type_signal); +be_define_const_str(handle_get_type_signal, "handle_get_type_signal", 3735097350u, 0, 22, &be_const_str_set_checkable); +be_define_const_str(set_checkable, "set_checkable", 3024222852u, 0, 13, &be_const_str_set_width_fit); +be_define_const_str(set_width_fit, "set_width_fit", 703845988u, 0, 13, NULL); +be_define_const_str(DRAG_DIR_HOR, "DRAG_DIR_HOR", 1213227361u, 0, 12, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, NULL); +be_define_const_str(CPICKER_TYPE_RECT, "CPICKER_TYPE_RECT", 126543004u, 0, 17, &be_const_str_ETH_PHY_POWER); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_get_scale_angle); +be_define_const_str(get_scale_angle, "get_scale_angle", 845147062u, 0, 15, &be_const_str_set_style_local_image_recolor); +be_define_const_str(set_style_local_image_recolor, "set_style_local_image_recolor", 43538644u, 0, 29, NULL); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, &be_const_str_set_text_fmt); +be_define_const_str(set_text_fmt, "set_text_fmt", 699875119u, 0, 12, &be_const_str_set_x_tick_length); +be_define_const_str(set_x_tick_length, "set_x_tick_length", 3530536821u, 0, 17, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(ALIGN_OUT_LEFT_TOP, "ALIGN_OUT_LEFT_TOP", 2335540111u, 0, 18, &be_const_str_EVENT_FOCUSED); +be_define_const_str(EVENT_FOCUSED, "EVENT_FOCUSED", 3253401785u, 0, 13, &be_const_str_SDS0X1_TX); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_get_cursor_hidden); +be_define_const_str(get_cursor_hidden, "get_cursor_hidden", 3032264799u, 0, 17, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_set_tile_act); +be_define_const_str(set_tile_act, "set_tile_act", 1400046115u, 0, 12, NULL); +be_define_const_str(DISP_SIZE_MEDIUM, "DISP_SIZE_MEDIUM", 3336923135u, 0, 16, &be_const_str_OPA_30); +be_define_const_str(OPA_30, "OPA_30", 95806641u, 0, 6, &be_const_str_get_style_value_str); +be_define_const_str(get_style_value_str, "get_style_value_str", 967747319u, 0, 19, NULL); +be_define_const_str(add_btn_right, "add_btn_right", 2154922694u, 0, 13, &be_const_str_get_gesture_parent); +be_define_const_str(get_gesture_parent, "get_gesture_parent", 2610282188u, 0, 18, NULL); +be_define_const_str(BTNMATRIX_CTRL_CHECK_STATE, "BTNMATRIX_CTRL_CHECK_STATE", 377731u, 0, 26, &be_const_str_STYLE_TRANSITION_PROP_6); +be_define_const_str(STYLE_TRANSITION_PROP_6, "STYLE_TRANSITION_PROP_6", 1046607357u, 0, 23, NULL); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_set_formatter_cb); +be_define_const_str(set_formatter_cb, "set_formatter_cb", 1245371562u, 0, 16, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_NEOPOOL_TX); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_add_option); +be_define_const_str(add_option, "add_option", 3444380864u, 0, 10, NULL); +be_define_const_str(set_ext_array, "set_ext_array", 3579382093u, 0, 13, NULL); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); +be_define_const_str(STYLE_OUTLINE_PAD, "STYLE_OUTLINE_PAD", 2090004501u, 0, 17, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, NULL); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_SPINNER_TYPE_FILLSPIN_ARC); +be_define_const_str(SPINNER_TYPE_FILLSPIN_ARC, "SPINNER_TYPE_FILLSPIN_ARC", 2324275006u, 0, 25, &be_const_str_SYMBOL_BATTERY_2); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_set_image_opa); +be_define_const_str(set_image_opa, "set_image_opa", 517268068u, 0, 13, NULL); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); +be_define_const_str(ANIM_ON, "ANIM_ON", 1377334024u, 0, 7, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, &be_const_str_set_auto_realign); +be_define_const_str(set_auto_realign, "set_auto_realign", 3175723934u, 0, 16, &be_const_str_set_style_local_pattern_recolor_opa); +be_define_const_str(set_style_local_pattern_recolor_opa, "set_style_local_pattern_recolor_opa", 2215956762u, 0, 35, NULL); +be_define_const_str(DRAG_DIR_VER, "DRAG_DIR_VER", 3097064297u, 0, 12, &be_const_str_STYLE_OUTLINE_BLEND_MODE); +be_define_const_str(STYLE_OUTLINE_BLEND_MODE, "STYLE_OUTLINE_BLEND_MODE", 3861262655u, 0, 24, &be_const_str_STYLE_PAD_RIGHT); +be_define_const_str(STYLE_PAD_RIGHT, "STYLE_PAD_RIGHT", 4135691505u, 0, 15, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, &be_const_str_set_bg_end_angle); +be_define_const_str(set_bg_end_angle, "set_bg_end_angle", 569028341u, 0, 16, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SYMBOL_BULLET); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_add_tab); +be_define_const_str(add_tab, "add_tab", 1821901608u, 0, 7, &be_const_str_get_edge_flash); +be_define_const_str(get_edge_flash, "get_edge_flash", 3226611892u, 0, 14, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_DSB_OUT); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(BTNMATRIX_CTRL_CLICK_TRIG, "BTNMATRIX_CTRL_CLICK_TRIG", 2305639872u, 0, 25, &be_const_str_MCP39F5_RST); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_set_wrap); +be_define_const_str(set_wrap, "set_wrap", 776352320u, 0, 8, NULL); +be_define_const_str(STATE_EDITED, "STATE_EDITED", 46966454u, 0, 12, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_start_edge_flash); +be_define_const_str(start_edge_flash, "start_edge_flash", 305008300u, 0, 16, NULL); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(OPA_10, "OPA_10", 1908083683u, 0, 6, &be_const_str_get_value); +be_define_const_str(get_value, "get_value", 3844420137u, 0, 9, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_set_one_check); +be_define_const_str(set_one_check, "set_one_check", 1355948919u, 0, 13, &be_const_str_set_scrollable_fit2); +be_define_const_str(set_scrollable_fit2, "set_scrollable_fit2", 586952845u, 0, 19, NULL); +be_define_const_str(PROTECT_CHILD_CHG, "PROTECT_CHILD_CHG", 998079554u, 0, 17, NULL); +be_define_const_str(ALIGN_IN_LEFT_MID, "ALIGN_IN_LEFT_MID", 60432565u, 0, 17, NULL); +be_define_const_str(ALIGN_OUT_LEFT_MID, "ALIGN_OUT_LEFT_MID", 4283557662u, 0, 18, &be_const_str_get_cursor_manage); +be_define_const_str(get_cursor_manage, "get_cursor_manage", 2216849296u, 0, 17, &be_const_str_set_cell_value); +be_define_const_str(set_cell_value, "set_cell_value", 3982436570u, 0, 14, &be_const_str_set_cell_value_fmt); +be_define_const_str(set_cell_value_fmt, "set_cell_value_fmt", 355090466u, 0, 18, NULL); +be_define_const_str(STATE_PRESSED, "STATE_PRESSED", 2471016259u, 0, 13, &be_const_str_set_series_axis); +be_define_const_str(set_series_axis, "set_series_axis", 3828439823u, 0, 15, NULL); +be_define_const_str(ALIGN_OUT_BOTTOM_LEFT, "ALIGN_OUT_BOTTOM_LEFT", 1302083659u, 0, 21, &be_const_str_get_active_btn_text); +be_define_const_str(get_active_btn_text, "get_active_btn_text", 2709356149u, 0, 19, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(LAYOUT_COLUMN_LEFT, "LAYOUT_COLUMN_LEFT", 3178094182u, 0, 18, &be_const_str_LAYOUT_PRETTY_TOP); +be_define_const_str(LAYOUT_PRETTY_TOP, "LAYOUT_PRETTY_TOP", 725519108u, 0, 17, &be_const_str_draw_line); +be_define_const_str(draw_line, "draw_line", 1634465686u, 0, 9, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(set_align, "set_align", 2592958913u, 0, 9, &be_const_str_set_height); +be_define_const_str(set_height, "set_height", 1080207399u, 0, 10, NULL); +be_define_const_str(LAYOUT_GRID, "LAYOUT_GRID", 1755252272u, 0, 11, &be_const_str_STYLE_TRANSITION_DELAY); +be_define_const_str(STYLE_TRANSITION_DELAY, "STYLE_TRANSITION_DELAY", 251340916u, 0, 22, &be_const_str_get_style_image_recolor); +be_define_const_str(get_style_image_recolor, "get_style_image_recolor", 2369811232u, 0, 23, NULL); +be_define_const_str(get_style_shadow_ofs_y, "get_style_shadow_ofs_y", 2337159315u, 0, 22, &be_const_str_set_day_names); +be_define_const_str(set_day_names, "set_day_names", 1217780097u, 0, 13, &be_const_str_set_fit); +be_define_const_str(set_fit, "set_fit", 4009334267u, 0, 7, &be_const_str_set_style_local_text_decor); +be_define_const_str(set_style_local_text_decor, "set_style_local_text_decor", 2615974143u, 0, 26, &be_const_str_set_text_letter_space); +be_define_const_str(set_text_letter_space, "set_text_letter_space", 4274937273u, 0, 21, NULL); +be_define_const_str(STYLE_TEXT_FONT, "STYLE_TEXT_FONT", 75931268u, 0, 15, NULL); +be_define_const_str(increment, "increment", 940762942u, 0, 9, &be_const_str_off); +be_define_const_str(off, "off", 2872740362u, 0, 3, NULL); +be_define_const_str(set_pad_left, "set_pad_left", 3931796175u, 0, 12, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_get_x); +be_define_const_str(get_x, "get_x", 1188742048u, 0, 5, NULL); +be_define_const_str(PROTECT_PRESS_LOST, "PROTECT_PRESS_LOST", 2967498203u, 0, 18, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL); +be_define_const_str(set_scroll_propagation, "set_scroll_propagation", 2960260372u, 0, 22, NULL); +be_define_const_str(DISP_SIZE_SMALL, "DISP_SIZE_SMALL", 722343095u, 0, 15, &be_const_str_SYMBOL_SAVE); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, NULL); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, &be_const_str_set_highlighted_dates); +be_define_const_str(set_highlighted_dates, "set_highlighted_dates", 344528435u, 0, 21, NULL); +be_define_const_str(STYLE_SCALE_END_LINE_WIDTH, "STYLE_SCALE_END_LINE_WIDTH", 2154819175u, 0, 26, &be_const_str_get_scrl_fit_right); +be_define_const_str(get_scrl_fit_right, "get_scrl_fit_right", 4214186985u, 0, 18, NULL); +be_define_const_str(STYLE_TRANSITION_TIME, "STYLE_TRANSITION_TIME", 3058729752u, 0, 21, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_OBJ_PART_VIRTUAL_FIRST); +be_define_const_str(OBJ_PART_VIRTUAL_FIRST, "OBJ_PART_VIRTUAL_FIRST", 1744058739u, 0, 22, &be_const_str_STYLE_PATTERN_REPEAT); +be_define_const_str(STYLE_PATTERN_REPEAT, "STYLE_PATTERN_REPEAT", 721793275u, 0, 20, &be_const_str_TUYA_RX); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(Driver, "Driver", 3576386303u, 0, 6, &be_const_str_MAROON); +be_define_const_str(MAROON, "MAROON", 770976181u, 0, 6, &be_const_str_clear_selection); +be_define_const_str(clear_selection, "clear_selection", 4157132227u, 0, 15, &be_const_str_set_style_local_value_align); +be_define_const_str(set_style_local_value_align, "set_style_local_value_align", 17354185u, 0, 27, NULL); +be_define_const_str(EVENT_PRESS_LOST, "EVENT_PRESS_LOST", 3685074190u, 0, 16, NULL); +be_define_const_str(EVENT_INSERT, "EVENT_INSERT", 3754467621u, 0, 12, &be_const_str_SYMBOL_PREV); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, NULL); +be_define_const_str(set_bg_grad_dir, "set_bg_grad_dir", 1390928996u, 0, 15, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_set_style_local_value_line_space); +be_define_const_str(set_style_local_value_line_space, "set_style_local_value_line_space", 987261567u, 0, 32, NULL); +be_define_const_str(CHART_UPDATE_MODE_SHIFT, "CHART_UPDATE_MODE_SHIFT", 1343723110u, 0, 23, NULL); +be_define_const_str(refresh_ext_draw_pad, "refresh_ext_draw_pad", 3485714697u, 0, 20, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(set_pivot, "set_pivot", 2329940872u, 0, 9, NULL); +be_define_const_str(get_angle_offset, "get_angle_offset", 2775374871u, 0, 16, &be_const_str_set_text_blend_mode); +be_define_const_str(set_text_blend_mode, "set_text_blend_mode", 1236604715u, 0, 19, NULL); +be_define_const_str(LABEL_ALIGN_CENTER, "LABEL_ALIGN_CENTER", 3698850161u, 0, 18, &be_const_str_set_scrollable_fit); +be_define_const_str(set_scrollable_fit, "set_scrollable_fit", 4068661613u, 0, 18, NULL); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_get_nearest_index_from_coord); +be_define_const_str(get_nearest_index_from_coord, "get_nearest_index_from_coord", 847963620u, 0, 28, NULL); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_set_value_color); +be_define_const_str(set_value_color, "set_value_color", 2148821625u, 0, 15, NULL); +be_define_const_str(STYLE_BG_COLOR, "STYLE_BG_COLOR", 2207533444u, 0, 14, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, NULL); +be_define_const_str(BORDER_SIDE_TOP, "BORDER_SIDE_TOP", 3643834727u, 0, 15, &be_const_str_get_btn_label); +be_define_const_str(get_btn_label, "get_btn_label", 3300200213u, 0, 13, &be_const_str_set_adjustable); +be_define_const_str(set_adjustable, "set_adjustable", 1573073815u, 0, 14, NULL); +be_define_const_str(LABEL_LONG_DOT, "LABEL_LONG_DOT", 1312457976u, 0, 14, NULL); +be_define_const_str(remove_style, "remove_style", 3826054475u, 0, 12, NULL); +be_define_const_str(set_scrl_height, "set_scrl_height", 3462735686u, 0, 15, &be_const_str_web_sensor); +be_define_const_str(web_sensor, "web_sensor", 2900096972u, 0, 10, NULL); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_get_style_shadow_width); +be_define_const_str(get_style_shadow_width, "get_style_shadow_width", 4237112141u, 0, 22, NULL); +be_define_const_str(refresh_style, "refresh_style", 3029800338u, 0, 13, &be_const_str_set_border_side); +be_define_const_str(set_border_side, "set_border_side", 466446692u, 0, 15, &be_const_str_set_design_cb); +be_define_const_str(set_design_cb, "set_design_cb", 1469311634u, 0, 13, &be_const_str_set_style_local_transition_prop_6); +be_define_const_str(set_style_local_transition_prop_6, "set_style_local_transition_prop_6", 2535204486u, 0, 33, NULL); +be_define_const_str(CHECKBOX_PART_BULLET, "CHECKBOX_PART_BULLET", 3413099789u, 0, 20, &be_const_str_SDS0X1_RX); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_set_style_local_pad_bottom); +be_define_const_str(set_style_local_pad_bottom, "set_style_local_pad_bottom", 1362436575u, 0, 26, &be_const_str_set_style_local_text_letter_space); +be_define_const_str(set_style_local_text_letter_space, "set_style_local_text_letter_space", 2313398111u, 0, 33, NULL); +be_define_const_str(ALIGN_OUT_RIGHT_TOP, "ALIGN_OUT_RIGHT_TOP", 1142849712u, 0, 19, &be_const_str_get_coords); +be_define_const_str(get_coords, "get_coords", 1044089006u, 0, 10, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_set_style_local_opa_scale); +be_define_const_str(set_style_local_opa_scale, "set_style_local_opa_scale", 2718681341u, 0, 25, NULL); +be_define_const_str(get_style_clip_corner, "get_style_clip_corner", 352453368u, 0, 21, NULL); +be_define_const_str(send_data, "send_data", 4178328760u, 0, 9, &be_const_str_set_cell_align); +be_define_const_str(set_cell_align, "set_cell_align", 3036710638u, 0, 14, &be_const_str_set_style_local_border_blend_mode); +be_define_const_str(set_style_local_border_blend_mode, "set_style_local_border_blend_mode", 3453690930u, 0, 33, NULL); +be_define_const_str(get_inner_coords, "get_inner_coords", 985433607u, 0, 16, &be_const_str_get_max_length); +be_define_const_str(get_max_length, "get_max_length", 13029699u, 0, 14, &be_const_str_get_style_line_opa); +be_define_const_str(get_style_line_opa, "get_style_line_opa", 3653868853u, 0, 18, NULL); +be_define_const_str(ANIM_OFF, "ANIM_OFF", 3664307970u, 0, 8, &be_const_str_blur_ver); +be_define_const_str(blur_ver, "blur_ver", 2584500226u, 0, 8, NULL); +be_define_const_str(clean_style_list, "clean_style_list", 1108481805u, 0, 16, NULL); +be_define_const_str(add_state, "add_state", 934613858u, 0, 9, &be_const_str_set_hidden); +be_define_const_str(set_hidden, "set_hidden", 2478665880u, 0, 10, NULL); +be_define_const_str(STYLE_SHADOW_OFS_X, "STYLE_SHADOW_OFS_X", 2707391813u, 0, 18, &be_const_str_set_outline_width); +be_define_const_str(set_outline_width, "set_outline_width", 2428704969u, 0, 17, NULL); +be_define_const_str(set_btn_ctrl, "set_btn_ctrl", 3999876128u, 0, 12, NULL); +be_define_const_str(EVENT_GESTURE, "EVENT_GESTURE", 2506519243u, 0, 13, &be_const_str_LEDLNK); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_set_fit2); +be_define_const_str(set_fit2, "set_fit2", 4226206571u, 0, 8, NULL); +be_define_const_str(OPA_20, "OPA_20", 4289961128u, 0, 6, &be_const_str_close_event_cb); +be_define_const_str(close_event_cb, "close_event_cb", 1180945172u, 0, 14, &be_const_str_set_event_cb); +be_define_const_str(set_event_cb, "set_event_cb", 3611711604u, 0, 12, NULL); +be_define_const_str(FS_RES_HW_ERR, "FS_RES_HW_ERR", 1676324085u, 0, 13, &be_const_str_MHZ_RXD); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_remove_obj); +be_define_const_str(remove_obj, "remove_obj", 2093082931u, 0, 10, NULL); +be_define_const_str(FS_RES_OUT_OF_MEM, "FS_RES_OUT_OF_MEM", 802499854u, 0, 17, NULL); +be_define_const_str(get_btnmatrix, "get_btnmatrix", 1628630681u, 0, 13, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(get_auto_realign, "get_auto_realign", 4029512850u, 0, 16, NULL); +be_define_const_str(get_letter_pos, "get_letter_pos", 1477814169u, 0, 14, &be_const_str_set_y_range); +be_define_const_str(set_y_range, "set_y_range", 1531043725u, 0, 11, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_FS_RES_LOCKED); +be_define_const_str(FS_RES_LOCKED, "FS_RES_LOCKED", 3948147866u, 0, 13, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_get_text_sel_end); +be_define_const_str(get_text_sel_end, "get_text_sel_end", 3650450346u, 0, 16, NULL); +be_define_const_str(remove_mask, "remove_mask", 1680723542u, 0, 11, &be_const_str_set_pattern_image); +be_define_const_str(set_pattern_image, "set_pattern_image", 1204394880u, 0, 17, NULL); +be_define_const_str(LAYOUT_PRETTY_MID, "LAYOUT_PRETTY_MID", 2040633917u, 0, 17, NULL); +be_define_const_str(set_style_local_text_sel_color, "set_style_local_text_sel_color", 3749375246u, 0, 30, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_reset_style_list); +be_define_const_str(reset_style_list, "reset_style_list", 4135460875u, 0, 16, NULL); +be_define_const_str(STATE_FOCUSED, "STATE_FOCUSED", 3780463572u, 0, 13, NULL); +be_define_const_str(BLEND_MODE_ADDITIVE, "BLEND_MODE_ADDITIVE", 3732684283u, 0, 19, &be_const_str_SYMBOL_BATTERY_FULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_get_click_focus); +be_define_const_str(get_click_focus, "get_click_focus", 1418740299u, 0, 15, &be_const_str_set_dir); +be_define_const_str(set_dir, "set_dir", 331967531u, 0, 7, NULL); +be_define_const_str(set_title, "set_title", 793032418u, 0, 9, NULL); +be_define_const_str(every_second, "every_second", 2075451465u, 0, 12, NULL); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, NULL); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_FS_MODE_WR); +be_define_const_str(FS_MODE_WR, "FS_MODE_WR", 2839601832u, 0, 10, &be_const_str_OBJ_PART_ALL); +be_define_const_str(OBJ_PART_ALL, "OBJ_PART_ALL", 3502425074u, 0, 12, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_get_style_line_color); +be_define_const_str(get_style_line_color, "get_style_line_color", 805371932u, 0, 20, &be_const_str_get_style_pattern_image); +be_define_const_str(get_style_pattern_image, "get_style_pattern_image", 2402970102u, 0, 23, &be_const_str_set_recolor); +be_define_const_str(set_recolor, "set_recolor", 2750390248u, 0, 11, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_SYMBOL_COPY); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_set_points); +be_define_const_str(set_points, "set_points", 1252105979u, 0, 10, &be_const_str_set_shadow_width); +be_define_const_str(set_shadow_width, "set_shadow_width", 1524575495u, 0, 16, NULL); +be_define_const_str(get_hue, "get_hue", 1060457518u, 0, 7, &be_const_str_list_get_style); +be_define_const_str(list_get_style, "list_get_style", 2060904236u, 0, 14, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_TXT_FLAG_RECOLOR); +be_define_const_str(TXT_FLAG_RECOLOR, "TXT_FLAG_RECOLOR", 2017218753u, 0, 16, &be_const_str_set_style_local_size); +be_define_const_str(set_style_local_size, "set_style_local_size", 1442450187u, 0, 20, NULL); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_get_style_shadow_ofs_x); +be_define_const_str(get_style_shadow_ofs_x, "get_style_shadow_ofs_x", 2320381696u, 0, 22, &be_const_str_set_y_invert); +be_define_const_str(set_y_invert, "set_y_invert", 4003140588u, 0, 12, NULL); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_SBR_RX); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, NULL); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_TEXT_DECOR_STRIKETHROUGH); +be_define_const_str(TEXT_DECOR_STRIKETHROUGH, "TEXT_DECOR_STRIKETHROUGH", 2875711852u, 0, 24, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, NULL); +be_define_const_str(decrement, "decrement", 432748210u, 0, 9, NULL); +be_define_const_str(get_hor_res, "get_hor_res", 37131144u, 0, 11, NULL); +be_define_const_str(del_char_forward, "del_char_forward", 400381733u, 0, 16, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_get_needle_img_pivot_x); +be_define_const_str(get_needle_img_pivot_x, "get_needle_img_pivot_x", 1521736283u, 0, 22, NULL); +be_define_const_str(get_file_name, "get_file_name", 3239886120u, 0, 13, NULL); +be_define_const_str(set_scale_width, "set_scale_width", 2442490229u, 0, 15, &be_const_str_set_state); +be_define_const_str(set_state, "set_state", 905808233u, 0, 9, NULL); +be_define_const_str(get_saturation, "get_saturation", 3458845696u, 0, 14, &be_const_str_set_line_blend_mode); +be_define_const_str(set_line_blend_mode, "set_line_blend_mode", 350784568u, 0, 19, NULL); +be_define_const_str(EVENT_PRESSING, "EVENT_PRESSING", 2840400065u, 0, 14, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_get_style_text_letter_space); +be_define_const_str(get_style_text_letter_space, "get_style_text_letter_space", 772735187u, 0, 27, NULL); +be_define_const_str(add_style, "add_style", 2931235026u, 0, 9, NULL); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_get_day_of_week); +be_define_const_str(get_day_of_week, "get_day_of_week", 3301373175u, 0, 15, NULL); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); +be_define_const_str(KEY_ESC, "KEY_ESC", 915768258u, 0, 7, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(LABEL_LONG_CROP, "LABEL_LONG_CROP", 4057484127u, 0, 15, &be_const_str_STYLE_IMAGE_OPA); +be_define_const_str(STYLE_IMAGE_OPA, "STYLE_IMAGE_OPA", 1064316425u, 0, 15, &be_const_str_STYLE_LINE_DASH_GAP); +be_define_const_str(STYLE_LINE_DASH_GAP, "STYLE_LINE_DASH_GAP", 1823312065u, 0, 19, &be_const_str_set_line_width); +be_define_const_str(set_line_width, "set_line_width", 908110269u, 0, 14, NULL); +be_define_const_str(HSPI, "HSPI", 2263006151u, 0, 4, NULL); +be_define_const_str(PROTECT_FOLLOW, "PROTECT_FOLLOW", 44354676u, 0, 14, &be_const_str_set_scale_border_width); +be_define_const_str(set_scale_border_width, "set_scale_border_width", 3210684730u, 0, 22, NULL); +be_define_const_str(KEY_DOWN, "KEY_DOWN", 2353719865u, 0, 8, &be_const_str_is_inactive); +be_define_const_str(is_inactive, "is_inactive", 2737113619u, 0, 11, &be_const_str_set_cursor_blink_time); +be_define_const_str(set_cursor_blink_time, "set_cursor_blink_time", 3508000825u, 0, 21, &be_const_str_transform); +be_define_const_str(transform, "transform", 3786248987u, 0, 9, NULL); +be_define_const_str(save_before_restart, "save_before_restart", 1253239338u, 0, 19, &be_const_str_set_value_opa); +be_define_const_str(set_value_opa, "set_value_opa", 1055786128u, 0, 13, NULL); +be_define_const_str(LABEL_LONG_EXPAND, "LABEL_LONG_EXPAND", 2357238585u, 0, 17, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, &be_const_str_set_style_local_border_opa); +be_define_const_str(set_style_local_border_opa, "set_style_local_border_opa", 2125961393u, 0, 26, NULL); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_set_style_local_scale_end_line_width); +be_define_const_str(set_style_local_scale_end_line_width, "set_style_local_scale_end_line_width", 2316920258u, 0, 36, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, NULL); +be_define_const_str(get_x_start_point, "get_x_start_point", 4100384878u, 0, 17, NULL); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_set_style_local_shadow_width); +be_define_const_str(set_style_local_shadow_width, "set_style_local_shadow_width", 2466053617u, 0, 28, NULL); +be_define_const_str(get_style_text_color, "get_style_text_color", 1013168305u, 0, 20, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); +be_define_const_str(KEYBOARD_PART_BTN, "KEYBOARD_PART_BTN", 875459207u, 0, 17, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, NULL); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_align); +be_define_const_str(align, "align", 1613521886u, 0, 5, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_set_pattern_blend_mode); +be_define_const_str(set_pattern_blend_mode, "set_pattern_blend_mode", 4267769432u, 0, 22, NULL); +be_define_const_str(get_tab, "get_tab", 2415176615u, 0, 7, NULL); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(EVENT_LONG_PRESSED_REPEAT, "EVENT_LONG_PRESSED_REPEAT", 1734201539u, 0, 25, &be_const_str_set_style_local_transition_prop_5); +be_define_const_str(set_style_local_transition_prop_5, "set_style_local_transition_prop_5", 2518426867u, 0, 33, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_SSPI_MAX31865_CS1); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_SYMBOL_DOWN); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_set_clip_corner); +be_define_const_str(set_clip_corner, "set_clip_corner", 2280572814u, 0, 15, &be_const_str_set_pad_inner); +be_define_const_str(set_pad_inner, "set_pad_inner", 1662755314u, 0, 13, &be_const_str_set_style_local_line_dash_width); +be_define_const_str(set_style_local_line_dash_width, "set_style_local_line_dash_width", 3177951154u, 0, 31, NULL); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_set_pwd_mode); +be_define_const_str(set_pwd_mode, "set_pwd_mode", 1333849907u, 0, 12, NULL); +be_define_const_str(SSPI, "SSPI", 2469416576u, 0, 4, &be_const_str_set_transform_height); +be_define_const_str(set_transform_height, "set_transform_height", 3869973274u, 0, 20, NULL); +be_define_const_str(STYLE_TRANSITION_PROP_4, "STYLE_TRANSITION_PROP_4", 1013052119u, 0, 23, &be_const_str_get_parent_event); +be_define_const_str(get_parent_event, "get_parent_event", 102705295u, 0, 16, &be_const_str_get_style_value_ofs_x); +be_define_const_str(get_style_value_ofs_x, "get_style_value_ofs_x", 4017645761u, 0, 21, NULL); +be_define_const_str(EVENT_PRESSED, "EVENT_PRESSED", 3734627670u, 0, 13, NULL); +be_define_const_str(STYLE_TRANSFORM_HEIGHT, "STYLE_TRANSFORM_HEIGHT", 953009101u, 0, 22, NULL); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); +be_define_const_str(KEY_ENTER, "KEY_ENTER", 2614103337u, 0, 9, &be_const_str_STYLE_SCALE_END_COLOR); +be_define_const_str(STYLE_SCALE_END_COLOR, "STYLE_SCALE_END_COLOR", 1403682869u, 0, 21, &be_const_str_STYLE_TEXT_OPA); +be_define_const_str(STYLE_TEXT_OPA, "STYLE_TEXT_OPA", 3094351509u, 0, 14, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_get_focus_parent); +be_define_const_str(get_focus_parent, "get_focus_parent", 1187935525u, 0, 16, NULL); +be_define_const_str(STYLE_SHADOW_OFS_Y, "STYLE_SHADOW_OFS_Y", 2690614194u, 0, 18, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_set_drag); +be_define_const_str(set_drag, "set_drag", 2586329126u, 0, 8, NULL); +be_define_const_str(LAYOUT_COLUMN_MID, "LAYOUT_COLUMN_MID", 669575067u, 0, 17, &be_const_str_get_style_border_width); +be_define_const_str(get_style_border_width, "get_style_border_width", 3436292763u, 0, 22, &be_const_str_get_text_sel_start); +be_define_const_str(get_text_sel_start, "get_text_sel_start", 1075131103u, 0, 18, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_SM16716_DAT); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, NULL); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, NULL); +be_define_const_str(ALIGN_IN_RIGHT_MID, "ALIGN_IN_RIGHT_MID", 1518023108u, 0, 18, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); +be_define_const_str(get_checkable, "get_checkable", 2811548136u, 0, 13, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_toggle); +be_define_const_str(toggle, "toggle", 1076453893u, 0, 6, NULL); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_focus_btn); +be_define_const_str(focus_btn, "focus_btn", 1087954772u, 0, 9, &be_const_str_get_style_bg_grad_color); +be_define_const_str(get_style_bg_grad_color, "get_style_bg_grad_color", 4149817886u, 0, 23, &be_const_str_get_style_transform_zoom); +be_define_const_str(get_style_transform_zoom, "get_style_transform_zoom", 380604044u, 0, 24, NULL); +be_define_const_str(CHART_CURSOR_DOWN, "CHART_CURSOR_DOWN", 790177263u, 0, 17, &be_const_str_GRAD_DIR_HOR); +be_define_const_str(GRAD_DIR_HOR, "GRAD_DIR_HOR", 2383101491u, 0, 12, &be_const_str_set_style_local_value_letter_space); +be_define_const_str(set_style_local_value_letter_space, "set_style_local_value_letter_space", 826246017u, 0, 34, NULL); +be_define_const_str(get_text_sel_en, "get_text_sel_en", 500051850u, 0, 15, &be_const_str_set_spin_time); +be_define_const_str(set_spin_time, "set_spin_time", 1386363784u, 0, 13, NULL); +be_define_const_str(anim_cb, "anim_cb", 2120778920u, 0, 7, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, NULL); +be_define_const_str(set_antialias, "set_antialias", 1998560096u, 0, 13, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_LAYOUT_COLUMN_RIGHT); +be_define_const_str(LAYOUT_COLUMN_RIGHT, "LAYOUT_COLUMN_RIGHT", 912913083u, 0, 19, &be_const_str_STYLE_TRANSFORM_ZOOM); +be_define_const_str(STYLE_TRANSFORM_ZOOM, "STYLE_TRANSFORM_ZOOM", 224871941u, 0, 20, &be_const_str_get_hsv); +be_define_const_str(get_hsv, "get_hsv", 774943805u, 0, 7, &be_const_str_set_style_local_text_font); +be_define_const_str(set_style_local_text_font, "set_style_local_text_font", 954295699u, 0, 25, &be_const_str_set_tab_name); +be_define_const_str(set_tab_name, "set_tab_name", 2075400175u, 0, 12, NULL); +be_define_const_str(OPA_60, "OPA_60", 2008896492u, 0, 6, &be_const_str_get_height_grid); +be_define_const_str(get_height_grid, "get_height_grid", 1178822580u, 0, 15, NULL); +be_define_const_str(get_arc_length, "get_arc_length", 2763412693u, 0, 14, &be_const_str_set_header_height); +be_define_const_str(set_header_height, "set_header_height", 2913303849u, 0, 17, &be_const_str_set_scrl_layout); +be_define_const_str(set_scrl_layout, "set_scrl_layout", 2051800603u, 0, 15, NULL); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_DRAG_DIR_ONE); +be_define_const_str(DRAG_DIR_ONE, "DRAG_DIR_ONE", 2088479808u, 0, 12, NULL); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_get_accepted_chars); +be_define_const_str(get_accepted_chars, "get_accepted_chars", 2210030087u, 0, 18, NULL); +be_define_const_str(GESTURE_DIR_TOP, "GESTURE_DIR_TOP", 84881028u, 0, 15, &be_const_str_get_layout); +be_define_const_str(get_layout, "get_layout", 2537311278u, 0, 10, &be_const_str_get_user_data); +be_define_const_str(get_user_data, "get_user_data", 1175796436u, 0, 13, &be_const_str_remove_all_objs); +be_define_const_str(remove_all_objs, "remove_all_objs", 2136122696u, 0, 15, NULL); +be_define_const_str(STYLE_SCALE_END_BORDER_WIDTH, "STYLE_SCALE_END_BORDER_WIDTH", 763958239u, 0, 28, &be_const_str_TABVIEW_TAB_POS_RIGHT); +be_define_const_str(TABVIEW_TAB_POS_RIGHT, "TABVIEW_TAB_POS_RIGHT", 3809644849u, 0, 21, &be_const_str_WEBCAM_PCLK); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, NULL); +be_define_const_str(BLACK, "BLACK", 1750494276u, 0, 5, &be_const_str_PZEM004_RX); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_get_scrl_fit_bottom); +be_define_const_str(get_scrl_fit_bottom, "get_scrl_fit_bottom", 446102398u, 0, 19, &be_const_str_set_start_angle); +be_define_const_str(set_start_angle, "set_start_angle", 3152567416u, 0, 15, NULL); +be_define_const_str(set_style_local_image_recolor_opa, "set_style_local_image_recolor_opa", 1752356781u, 0, 33, NULL); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(get_active_btn, "get_active_btn", 3720382749u, 0, 14, NULL); +be_define_const_str(STYLE_VALUE_FONT, "STYLE_VALUE_FONT", 1861540608u, 0, 16, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_get_px); +be_define_const_str(get_px, "get_px", 1651889344u, 0, 6, &be_const_str_title_set_alignment); +be_define_const_str(title_set_alignment, "title_set_alignment", 192669664u, 0, 19, NULL); +be_define_const_str(get_local_style, "get_local_style", 2060541417u, 0, 15, &be_const_str_get_offset_y); +be_define_const_str(get_offset_y, "get_offset_y", 3939359167u, 0, 12, &be_const_str_hide_series); +be_define_const_str(hide_series, "hide_series", 3053662735u, 0, 11, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_STYLE_PATTERN_RECOLOR); +be_define_const_str(STYLE_PATTERN_RECOLOR, "STYLE_PATTERN_RECOLOR", 2178713592u, 0, 21, &be_const_str_cursor_down); +be_define_const_str(cursor_down, "cursor_down", 657234748u, 0, 11, &be_const_str_get_needle_img_pivot_y); +be_define_const_str(get_needle_img_pivot_y, "get_needle_img_pivot_y", 1504958664u, 0, 22, &be_const_str_set_style_local_shadow_blend_mode); +be_define_const_str(set_style_local_shadow_blend_mode, "set_style_local_shadow_blend_mode", 2580830900u, 0, 33, NULL); +be_define_const_str(get_style_border_opa, "get_style_border_opa", 140307373u, 0, 20, NULL); +be_define_const_str(EVENT_DRAG_END, "EVENT_DRAG_END", 3617672228u, 0, 14, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, NULL); +be_define_const_str(draw_img, "draw_img", 3217263339u, 0, 8, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_EVENT_APPLY); +be_define_const_str(EVENT_APPLY, "EVENT_APPLY", 1983056372u, 0, 11, &be_const_str_GREEN); +be_define_const_str(GREEN, "GREEN", 2875364188u, 0, 5, &be_const_str_STYLE_SIZE); +be_define_const_str(STYLE_SIZE, "STYLE_SIZE", 2268500266u, 0, 10, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_is_point_on_coords); +be_define_const_str(is_point_on_coords, "is_point_on_coords", 2479052471u, 0, 18, NULL); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_STYLE_BG_GRAD_STOP); +be_define_const_str(STYLE_BG_GRAD_STOP, "STYLE_BG_GRAD_STOP", 1591142422u, 0, 18, &be_const_str_STYLE_LINE_WIDTH); +be_define_const_str(STYLE_LINE_WIDTH, "STYLE_LINE_WIDTH", 537342374u, 0, 16, &be_const_str_every_100ms); +be_define_const_str(every_100ms, "every_100ms", 1546407804u, 0, 11, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_STATE_CHECKED); +be_define_const_str(STATE_CHECKED, "STATE_CHECKED", 136056964u, 0, 13, &be_const_str_get_label_count); +be_define_const_str(get_label_count, "get_label_count", 1700997322u, 0, 15, &be_const_str_set_style_local_margin_top); +be_define_const_str(set_style_local_margin_top, "set_style_local_margin_top", 2065926016u, 0, 26, NULL); +be_define_const_str(set_scrl_width, "set_scrl_width", 2522533355u, 0, 14, NULL); +be_define_const_str(GRAY, "GRAY", 4159498394u, 0, 4, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_set_start_value); +be_define_const_str(set_start_value, "set_start_value", 1399674154u, 0, 15, NULL); +be_define_const_str(STYLE_BG_MAIN_STOP, "STYLE_BG_MAIN_STOP", 376609633u, 0, 18, NULL); +be_define_const_str(set_disabled, "set_disabled", 3892741852u, 0, 12, &be_const_str_set_line_rounded); +be_define_const_str(set_line_rounded, "set_line_rounded", 1057786792u, 0, 16, &be_const_str_web_add_button); +be_define_const_str(web_add_button, "web_add_button", 3537875058u, 0, 14, NULL); +be_define_const_str(set_style_local_transition_path, "set_style_local_transition_path", 1414572505u, 0, 31, NULL); +be_define_const_str(invalidate_area, "invalidate_area", 1904223292u, 0, 15, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, &be_const_str_set_y_tick_length); +be_define_const_str(set_y_tick_length, "set_y_tick_length", 1194305306u, 0, 17, NULL); +be_define_const_str(def_event_cb, "def_event_cb", 3544166485u, 0, 12, &be_const_str_set_style_local_margin_right); +be_define_const_str(set_style_local_margin_right, "set_style_local_margin_right", 2606287945u, 0, 28, NULL); +be_define_const_str(set_saturation, "set_saturation", 2225192852u, 0, 14, NULL); +be_define_const_str(FIT_PARENT, "FIT_PARENT", 3852740121u, 0, 10, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_set_width); +be_define_const_str(set_width, "set_width", 484671920u, 0, 9, NULL); +be_define_const_str(CALENDAR_PART_HEADER, "CALENDAR_PART_HEADER", 1199188911u, 0, 20, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_get_y_from_index); +be_define_const_str(get_y_from_index, "get_y_from_index", 2777682943u, 0, 16, NULL); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(BORDER_SIDE_INTERNAL, "BORDER_SIDE_INTERNAL", 4209377645u, 0, 20, &be_const_str_EVENT_CLICKED); +be_define_const_str(EVENT_CLICKED, "EVENT_CLICKED", 243475129u, 0, 13, &be_const_str_IBEACON_RX); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_set_rollover); +be_define_const_str(set_rollover, "set_rollover", 1838959037u, 0, 12, NULL); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_set_style_local_pad_top); +be_define_const_str(set_style_local_pad_top, "set_style_local_pad_top", 785256663u, 0, 23, NULL); +be_define_const_str(GAUGE_PART_MAJOR, "GAUGE_PART_MAJOR", 3656186174u, 0, 16, &be_const_str_KEY_LEFT); +be_define_const_str(KEY_LEFT, "KEY_LEFT", 3050288868u, 0, 8, &be_const_str_set_style_local_text_opa); +be_define_const_str(set_style_local_text_opa, "set_style_local_text_opa", 1391350156u, 0, 24, NULL); +be_define_const_str(get_scrl_height, "get_scrl_height", 1933731194u, 0, 15, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, &be_const_str_set_style_local_transition_prop_4); +be_define_const_str(set_style_local_transition_prop_4, "set_style_local_transition_prop_4", 2501649248u, 0, 33, NULL); +be_define_const_str(SPI, "SPI", 1746663213u, 0, 3, &be_const_str_ins_text); +be_define_const_str(ins_text, "ins_text", 2467863999u, 0, 8, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(LIME, "LIME", 87366652u, 0, 4, NULL); +be_define_const_str(get_needle_img, "get_needle_img", 477560399u, 0, 14, NULL); +be_define_const_str(STYLE_TRANSITION_PROP_5, "STYLE_TRANSITION_PROP_5", 996274500u, 0, 23, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_get_style_value_ofs_y); +be_define_const_str(get_style_value_ofs_y, "get_style_value_ofs_y", 4000868142u, 0, 21, NULL); +be_define_const_str(STYLE_IMAGE_RECOLOR, "STYLE_IMAGE_RECOLOR", 1769022527u, 0, 19, &be_const_str_cut_text); +be_define_const_str(cut_text, "cut_text", 3023853443u, 0, 8, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); +be_define_const_str(TXT_FLAG_FIT, "TXT_FLAG_FIT", 3174579022u, 0, 12, &be_const_str_Tasmota); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_clear_series); +be_define_const_str(clear_series, "clear_series", 3353669054u, 0, 12, &be_const_str_get_textarea); +be_define_const_str(get_textarea, "get_textarea", 839445266u, 0, 12, NULL); +be_define_const_str(STYLE_SHADOW_COLOR, "STYLE_SHADOW_COLOR", 368908723u, 0, 18, &be_const_str_set_padding_left); +be_define_const_str(set_padding_left, "set_padding_left", 1230478487u, 0, 16, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_PN532_TXD); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, NULL); +be_define_const_str(cursor_up, "cursor_up", 4142217213u, 0, 9, &be_const_str_get_selected_str); +be_define_const_str(get_selected_str, "get_selected_str", 1743823997u, 0, 16, &be_const_str_remove_style_local_prop); +be_define_const_str(remove_style_local_prop, "remove_style_local_prop", 1160046873u, 0, 23, &be_const_str_set_style_local_border_width); +be_define_const_str(set_style_local_border_width, "set_style_local_border_width", 4234107199u, 0, 28, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_set_transform_zoom); +be_define_const_str(set_transform_zoom, "set_transform_zoom", 140970906u, 0, 18, NULL); +be_define_const_str(CALENDAR_PART_DAY_NAMES, "CALENDAR_PART_DAY_NAMES", 1761763651u, 0, 23, &be_const_str_FIT_TIGHT); +be_define_const_str(FIT_TIGHT, "FIT_TIGHT", 2710930043u, 0, 9, &be_const_str_KEY1_TC); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_get_option_cnt); +be_define_const_str(get_option_cnt, "get_option_cnt", 2922481u, 0, 14, &be_const_str_get_style_opa_scale); +be_define_const_str(get_style_opa_scale, "get_style_opa_scale", 568621865u, 0, 19, NULL); +be_define_const_str(get_scroll_propagation, "get_scroll_propagation", 431556896u, 0, 22, &be_const_str_set_gesture_parent); +be_define_const_str(set_gesture_parent, "set_gesture_parent", 3726242272u, 0, 18, &be_const_str_set_line_color); +be_define_const_str(set_line_color, "set_line_color", 2944146362u, 0, 14, &be_const_str_set_today_date); +be_define_const_str(set_today_date, "set_today_date", 3983571786u, 0, 14, NULL); +be_define_const_str(set_end_angle, "set_end_angle", 2783087761u, 0, 13, NULL); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_get_style_line_dash_width); +be_define_const_str(get_style_line_dash_width, "get_style_line_dash_width", 4191923846u, 0, 25, NULL); +be_define_const_str(BTNMATRIX_CTRL_CHECKABLE, "BTNMATRIX_CTRL_CHECKABLE", 2892484613u, 0, 24, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, &be_const_str_set_btn_width); +be_define_const_str(set_btn_width, "set_btn_width", 2736013227u, 0, 13, &be_const_str_set_y); +be_define_const_str(set_y, "set_y", 1866178391u, 0, 5, NULL); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_WEBCAM_RESET); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_set_shadow_spread); +be_define_const_str(set_shadow_spread, "set_shadow_spread", 3535503174u, 0, 17, NULL); +be_define_const_str(get_ext_click_pad_right, "get_ext_click_pad_right", 3976528463u, 0, 23, NULL); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, NULL); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_set_bg_blend_mode); +be_define_const_str(set_bg_blend_mode, "set_bg_blend_mode", 2432224687u, 0, 17, NULL); +be_define_const_str(get_style_text_opa, "get_style_text_opa", 2378295432u, 0, 18, NULL); +be_define_const_str(OPA_COVER, "OPA_COVER", 3000088857u, 0, 9, &be_const_str_SYMBOL_MUTE); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); +be_define_const_str(RED, "RED", 2211354620u, 0, 3, &be_const_str_SYMBOL_CUT); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str___lower__); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_lv_calendar); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_add_btn_left); +be_define_const_str(add_btn_left, "add_btn_left", 3984572941u, 0, 12, &be_const_str_set_style_local_transform_width); +be_define_const_str(set_style_local_transform_width, "set_style_local_transform_width", 3850555169u, 0, 31, &be_const_str_set_transition_prop_5); +be_define_const_str(set_transition_prop_5, "set_transition_prop_5", 3101011821u, 0, 21, NULL); +be_define_const_str(GESTURE_DIR_BOTTOM, "GESTURE_DIR_BOTTOM", 336208834u, 0, 18, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_refr_text); +be_define_const_str(refr_text, "refr_text", 3162090502u, 0, 9, NULL); +be_define_const_str(set_checked, "set_checked", 1119609005u, 0, 11, &be_const_str_set_zoom); +be_define_const_str(set_zoom, "set_zoom", 1925134407u, 0, 8, NULL); +be_define_const_str(set_editing, "set_editing", 1742905400u, 0, 11, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(STYLE_TEXT_LETTER_SPACE, "STYLE_TEXT_LETTER_SPACE", 2264289484u, 0, 23, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_STYLE_TEXT_SEL_BG_COLOR); +be_define_const_str(STYLE_TEXT_SEL_BG_COLOR, "STYLE_TEXT_SEL_BG_COLOR", 2758212579u, 0, 23, &be_const_str_set_fit4); +be_define_const_str(set_fit4, "set_fit4", 31904989u, 0, 8, NULL); +be_define_const_str(DROPDOWN_DIR_LEFT, "DROPDOWN_DIR_LEFT", 3057408860u, 0, 17, &be_const_str_TXT_FLAG_CENTER); +be_define_const_str(TXT_FLAG_CENTER, "TXT_FLAG_CENTER", 1125425546u, 0, 15, NULL); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_HJL_CF); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_set_secondary_y_tick_texts); +be_define_const_str(set_secondary_y_tick_texts, "set_secondary_y_tick_texts", 2165523729u, 0, 26, NULL); +be_define_const_str(set_style_local_pattern_repeat, "set_style_local_pattern_repeat", 2930402426u, 0, 30, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, &be_const_str_set_accepted_chars); +be_define_const_str(set_accepted_chars, "set_accepted_chars", 3900817531u, 0, 18, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_OPA_TRANSP); +be_define_const_str(OPA_TRANSP, "OPA_TRANSP", 2652293196u, 0, 10, &be_const_str_PWM1); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_get_drag); +be_define_const_str(get_drag, "get_drag", 1996600010u, 0, 8, &be_const_str_get_offset_x); +be_define_const_str(get_offset_x, "get_offset_x", 3922581548u, 0, 12, NULL); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_set_border_opa); +be_define_const_str(set_border_opa, "set_border_opa", 3722959347u, 0, 14, NULL); +be_define_const_str(get_max_value, "get_max_value", 2625343304u, 0, 13, &be_const_str_list_init); +be_define_const_str(list_init, "list_init", 2798529232u, 0, 9, NULL); +be_define_const_str(KEYBOARD_MODE_TEXT_LOWER, "KEYBOARD_MODE_TEXT_LOWER", 3755201214u, 0, 24, &be_const_str_get_y_invert); +be_define_const_str(get_y_invert, "get_y_invert", 2518095240u, 0, 12, &be_const_str_scr_act); +be_define_const_str(scr_act, "scr_act", 2080211456u, 0, 7, NULL); +be_define_const_str(get_wrap, "get_wrap", 52299084u, 0, 8, NULL); +be_define_const_str(CHART_CURSOR_RIGHT, "CHART_CURSOR_RIGHT", 2464313335u, 0, 18, &be_const_str_set_parent_event); +be_define_const_str(set_parent_event, "set_parent_event", 49610579u, 0, 16, &be_const_str_set_size); +be_define_const_str(set_size, "set_size", 2183165325u, 0, 8, NULL); +be_define_const_str(get_style_transform_angle, "get_style_transform_angle", 1307352290u, 0, 25, NULL); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_get_drag_parent); +be_define_const_str(get_drag_parent, "get_drag_parent", 1546081183u, 0, 15, &be_const_str_init_draw_img_dsc); +be_define_const_str(init_draw_img_dsc, "init_draw_img_dsc", 1278847223u, 0, 17, &be_const_str_set_style_local_text_color); +be_define_const_str(set_style_local_text_color, "set_style_local_text_color", 2285935637u, 0, 26, NULL); +be_define_const_str(get_height, "get_height", 3571755523u, 0, 10, &be_const_str_set_style_local_shadow_ofs_y); +be_define_const_str(set_style_local_shadow_ofs_y, "set_style_local_shadow_ofs_y", 1635871223u, 0, 28, NULL); +be_define_const_str(add_text, "add_text", 2433225858u, 0, 8, &be_const_str_init_draw_rect_dsc); +be_define_const_str(init_draw_rect_dsc, "init_draw_rect_dsc", 4242061620u, 0, 18, NULL); +be_define_const_str(DROPDOWN_DIR_DOWN, "DROPDOWN_DIR_DOWN", 214322625u, 0, 17, &be_const_str_set_power); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_STYLE_VALUE_COLOR); +be_define_const_str(STYLE_VALUE_COLOR, "STYLE_VALUE_COLOR", 2491635400u, 0, 17, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_ST7789_DC); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_TXT_FLAG_NONE); +be_define_const_str(TXT_FLAG_NONE, "TXT_FLAG_NONE", 3092237369u, 0, 13, &be_const_str_get_anim_speed); +be_define_const_str(get_anim_speed, "get_anim_speed", 1731518217u, 0, 14, &be_const_str_set_mode); +be_define_const_str(set_mode, "set_mode", 4109106455u, 0, 8, NULL); +be_define_const_str(set_div_line_count, "set_div_line_count", 918956222u, 0, 18, &be_const_str_set_light); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(STYLE_RADIUS, "STYLE_RADIUS", 1029481353u, 0, 12, NULL); +be_define_const_str(copy_buf, "copy_buf", 2209552774u, 0, 8, &be_const_str_is_char_under_pos); +be_define_const_str(is_char_under_pos, "is_char_under_pos", 2744967102u, 0, 17, &be_const_str_set_scale); +be_define_const_str(set_scale, "set_scale", 3828634574u, 0, 9, &be_const_str_set_style_local_shadow_color); +be_define_const_str(set_style_local_shadow_color, "set_style_local_shadow_color", 2778451758u, 0, 28, NULL); +be_define_const_str(set_border_width, "set_border_width", 2740080977u, 0, 16, NULL); +be_define_const_str(STATE_HOVERED, "STATE_HOVERED", 1864667050u, 0, 13, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_set_px); +be_define_const_str(set_px, "set_px", 1137035068u, 0, 6, NULL); +be_define_const_str(get_adv_hittest, "get_adv_hittest", 1985963887u, 0, 15, NULL); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_get_child_back); +be_define_const_str(get_child_back, "get_child_back", 3815628204u, 0, 14, NULL); +be_define_const_str(TEAL, "TEAL", 1728307679u, 0, 4, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(get_step, "get_step", 2497148826u, 0, 8, &be_const_str_set_style_local_transform_zoom); +be_define_const_str(set_style_local_transform_zoom, "set_style_local_transform_zoom", 3474945744u, 0, 30, NULL); +be_define_const_str(DISP_ROT_270, "DISP_ROT_270", 3187294969u, 0, 12, &be_const_str_IBEACON_TX); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); +be_define_const_str(KEY_PREV, "KEY_PREV", 3127352148u, 0, 8, &be_const_str_get_style_pad_inner); +be_define_const_str(get_style_pad_inner, "get_style_pad_inner", 213811544u, 0, 19, &be_const_str_set_text_sel_bg_color); +be_define_const_str(set_text_sel_bg_color, "set_text_sel_bg_color", 3929347886u, 0, 21, NULL); +be_define_const_str(STYLE_BG_GRAD_COLOR, "STYLE_BG_GRAD_COLOR", 444266945u, 0, 19, &be_const_str_get_series_area); +be_define_const_str(get_series_area, "get_series_area", 1561258251u, 0, 15, NULL); +be_define_const_str(STYLE_LINE_OPA, "STYLE_LINE_OPA", 1080991556u, 0, 14, &be_const_str_get_height_margin); +be_define_const_str(get_height_margin, "get_height_margin", 4277714442u, 0, 17, NULL); +be_define_const_str(EVENT_DELETE, "EVENT_DELETE", 282828603u, 0, 12, NULL); +be_define_const_str(set_drag_parent, "set_drag_parent", 3979167347u, 0, 15, &be_const_str_set_offset_y); +be_define_const_str(set_offset_y, "set_offset_y", 437927531u, 0, 12, NULL); +be_define_const_str(set_step, "set_step", 2114390790u, 0, 8, NULL); +be_define_const_str(STYLE_TRANSITION_PROP_2, "STYLE_TRANSITION_PROP_2", 979496881u, 0, 23, NULL); +be_define_const_str(set_focused_btn, "set_focused_btn", 4211166978u, 0, 15, &be_const_str_set_scale_end_color); +be_define_const_str(set_scale_end_color, "set_scale_end_color", 355018320u, 0, 19, NULL); +be_define_const_str(get_fit_bottom, "get_fit_bottom", 664659611u, 0, 14, &be_const_str_set_image_recolor_opa); +be_define_const_str(set_image_recolor_opa, "set_image_recolor_opa", 558003471u, 0, 21, NULL); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_count_children_recursive); +be_define_const_str(count_children_recursive, "count_children_recursive", 497030885u, 0, 24, NULL); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); +be_define_const_str(get_style_pad_top, "get_style_pad_top", 2896917811u, 0, 17, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(set_style_local_bg_color, "set_style_local_bg_color", 3796704273u, 0, 24, NULL); +be_define_const_str(BTN_STATE_CHECKED_RELEASED, "BTN_STATE_CHECKED_RELEASED", 571978995u, 0, 26, &be_const_str_CHART_TYPE_NONE); +be_define_const_str(CHART_TYPE_NONE, "CHART_TYPE_NONE", 1127256103u, 0, 15, NULL); +be_define_const_str(get_width, "get_width", 3293417300u, 0, 9, &be_const_str_set_x); +be_define_const_str(set_x, "set_x", 1849400772u, 0, 5, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(CHART_TYPE_COLUMN, "CHART_TYPE_COLUMN", 385586299u, 0, 17, &be_const_str_DROPDOWN_PART_SCROLLBAR); +be_define_const_str(DROPDOWN_PART_SCROLLBAR, "DROPDOWN_PART_SCROLLBAR", 699787861u, 0, 23, &be_const_str_EVENT_LEAVE); +be_define_const_str(EVENT_LEAVE, "EVENT_LEAVE", 2218217823u, 0, 11, &be_const_str_OPA_50); +be_define_const_str(OPA_50, "OPA_50", 163902855u, 0, 6, NULL); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_set_max_height); +be_define_const_str(set_max_height, "set_max_height", 394927448u, 0, 14, NULL); +be_define_const_str(DISP_ROT_90, "DISP_ROT_90", 3961393585u, 0, 11, &be_const_str_LE01MR_RX); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_set_cursor_pos); +be_define_const_str(set_cursor_pos, "set_cursor_pos", 1354380555u, 0, 14, &be_const_str_set_value_line_space); +be_define_const_str(set_value_line_space, "set_value_line_space", 355798025u, 0, 20, NULL); +be_define_const_str(area_is_visible, "area_is_visible", 4009415372u, 0, 15, NULL); +be_define_const_str(set_showed_date, "set_showed_date", 158767501u, 0, 15, NULL); +be_define_const_str(set_point_count, "set_point_count", 1721576758u, 0, 15, NULL); +be_define_const_str(set_angle, "set_angle", 2542866927u, 0, 9, NULL); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_set_text_sel_end); +be_define_const_str(set_text_sel_end, "set_text_sel_end", 3422399078u, 0, 16, &be_const_str_set_transform_angle); +be_define_const_str(set_transform_angle, "set_transform_angle", 2657176848u, 0, 19, NULL); +be_define_const_str(set_image_blend_mode, "set_image_blend_mode", 2083195553u, 0, 20, NULL); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_get_btn_ctrl); +be_define_const_str(get_btn_ctrl, "get_btn_ctrl", 370184444u, 0, 12, &be_const_str_get_screen); +be_define_const_str(get_screen, "get_screen", 2759490796u, 0, 10, NULL); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_fill_bg); +be_define_const_str(fill_bg, "fill_bg", 1581152214u, 0, 7, &be_const_str_set_style_local_outline_color); +be_define_const_str(set_style_local_outline_color, "set_style_local_outline_color", 2290216412u, 0, 29, NULL); +be_define_const_str(get_knob_colored, "get_knob_colored", 2664754853u, 0, 16, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); +be_define_const_str(range, "range", 4208725202u, 0, 5, &be_const_str_refresh); +be_define_const_str(refresh, "refresh", 3572655668u, 0, 7, &be_const_str_set_transition_prop_4); +be_define_const_str(set_transition_prop_4, "set_transition_prop_4", 3084234202u, 0, 21, NULL); +be_define_const_str(get_color_mode, "get_color_mode", 833403171u, 0, 14, &be_const_str_get_style_pad_left); +be_define_const_str(get_style_pad_left, "get_style_pad_left", 2843013833u, 0, 18, &be_const_str_get_style_transform_width); +be_define_const_str(get_style_transform_width, "get_style_transform_width", 713115893u, 0, 25, NULL); +be_define_const_str(set_margin_bottom, "set_margin_bottom", 1238288976u, 0, 17, NULL); +be_define_const_str(OPA_70, "OPA_70", 2109709301u, 0, 6, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_set_symbol); +be_define_const_str(set_symbol, "set_symbol", 2254998928u, 0, 10, NULL); +be_define_const_str(OBJMASK_PART_MAIN, "OBJMASK_PART_MAIN", 1960600366u, 0, 17, &be_const_str_STYLE_SCALE_WIDTH); +be_define_const_str(STYLE_SCALE_WIDTH, "STYLE_SCALE_WIDTH", 3756994736u, 0, 17, NULL); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_realign); +be_define_const_str(realign, "realign", 170046109u, 0, 7, &be_const_str_set_shadow_opa); +be_define_const_str(set_shadow_opa, "set_shadow_opa", 1336611849u, 0, 14, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_set_edge_flash, - (const bstring *)&be_const_str_SAIR_TX, - (const bstring *)&be_const_str_MIEL_HVAC_TX, - (const bstring *)&be_const_str_get_min_value, - (const bstring *)&be_const_str_draw_polygon, - (const bstring *)&be_const_str_get_zoom, - (const bstring *)&be_const_str_MAX7219DIN, - (const bstring *)&be_const_str_BORDER_SIDE_BOTTOM, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_clear, - (const bstring *)&be_const_str_PURPLE, - (const bstring *)&be_const_str_DROPDOWN_DIR_LEFT, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_rtc, + (const bstring *)&be_const_str_STYLE_PATTERN_BLEND_MODE, NULL, - (const bstring *)&be_const_str_CPICKER_COLOR_MODE_HUE, - (const bstring *)&be_const_str_SYMBOL_RIGHT, - (const bstring *)&be_const_str_SM2135_CLK, - (const bstring *)&be_const_str_init_draw_line_dsc, - (const bstring *)&be_const_str_SCROLLBAR_MODE_UNHIDE, - (const bstring *)&be_const_str_ZIGBEE_RX, - (const bstring *)&be_const_str_TXT_FLAG_EXPAND, - (const bstring *)&be_const_str_STYLE_VALUE_LINE_SPACE, - (const bstring *)&be_const_str_STYLE_RADIUS, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_get_focus_cb, - (const bstring *)&be_const_str_get_text_sel_start, - (const bstring *)&be_const_str_FS_RES_LOCKED, - (const bstring *)&be_const_str_lv_textarea, - (const bstring *)&be_const_str_set_adjustable, - (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_lv_btnmatrix, - (const bstring *)&be_const_str_BTN_STATE_RELEASED, - (const bstring *)&be_const_str_get_style_size, - (const bstring *)&be_const_str_get_style_text_line_space, - (const bstring *)&be_const_str_DISP_ROT_180, - (const bstring *)&be_const_str_classname, - (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_TOP, - (const bstring *)&be_const_str_get, - (const bstring *)&be_const_str_MAGENTA, - (const bstring *)&be_const_str_WEBCAM_PCLK, - (const bstring *)&be_const_str_get_style_image_recolor, + (const bstring *)&be_const_str_SLIDER_TYPE_RANGE, + (const bstring *)&be_const_str_set_ctrl_map, NULL, - (const bstring *)&be_const_str_item, - (const bstring *)&be_const_str_SLIDER_TYPE_NORMAL, - NULL, - NULL, - (const bstring *)&be_const_str_BLACK, - (const bstring *)&be_const_str_NAVY, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_align_x, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, - (const bstring *)&be_const_str_set_border_side, - NULL, - (const bstring *)&be_const_str_LAYOUT_COLUMN_LEFT, - (const bstring *)&be_const_str_get_local_style, - (const bstring *)&be_const_str_WEBCAM_SIOC, - (const bstring *)&be_const_str_get_style_value_letter_space, - (const bstring *)&be_const_str_AQUA, - NULL, - (const bstring *)&be_const_str_set_style_local_text_font, - (const bstring *)&be_const_str_INPUT, - (const bstring *)&be_const_str_set_anim_speed, - (const bstring *)&be_const_str_PN532_TXD, - (const bstring *)&be_const_str_STYLE_VALUE_BLEND_MODE, - (const bstring *)&be_const_str_abs, - (const bstring *)&be_const_str_set_scale_grad_color, - (const bstring *)&be_const_str_DISP_ROT_270, - (const bstring *)&be_const_str_get_style_transition_prop_4, - (const bstring *)&be_const_str_EVENT_SHORT_CLICKED, - (const bstring *)&be_const_str_EVENT_DEFOCUSED, - (const bstring *)&be_const_str_CALENDAR_PART_BG, - (const bstring *)&be_const_str_BORDER_SIDE_LEFT, - (const bstring *)&be_const_str_isinstance, - NULL, - (const bstring *)&be_const_str_CHECKBOX_PART_BG, - (const bstring *)&be_const_str_TABVIEW_TAB_POS_BOTTOM, - (const bstring *)&be_const_str_CHART_PART_SERIES, - (const bstring *)&be_const_str_get_day_of_week, - (const bstring *)&be_const_str_SYMBOL_BACKSPACE, - (const bstring *)&be_const_str_set_secondary_y_tick_length, - (const bstring *)&be_const_str_STYLE_MARGIN_RIGHT, - (const bstring *)&be_const_str_add_protect, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_STYLE_SHADOW_COLOR, - (const bstring *)&be_const_str_P9813_CLK, - (const bstring *)&be_const_str_STYLE_SHADOW_OPA, - (const bstring *)&be_const_str_PWM1_INV, - (const bstring *)&be_const_str_KEYBOARD_MODE_TEXT_UPPER, - (const bstring *)&be_const_str_set_margin_top, - (const bstring *)&be_const_str_set_style_local_text_decor, - (const bstring *)&be_const_str_lv_line, - (const bstring *)&be_const_str_CHART_TYPE_LINE, - (const bstring *)&be_const_str_SYMBOL_UPLOAD, - (const bstring *)&be_const_str_CHART_CURSOR_LEFT, - (const bstring *)&be_const_str_KEY_END, - (const bstring *)&be_const_str_DRAG_DIR_VER, - (const bstring *)&be_const_str_SPI, - (const bstring *)&be_const_str_OPA_0, - (const bstring *)&be_const_str_STYLE_SCALE_END_BORDER_WIDTH, - (const bstring *)&be_const_str_LIST_PART_SCROLLBAR, - (const bstring *)&be_const_str_set_tab_name, - (const bstring *)&be_const_str_get_style_transition_time, - (const bstring *)&be_const_str_ALIGN_OUT_BOTTOM_RIGHT, - (const bstring *)&be_const_str_STYLE_LINE_BLEND_MODE, - (const bstring *)&be_const_str_update_mask, - (const bstring *)&be_const_str_BTNMATRIX_CTRL_HIDDEN, - (const bstring *)&be_const_str_ADE7953_IRQ, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_close, - (const bstring *)&be_const_str_ALIGN_OUT_BOTTOM_MID, - (const bstring *)&be_const_str_get_style_scale_end_border_width, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_TEXTAREA_CURSOR_LAST, - (const bstring *)&be_const_str_OPA_50, - NULL, - (const bstring *)&be_const_str_LED1_INV, - (const bstring *)&be_const_str_SDM120_RX, - (const bstring *)&be_const_str_CALENDAR_PART_DAY_NAMES, - (const bstring *)&be_const_str_TCP_RX, - (const bstring *)&be_const_str_set_value_opa, - (const bstring *)&be_const_str_FS_RES_OUT_OF_MEM, - (const bstring *)&be_const_str_STYLE_PAD_LEFT, - NULL, - (const bstring *)&be_const_str_cursor_down, - NULL, - NULL, - (const bstring *)&be_const_str_SYMBOL_BATTERY_2, - (const bstring *)&be_const_str_CHART_AXIS_DRAW_LAST_TICK, - NULL, - NULL, - (const bstring *)&be_const_str_get_color, + (const bstring *)&be_const_str_CSE7761_TX, (const bstring *)&be_const_str_BTNMATRIX_CTRL_DISABLED, NULL, NULL, - NULL, - (const bstring *)&be_const_str_LABEL_ALIGN_AUTO, - (const bstring *)&be_const_str_draw_line, - (const bstring *)&be_const_str_set_max_length, - (const bstring *)&be_const_str_ALIGN_IN_BOTTOM_RIGHT, - (const bstring *)&be_const_str_TEMPL_STYLE_X, - (const bstring *)&be_const_str_ARC_PART_BG, - (const bstring *)&be_const_str_get_height_margin, - (const bstring *)&be_const_str_IRSEND, - (const bstring *)&be_const_str_move_background, - (const bstring *)&be_const_str_TM1638DIO, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_GRAY, - (const bstring *)&be_const_str_add_text, - (const bstring *)&be_const_str_set_outline_width, - (const bstring *)&be_const_str_CHART_TYPE_COLUMN, - (const bstring *)&be_const_str_get_fit_top, - (const bstring *)&be_const_str_MAX7219CLK, - (const bstring *)&be_const_str_SPI_MISO, - (const bstring *)&be_const_str_ALIGN_OUT_LEFT_TOP, - (const bstring *)&be_const_str_ALIGN_IN_BOTTOM_MID, - (const bstring *)&be_const_str_LAYOUT_PRETTY_BOTTOM, - (const bstring *)&be_const_str_WEBCAM_XCLK, - (const bstring *)&be_const_str_get_offset_y, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_get_cell_value, - (const bstring *)&be_const_str_STYLE_VALUE_OFS_Y, - (const bstring *)&be_const_str_SILVER, - (const bstring *)&be_const_str_classof, - (const bstring *)&be_const_str_STYLE_TRANSITION_PROP_4, - (const bstring *)&be_const_str_EVENT_INSERT, - (const bstring *)&be_const_str_SOLAXX1_RX, - (const bstring *)&be_const_str___iterator__, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_pin_used, - (const bstring *)&be_const_str_LAYOUT_CENTER, - (const bstring *)&be_const_str_bytes, - NULL, - (const bstring *)&be_const_str_EVENT_REFRESH, - (const bstring *)&be_const_str_set_color, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_EVENT_LONG_PRESSED_REPEAT, - NULL, - (const bstring *)&be_const_str_set_style_local_transform_zoom, - (const bstring *)&be_const_str_STYLE_LINE_OPA, - (const bstring *)&be_const_str_EVENT_LEAVE, - (const bstring *)&be_const_str_align, - (const bstring *)&be_const_str_TUYA_RX, - (const bstring *)&be_const_str_get_color_mode_fixed, - (const bstring *)&be_const_str_SCROLLBAR_MODE_DRAG, - (const bstring *)&be_const_str_BOILER_OT_RX, - (const bstring *)&be_const_str_ALIGN_OUT_TOP_RIGHT, - (const bstring *)&be_const_str_LAYOUT_ROW_TOP, - NULL, - (const bstring *)&be_const_str_LED_PART_MAIN, - (const bstring *)&be_const_str_OPA_100, - (const bstring *)&be_const_str_FS_RES_UNKNOWN, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_TFMINIPLUS_RX, - (const bstring *)&be_const_str_STYLE_PAD_BOTTOM, - (const bstring *)&be_const_str_DROPDOWN_DIR_UP, - (const bstring *)&be_const_str_get_top, - (const bstring *)&be_const_str_set_style_local_value_blend_mode, - (const bstring *)&be_const_str_get_btn_text, - (const bstring *)&be_const_str_get_style_border_color, - NULL, - (const bstring *)&be_const_str_KEYBOARD_PART_BG, - (const bstring *)&be_const_str_I2C, - (const bstring *)&be_const_str_DROPDOWN_PART_SELECTED, - (const bstring *)&be_const_str_set_disabled, - NULL, - (const bstring *)&be_const_str_FIT_MAX, - NULL, - NULL, - (const bstring *)&be_const_str_DROPDOWN_PART_LIST, - (const bstring *)&be_const_str_get_style_scale_end_color, - (const bstring *)&be_const_str_deg, - NULL, - (const bstring *)&be_const_str_STYLE_OUTLINE_BLEND_MODE, - (const bstring *)&be_const_str_STYLE_TEXT_COLOR, - (const bstring *)&be_const_str_ARC_PART_INDIC, - (const bstring *)&be_const_str_FS_RES_BUSY, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_MP3_DFR562, - (const bstring *)&be_const_str_set_style_local_shadow_opa, - (const bstring *)&be_const_str_FS_RES_FS_ERR, - (const bstring *)&be_const_str_HPMA_RX, - NULL, - (const bstring *)&be_const_str_CPICKER_PART_KNOB, - (const bstring *)&be_const_str_set_row_cnt, - NULL, - (const bstring *)&be_const_str_set_text_sel_end, - (const bstring *)&be_const_str_get_auto_realign, - (const bstring *)&be_const_str_EVENT_DRAG_THROW_BEGIN, - (const bstring *)&be_const_str_ROLLER_MODE_INFINITE, - NULL, - (const bstring *)&be_const_str_LINEMETER_PART_MAIN, - (const bstring *)&be_const_str_SPINNER_TYPE_SPINNING_ARC, - (const bstring *)&be_const_str_area_is_visible, - (const bstring *)&be_const_str_get_dir, - (const bstring *)&be_const_str_CHART_AXIS_SKIP_LAST_TICK, - (const bstring *)&be_const_str_STYLE_VALUE_OPA, - (const bstring *)&be_const_str_get_show_selected, - (const bstring *)&be_const_str_STYLE_SCALE_WIDTH, - (const bstring *)&be_const_str_SDM72_TX, - NULL, - NULL, - (const bstring *)&be_const_str_fill_bg, - (const bstring *)&be_const_str_LABEL_LONG_DOT, - (const bstring *)&be_const_str_SYMBOL_MUTE, - (const bstring *)&be_const_str_OPA_70, - (const bstring *)&be_const_str_set_show_selected, - NULL, - (const bstring *)&be_const_str_LIME, - (const bstring *)&be_const_str_BORDER_SIDE_INTERNAL, - (const bstring *)&be_const_str_get_needle_count, - (const bstring *)&be_const_str_set_pwd_show_time, - (const bstring *)&be_const_str_OPA_TRANSP, - (const bstring *)&be_const_str_GREEN, - (const bstring *)&be_const_str_focus_next, - (const bstring *)&be_const_str_DISP_ROT_90, - (const bstring *)&be_const_str_ROT1A, - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_increment, - (const bstring *)&be_const_str_RA8876_CS, - (const bstring *)&be_const_str_clear_state, - NULL, - (const bstring *)&be_const_str_ARC_TYPE_SYMMETRIC, - (const bstring *)&be_const_str_IBEACON_TX, - (const bstring *)&be_const_str_LAYOUT_GRID, - (const bstring *)&be_const_str_SYMBOL_SAVE, - (const bstring *)&be_const_str_set_tab_act, - (const bstring *)&be_const_str_DDS2382_TX, - NULL, - (const bstring *)&be_const_str_WINDMETER_SPEED, - (const bstring *)&be_const_str_KEY_ENTER, + (const bstring *)&be_const_str_KEY_UP, + (const bstring *)&be_const_str_get_style_value_line_space, + (const bstring *)&be_const_str_add_btns, (const bstring *)&be_const_str_BAR_TYPE_CUSTOM, - (const bstring *)&be_const_str_STYLE_VALUE_COLOR, - (const bstring *)&be_const_str_OPA_20, + (const bstring *)&be_const_str_get_max_height, NULL, - NULL, - NULL, - (const bstring *)&be_const_str_NRG_CF1, - (const bstring *)&be_const_str_draw_text, - (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, - (const bstring *)&be_const_str_get_saturation, - NULL, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_SYMBOL_EJECT, - (const bstring *)&be_const_str_dump, - (const bstring *)&be_const_str_get_cursor_hidden, - (const bstring *)&be_const_str_SYMBOL_LEFT, - (const bstring *)&be_const_str_OLIVE, - (const bstring *)&be_const_str_get_style_image_recolor_opa, - (const bstring *)&be_const_str_set_parent, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_get_btn_label, - (const bstring *)&be_const_str_GAUGE_PART_MAJOR, - (const bstring *)&be_const_str_get_coords, - NULL, - (const bstring *)&be_const_str_TABVIEW_TAB_POS_LEFT, - (const bstring *)&be_const_str_EVENT_RELEASED, - (const bstring *)&be_const_str_get_text, - (const bstring *)&be_const_str_PULLUP, - (const bstring *)&be_const_str_set_transition_prop_2, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_FS_MODE_WR, - (const bstring *)&be_const_str_STYLE_TRANSITION_DELAY, - (const bstring *)&be_const_str_ILI9488_CS, - (const bstring *)&be_const_str_ILI9341_CS, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_set_style_local_transition_time, - (const bstring *)&be_const_str_BAR_TYPE_NORMAL, - (const bstring *)&be_const_str_MHZ_TXD, - (const bstring *)&be_const_str_FS_RES_INV_PARAM, - NULL, - (const bstring *)&be_const_str_ANIM_ON, - (const bstring *)&be_const_str_BACKLIGHT, - (const bstring *)&be_const_str_BTNMATRIX_CTRL_CHECK_STATE, - (const bstring *)&be_const_str_TASMOTACLIENT_RST_INV, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_get_width_fit, - (const bstring *)&be_const_str_ALIGN_IN_TOP_MID, - (const bstring *)&be_const_str_get_click, - (const bstring *)&be_const_str_get_width, (const bstring *)&be_const_str_IRRECV, - (const bstring *)&be_const_str_BLUE, - (const bstring *)&be_const_str_attrdump, - (const bstring *)&be_const_str_STYLE_BG_GRAD_STOP, + (const bstring *)&be_const_str_set_value_ofs_x, + (const bstring *)&be_const_str_SYMBOL_STOP, + (const bstring *)&be_const_str_TXT_FLAG_RIGHT, + (const bstring *)&be_const_str_get_style_transition_prop_6, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_ALIGN_IN_TOP_RIGHT, + (const bstring *)&be_const_str_get_spin_time, + (const bstring *)&be_const_str_set_cell_crop, + NULL, + NULL, + (const bstring *)&be_const_str_get_style_radius, + (const bstring *)&be_const_str_set_auto_size, + (const bstring *)&be_const_str_WEBCAM_SIOD, + (const bstring *)&be_const_str_SYMBOL_NEW_LINE, + (const bstring *)&be_const_str_STYLE_BORDER_WIDTH, + (const bstring *)&be_const_str_STYLE_SHADOW_SPREAD, + (const bstring *)&be_const_str_CHART_PART_CURSOR, + (const bstring *)&be_const_str_TM1637CLK, + (const bstring *)&be_const_str_PAGE_EDGE_LEFT, + (const bstring *)&be_const_str_ARC_TYPE_REVERSE, + (const bstring *)&be_const_str_del_anim_ready_cb, + NULL, + (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_BOTTOM, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_STYLE_OUTLINE_COLOR, + (const bstring *)&be_const_str_on, + (const bstring *)&be_const_str_set_line_opa, + NULL, + (const bstring *)&be_const_str_DISP_SIZE_LARGE, + (const bstring *)&be_const_str_set_style_local_pad_inner, + (const bstring *)&be_const_str_CC1101_GDO2, + NULL, + (const bstring *)&be_const_str_elif, + (const bstring *)&be_const_str_ADE7953_IRQ, + (const bstring *)&be_const_str_SYMBOL_WIFI, + (const bstring *)&be_const_str_ALIGN_CENTER, + (const bstring *)&be_const_str_CPICKER_COLOR_MODE_SATURATION, + NULL, + (const bstring *)&be_const_str_focus, + NULL, + (const bstring *)&be_const_str_TXD, + (const bstring *)&be_const_str_LAYOUT_ROW_BOTTOM, + NULL, + (const bstring *)&be_const_str_KEYBOARD_MODE_SPECIAL, + (const bstring *)&be_const_str_SYMBOL_BELL, + (const bstring *)&be_const_str_clean_tab, + NULL, + (const bstring *)&be_const_str_BTN_STATE_PRESSED, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_TXT_CMD_STATE_PAR, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + NULL, + (const bstring *)&be_const_str_SCROLLBAR_MODE_UNHIDE, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_type, + (const bstring *)&be_const_str_LIST_PART_EDGE_FLASH, (const bstring *)&be_const_str_DRAG_DIR_BOTH, - (const bstring *)&be_const_str_SPI_CLK, - (const bstring *)&be_const_str_get_anim_time, - (const bstring *)&be_const_str_get_style_transform_height, + (const bstring *)&be_const_str_TASMOTACLIENT_TXD, + (const bstring *)&be_const_str_STYLE_PATTERN_RECOLOR_OPA, NULL, - (const bstring *)&be_const_str_is_dragged, + (const bstring *)&be_const_str_HRE_CLOCK, NULL, - (const bstring *)&be_const_str_SPINNER_TYPE_FILLSPIN_ARC, - (const bstring *)&be_const_str_PROTECT_CHILD_CHG, - (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_SSPI_MISO, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_STYLE_TEXT_DECOR, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_BORDER_SIDE_RIGHT, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_glue_obj, + (const bstring *)&be_const_str_CALENDAR_PART_BG, + NULL, + (const bstring *)&be_const_str_SBR_TX, + NULL, + (const bstring *)&be_const_str_TEXT_DECOR_UNDERLINE, + (const bstring *)&be_const_str_scroll_hor, + NULL, + (const bstring *)&be_const_str_STYLE_PAD_LEFT, + NULL, + NULL, + (const bstring *)&be_const_str_get_style_transition_prop_5, + (const bstring *)&be_const_str_get_cell_value, + (const bstring *)&be_const_str_del_char, + (const bstring *)&be_const_str_STYLE_VALUE_LINE_SPACE, NULL, (const bstring *)&be_const_str_get_bright, - (const bstring *)&be_const_str_NRG_SEL, - (const bstring *)&be_const_str_KEY1_TC, - NULL, - (const bstring *)&be_const_str_SDCARD_CS, - NULL, - (const bstring *)&be_const_str_SYMBOL_UP, - (const bstring *)&be_const_str_layer_sys, - (const bstring *)&be_const_str_DRAG_DIR_HOR, - (const bstring *)&be_const_str_cut_text, - (const bstring *)&be_const_str_false, - (const bstring *)&be_const_str_EVENT_PRESSING, - (const bstring *)&be_const_str_PZEM004_RX, - (const bstring *)&be_const_str_SYMBOL_AUDIO, - (const bstring *)&be_const_str_FS_RES_DENIED, - (const bstring *)&be_const_str_exp, - NULL, - (const bstring *)&be_const_str_CHART_AXIS_INVERSE_LABELS_ORDER, - NULL, - (const bstring *)&be_const_str_scroll_ver, - (const bstring *)&be_const_str_get_antialias, - (const bstring *)&be_const_str_CHART_CURSOR_DOWN, - (const bstring *)&be_const_str_STYLE_MARGIN_LEFT, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_close_event_cb, - (const bstring *)&be_const_str_remove_style, - (const bstring *)&be_const_str_LABEL_ALIGN_LEFT, - (const bstring *)&be_const_str_remove_mask, - (const bstring *)&be_const_str_CHART_AXIS_PRIMARY_Y, - (const bstring *)&be_const_str_CHART_AXIS_SECONDARY_Y, - (const bstring *)&be_const_str_CHANGE, - NULL, - (const bstring *)&be_const_str_set_style_local_line_dash_gap, - (const bstring *)&be_const_str_get_spin_time, - (const bstring *)&be_const_str_HSPI, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_I2C_SCL, - (const bstring *)&be_const_str_set_checkable, - (const bstring *)&be_const_str_SSPI_MOSI, - (const bstring *)&be_const_str_ARC_TYPE_REVERSE, - (const bstring *)&be_const_str_set_tasmota_logo, - (const bstring *)&be_const_str_ALIGN_IN_LEFT_MID, - (const bstring *)&be_const_str_SYMBOL_BATTERY_1, - (const bstring *)&be_const_str_KEY_PREV, - (const bstring *)&be_const_str_set_text_fmt, - (const bstring *)&be_const_str_get_scrl_height, - NULL, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_SDS0X1_RX, - (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_set_top, + (const bstring *)&be_const_str_add_protect, + (const bstring *)&be_const_str_PROTECT_POS, (const bstring *)&be_const_str_ALIGN_IN_TOP_LEFT, - NULL, - (const bstring *)&be_const_str_set_style_local_line_blend_mode, - (const bstring *)&be_const_str_PZEM017_RX, - (const bstring *)&be_const_str_PAGE_EDGE_BOTTOM, - (const bstring *)&be_const_str_get_btns_pos, - (const bstring *)&be_const_str_lv_roller, - (const bstring *)&be_const_str_clear_protect, - NULL, - (const bstring *)&be_const_str_LABEL_LONG_BREAK, - (const bstring *)&be_const_str_raise, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_add_char, - (const bstring *)&be_const_str_CHART_CURSOR_NONE, - (const bstring *)&be_const_str_EVENT_KEY, - (const bstring *)&be_const_str_set_bg_opa, - NULL, - NULL, - (const bstring *)&be_const_str_TEXT_DECOR_NONE, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_BLEND_MODE_SUBTRACTIVE, - (const bstring *)&be_const_str_RC522_RST, - (const bstring *)&be_const_str_lv_win, - (const bstring *)&be_const_str_OPA_40, - (const bstring *)&be_const_str_clear_selection, - (const bstring *)&be_const_str_DISP_SIZE_MEDIUM, - (const bstring *)&be_const_str_BTNMATRIX_CTRL_CLICK_TRIG, - (const bstring *)&be_const_str_STYLE_PATTERN_IMAGE, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_CSE7761_RX, - (const bstring *)&be_const_str_DISP_SIZE_SMALL, + (const bstring *)&be_const_str_ALIGN_OUT_LEFT_BOTTOM, + (const bstring *)&be_const_str_get_btn_img, (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_SYMBOL_WARNING, (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_PZEM0XX_TX, - (const bstring *)&be_const_str_upper, - (const bstring *)&be_const_str_CALENDAR_PART_DATE, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_FIT_TIGHT, - (const bstring *)&be_const_str_get_nearest_index_from_coord, - (const bstring *)&be_const_str_set_month_names, + (const bstring *)&be_const_str_get_style_margin_bottom, + (const bstring *)&be_const_str_SSPI_MOSI, + (const bstring *)&be_const_str_set_style_local_scale_end_color, NULL, - (const bstring *)&be_const_str_set_refocus_policy, - (const bstring *)&be_const_str_DROPDOWN_DIR_RIGHT, - (const bstring *)&be_const_str_MAX31855CLK, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_get_fit_right, - (const bstring *)&be_const_str_BS814_DAT, - (const bstring *)&be_const_str_set_style_local_margin_left, - (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_STYLE_CLIP_CORNER, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_get_ext_click_pad_left, - (const bstring *)&be_const_str_LMT01, - (const bstring *)&be_const_str_lv_chart, - (const bstring *)&be_const_str_DISP_ROT_NONE, - (const bstring *)&be_const_str_CYAN, - (const bstring *)&be_const_str_get_pivot, - (const bstring *)&be_const_str_BTNMATRIX_CTRL_NO_REPEAT, - (const bstring *)&be_const_str_PROTECT_CLICK_FOCUS, - (const bstring *)&be_const_str_is_visible, - (const bstring *)&be_const_str_HLW_CF, - (const bstring *)&be_const_str_SSPI, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_GAUGE_PART_MAIN, - (const bstring *)&be_const_str_PAGE_EDGE_TOP, - (const bstring *)&be_const_str_lv_slider, - (const bstring *)&be_const_str_set_style_local_line_opa, - (const bstring *)&be_const_str_set_formatter_cb, - (const bstring *)&be_const_str_get_adjustable, - (const bstring *)&be_const_str_DRAG_DIR_ONE, - (const bstring *)&be_const_str_TM1637DIO, - (const bstring *)&be_const_str_STYLE_BG_GRAD_DIR, - (const bstring *)&be_const_str_set_style_local_transform_angle, - (const bstring *)&be_const_str_HRXL_RX, - (const bstring *)&be_const_str_SYMBOL_IMAGE, - (const bstring *)&be_const_str_SYMBOL_BELL, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_TELEINFO_ENABLE, - (const bstring *)&be_const_str_set_style_local_transition_prop_3, - (const bstring *)&be_const_str_fade_in, - (const bstring *)&be_const_str_set_style_local_margin_right, - (const bstring *)&be_const_str_get_one_check, - (const bstring *)&be_const_str_MAX7219CS, - (const bstring *)&be_const_str_CHECKBOX_PART_BULLET, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_KEY_HOME, - (const bstring *)&be_const_str_STYLE_SHADOW_OFS_Y, - (const bstring *)&be_const_str_BTN_STATE_CHECKED_RELEASED, - (const bstring *)&be_const_str_get_pwd_mode, - NULL, - (const bstring *)&be_const_str_ST7789_CS, - (const bstring *)&be_const_str_get_cell_merge_right, - (const bstring *)&be_const_str_lv_img, - (const bstring *)&be_const_str_EVENT_APPLY, - NULL, - (const bstring *)&be_const_str_STYLE_PATTERN_BLEND_MODE, - (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_BOTTOM, - (const bstring *)&be_const_str_KEY_DEL, - (const bstring *)&be_const_str_SBR_RX, - (const bstring *)&be_const_str_KEYBOARD_PART_BTN, - (const bstring *)&be_const_str_OPA_90, - (const bstring *)&be_const_str_get_edge_flash, + (const bstring *)&be_const_str_Wire, (const bstring *)&be_const_str_get_pressed_cell, + (const bstring *)&be_const_str_FS_RES_TOUT, + (const bstring *)&be_const_str_BLEND_MODE_SUBTRACTIVE, + (const bstring *)&be_const_str_get_light, + (const bstring *)&be_const_str_CHART_PART_SERIES_BG, + (const bstring *)&be_const_str_SYMBOL_CHARGE, + (const bstring *)&be_const_str_focus_prev, + (const bstring *)&be_const_str_STYLE_TEXT_LINE_SPACE, + NULL, + (const bstring *)&be_const_str_BORDER_SIDE_NONE, + (const bstring *)&be_const_str_PAGE_EDGE_RIGHT, + (const bstring *)&be_const_str_OPA_0, + (const bstring *)&be_const_str_BUZZER, + NULL, + (const bstring *)&be_const_str_TFMINIPLUS_RX, + (const bstring *)&be_const_str_TXT_CMD_STATE_WAIT, + (const bstring *)&be_const_str_SSD1351_DC, + NULL, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_ALIGN_IN_BOTTOM_LEFT, + (const bstring *)&be_const_str_KEY_RIGHT, + (const bstring *)&be_const_str_STYLE_VALUE_ALIGN, + NULL, + (const bstring *)&be_const_str_get_style_bg_opa, + (const bstring *)&be_const_str_EVENT_LONG_PRESSED, + (const bstring *)&be_const_str_OLIVE, + NULL, + (const bstring *)&be_const_str_ARC_PART_KNOB, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_MAGENTA, + (const bstring *)&be_const_str_CPICKER_TYPE_DISC, + (const bstring *)&be_const_str_SWT1, + (const bstring *)&be_const_str_FS_RES_FS_ERR, + (const bstring *)&be_const_str_PROTECT_CLICK_FOCUS, + (const bstring *)&be_const_str_LOW, + (const bstring *)&be_const_str_WIEGAND_D1, + (const bstring *)&be_const_str_close, + NULL, + (const bstring *)&be_const_str_time_dump, + (const bstring *)&be_const_str_I2C_SCL, + (const bstring *)&be_const_str_get_scrl_width, + (const bstring *)&be_const_str_KEY_NEXT, + (const bstring *)&be_const_str_get_bg_angle_end, + (const bstring *)&be_const_str_CHART_CURSOR_UP, + (const bstring *)&be_const_str_SDM630_RX, + (const bstring *)&be_const_str_SCROLLBAR_MODE_DRAG, + (const bstring *)&be_const_str_KEYBOARD_MODE_NUM, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_lv_group, + NULL, + NULL, + (const bstring *)&be_const_str_get_src, + (const bstring *)&be_const_str_STYLE_LINE_ROUNDED, + (const bstring *)&be_const_str_SPINNER_DIR_FORWARD, + (const bstring *)&be_const_str_CHART_TYPE_LINE, + (const bstring *)&be_const_str_FS_RES_UNKNOWN, + (const bstring *)&be_const_str_set_style_local_border_post, + (const bstring *)&be_const_str_get_parent, + (const bstring *)&be_const_str_get_scrollable, + NULL, + (const bstring *)&be_const_str_MGC3130_RESET, + (const bstring *)&be_const_str_ALIGN_OUT_TOP_RIGHT, + (const bstring *)&be_const_str_LABEL_LONG_SROLL_CIRC, + (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, + (const bstring *)&be_const_str_REL1_INV, + (const bstring *)&be_const_str_RA8876_CS, + (const bstring *)&be_const_str_add_element, + (const bstring *)&be_const_str_get_style_margin_top, + (const bstring *)&be_const_str_CHART_UPDATE_MODE_CIRCULAR, + (const bstring *)&be_const_str_CALENDAR_PART_DATE, + (const bstring *)&be_const_str_SLIDER_TYPE_NORMAL, NULL, (const bstring *)&be_const_str_MCP39F5_TX, - (const bstring *)&be_const_str_STYLE_SHADOW_WIDTH, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - (const bstring *)&be_const_str_BAR_TYPE_SYMMETRICAL, - NULL, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_EVENT_GESTURE, - (const bstring *)&be_const_str_SCROLLBAR_MODE_ON, - (const bstring *)&be_const_str_SSPI_DC, - (const bstring *)&be_const_str_ROT1B_NP, - (const bstring *)&be_const_str_ALIGN_IN_BOTTOM_LEFT, - (const bstring *)&be_const_str_real, - (const bstring *)&be_const_str_get_tile_act, - (const bstring *)&be_const_str_get_angle_start, - (const bstring *)&be_const_str_init_draw_rect_dsc, - (const bstring *)&be_const_str_STYLE_BG_COLOR, - (const bstring *)&be_const_str_get_style_radius, - NULL, - (const bstring *)&be_const_str_set_zoom, - (const bstring *)&be_const_str_WEBCAM_HSD, - (const bstring *)&be_const_str_FS_RES_NOT_EX, - NULL, - (const bstring *)&be_const_str_clean_style_list, - (const bstring *)&be_const_str_LAYOUT_PRETTY_MID, - (const bstring *)&be_const_str_TABVIEW_TAB_POS_TOP, - (const bstring *)&be_const_str_BLEND_MODE_NORMAL, - (const bstring *)&be_const_str_STYLE_BORDER_OPA, - (const bstring *)&be_const_str_get_btnmatrix, - (const bstring *)&be_const_str_DISP_SIZE_LARGE, - NULL, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_get_x_from_index, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_LOW, - (const bstring *)&be_const_str_concat, - (const bstring *)&be_const_str_pop, - NULL, - (const bstring *)&be_const_str_add_btns, - (const bstring *)&be_const_str_get_style_text_opa, - (const bstring *)&be_const_str_ALIGN_CENTER, - (const bstring *)&be_const_str_EVENT_LONG_PRESSED, - NULL, - (const bstring *)&be_const_str_print, - (const bstring *)&be_const_str_set_scale_end_border_width, - (const bstring *)&be_const_str_add_state, - NULL, - (const bstring *)&be_const_str_ANIM_OFF, - (const bstring *)&be_const_str_OBJ_PART_VIRTUAL_FIRST, - (const bstring *)&be_const_str_lv_objmask, - (const bstring *)&be_const_str_DYP_RX, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_DROPDOWN_PART_MAIN, - (const bstring *)&be_const_str_TXT_FLAG_RIGHT, - (const bstring *)&be_const_str_blur_ver, - (const bstring *)&be_const_str_RDM6300_RX, - (const bstring *)&be_const_str_LE01MR_RX, - NULL, - (const bstring *)&be_const_str_PROTECT_NONE, - (const bstring *)&be_const_str_LIST_PART_EDGE_FLASH, - (const bstring *)&be_const_str_IEM3000_RX, - (const bstring *)&be_const_str_STYLE_MARGIN_BOTTOM, - (const bstring *)&be_const_str_SCROLLBAR_MODE_AUTO, - (const bstring *)&be_const_str_TELEINFO_RX, - (const bstring *)&be_const_str_TM1637CLK, - (const bstring *)&be_const_str_clear_btn_ctrl_all, - (const bstring *)&be_const_str_set_pattern_opa, - (const bstring *)&be_const_str_set_bg_main_stop, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_CHART_UPDATE_MODE_SHIFT, - (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_MID, - (const bstring *)&be_const_str_LAYOUT_PRETTY_TOP, - NULL, - (const bstring *)&be_const_str_ROLLER_MODE_NORMAL, - (const bstring *)&be_const_str_KEY_NEXT, - (const bstring *)&be_const_str_clear_series, - (const bstring *)&be_const_str_ZEROCROSS, - (const bstring *)&be_const_str_set_cell_crop, - (const bstring *)&be_const_str_PMS5003_RX, - (const bstring *)&be_const_str_focus_btn, - NULL, - (const bstring *)&be_const_str_CHART_CURSOR_UP, - NULL, - (const bstring *)&be_const_str_I2C_SDA, - (const bstring *)&be_const_str_ALIGN_IN_RIGHT_MID, - (const bstring *)&be_const_str_get_point_count, - (const bstring *)&be_const_str_SYMBOL_SD_CARD, - (const bstring *)&be_const_str_get_style_transition_prop_2, - NULL, - NULL, - (const bstring *)&be_const_str_GESTURE_DIR_LEFT, - (const bstring *)&be_const_str_scroll_hor, - (const bstring *)&be_const_str_BORDER_SIDE_TOP, - (const bstring *)&be_const_str_STATE_FOCUSED, - NULL, - (const bstring *)&be_const_str_get_gesture_parent, - (const bstring *)&be_const_str_SSPI_CS, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_STYLE_PAD_RIGHT, - (const bstring *)&be_const_str_PROTECT_PARENT, - (const bstring *)&be_const_str_SYMBOL_LOOP, - (const bstring *)&be_const_str_DISP_SIZE_EXTRA_LARGE, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_ceil, - (const bstring *)&be_const_str_focus, - (const bstring *)&be_const_str_get_focus_parent, - (const bstring *)&be_const_str_ZIGBEE_TX, - (const bstring *)&be_const_str_BLEND_MODE_ADDITIVE, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_SPI_CS, - (const bstring *)&be_const_str_BTN_STATE_CHECKED_PRESSED, - (const bstring *)&be_const_str_get_highlighted_dates_num, - (const bstring *)&be_const_str_set_clip_corner, - (const bstring *)&be_const_str_set_base_dir, - (const bstring *)&be_const_str_STYLE_PAD_TOP, - (const bstring *)&be_const_str_KEYBOARD_MODE_TEXT_LOWER, - NULL, - (const bstring *)&be_const_str_MAROON, - (const bstring *)&be_const_str_HX711_SCK, - (const bstring *)&be_const_str_CHART_PART_CURSOR, - (const bstring *)&be_const_str_SAIR_RX, - NULL, - (const bstring *)&be_const_str_set_cell_value, - NULL, - NULL, - (const bstring *)&be_const_str_get_style_pattern_image, - (const bstring *)&be_const_str_STYLE_VALUE_LETTER_SPACE, - (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_SENSOR_END, - (const bstring *)&be_const_str_set_style_local_value_ofs_y, - (const bstring *)&be_const_str_FTC532, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_get_accepted_chars, - (const bstring *)&be_const_str_get_style_pattern_recolor_opa, - (const bstring *)&be_const_str_get_btn_ctrl, - (const bstring *)&be_const_str_lv_group, - (const bstring *)&be_const_str_CPICKER_TYPE_RECT, - (const bstring *)&be_const_str_STYLE_TRANSITION_PATH, - (const bstring *)&be_const_str_STYLE_TEXT_OPA, - NULL, - (const bstring *)&be_const_str_OPTION_A, - NULL, - (const bstring *)&be_const_str_range, - (const bstring *)&be_const_str_FS_RES_NOT_IMP, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_set_cell_value_fmt, - NULL, - (const bstring *)&be_const_str_KEY_RIGHT, - NULL, - (const bstring *)&be_const_str_get_pwd_show_time, - (const bstring *)&be_const_str_STATE_CHECKED, - (const bstring *)&be_const_str_get_y, - (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_WEBCAM_PSCLK, - (const bstring *)&be_const_str_DROPDOWN_PART_SCROLLBAR, - (const bstring *)&be_const_str_SYMBOL_COPY, - (const bstring *)&be_const_str_STYLE_PATTERN_REPEAT, - (const bstring *)&be_const_str_handle_get_type_signal, - (const bstring *)&be_const_str_SDM72_RX, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_SYMBOL_BATTERY_3, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_STYLE_TRANSFORM_HEIGHT, - (const bstring *)&be_const_str_WEBCAM_PSRCS, - (const bstring *)&be_const_str_SYMBOL_PASTE, - (const bstring *)&be_const_str_CPICKER_COLOR_MODE_SATURATION, - (const bstring *)&be_const_str_STATE_HOVERED, - (const bstring *)&be_const_str_set_style_local_value_font, - (const bstring *)&be_const_str_GPS_TX, - (const bstring *)&be_const_str_set_wrap, - (const bstring *)&be_const_str_STYLE_IMAGE_RECOLOR, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_GESTURE_DIR_RIGHT, - (const bstring *)&be_const_str_set_shadow_opa, - (const bstring *)&be_const_str_hide_series, - (const bstring *)&be_const_str_KEY_UP, - (const bstring *)&be_const_str_PAGE_EDGE_LEFT, - (const bstring *)&be_const_str_LABEL_LONG_SROLL, - (const bstring *)&be_const_str_CHART_TYPE_NONE, - (const bstring *)&be_const_str_STYLE_TRANSFORM_WIDTH, - (const bstring *)&be_const_str_ALIGN_OUT_BOTTOM_LEFT, - (const bstring *)&be_const_str_BORDER_SIDE_FULL, - (const bstring *)&be_const_str_get_style_margin_left, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_add_option, - (const bstring *)&be_const_str_set_transform_height, - (const bstring *)&be_const_str_SYMBOL_HOME, - NULL, - (const bstring *)&be_const_str_clear_options, - (const bstring *)&be_const_str_WIEGAND_D1, - (const bstring *)&be_const_str_GAUGE_PART_NEEDLE, - (const bstring *)&be_const_str_BORDER_SIDE_NONE, - (const bstring *)&be_const_str_get_click_focus, - (const bstring *)&be_const_str_set_design_cb, - (const bstring *)&be_const_str_CHART_UPDATE_MODE_CIRCULAR, - (const bstring *)&be_const_str_SPINNER_TYPE_CONSTANT_ARC, - NULL, - (const bstring *)&be_const_str_SYMBOL_LIST, - (const bstring *)&be_const_str_set_color_mode_fixed, - (const bstring *)&be_const_str_SBR_TX, - (const bstring *)&be_const_str_set_one_check, - (const bstring *)&be_const_str_EVENT_CLICKED, - (const bstring *)&be_const_str_KEYBOARD_MODE_SPECIAL, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_STATE_DISABLED, - (const bstring *)&be_const_str_get_auto_fit, - (const bstring *)&be_const_str_GESTURE_DIR_TOP, - (const bstring *)&be_const_str_def_event_cb, - NULL, - (const bstring *)&be_const_str_set_px, - (const bstring *)&be_const_str_list_get_local_style, - (const bstring *)&be_const_str_get_style_text_color, - (const bstring *)&be_const_str_BTNMATRIX_CTRL_CHECKABLE, - (const bstring *)&be_const_str_get_style_outline_pad, - (const bstring *)&be_const_str_set_update_mode, - (const bstring *)&be_const_str_FIT_PARENT, - (const bstring *)&be_const_str_fade_out, - (const bstring *)&be_const_str_ALIGN_OUT_LEFT_BOTTOM, - (const bstring *)&be_const_str_STYLE_BORDER_COLOR, - (const bstring *)&be_const_str_get_placeholder_text, - (const bstring *)&be_const_str_CPICKER_TYPE_DISC, - (const bstring *)&be_const_str_STYLE_SHADOW_BLEND_MODE, - (const bstring *)&be_const_str_get_style_bg_grad_stop, - (const bstring *)&be_const_str_HRE_DATA, - NULL, - (const bstring *)&be_const_str_get_cursor_click_pos, - (const bstring *)&be_const_str_ALIGN_OUT_LEFT_MID, - NULL, - (const bstring *)&be_const_str_set_cursor_point, - (const bstring *)&be_const_str_get_style_transition_delay, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_EVENT_PRESSED, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_GRAD_DIR_NONE, - (const bstring *)&be_const_str_LAYOUT_COLUMN_MID, - (const bstring *)&be_const_str_lv_label, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_get_style_pad_inner, - (const bstring *)&be_const_str_AZ_RXD, - NULL, - (const bstring *)&be_const_str_lv_switch, - (const bstring *)&be_const_str_get_bg_angle_start, - NULL, - (const bstring *)&be_const_str_STYLE_MARGIN_TOP, - (const bstring *)&be_const_str_CALENDAR_PART_HEADER, - (const bstring *)&be_const_str_ALIGN_IN_TOP_RIGHT, - (const bstring *)&be_const_str_ARC_TYPE_NORMAL, - (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, - (const bstring *)&be_const_str_get_point_id, - (const bstring *)&be_const_str_EVENT_DELETE, - (const bstring *)&be_const_str_ARC_PART_KNOB, - (const bstring *)&be_const_str_get_protect, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_toupper, - (const bstring *)&be_const_str_STYLE_SHADOW_SPREAD, - (const bstring *)&be_const_str_ALIGN_OUT_TOP_MID, - (const bstring *)&be_const_str_LABEL_LONG_EXPAND, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_set_value_line_space, - (const bstring *)&be_const_str_LE01MR_TX, - (const bstring *)&be_const_str_ALIGN_OUT_TOP_LEFT, - (const bstring *)&be_const_str_set_options, - (const bstring *)&be_const_str_BTN_STATE_CHECKED_DISABLED, - (const bstring *)&be_const_str_IEM3000_TX, - (const bstring *)&be_const_str_digital_write, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_get_cell_type, - (const bstring *)&be_const_str_init_draw_label_dsc, (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_SYMBOL_LOOP, + (const bstring *)&be_const_str_STYLE_SHADOW_BLEND_MODE, + (const bstring *)&be_const_str_TM1638CLK, + (const bstring *)&be_const_str_CPICKER_COLOR_MODE_HUE, + (const bstring *)&be_const_str_KEYBOARD_PART_BG, + (const bstring *)&be_const_str_CC1101_GDO0, + NULL, + (const bstring *)&be_const_str_MAX31855CS, NULL, (const bstring *)&be_const_str_CHART_PART_BG, - (const bstring *)&be_const_str_get_letter_on, - (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_align_y, + (const bstring *)&be_const_str_TFMINIPLUS_TX, + (const bstring *)&be_const_str_SILVER, + (const bstring *)&be_const_str_get_fit_left, + (const bstring *)&be_const_str_PWM1_INV, + (const bstring *)&be_const_str_CHART_AXIS_DRAW_LAST_TICK, + (const bstring *)&be_const_str_FS_RES_NOT_IMP, + (const bstring *)&be_const_str_PULLUP, + (const bstring *)&be_const_str_set_line_dash_width, + NULL, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_pow, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_floor, + (const bstring *)&be_const_str_set_pattern_repeat, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_BTN_STATE_DISABLED, + (const bstring *)&be_const_str_set_style_local_transition_prop_3, + (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, + (const bstring *)&be_const_str_get_style_border_post, + (const bstring *)&be_const_str_KEY_DEL, + NULL, + (const bstring *)&be_const_str_classname, + (const bstring *)&be_const_str_ROT1A_NP, + (const bstring *)&be_const_str_BLEND_MODE_NORMAL, + (const bstring *)&be_const_str_lv_led, + (const bstring *)&be_const_str_FTC532, + (const bstring *)&be_const_str_get_pwd_mode, + (const bstring *)&be_const_str_set_buffer, + (const bstring *)&be_const_str_SM16716_SEL, + NULL, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_EVENT_VALUE_CHANGED, + NULL, + (const bstring *)&be_const_str_draw_arc, + (const bstring *)&be_const_str_get_style_scale_width, + NULL, + NULL, + (const bstring *)&be_const_str_set_x_start_point, + (const bstring *)&be_const_str_get_style_transition_prop_3, + (const bstring *)&be_const_str_TABVIEW_TAB_POS_BOTTOM, + (const bstring *)&be_const_str_RXD, + NULL, + (const bstring *)&be_const_str_OPA_100, + (const bstring *)&be_const_str_get_style_line_dash_gap, + (const bstring *)&be_const_str_FS_MODE_RD, + (const bstring *)&be_const_str_resp_cmnd, + (const bstring *)&be_const_str_PROTECT_PARENT, + NULL, + (const bstring *)&be_const_str_ARC_PART_INDIC, + (const bstring *)&be_const_str_TM1638DIO, + (const bstring *)&be_const_str_SDM72_TX, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + (const bstring *)&be_const_str_RC522_RST, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_TUYA_TX, + (const bstring *)&be_const_str_get_scrl_fit_top, + (const bstring *)&be_const_str_BORDER_SIDE_FULL, + (const bstring *)&be_const_str_blur_hor, + (const bstring *)&be_const_str_get_style_outline_width, + (const bstring *)&be_const_str_layer_sys, + (const bstring *)&be_const_str_BORDER_SIDE_LEFT, + (const bstring *)&be_const_str_MIEL_HVAC_TX, + (const bstring *)&be_const_str_EVENT_DRAG_THROW_BEGIN, + (const bstring *)&be_const_str_ALIGN_OUT_BOTTOM_RIGHT, + (const bstring *)&be_const_str_DHT22, + NULL, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_get_style_border_color, + (const bstring *)&be_const_str_STYLE_MARGIN_BOTTOM, + (const bstring *)&be_const_str_LAYOUT_ROW_TOP, + (const bstring *)&be_const_str_set_text_sel_start, + (const bstring *)&be_const_str_allocated, + (const bstring *)&be_const_str_SPI_DC, + (const bstring *)&be_const_str_is_dragged, + (const bstring *)&be_const_str_get_style_pattern_opa, + (const bstring *)&be_const_str_OPTION_A, + (const bstring *)&be_const_str_EVENT_RELEASED, + NULL, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_LABEL_ALIGN_RIGHT, + (const bstring *)&be_const_str_char, + NULL, + (const bstring *)&be_const_str_LE01MR_TX, + NULL, + (const bstring *)&be_const_str_set_content_size, + (const bstring *)&be_const_str_CYAN, + (const bstring *)&be_const_str_set_outline_opa, + (const bstring *)&be_const_str_get_ver_res, + (const bstring *)&be_const_str_SAIR_TX, + (const bstring *)&be_const_str_ALIGN_OUT_TOP_MID, + NULL, + (const bstring *)&be_const_str_CHECKBOX_PART_BG, + (const bstring *)&be_const_str_clear_options, + (const bstring *)&be_const_str_set_style_local_text_sel_bg_color, + (const bstring *)&be_const_str__available, + NULL, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_ADC_JOY, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_for, + (const bstring *)&be_const_str_AQUA, + (const bstring *)&be_const_str_SYMBOL_DRIVE, + (const bstring *)&be_const_str_get_adjustable, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_PZEM016_RX, (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_OBJ_PART_REAL_FIRST, - (const bstring *)&be_const_str_get_color_mode, - (const bstring *)&be_const_str_FS_RES_TOUT, + (const bstring *)&be_const_str_NAVY, + NULL, + (const bstring *)&be_const_str_BAR_TYPE_NORMAL, + (const bstring *)&be_const_str_DDS2382_RX, + NULL, + (const bstring *)&be_const_str_STYLE_VALUE_LETTER_SPACE, + (const bstring *)&be_const_str_draw_text, + (const bstring *)&be_const_str_PROTECT_EVENT_TO_DISABLED, + (const bstring *)&be_const_str_STYLE_VALUE_OPA, + (const bstring *)&be_const_str_SYMBOL_CALL, + (const bstring *)&be_const_str_get_btn_index, + (const bstring *)&be_const_str_BTNMATRIX_CTRL_NO_REPEAT, + (const bstring *)&be_const_str_SDM630_TX, + (const bstring *)&be_const_str_DISP_ROT_NONE, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_set_style_local_pattern_image, + NULL, + (const bstring *)&be_const_str_LABEL_LONG_BREAK, + (const bstring *)&be_const_str_list, + (const bstring *)&be_const_str_set_parent, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_CHART_AXIS_SECONDARY_Y, + (const bstring *)&be_const_str_get, + (const bstring *)&be_const_str_number, + (const bstring *)&be_const_str_VL53L0X_XSHUT1, + (const bstring *)&be_const_str_get_type, + (const bstring *)&be_const_str_get_style_outline_opa, + (const bstring *)&be_const_str_set_refocus_policy, + NULL, + NULL, + (const bstring *)&be_const_str_FIT_MAX, + (const bstring *)&be_const_str_PZEM0XX_TX, + (const bstring *)&be_const_str_MCP39F5_RX, + (const bstring *)&be_const_str_lv_win, + NULL, + (const bstring *)&be_const_str_CPICKER_COLOR_MODE_VALUE, + (const bstring *)&be_const_str_lv_font, + NULL, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_get_style_outline_pad, + (const bstring *)&be_const_str_I2C, + (const bstring *)&be_const_str_GRAD_DIR_NONE, + (const bstring *)&be_const_str_set_pattern_opa, + (const bstring *)&be_const_str_TEMPL_STYLE_X, + (const bstring *)&be_const_str_init, + (const bstring *)&be_const_str_NEOPOOL_RX, + (const bstring *)&be_const_str_STYLE_PATTERN_IMAGE, + (const bstring *)&be_const_str_SSPI_SCLK, + (const bstring *)&be_const_str_SPINNER_TYPE_SPINNING_ARC, + (const bstring *)&be_const_str_SSPI_DC, + (const bstring *)&be_const_str_TABVIEW_TAB_POS_NONE, + (const bstring *)&be_const_str_ROT1A, + (const bstring *)&be_const_str_BORDER_SIDE_BOTTOM, + (const bstring *)&be_const_str_WINDMETER_SPEED, + (const bstring *)&be_const_str_ALIGN_IN_BOTTOM_MID, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_BLUE, + (const bstring *)&be_const_str_get_min_value, + (const bstring *)&be_const_str_get_critical_value, + (const bstring *)&be_const_str_EVENT_DEFOCUSED, + (const bstring *)&be_const_str_DROPDOWN_PART_LIST, + (const bstring *)&be_const_str_STYLE_TEXT_COLOR, + NULL, + (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_ROLLER_MODE_NORMAL, + (const bstring *)&be_const_str_GESTURE_DIR_LEFT, + (const bstring *)&be_const_str_STYLE_MARGIN_LEFT, + (const bstring *)&be_const_str_get_ext_click_pad_top, + (const bstring *)&be_const_str_set_style_local_outline_width, + (const bstring *)&be_const_str_get_style_scale_end_border_width, + (const bstring *)&be_const_str_fade_in, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_STYLE_SCALE_BORDER_WIDTH, + (const bstring *)&be_const_str_codedump, + (const bstring *)&be_const_str_set_style_local_pattern_recolor, + (const bstring *)&be_const_str_CHART_CURSOR_LEFT, + (const bstring *)&be_const_str_get_style_transition_prop_1, + (const bstring *)&be_const_str_CHART_AXIS_PRIMARY_Y, + (const bstring *)&be_const_str_set_text, + NULL, + (const bstring *)&be_const_str_CHART_CURSOR_NONE, + (const bstring *)&be_const_str_BTN_STATE_CHECKED_DISABLED, + (const bstring *)&be_const_str_ALIGN_IN_TOP_MID, + (const bstring *)&be_const_str_BORDER_SIDE_RIGHT, + (const bstring *)&be_const_str_set_pattern_recolor, + (const bstring *)&be_const_str_DCKI, + (const bstring *)&be_const_str_WEBCAM_SIOC, + (const bstring *)&be_const_str_copy, + (const bstring *)&be_const_str_GESTURE_DIR_RIGHT, + (const bstring *)&be_const_str_get_point_id, + (const bstring *)&be_const_str_LABEL_LONG_SROLL, + (const bstring *)&be_const_str_GAUGE_PART_MAIN, + NULL, + (const bstring *)&be_const_str_set_text_sel_color, + (const bstring *)&be_const_str_FS_RES_NOT_EX, + (const bstring *)&be_const_str_BAR_TYPE_SYMMETRICAL, + (const bstring *)&be_const_str_SYMBOL_EJECT, + (const bstring *)&be_const_str_STYLE_VALUE_STR, + (const bstring *)&be_const_str_srand, + (const bstring *)&be_const_str_LINEMETER_PART_MAIN, + (const bstring *)&be_const_str_STYLE_CLIP_CORNER, + (const bstring *)&be_const_str_WEBCAM_PWDN, + (const bstring *)&be_const_str_set_focus_parent, + (const bstring *)&be_const_str_GPS_TX, + NULL, + NULL, + (const bstring *)&be_const_str_ARC_PART_BG, + (const bstring *)&be_const_str_set_style_local_bg_opa, + (const bstring *)&be_const_str_LIST_PART_BG, + (const bstring *)&be_const_str_DROPDOWN_PART_SELECTED, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_get_ext_click_pad_left, + (const bstring *)&be_const_str_STYLE_LINE_BLEND_MODE, + (const bstring *)&be_const_str_STYLE_MARGIN_RIGHT, + (const bstring *)&be_const_str_set_arc_length, + (const bstring *)&be_const_str_SYMBOL_SD_CARD, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_detect, + (const bstring *)&be_const_str_CPICKER_PART_KNOB, + (const bstring *)&be_const_str_STYLE_BORDER_OPA, + (const bstring *)&be_const_str_RFSEND, + (const bstring *)&be_const_str_FS_RES_OK, + (const bstring *)&be_const_str_SYMBOL_KEYBOARD, + (const bstring *)&be_const_str_PZEM017_RX, + (const bstring *)&be_const_str_FIT_NONE, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_set_height_fit, + NULL, + (const bstring *)&be_const_str_set_transition_delay, + (const bstring *)&be_const_str_STYLE_PATTERN_OPA, (const bstring *)&be_const_str_get_left_value, + (const bstring *)&be_const_str_KEY1_INV_NP, + (const bstring *)&be_const_str_get_col_width, + (const bstring *)&be_const_str_set_angles, NULL, - (const bstring *)&be_const_str_get_parent_event, + NULL, + (const bstring *)&be_const_str_ALIGN_OUT_TOP_LEFT, + (const bstring *)&be_const_str_ALIGN_OUT_BOTTOM_MID, + (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_clear_protect, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_BTN_STATE_CHECKED_PRESSED, + NULL, + (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_clear_btn_ctrl, + (const bstring *)&be_const_str_get_symbol, + (const bstring *)&be_const_str_dot_p, (const bstring *)&be_const_str_CPICKER_PART_MAIN, - (const bstring *)&be_const_str_KEY_DOWN, + (const bstring *)&be_const_str_VSPI, + (const bstring *)&be_const_str_wire2, + (const bstring *)&be_const_str_SYMBOL_UPLOAD, + (const bstring *)&be_const_str_DSB, + (const bstring *)&be_const_str_focus_next, + (const bstring *)&be_const_str_SPI_CLK, + NULL, + (const bstring *)&be_const_str_SPINNER_DIR_BACKWARD, + (const bstring *)&be_const_str_ALIGN_IN_BOTTOM_RIGHT, + (const bstring *)&be_const_str_WHITE, + (const bstring *)&be_const_str_get_style_bg_color, + (const bstring *)&be_const_str_cos, + (const bstring *)&be_const_str_STATE_DISABLED, + NULL, + (const bstring *)&be_const_str_SYMBOL_SHUFFLE, + (const bstring *)&be_const_str_DROPDOWN_PART_MAIN, + (const bstring *)&be_const_str_get_base_dir, + (const bstring *)&be_const_str_KEY_HOME, + (const bstring *)&be_const_str_CHART_PART_SERIES, + (const bstring *)&be_const_str_json_append, + (const bstring *)&be_const_str_DROPDOWN_DIR_RIGHT, + (const bstring *)&be_const_str_find_key_i, + (const bstring *)&be_const_str_get_y, + (const bstring *)&be_const_str_DROPDOWN_DIR_UP, + NULL, + (const bstring *)&be_const_str_I2C_SDA, + NULL, + (const bstring *)&be_const_str_EVENT_CANCEL, + (const bstring *)&be_const_str_ADC_RANGE, + (const bstring *)&be_const_str_get_style_scale_end_color, + (const bstring *)&be_const_str_set_anim_speed, + (const bstring *)&be_const_str_OUTPUT_LO, + (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_MID, + (const bstring *)&be_const_str_STYLE_SHADOW_WIDTH, + NULL, + (const bstring *)&be_const_str_get_style_image_opa, + (const bstring *)&be_const_str_set_style_local_text_blend_mode, + (const bstring *)&be_const_str_get_x_from_index, + (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, + (const bstring *)&be_const_str_BACKLIGHT, + (const bstring *)&be_const_str_SYMBOL_POWER, + (const bstring *)&be_const_str_HX711_SCK, + (const bstring *)&be_const_str_create, + (const bstring *)&be_const_str_invalidate, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str__end_transmission, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_SSD1331_CS, + (const bstring *)&be_const_str_DRAG_DIR_HOR, + (const bstring *)&be_const_str_CPICKER_TYPE_RECT, + (const bstring *)&be_const_str_TCP_TX, + NULL, + (const bstring *)&be_const_str_ALIGN_OUT_LEFT_TOP, + NULL, + (const bstring *)&be_const_str_DISP_SIZE_MEDIUM, + (const bstring *)&be_const_str_add_btn_right, + (const bstring *)&be_const_str_BTNMATRIX_CTRL_CHECK_STATE, + (const bstring *)&be_const_str_RC522_CS, + NULL, + (const bstring *)&be_const_str_DDSU666_TX, + (const bstring *)&be_const_str_set_ext_array, + (const bstring *)&be_const_str__request_from, + (const bstring *)&be_const_str_STYLE_OUTLINE_PAD, + NULL, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_IEM3000_RX, + (const bstring *)&be_const_str_ZEROCROSS, + NULL, + NULL, + (const bstring *)&be_const_str_ANIM_ON, + NULL, + NULL, + (const bstring *)&be_const_str_DRAG_DIR_VER, + (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_BTNMATRIX_CTRL_CLICK_TRIG, + NULL, + (const bstring *)&be_const_str_STATE_EDITED, + (const bstring *)&be_const_str_WEBCAM_DATA, + (const bstring *)&be_const_str_SYMBOL_RIGHT, + (const bstring *)&be_const_str_OPA_10, + (const bstring *)&be_const_str_PROTECT_CHILD_CHG, + (const bstring *)&be_const_str_ALIGN_IN_LEFT_MID, + (const bstring *)&be_const_str_ALIGN_OUT_LEFT_MID, + (const bstring *)&be_const_str_STATE_PRESSED, + NULL, + (const bstring *)&be_const_str_ALIGN_OUT_BOTTOM_LEFT, + (const bstring *)&be_const_str_LAYOUT_COLUMN_LEFT, + (const bstring *)&be_const_str_set_align, + (const bstring *)&be_const_str_LAYOUT_GRID, + (const bstring *)&be_const_str_get_style_shadow_ofs_y, + (const bstring *)&be_const_str_STYLE_TEXT_FONT, + NULL, + (const bstring *)&be_const_str_increment, + (const bstring *)&be_const_str_set_pad_left, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_PROTECT_PRESS_LOST, + (const bstring *)&be_const_str_set_scroll_propagation, + (const bstring *)&be_const_str_DISP_SIZE_SMALL, + NULL, + (const bstring *)&be_const_str_lv_spinbox, + NULL, (const bstring *)&be_const_str_STYLE_SCALE_END_LINE_WIDTH, + (const bstring *)&be_const_str_STYLE_TRANSITION_TIME, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_save, + (const bstring *)&be_const_str_Driver, + (const bstring *)&be_const_str_EVENT_PRESS_LOST, + (const bstring *)&be_const_str_EVENT_INSERT, + (const bstring *)&be_const_str_set_bg_grad_dir, + (const bstring *)&be_const_str_SDCARD_CS, + (const bstring *)&be_const_str_CHART_UPDATE_MODE_SHIFT, + (const bstring *)&be_const_str_refresh_ext_draw_pad, + (const bstring *)&be_const_str_set_pivot, + (const bstring *)&be_const_str_get_angle_offset, NULL, + (const bstring *)&be_const_str_LABEL_ALIGN_CENTER, + (const bstring *)&be_const_str_delay, + (const bstring *)&be_const_str__drivers, + (const bstring *)&be_const_str_STYLE_BG_COLOR, + (const bstring *)&be_const_str_BORDER_SIDE_TOP, + (const bstring *)&be_const_str_LABEL_LONG_DOT, + (const bstring *)&be_const_str_remove_style, + (const bstring *)&be_const_str_set_scrl_height, + (const bstring *)&be_const_str_add_rule, + (const bstring *)&be_const_str_refresh_style, + (const bstring *)&be_const_str_CHECKBOX_PART_BULLET, + (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_TOP, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_get_style_clip_corner, + NULL, + (const bstring *)&be_const_str_send_data, + (const bstring *)&be_const_str_get_inner_coords, + (const bstring *)&be_const_str_ANIM_OFF, + (const bstring *)&be_const_str_clean_style_list, + (const bstring *)&be_const_str_add_state, + (const bstring *)&be_const_str_STYLE_SHADOW_OFS_X, + (const bstring *)&be_const_str_set_btn_ctrl, + (const bstring *)&be_const_str_EVENT_GESTURE, + (const bstring *)&be_const_str_OPA_20, + (const bstring *)&be_const_str_FS_RES_HW_ERR, + (const bstring *)&be_const_str_FS_RES_OUT_OF_MEM, + (const bstring *)&be_const_str_get_btnmatrix, + (const bstring *)&be_const_str_get_auto_realign, + (const bstring *)&be_const_str_get_letter_pos, + (const bstring *)&be_const_str_A4988_ENA, + NULL, + (const bstring *)&be_const_str_remove_mask, + (const bstring *)&be_const_str_LAYOUT_PRETTY_MID, + (const bstring *)&be_const_str_set_style_local_text_sel_color, + (const bstring *)&be_const_str_add_cmd, + (const bstring *)&be_const_str_STATE_FOCUSED, + (const bstring *)&be_const_str_BLEND_MODE_ADDITIVE, + (const bstring *)&be_const_str_set_title, + (const bstring *)&be_const_str_every_second, + (const bstring *)&be_const_str_PN532_RXD, + (const bstring *)&be_const_str_lv_checkbox, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_SSPI_MISO, + (const bstring *)&be_const_str_get_hue, + NULL, + NULL, + (const bstring *)&be_const_str_MP3_DFR562, + (const bstring *)&be_const_str_SYMBOL_OK, + (const bstring *)&be_const_str_RFRECV, + (const bstring *)&be_const_str_OUTPUT_HI, + (const bstring *)&be_const_str_NRG_SEL, + (const bstring *)&be_const_str_decrement, + NULL, + (const bstring *)&be_const_str_get_hor_res, + (const bstring *)&be_const_str_del_char_forward, + (const bstring *)&be_const_str_get_file_name, + (const bstring *)&be_const_str_set_scale_width, + (const bstring *)&be_const_str_get_saturation, + (const bstring *)&be_const_str_EVENT_PRESSING, + (const bstring *)&be_const_str_add_style, + (const bstring *)&be_const_str_SYMBOL_UP, + NULL, + (const bstring *)&be_const_str___iterator__, + (const bstring *)&be_const_str_KEY_ESC, + (const bstring *)&be_const_str_LABEL_LONG_CROP, + NULL, + (const bstring *)&be_const_str_HSPI, + (const bstring *)&be_const_str_PROTECT_FOLLOW, + (const bstring *)&be_const_str_KEY_DOWN, + (const bstring *)&be_const_str_save_before_restart, + (const bstring *)&be_const_str_LABEL_LONG_EXPAND, + (const bstring *)&be_const_str_imin, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_get_x_start_point, + (const bstring *)&be_const_str_gamma10, + NULL, + (const bstring *)&be_const_str_get_style_text_color, + (const bstring *)&be_const_str__begin_transmission, + (const bstring *)&be_const_str_KEYBOARD_PART_BTN, + (const bstring *)&be_const_str_SPI_MISO, + (const bstring *)&be_const_str_get_tab, + (const bstring *)&be_const_str_add, + (const bstring *)&be_const_str_EVENT_LONG_PRESSED_REPEAT, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_TM1637DIO, + (const bstring *)&be_const_str_SSPI, + (const bstring *)&be_const_str_STYLE_TRANSITION_PROP_4, + (const bstring *)&be_const_str_EVENT_PRESSED, + (const bstring *)&be_const_str_STYLE_TRANSFORM_HEIGHT, + (const bstring *)&be_const_str_yield, + (const bstring *)&be_const_str_LEDLNK_INV, + NULL, + (const bstring *)&be_const_str_KEY_ENTER, + (const bstring *)&be_const_str_STYLE_SHADOW_OFS_Y, + (const bstring *)&be_const_str_LAYOUT_COLUMN_MID, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_TASMOTACLIENT_RST, + NULL, + NULL, + (const bstring *)&be_const_str_ALIGN_IN_RIGHT_MID, + NULL, + (const bstring *)&be_const_str_get_checkable, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_WEBCAM_HREF, + (const bstring *)&be_const_str_CHART_CURSOR_DOWN, + (const bstring *)&be_const_str_get_text_sel_en, + NULL, + (const bstring *)&be_const_str_anim_cb, + NULL, + (const bstring *)&be_const_str_set_antialias, (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_lv_color, - (const bstring *)&be_const_str_MGC3130_RESET, - (const bstring *)&be_const_str_set_style_local_bg_grad_color, NULL, - (const bstring *)&be_const_str_get_mirror + NULL, + (const bstring *)&be_const_str_OPA_60, + (const bstring *)&be_const_str_get_arc_length, + (const bstring *)&be_const_str_CSE7761_RX, + (const bstring *)&be_const_str_NRG_CF1, + (const bstring *)&be_const_str_GESTURE_DIR_TOP, + (const bstring *)&be_const_str_STYLE_SCALE_END_BORDER_WIDTH, + (const bstring *)&be_const_str_BLACK, + (const bstring *)&be_const_str_set_style_local_image_recolor_opa, + (const bstring *)&be_const_str_remove_cmd, + (const bstring *)&be_const_str_get_active_btn, + (const bstring *)&be_const_str_STYLE_VALUE_FONT, + NULL, + NULL, + (const bstring *)&be_const_str_get_local_style, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_get_style_border_opa, + (const bstring *)&be_const_str_EVENT_DRAG_END, + (const bstring *)&be_const_str_draw_img, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_IRSEND, + (const bstring *)&be_const_str_MAX31855CLK, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_set_scrl_width, + (const bstring *)&be_const_str_GRAY, + NULL, + (const bstring *)&be_const_str_SYMBOL_MINUS, + (const bstring *)&be_const_str_STYLE_BG_MAIN_STOP, + (const bstring *)&be_const_str_set_disabled, + (const bstring *)&be_const_str_set_style_local_transition_path, + (const bstring *)&be_const_str_invalidate_area, + (const bstring *)&be_const_str_def_event_cb, + (const bstring *)&be_const_str_set_saturation, + (const bstring *)&be_const_str_FIT_PARENT, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_CALENDAR_PART_HEADER, + (const bstring *)&be_const_str_pop, + (const bstring *)&be_const_str_BORDER_SIDE_INTERNAL, + NULL, + (const bstring *)&be_const_str_SENSOR_END, + (const bstring *)&be_const_str_GAUGE_PART_MAJOR, + NULL, + (const bstring *)&be_const_str_get_scrl_height, + (const bstring *)&be_const_str_SPI, + (const bstring *)&be_const_str_LIME, + (const bstring *)&be_const_str_get_needle_img, + (const bstring *)&be_const_str_STYLE_TRANSITION_PROP_5, + (const bstring *)&be_const_str_STYLE_IMAGE_RECOLOR, + (const bstring *)&be_const_str_TXT_FLAG_FIT, + (const bstring *)&be_const_str_STYLE_SHADOW_COLOR, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_cursor_up, + (const bstring *)&be_const_str_KEY1_NP, + (const bstring *)&be_const_str_CALENDAR_PART_DAY_NAMES, + (const bstring *)&be_const_str_get_scroll_propagation, + (const bstring *)&be_const_str_set_end_angle, + (const bstring *)&be_const_str_HLW_CF, + (const bstring *)&be_const_str_BTNMATRIX_CTRL_CHECKABLE, + (const bstring *)&be_const_str_SPI_MOSI, + NULL, + NULL, + (const bstring *)&be_const_str_get_ext_click_pad_right, + (const bstring *)&be_const_str_MAX7219CS, + (const bstring *)&be_const_str_TCP_RX, + NULL, + (const bstring *)&be_const_str_TELEINFO_ENABLE, + NULL, + NULL, + (const bstring *)&be_const_str_get_style_text_opa, + (const bstring *)&be_const_str_OPA_COVER, + (const bstring *)&be_const_str_RED, + (const bstring *)&be_const_str_SYMBOL_PASTE, + (const bstring *)&be_const_str_GESTURE_DIR_BOTTOM, + NULL, + NULL, + (const bstring *)&be_const_str_set_checked, + (const bstring *)&be_const_str_set_editing, + NULL, + (const bstring *)&be_const_str_STYLE_TEXT_LETTER_SPACE, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_DROPDOWN_DIR_LEFT, + (const bstring *)&be_const_str_BOILER_OT_RX, + NULL, + NULL, + (const bstring *)&be_const_str_set_style_local_pattern_repeat, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_ARIRFRCV, + (const bstring *)&be_const_str_WEBCAM_XCLK, + (const bstring *)&be_const_str_get_max_value, + NULL, + (const bstring *)&be_const_str_KEYBOARD_MODE_TEXT_LOWER, + NULL, + (const bstring *)&be_const_str_get_wrap, + (const bstring *)&be_const_str_CHART_CURSOR_RIGHT, + (const bstring *)&be_const_str_get_style_transform_angle, + (const bstring *)&be_const_str_add_driver, + NULL, + (const bstring *)&be_const_str_get_height, + (const bstring *)&be_const_str_add_text, + (const bstring *)&be_const_str_DROPDOWN_DIR_DOWN, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_OLED_RESET, + (const bstring *)&be_const_str_set_div_line_count, + (const bstring *)&be_const_str_STYLE_RADIUS, + (const bstring *)&be_const_str_copy_buf, + (const bstring *)&be_const_str_set_border_width, + (const bstring *)&be_const_str_STATE_HOVERED, + (const bstring *)&be_const_str_get_adv_hittest, + (const bstring *)&be_const_str_TASMOTACLIENT_RXD, + (const bstring *)&be_const_str_TEAL, + (const bstring *)&be_const_str_get_step, + (const bstring *)&be_const_str_DISP_ROT_270, + (const bstring *)&be_const_str_KEY_PREV, + (const bstring *)&be_const_str_STYLE_BG_GRAD_COLOR, + (const bstring *)&be_const_str_STYLE_LINE_OPA, + (const bstring *)&be_const_str_EVENT_DELETE, + NULL, + (const bstring *)&be_const_str_set_drag_parent, + (const bstring *)&be_const_str_set_step, + (const bstring *)&be_const_str_STYLE_TRANSITION_PROP_2, + (const bstring *)&be_const_str_set_focused_btn, + (const bstring *)&be_const_str_get_fit_bottom, + NULL, + (const bstring *)&be_const_str_abs, + (const bstring *)&be_const_str_imax, + (const bstring *)&be_const_str_get_style_pad_top, + NULL, + (const bstring *)&be_const_str_set_style_local_bg_color, + NULL, + (const bstring *)&be_const_str_BTN_STATE_CHECKED_RELEASED, + (const bstring *)&be_const_str_get_width, + (const bstring *)&be_const_str_CHART_TYPE_COLUMN, + (const bstring *)&be_const_str_lv_arc, + (const bstring *)&be_const_str_DISP_ROT_90, + (const bstring *)&be_const_str_area_is_visible, + (const bstring *)&be_const_str_set_showed_date, + (const bstring *)&be_const_str_set_point_count, + (const bstring *)&be_const_str_set_angle, + (const bstring *)&be_const_str_lv_msgbox, + (const bstring *)&be_const_str_set_image_blend_mode, + (const bstring *)&be_const_str_asin, + (const bstring *)&be_const_str_gc, + (const bstring *)&be_const_str_IEM3000_TX, + (const bstring *)&be_const_str_get_knob_colored, + (const bstring *)&be_const_str_range, + (const bstring *)&be_const_str_get_color_mode, + (const bstring *)&be_const_str_set_margin_bottom, + NULL, + NULL, + (const bstring *)&be_const_str_OPA_70, + (const bstring *)&be_const_str_XPT2046_CS, + NULL, + (const bstring *)&be_const_str_OBJMASK_PART_MAIN, + (const bstring *)&be_const_str_REL1 }; static const struct bconststrtab m_const_string_table = { - .size = 803, - .count = 1607, + .size = 842, + .count = 1685, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h new file mode 100644 index 000000000..fe478625c --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h @@ -0,0 +1,67 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(be_class_tasmota_map) { + { be_const_key(log, 25), be_const_func(l_logInfo) }, + { be_const_key(find_op, -1), be_const_closure(find_op_closure) }, + { be_const_key(gc, -1), be_const_closure(gc_closure) }, + { be_const_key(get_power, -1), be_const_func(l_getpower) }, + { be_const_key(_cmd, -1), be_const_func(l_cmd) }, + { be_const_key(scale_uint, -1), be_const_func(l_scaleuint) }, + { be_const_key(event, 4), be_const_closure(event_closure) }, + { be_const_key(exec_cmd, 20), be_const_closure(exec_cmd_closure) }, + { be_const_key(find_key_i, -1), be_const_closure(find_key_i_closure) }, + { be_const_key(resolvecmnd, -1), be_const_func(l_resolveCmnd) }, + { be_const_key(set_timer, -1), be_const_closure(set_timer_closure) }, + { be_const_key(add_driver, 37), be_const_closure(add_driver_closure) }, + { be_const_key(resp_cmnd, -1), be_const_func(l_respCmnd) }, + { be_const_key(resp_cmnd_str, -1), be_const_func(l_respCmndStr) }, + { be_const_key(add_cmd, -1), be_const_closure(add_cmd_closure) }, + { be_const_key(chars_in_string, -1), be_const_closure(chars_in_string_closure) }, + { be_const_key(add_rule, 47), be_const_closure(add_rule_closure) }, + { be_const_key(try_rule, 34), be_const_closure(try_rule_closure) }, + { be_const_key(get_option, -1), be_const_func(l_getoption) }, + { be_const_key(wire1, -1), be_const_int(0) }, + { be_const_key(remove_cmd, -1), be_const_closure(remove_cmd_closure) }, + { be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) }, + { be_const_key(wire_scan, -1), be_const_closure(wire_scan_closure) }, + { be_const_key(_timers, -1), be_const_int(1) }, + { be_const_key(exec_rules, -1), be_const_closure(exec_rules_closure) }, + { be_const_key(response_append, 43), be_const_func(l_respAppend) }, + { be_const_key(time_dump, 31), be_const_func(l_time_dump) }, + { be_const_key(millis, -1), be_const_func(l_millis) }, + { be_const_key(wire2, -1), be_const_int(2) }, + { be_const_key(remove_rule, 8), be_const_closure(remove_rule_closure) }, + { be_const_key(delay, 13), be_const_func(l_delay) }, + { be_const_key(run_deferred, -1), be_const_closure(run_deferred_closure) }, + { be_const_key(i2c_enabled, 19), be_const_func(l_i2cenabled) }, + { be_const_key(_drivers, -1), be_const_int(3) }, + { be_const_key(time_reached, -1), be_const_func(l_timereached) }, + { be_const_key(publish, -1), be_const_func(l_publish) }, + { be_const_key(_ccmd, -1), be_const_int(4) }, + { be_const_key(yield, -1), be_const_func(l_yield) }, + { be_const_key(get_free_heap, -1), be_const_func(l_getFreeHeap) }, + { be_const_key(resp_cmnd_failed, -1), be_const_func(l_respCmndFailed) }, + { be_const_key(_rules, -1), be_const_int(5) }, + { be_const_key(time_str, -1), be_const_closure(time_str_closure) }, + { be_const_key(set_power, -1), be_const_func(l_setpower) }, + { be_const_key(cmd, -1), be_const_closure(cmd_closure) }, + { be_const_key(get_light, -1), be_const_closure(get_light_closure) }, + { be_const_key(save, -1), be_const_func(l_save) }, + { be_const_key(rtc, 23), be_const_func(l_rtc) }, + { be_const_key(resp_cmnd_error, 33), be_const_func(l_respCmndError) }, + { be_const_key(web_send_decimal, 15), be_const_func(l_webSendDecimal) }, + { be_const_key(load, 14), be_const_closure(load_closure) }, + { be_const_key(set_light, -1), be_const_closure(set_light_closure) }, +}; + +static be_define_const_map( + be_class_tasmota_map, + 51 +); + +BE_EXPORT_VARIABLE be_define_const_class( + be_class_tasmota, + 6, + NULL, + Tasmota +); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_driver.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_driver.h new file mode 100644 index 000000000..4c8856bf4 --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_driver.h @@ -0,0 +1,26 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(be_class_tasmota_driver_map) { + { be_const_key(add_cmd, -1), be_const_closure(add_cmd_closure) }, + { be_const_key(web_add_main_button, 3), be_const_int(0) }, + { be_const_key(web_sensor, -1), be_const_int(1) }, + { be_const_key(every_100ms, -1), be_const_int(2) }, + { be_const_key(json_append, 1), be_const_int(3) }, + { be_const_key(every_second, -1), be_const_int(4) }, + { be_const_key(button_pressed, -1), be_const_int(5) }, + { be_const_key(save_before_restart, -1), be_const_int(6) }, + { be_const_key(web_add_button, 7), be_const_int(7) }, + { be_const_key(get_tasmota, 0), be_const_func(d_getTasmotaGlob) }, +}; + +static be_define_const_map( + be_class_tasmota_driver_map, + 10 +); + +BE_EXPORT_VARIABLE be_define_const_class( + be_class_tasmota_driver, + 8, + NULL, + Driver +); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_wire.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_wire.h new file mode 100644 index 000000000..d43d4aa8e --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_wire.h @@ -0,0 +1,30 @@ +#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_int(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(read_bytes, -1), be_const_closure(read_bytes_closure) }, +}; + +static be_define_const_map( + be_class_tasmota_wire_map, + 14 +); + +BE_EXPORT_VARIABLE be_define_const_class( + be_class_tasmota_wire, + 1, + NULL, + Wire +); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_tasmota_driver.h b/lib/libesp32/Berry/generate/be_fixed_be_tasmota_driver.h new file mode 100644 index 000000000..362eebe48 --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_be_tasmota_driver.h @@ -0,0 +1,25 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(be_tasmota_driver_map) { + { be_const_key(get_tasmota, -1), be_const_func(d_getTasmotaGlob) }, + { be_const_key(web_sensor, -1), be_const_int(0) }, + { be_const_key(json_append, 0), be_const_int(1) }, + { be_const_key(every_second, 4), be_const_int(2) }, + { be_const_key(every_100ms, 7), be_const_int(3) }, + { be_const_key(web_add_main_button, -1), be_const_int(4) }, + { be_const_key(web_add_button, -1), be_const_int(5) }, + { be_const_key(save_before_restart, -1), be_const_int(6) }, + { be_const_key(button_pressed, 1), be_const_int(7) }, +}; + +static be_define_const_map( + be_tasmota_driver_map, + 9 +); + +BE_EXPORT_VARIABLE be_define_const_class( + be_tasmota_driver, + 8, + NULL, + Driver +); diff --git a/lib/libesp32/Berry/generate/be_fixed_energy.h b/lib/libesp32/Berry/generate/be_fixed_energy.h new file mode 100644 index 000000000..0608b0ba2 --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_energy.h @@ -0,0 +1,17 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(m_libenergy_map) { + { be_const_key(read, -1), be_const_func(b_nrg_read) }, +}; + +static be_define_const_map( + m_libenergy_map, + 1 +); + +static be_define_const_module( + m_libenergy, + "energy" +); + +BE_EXPORT_VARIABLE be_define_const_native_module(energy, NULL); diff --git a/lib/libesp32/Berry/generate/be_fixed_light.h b/lib/libesp32/Berry/generate/be_fixed_light.h new file mode 100644 index 000000000..4afeb464e --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_light.h @@ -0,0 +1,21 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(m_liblight_map) { + { be_const_key(gamma8, 1), be_const_func(l_gamma8) }, + { be_const_key(get, -1), be_const_func(l_getlight) }, + { be_const_key(set, 4), be_const_func(l_setlight) }, + { be_const_key(gamma10, -1), be_const_func(l_gamma10) }, + { be_const_key(reverse_gamma10, -1), be_const_func(l_rev_gamma10) }, +}; + +static be_define_const_map( + m_liblight_map, + 5 +); + +static be_define_const_module( + m_liblight, + "light" +); + +BE_EXPORT_VARIABLE be_define_const_native_module(light, NULL); diff --git a/lib/libesp32/Berry/generate/be_fixed_tasmota_driver.h b/lib/libesp32/Berry/generate/be_fixed_tasmota_driver.h new file mode 100644 index 000000000..771dedc65 --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_tasmota_driver.h @@ -0,0 +1,25 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(tasmota_driver_map) { + { be_const_key(get_tasmota, -1), be_const_func(d_getTasmotaGlob) }, + { be_const_key(web_sensor, -1), be_const_int(0) }, + { be_const_key(json_append, 0), be_const_int(1) }, + { be_const_key(every_second, 4), be_const_int(2) }, + { be_const_key(every_100ms, 7), be_const_int(3) }, + { be_const_key(web_add_main_button, -1), be_const_int(4) }, + { be_const_key(web_add_button, -1), be_const_int(5) }, + { be_const_key(save_before_restart, -1), be_const_int(6) }, + { be_const_key(button_pressed, 1), be_const_int(7) }, +}; + +static be_define_const_map( + tasmota_driver_map, + 9 +); + +BE_EXPORT_VARIABLE be_define_const_class( + tasmota_driver, + 8, + NULL, + Driver +); diff --git a/lib/libesp32/Berry/src/be_constobj.h b/lib/libesp32/Berry/src/be_constobj.h index ebd72e6c8..d4fd9ad70 100644 --- a/lib/libesp32/Berry/src/be_constobj.h +++ b/lib/libesp32/Berry/src/be_constobj.h @@ -47,8 +47,8 @@ extern "C" { .type = BE_REAL \ } -#define be_const_str(_val) { \ - .v.s = (bstring*)(_val), \ +#define be_const_str(_str) { \ + .v.s = (bstring*)(_str), \ .type = BE_STRING \ } @@ -57,6 +57,11 @@ extern "C" { .type = BE_CLASS \ } +#define be_const_closure(_closure) { \ + .v.c = &(_closure), \ + .type = BE_CLOSURE \ +} + #define be_const_module(_module) { \ .v.c = &(_module), \ .type = BE_MODULE \ @@ -131,11 +136,21 @@ const bntvmodule be_native_module(_module) = { \ BE_REAL \ } +#define be_const_str(_string) { \ + bvaldata(bstring(_string)), \ + BE_STRING \ +} + #define be_const_class(_class) { \ bvaldata(&(_class)), \ BE_CLASS \ } +#define be_const_closure(_closure) { \ + bvaldata(&(_closure)), \ + BE_CLOSURE \ +} + #define be_const_module(_module) { \ bvaldata(&(_module)), \ BE_MODULE \ diff --git a/lib/libesp32/Berry/src/berry.h b/lib/libesp32/Berry/src/berry.h index 708255439..97f56d038 100644 --- a/lib/libesp32/Berry/src/berry.h +++ b/lib/libesp32/Berry/src/berry.h @@ -256,7 +256,7 @@ typedef struct bntvmodule { static const bcstring be_local_const_str_##_name = { \ .next = (bgcobject *)NULL, \ .type = BE_STRING, \ - .marked = 0x08, /* GC_CONST */ \ + .marked = GC_CONST, \ .extra = 0, \ .slen = _len, \ .hash = 0, \ @@ -296,7 +296,7 @@ typedef struct bntvmodule { #define be_define_local_proto(_name, _nstack, _argc, _is_const, _is_subproto, _is_upval) \ static const bproto _name##_proto = { \ NULL, /* bgcobject *next */ \ - 8, /* type BE_PROTO */ \ + BE_PROTO, /* type BE_PROTO */ \ 0x08, /* marked outside of GC */ \ (_nstack), /* nstack */ \ BE_IIF(_is_upval)(sizeof(_name##_upvals)/sizeof(bupvaldesc),0),/* nupvals */ \ @@ -319,8 +319,8 @@ typedef struct bntvmodule { #define be_define_local_closure(_name) \ const bclosure _name##_closure = { \ NULL, /* bgcobject *next */ \ - 36, /* type BE_CLOSURE */ \ - 0x08, /* marked GC_CONST */ \ + BE_CLOSURE, /* type BE_CLOSURE */ \ + GC_CONST, /* marked GC_CONST */ \ 0, /* nupvals */ \ NULL, /* bgcobject *gray */ \ (bproto*) &_name##_proto, /* proto */ \ diff --git a/tasmota/xdrv_52_7_berry_embedded.ino b/tasmota/xdrv_52_7_berry_embedded.ino index 308824476..da5e94f08 100644 --- a/tasmota/xdrv_52_7_berry_embedded.ino +++ b/tasmota/xdrv_52_7_berry_embedded.ino @@ -37,7 +37,7 @@ const char berry_prog[] = #endif // Phase 1 - "class Tasmota: Tasmota_ntv " + // "class Tasmota: Tasmota_ntv " // for now the variables are built, need to find a way to push in Flash // "def init() " // "end " @@ -352,7 +352,7 @@ const char berry_prog[] = // "end " // "end " - "end " + // "end " // // Monkey patch `Driver` class - To be continued // "class Driver2 : Driver " diff --git a/tools/lv_berry/convert.py b/tools/lv_berry/convert.py index c69982750..468f7e386 100644 --- a/tools/lv_berry/convert.py +++ b/tools/lv_berry/convert.py @@ -262,8 +262,7 @@ print(""" /******************************************************************** * Tasmota LVGL classes for widgets *******************************************************************/ -#include "be_object.h" -#include "be_string.h" +#include "be_constobj.h" #ifdef USE_LVGL @@ -390,9 +389,7 @@ print(" *******************************************************************/") print("""/******************************************************************** * LVGL Module *******************************************************************/ -#include "be_object.h" -#include "be_string.h" -#include "be_gc.h" +#include "be_constobj.h" #ifdef USE_LVGL @@ -544,67 +541,67 @@ be_define_native_module(lvgl, NULL); #else -be_define_local_const_str(SYMBOL_AUDIO, "\\xef\\x80\\x81", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_VIDEO, "\\xef\\x80\\x88", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_LIST, "\\xef\\x80\\x8b", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_OK, "\\xef\\x80\\x8c", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_CLOSE, "\\xef\\x80\\x8d", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_POWER, "\\xef\\x80\\x91", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_SETTINGS, "\\xef\\x80\\x93", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_HOME, "\\xef\\x80\\x95", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_DOWNLOAD, "\\xef\\x80\\x99", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_DRIVE, "\\xef\\x80\\x9c", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_REFRESH, "\\xef\\x80\\xa1", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_MUTE, "\\xef\\x80\\xa6", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_VOLUME_MID, "\\xef\\x80\\xa7", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_VOLUME_MAX, "\\xef\\x80\\xa8", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_IMAGE, "\\xef\\x80\\xbe", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_EDIT, "\\xef\\x8C\\x84", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_PREV, "\\xef\\x81\\x88", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_PLAY, "\\xef\\x81\\x8b", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_PAUSE, "\\xef\\x81\\x8c", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_STOP, "\\xef\\x81\\x8d", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_NEXT, "\\xef\\x81\\x91", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_EJECT, "\\xef\\x81\\x92", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_LEFT, "\\xef\\x81\\x93", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_RIGHT, "\\xef\\x81\\x94", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_PLUS, "\\xef\\x81\\xa7", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_MINUS, "\\xef\\x81\\xa8", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_EYE_OPEN, "\\xef\\x81\\xae", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_EYE_CLOSE, "\\xef\\x81\\xb0", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_WARNING, "\\xef\\x81\\xb1", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_SHUFFLE, "\\xef\\x81\\xb4", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_UP, "\\xef\\x81\\xb7", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_DOWN, "\\xef\\x81\\xb8", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_LOOP, "\\xef\\x81\\xb9", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_DIRECTORY, "\\xef\\x81\\xbb", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_UPLOAD, "\\xef\\x82\\x93", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_CALL, "\\xef\\x82\\x95", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_CUT, "\\xef\\x83\\x84", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_COPY, "\\xef\\x83\\x85", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_SAVE, "\\xef\\x83\\x87", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_CHARGE, "\\xef\\x83\\xa7", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_PASTE, "\\xef\\x83\\xAA", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BELL, "\\xef\\x83\\xb3", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_KEYBOARD, "\\xef\\x84\\x9c", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_GPS, "\\xef\\x84\\xa4", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_FILE, "\\xef\\x85\\x9b", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_WIFI, "\\xef\\x87\\xab", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BATTERY_FULL, "\\xef\\x89\\x80", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BATTERY_3, "\\xef\\x89\\x81", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BATTERY_2, "\\xef\\x89\\x82", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BATTERY_1, "\\xef\\x89\\x83", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BATTERY_EMPTY, "\\xef\\x89\\x84", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_USB, "\\xef\\x8a\\x87", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BLUETOOTH, "\\xef\\x8a\\x93", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_TRASH, "\\xef\\x8B\\xAD", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_BACKSPACE, "\\xef\\x95\\x9A", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_SD_CARD, "\\xef\\x9F\\x82", 0, 0, 3, 0); -be_define_local_const_str(SYMBOL_NEW_LINE, "\\xef\\xA2\\xA2", 0, 0, 3, 0); +be_define_local_const_str(SYMBOL_AUDIO, "\\xef\\x80\\x81", 0, 3); +be_define_local_const_str(SYMBOL_VIDEO, "\\xef\\x80\\x88", 0, 3); +be_define_local_const_str(SYMBOL_LIST, "\\xef\\x80\\x8b", 0, 3); +be_define_local_const_str(SYMBOL_OK, "\\xef\\x80\\x8c", 0, 3); +be_define_local_const_str(SYMBOL_CLOSE, "\\xef\\x80\\x8d", 0, 3); +be_define_local_const_str(SYMBOL_POWER, "\\xef\\x80\\x91", 0, 3); +be_define_local_const_str(SYMBOL_SETTINGS, "\\xef\\x80\\x93", 0, 3); +be_define_local_const_str(SYMBOL_HOME, "\\xef\\x80\\x95", 0, 3); +be_define_local_const_str(SYMBOL_DOWNLOAD, "\\xef\\x80\\x99", 0, 3); +be_define_local_const_str(SYMBOL_DRIVE, "\\xef\\x80\\x9c", 0, 3); +be_define_local_const_str(SYMBOL_REFRESH, "\\xef\\x80\\xa1", 0, 3); +be_define_local_const_str(SYMBOL_MUTE, "\\xef\\x80\\xa6", 0, 3); +be_define_local_const_str(SYMBOL_VOLUME_MID, "\\xef\\x80\\xa7", 0, 3); +be_define_local_const_str(SYMBOL_VOLUME_MAX, "\\xef\\x80\\xa8", 0, 3); +be_define_local_const_str(SYMBOL_IMAGE, "\\xef\\x80\\xbe", 0, 3); +be_define_local_const_str(SYMBOL_EDIT, "\\xef\\x8C\\x84", 0, 3); +be_define_local_const_str(SYMBOL_PREV, "\\xef\\x81\\x88", 0, 3); +be_define_local_const_str(SYMBOL_PLAY, "\\xef\\x81\\x8b", 0, 3); +be_define_local_const_str(SYMBOL_PAUSE, "\\xef\\x81\\x8c", 0, 3); +be_define_local_const_str(SYMBOL_STOP, "\\xef\\x81\\x8d", 0, 3); +be_define_local_const_str(SYMBOL_NEXT, "\\xef\\x81\\x91", 0, 3); +be_define_local_const_str(SYMBOL_EJECT, "\\xef\\x81\\x92", 0, 3); +be_define_local_const_str(SYMBOL_LEFT, "\\xef\\x81\\x93", 0, 3); +be_define_local_const_str(SYMBOL_RIGHT, "\\xef\\x81\\x94", 0, 3); +be_define_local_const_str(SYMBOL_PLUS, "\\xef\\x81\\xa7", 0, 3); +be_define_local_const_str(SYMBOL_MINUS, "\\xef\\x81\\xa8", 0, 3); +be_define_local_const_str(SYMBOL_EYE_OPEN, "\\xef\\x81\\xae", 0, 3); +be_define_local_const_str(SYMBOL_EYE_CLOSE, "\\xef\\x81\\xb0", 0, 3); +be_define_local_const_str(SYMBOL_WARNING, "\\xef\\x81\\xb1", 0, 3); +be_define_local_const_str(SYMBOL_SHUFFLE, "\\xef\\x81\\xb4", 0, 3); +be_define_local_const_str(SYMBOL_UP, "\\xef\\x81\\xb7", 0, 3); +be_define_local_const_str(SYMBOL_DOWN, "\\xef\\x81\\xb8", 0, 3); +be_define_local_const_str(SYMBOL_LOOP, "\\xef\\x81\\xb9", 0, 3); +be_define_local_const_str(SYMBOL_DIRECTORY, "\\xef\\x81\\xbb", 0, 3); +be_define_local_const_str(SYMBOL_UPLOAD, "\\xef\\x82\\x93", 0, 3); +be_define_local_const_str(SYMBOL_CALL, "\\xef\\x82\\x95", 0, 3); +be_define_local_const_str(SYMBOL_CUT, "\\xef\\x83\\x84", 0, 3); +be_define_local_const_str(SYMBOL_COPY, "\\xef\\x83\\x85", 0, 3); +be_define_local_const_str(SYMBOL_SAVE, "\\xef\\x83\\x87", 0, 3); +be_define_local_const_str(SYMBOL_CHARGE, "\\xef\\x83\\xa7", 0, 3); +be_define_local_const_str(SYMBOL_PASTE, "\\xef\\x83\\xAA", 0, 3); +be_define_local_const_str(SYMBOL_BELL, "\\xef\\x83\\xb3", 0, 3); +be_define_local_const_str(SYMBOL_KEYBOARD, "\\xef\\x84\\x9c", 0, 3); +be_define_local_const_str(SYMBOL_GPS, "\\xef\\x84\\xa4", 0, 3); +be_define_local_const_str(SYMBOL_FILE, "\\xef\\x85\\x9b", 0, 3); +be_define_local_const_str(SYMBOL_WIFI, "\\xef\\x87\\xab", 0, 3); +be_define_local_const_str(SYMBOL_BATTERY_FULL, "\\xef\\x89\\x80", 0, 3); +be_define_local_const_str(SYMBOL_BATTERY_3, "\\xef\\x89\\x81", 0, 3); +be_define_local_const_str(SYMBOL_BATTERY_2, "\\xef\\x89\\x82", 0, 3); +be_define_local_const_str(SYMBOL_BATTERY_1, "\\xef\\x89\\x83", 0, 3); +be_define_local_const_str(SYMBOL_BATTERY_EMPTY, "\\xef\\x89\\x84", 0, 3); +be_define_local_const_str(SYMBOL_USB, "\\xef\\x8a\\x87", 0, 3); +be_define_local_const_str(SYMBOL_BLUETOOTH, "\\xef\\x8a\\x93", 0, 3); +be_define_local_const_str(SYMBOL_TRASH, "\\xef\\x8B\\xAD", 0, 3); +be_define_local_const_str(SYMBOL_BACKSPACE, "\\xef\\x95\\x9A", 0, 3); +be_define_local_const_str(SYMBOL_SD_CARD, "\\xef\\x9F\\x82", 0, 3); +be_define_local_const_str(SYMBOL_NEW_LINE, "\\xef\\xA2\\xA2", 0, 3); -be_define_local_const_str(SYMBOL_DUMMY, "\\xEF\\xA3\\xBF", 0, 0, 3, 0); +be_define_local_const_str(SYMBOL_DUMMY, "\\xEF\\xA3\\xBF", 0, 3); -be_define_local_const_str(SYMBOL_BULLET, "\\xE2\\x80\\xA2", 0, 0, 3, 0); +be_define_local_const_str(SYMBOL_BULLET, "\\xE2\\x80\\xA2", 0, 3); /* @const_object_info_begin From 0558430f89ea9de5214eace982b48cd6b3b4174b Mon Sep 17 00:00:00 2001 From: twollweber Date: Wed, 28 Apr 2021 22:39:00 +0200 Subject: [PATCH 75/97] Fix #11933 Fix Align tasmotaglobal metrics for Prometheus to other metrics' syntax --- tasmota/xsns_75_prometheus.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasmota/xsns_75_prometheus.ino b/tasmota/xsns_75_prometheus.ino index 47f1d4f8d..edfd59484 100644 --- a/tasmota/xsns_75_prometheus.ino +++ b/tasmota/xsns_75_prometheus.ino @@ -89,15 +89,15 @@ void HandleMetrics(void) { if (!isnan(TasmotaGlobal.temperature_celsius)) { dtostrfd(TasmotaGlobal.temperature_celsius, Settings.flag2.temperature_resolution, parameter); - WSContentSend_P(PSTR("# TYPE tasmotaglobal_temperature_celsius gauge\ntasmotaglobal_temperature_celsius %s\n"), parameter); + WSContentSend_P(PSTR("# TYPE tasmota_global_temperature_celsius gauge\ntasmota_global_temperature_celsius %s\n"), parameter); } if (TasmotaGlobal.humidity != 0) { dtostrfd(TasmotaGlobal.humidity, Settings.flag2.humidity_resolution, parameter); - WSContentSend_P(PSTR("# TYPE tasmotaglobal_humidity gauge\ntasmotaglobal_humidity %s\n"), parameter); + WSContentSend_P(PSTR("# TYPE tasmota_global_humidity gauge\ntasmota_global_humidity_percentage %s\n"), parameter); } if (TasmotaGlobal.pressure_hpa != 0) { dtostrfd(TasmotaGlobal.pressure_hpa, Settings.flag2.pressure_resolution, parameter); - WSContentSend_P(PSTR("# TYPE tasmotaglobal_pressure_hpa gauge\ntasmotaglobal_pressure_hpa %s\n"), parameter); + WSContentSend_P(PSTR("# TYPE tasmota_global_pressure_hpa gauge\ntasmota_global_pressure_hpa %s\n"), parameter); } #ifdef USE_ENERGY_SENSOR From dae62f7866b024fed5bf134794f612c13f53148f Mon Sep 17 00:00:00 2001 From: twollweber Date: Thu, 29 Apr 2021 10:20:05 +0200 Subject: [PATCH 76/97] Add Free Memory metric for Prometheus --- tasmota/xsns_75_prometheus.ino | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tasmota/xsns_75_prometheus.ino b/tasmota/xsns_75_prometheus.ino index edfd59484..223312987 100644 --- a/tasmota/xsns_75_prometheus.ino +++ b/tasmota/xsns_75_prometheus.ino @@ -100,6 +100,18 @@ void HandleMetrics(void) { WSContentSend_P(PSTR("# TYPE tasmota_global_pressure_hpa gauge\ntasmota_global_pressure_hpa %s\n"), parameter); } + // Pseudo-metric providing metadata about the free memory. + #ifdef ESP32 + int32_t freeMaxMem = 100 - (int32_t)(ESP_getMaxAllocHeap() * 100 / ESP_getFreeHeap()); + WSContentSend_PD(PSTR("# TYPE tasmota_memory_bytes gauge\ntasmota_memory_bytes{memory=\"Ram\"} %d\n"), ESP_getFreeHeap()); + WSContentSend_PD(PSTR("# TYPE tasmota_memory_ratio gauge\ntasmota_memory_ratio{memory=\"Fragmentation\"} %d)"), freeMaxMem / 100); + if (psramFound()) { + WSContentSend_P(PSTR("# TYPE tasmota_memory_bytes gauge\ntasmota_memory_bytes{memory=\"Psram\"} %d\n"), ESP.getFreePsram() ); + } + #else // ESP32 + WSContentSend_PD(PSTR("# TYPE tasmota_memory_bytes gauge\ntasmota_memory_bytes{memory=\"ram\"} %d\n"), ESP_getFreeHeap()); + #endif // ESP32 + #ifdef USE_ENERGY_SENSOR dtostrfd(Energy.voltage[0], Settings.flag2.voltage_resolution, parameter); WSContentSend_P(PSTR("# TYPE energy_voltage_volts gauge\nenergy_voltage_volts %s\n"), parameter); From 3565eeb75d3d21351591a8ef47714ca80d3cdc4b Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Thu, 29 Apr 2021 14:18:28 +0200 Subject: [PATCH 77/97] display dump --- .../Adafruit_SH1106.cpp | 2 + .../Adafruit_SSD1306.cpp | 2 + .../src/renderer.cpp | 2 +- .../Display_Renderer-gemu-1.0/src/renderer.h | 1 + .../Epaper_29-gemu-1.0/epd2in9.cpp | 2 + .../Epaper_42-gemu-1.0/epd4in2.cpp | 2 + lib/lib_display/UDisplay/uDisplay.cpp | 25 ++- lib/libesp32_epdiy/src/epd4in7.cpp | 3 +- tasmota/xdrv_10_scripter.ino | 82 +++++-- tasmota/xdsp_16_esp32_epaper_47.ino | 204 ++++++++++++++++++ 10 files changed, 291 insertions(+), 34 deletions(-) diff --git a/lib/lib_display/Adafruit_SH1106-gemu-1.0/Adafruit_SH1106.cpp b/lib/lib_display/Adafruit_SH1106-gemu-1.0/Adafruit_SH1106.cpp index 7fd4f0043..ecf775c75 100644 --- a/lib/lib_display/Adafruit_SH1106-gemu-1.0/Adafruit_SH1106.cpp +++ b/lib/lib_display/Adafruit_SH1106-gemu-1.0/Adafruit_SH1106.cpp @@ -72,6 +72,8 @@ void Adafruit_SH1106::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) { //fillScreen(BLACK); fillScreen(BLACK); Updateframe(); + + disp_bpp = -1; //} } diff --git a/lib/lib_display/Adafruit_SSD1306-1.3.0-gemu-1.1/Adafruit_SSD1306.cpp b/lib/lib_display/Adafruit_SSD1306-1.3.0-gemu-1.1/Adafruit_SSD1306.cpp index 28459cad9..aa5ab4bf3 100644 --- a/lib/lib_display/Adafruit_SSD1306-1.3.0-gemu-1.1/Adafruit_SSD1306.cpp +++ b/lib/lib_display/Adafruit_SSD1306-1.3.0-gemu-1.1/Adafruit_SSD1306.cpp @@ -604,6 +604,8 @@ void Adafruit_SSD1306::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) setCursor(0,0); fillScreen(BLACK); Updateframe(); + + disp_bpp = -1; //} } diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp index 96125f14d..4146826ab 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp @@ -49,7 +49,7 @@ Adafruit_GFX(x, y) { #ifdef USE_EPD_FONTS selected_font = &Font12; #endif - + disp_bpp = 16; } uint16_t Renderer::GetColorFromIndex(uint8_t index) { diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h index d986db909..f94b65393 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h @@ -78,6 +78,7 @@ public: pwr_cb pwr_cbp = 0; dim_cb dim_cbp = 0; LVGL_PARAMS lvgl_param; + int8_t disp_bpp; private: void DrawCharAt(int16_t x, int16_t y, char ascii_char,int16_t colored); inline void drawFastVLineInternal(int16_t x, int16_t y, int16_t h, uint16_t color) __attribute__((always_inline)); diff --git a/lib/lib_display/Epaper_29-gemu-1.0/epd2in9.cpp b/lib/lib_display/Epaper_29-gemu-1.0/epd2in9.cpp index d1c3ce2bb..434a14b89 100644 --- a/lib/lib_display/Epaper_29-gemu-1.0/epd2in9.cpp +++ b/lib/lib_display/Epaper_29-gemu-1.0/epd2in9.cpp @@ -74,6 +74,8 @@ void Epd::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) { setTextColor(WHITE,BLACK); setCursor(0,0); fillScreen(BLACK); + + disp_bpp = 1; } void Epd::Begin(int16_t cs,int16_t mosi,int16_t sclk) { diff --git a/lib/lib_display/Epaper_42-gemu-1.0/epd4in2.cpp b/lib/lib_display/Epaper_42-gemu-1.0/epd4in2.cpp index 9eae4377e..b9766b27a 100644 --- a/lib/lib_display/Epaper_42-gemu-1.0/epd4in2.cpp +++ b/lib/lib_display/Epaper_42-gemu-1.0/epd4in2.cpp @@ -86,6 +86,8 @@ void Epd42::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) { setTextColor(WHITE,BLACK); setCursor(0,0); fillScreen(BLACK); + + disp_bpp = 1; } void Epd42::Begin(int16_t cs,int16_t mosi,int16_t sclk) { diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 83adde5ae..c252395df 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -122,7 +122,8 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { setwidth(gxs); gys = next_val(&lp1); setheight(gys); - bpp = next_val(&lp1); + disp_bpp = next_val(&lp1); + bpp = abs(disp_bpp); if (bpp == 1) { col_type = uCOLOR_BW; } else { @@ -373,15 +374,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { Renderer *uDisplay::Init(void) { - if (reset >= 0) { - pinMode(reset, OUTPUT); - digitalWrite(reset, HIGH); - delay(50); - digitalWrite(reset, LOW); - delay(50); - digitalWrite(reset, HIGH); - delay(200); - } + if (interface == _UDSP_I2C) { if (wire_n == 0) { @@ -486,6 +479,16 @@ Renderer *uDisplay::Init(void) { } #endif // ESP32 + if (reset >= 0) { + pinMode(reset, OUTPUT); + digitalWrite(reset, HIGH); + delay(50); + digitalWrite(reset, LOW); + delay(50); + digitalWrite(reset, HIGH); + delay(200); + } + spiSettings = SPISettings((uint32_t)spi_speed*1000000, MSBFIRST, SPI_MODE3); uint16_t index = 0; @@ -948,7 +951,7 @@ for(y=h; y>0; y--) { void uDisplay::Splash(void) { if (splash_font < 0) return; - + if (ep_mode) { Updateframe(); delay(lut3time * 10); diff --git a/lib/libesp32_epdiy/src/epd4in7.cpp b/lib/libesp32_epdiy/src/epd4in7.cpp index 2c3aef3b9..bc0882e0f 100644 --- a/lib/libesp32_epdiy/src/epd4in7.cpp +++ b/lib/libesp32_epdiy/src/epd4in7.cpp @@ -55,19 +55,20 @@ uint16_t Epd47::GetColorFromIndex(uint8_t index) { Epd47::Epd47(int16_t dwidth, int16_t dheight) : Renderer(dwidth, dheight) { width = dwidth; height = dheight; + disp_bpp = 4; } int32_t Epd47::Init(void) { epd_init(EPD_LUT_1K); hl = epd_hl_init(WAVEFORM); epd47_buffer = epd_hl_get_framebuffer(&hl); + framebuffer = epd47_buffer; lvgl_param.fluslines = 10; return 0; } void Epd47::DisplayInit(int8_t p, int8_t size, int8_t rot, int8_t font) { - if (p == DISPLAY_INIT_MODE) { epd_poweron(); epd_clear(); diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index 2971bb03c..ef6e3429b 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -69,6 +69,9 @@ keywords if then else endif, or, and are better readable for beginners (others m #define MAX_SARRAY_NUM 32 #endif +#include +extern Renderer *renderer; + uint32_t EncodeLightId(uint8_t relay_id); uint32_t DecodeLightId(uint32_t hue_id); @@ -2352,7 +2355,7 @@ chknext: goto exit; } if (!strncmp(vname, "fsm", 3)) { - fvar=glob_script_mem.script_sd_found; + fvar=(uint32_t)ufsp; //card_init(); goto exit; } @@ -3339,7 +3342,7 @@ chknext: goto exit; } #endif // USE_TTGO_WATCH -#if defined(USE_FT5206) +#if defined(USE_FT5206) || defined(USE_XPT2046) || defined(USE_LILYGO47) if (!strncmp(vname, "wtch(", 5)) { lp = GetNumericArgument(lp + 5, OPER_EQU, &fvar, gv); fvar = Touch_Status(fvar); @@ -5323,8 +5326,8 @@ void HandleScriptConfiguration(void) { WSContentSend_P(HTTP_FORM_SCRIPT1b); #ifdef USE_SCRIPT_FATFS - if (glob_script_mem.script_sd_found) { - WSContentSend_P(HTTP_FORM_SCRIPT1d); + if (ufsp) { + //WSContentSend_P(HTTP_FORM_SCRIPT1d); if (glob_script_mem.flink[0][0]) WSContentSend_P(HTTP_FORM_SCRIPT1c, 1, glob_script_mem.flink[0]); if (glob_script_mem.flink[1][0]) WSContentSend_P(HTTP_FORM_SCRIPT1c, 2, glob_script_mem.flink[1]); } @@ -6489,10 +6492,12 @@ char buff[512]; // screen copy #define fileHeaderSize 14 #define infoHeaderSize 40 - if (buffer) { - uint8_t *bp = buffer; + + if (renderer && renderer->framebuffer) { + uint8_t *bp = renderer->framebuffer; uint8_t *lbuf = (uint8_t*)special_malloc(Settings.display_width * 3 + 2); if (!lbuf) return; + int8_t bpp = renderer->disp_bpp; uint8_t *lbp; uint8_t fileHeader[fileHeaderSize]; createBitmapFileHeader(Settings.display_height , Settings.display_width , fileHeader); @@ -6500,23 +6505,58 @@ char buff[512]; uint8_t infoHeader[infoHeaderSize]; createBitmapInfoHeader(Settings.display_height, Settings.display_width, infoHeader ); Webserver->client().write((uint8_t *)infoHeader, infoHeaderSize); - for (uint32_t lins = 0; lins= 0 ; lins--) { + lbp = lbuf; + for (uint32_t cols = 0; cols < Settings.display_width; cols ++) { + uint8_t pixel = 0; + if (bp[cols + (lins / 8) * Settings.display_width] & (1 << (lins & 7))) { + pixel = 0xff; + } + *lbp++ = pixel; + *lbp++ = pixel; + *lbp++ = pixel; + } + Webserver->client().write((const char*)lbuf, Settings.display_width * 3); + } + } else { + for (uint32_t lins = 0; lins> 4; + } else { + pixel = *bp & 0xf; + } + pixel *= 15; + *--lbp = pixel; + *--lbp = pixel; + *--lbp = pixel; + } + bp++; + } + } else { + for (uint32_t cols = 0; cols < Settings.display_width; cols += 8) { + uint8_t bits = 0x80; + while (bits) { + if (!((*bp) & bits)) { + *--lbp = 0xff; + *--lbp = 0xff; + *--lbp = 0xff; + } else { + *--lbp = 0; + *--lbp = 0; + *--lbp = 0; + } + bits = bits>>1; + } + bp++; } - bits = bits>>1; } - bp++; } Webserver->client().write((const char*)lbuf, Settings.display_width * 3); } diff --git a/tasmota/xdsp_16_esp32_epaper_47.ino b/tasmota/xdsp_16_esp32_epaper_47.ino index 990c92fdf..d92689807 100644 --- a/tasmota/xdsp_16_esp32_epaper_47.ino +++ b/tasmota/xdsp_16_esp32_epaper_47.ino @@ -67,6 +67,11 @@ void EpdInitDriver47(void) { bg_color = EPD47_WHITE; color_type = COLOR_COLOR; +#ifdef USE_TOUCH_BUTTONS + // start digitizer + EPD47_Touch_Init(); +#endif // USE_TOUCH_BUTTONS + epd47_init_done = true; AddLog(LOG_LEVEL_INFO, PSTR("DSP: E-Paper 4.7")); } @@ -75,6 +80,198 @@ void EpdInitDriver47(void) { /*********************************************************************************************/ +#ifdef USE_TOUCH_BUTTONS + +#define TOUCH_SLAVE_ADDRESS 0x5a +class TouchClass { + + typedef struct { + uint8_t id; + uint8_t state; + uint16_t x; + uint16_t y; + } TouchData_t; + +public: + bool begin(TwoWire &port = Wire, uint8_t addr = TOUCH_SLAVE_ADDRESS); + uint8_t scanPoint(); + void getPoint(int16_t &x, int16_t &y, uint8_t index); +// void sleep(void); +// void wakeup(void); + TouchData_t data[5]; + +private: + void clearFlags(void); + void readBytes(uint8_t *data, uint8_t nbytes); + uint8_t _address; + bool initialization = false; + TwoWire *_i2cPort; +}; + +void TouchClass::readBytes(uint8_t *data, uint8_t nbytes) { + _i2cPort->beginTransmission(_address); // Initialize the Tx buffer + _i2cPort->write(data, 2); // Put data in Tx buffer + if (0 != _i2cPort->endTransmission()) { + Serial.println("readBytes error!"); + } + uint8_t i = 0; + _i2cPort->requestFrom(_address, nbytes); // Read bytes from slave register address + while (_i2cPort->available()) { + data[i++] = _i2cPort->read(); + } +} + +void TouchClass::clearFlags(void) { + uint8_t buf[3] = {0xD0, 0X00, 0XAB}; + _i2cPort->beginTransmission(_address); + _i2cPort->write(buf, 3); + _i2cPort->endTransmission(); +} + +bool TouchClass::begin(TwoWire &port, uint8_t addr) { + _i2cPort = &port; + _address = addr; + _i2cPort->beginTransmission(_address); + if (0 == _i2cPort->endTransmission()) { + // wakeup(); + return true; + } + return false; +} + +uint8_t TouchClass::scanPoint() { + uint8_t point = 0; + uint8_t buffer[40] = {0}; + uint32_t sumL = 0, sumH = 0; + + buffer[0] = 0xD0; + buffer[1] = 0x00; + readBytes(buffer, 7); + + if (buffer[0] == 0xAB) { + clearFlags(); + return 0; + } + + point = buffer[5] & 0xF; + + if (point == 1) { + buffer[5] = 0xD0; + buffer[6] = 0x07; + readBytes( &buffer[5], 2); + sumL = buffer[5] << 8 | buffer [6]; + + } else if (point > 1) { + buffer[5] = 0xD0; + buffer[6] = 0x07; + readBytes( &buffer[5], 5 * (point - 1) + 3); + sumL = buffer[5 * point + 1] << 8 | buffer[5 * point + 2]; + } + clearFlags(); + + for (int i = 0 ; i < 5 * point; ++i) { + sumH += buffer[i]; + } + + if (sumH != sumL) { + point = 0; + } + if (point) { + uint8_t offset; + for (int i = 0; i < point; ++i) { + if (i == 0) { + offset = 0; + } else { + offset = 4; + } + data[i].id = (buffer[i * 5 + offset] >> 4) & 0x0F; + data[i].state = buffer[i * 5 + offset] & 0x0F; + if (data[i].state == 0x06) { + data[i].state = 0x07; + } else { + data[i].state = 0x06; + } + data[i].y = (uint16_t)((buffer[i * 5 + 1 + offset] << 4) | ((buffer[i * 5 + 3 + offset] >> 4) & 0x0F)); + data[i].x = (uint16_t)((buffer[i * 5 + 2 + offset] << 4) | (buffer[i * 5 + 3 + offset] & 0x0F)); + } + } else { + point = 1; + data[0].id = (buffer[0] >> 4) & 0x0F; + data[0].state = 0x06; + data[0].y = (uint16_t)((buffer[0 * 5 + 1] << 4) | ((buffer[0 * 5 + 3] >> 4) & 0x0F)); + data[0].x = (uint16_t)((buffer[0 * 5 + 2] << 4) | (buffer[0 * 5 + 3] & 0x0F)); + } + // Serial.printf("X:%d Y:%d\n", data[0].x, data[0].y); + return point; +} + +void TouchClass::getPoint(int16_t &x, int16_t &y, uint8_t index) { + if (index >= 4)return; + x = data[index].x; + y = data[index].y; +} + +//if (touch.scanPoint()) { + // touch.getPoint(x, y, 0); + +#define EPD47_address 0x5A + +TouchClass *EPD47_touchp; + +void EPD47_Touch_Init(void) { +FT5206_found = false; +EPD47_touchp = new TouchClass(); + if (EPD47_touchp->begin(Wire, EPD47_address)) { + I2cSetActiveFound(EPD47_address, "EPD47"); + FT5206_found = true; + } +} + +uint8_t EPD47_ctouch_counter = 0; +// no rotation support +void EPD47_RotConvert(int16_t *x, int16_t *y) { +int16_t temp; + if (renderer) { + uint8_t rot=renderer->getRotation(); + switch (rot) { + case 0: + break; + case 1: + temp=*y; + *y=renderer->height()-*x; + *x=temp; + break; + case 2: + *x=renderer->width()-*x; + *y=renderer->height()-*y; + break; + case 3: + temp=*y; + *y=*x; + *x=renderer->width()-temp; + break; + } + } +} + +// check digitizer hit +void EPD47_CheckTouch(void) { + EPD47_ctouch_counter++; + if (2 == EPD47_ctouch_counter) { + // every 100 ms should be enough + EPD47_ctouch_counter = 0; + touched = EPD47_touchp->scanPoint(); + if (touched) { + EPD47_touchp->getPoint(touch_xp, touch_yp, 0); + EPD47_RotConvert(&touch_xp, &touch_yp); + } + //Touch_Check(EPD47_RotConvert); + } +} +#endif // USE_TOUCH_BUTTONS + + + /*********************************************************************************************\ * Interface \*********************************************************************************************/ @@ -91,6 +288,13 @@ bool Xdsp16(uint8_t function) case FUNC_DISPLAY_MODEL: result = true; break; +#ifdef USE_TOUCH_BUTTONS + case FUNC_DISPLAY_EVERY_50_MSECOND: + if (FT5206_found) { + EPD47_CheckTouch(); + } + break; +#endif // USE_TOUCH_BUTTONS } } return result; From 89b922675d7ed49519104839f469aaf03c8bc8ad Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 29 Apr 2021 17:00:04 +0200 Subject: [PATCH 78/97] Add backward compatibility to Template CMND fieldpair using | as command separator Add backward compatibility to Template CMND fieldpair using | as command separator (#11788) --- CHANGELOG.md | 2 +- RELEASENOTES.md | 2 +- tasmota/support.ino | 13 +++++++------ tasmota/support_tasmota.ino | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dda462284..32ad7bbd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. ## [9.4.0.2] ### Added -- Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` (#11788) +- Initial support for optional ``Template`` JSON fieldpair ``"CMND":"||..."`` (#11788) - ESP32 pulldown buttons ``Button_d`` and ``Button_id`` and switches ``Switch_d`` (#10814) - Support for MQTT using Azure IoT Hub by Kevin Saye (#11906) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index ab9114bf0..4b97efa26 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -78,7 +78,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.4.0.2 ### Added -- Initial support for optional ``Template`` JSON fieldpair ``"CMND":";;..."`` [#11788](https://github.com/arendst/Tasmota/issues/11788) +- Initial support for optional ``Template`` JSON fieldpair ``"CMND":"||..."`` [#11788](https://github.com/arendst/Tasmota/issues/11788) - ESP32 pulldown buttons ``Button_d`` and ``Button_id`` and switches ``Switch_d`` [#10814](https://github.com/arendst/Tasmota/issues/10814) - Support for MQTT using Azure IoT Hub by Kevin Saye [#11906](https://github.com/arendst/Tasmota/issues/11906) diff --git a/tasmota/support.ino b/tasmota/support.ino index e56b9cf82..954a553bd 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -515,7 +515,7 @@ char* UpperCase_P(char* dest, const char* source) return dest; } -char* StrStr_P(const char* source, const char* search) { +char* StrCaseStr_P(const char* source, const char* search) { char case_source[strlen(source) +1]; UpperCase_P(case_source, source); char case_search[strlen(search) +1]; @@ -1412,7 +1412,7 @@ bool ValidTemplate(const char *search) { return (strstr(template_name, search_name) != nullptr); */ - return (StrStr_P(SettingsText(SET_TEMPLATE_NAME), search) != nullptr); + return (StrCaseStr_P(SettingsText(SET_TEMPLATE_NAME), search) != nullptr); } String AnyModuleName(uint32_t index) @@ -1658,13 +1658,14 @@ bool JsonTemplate(char* dataBuf) val = root[PSTR(D_JSON_CMND)]; if (val) { - if ((USER_MODULE == Settings.module) || (StrStr_P(val.getStr(), PSTR(D_CMND_MODULE " 0")))) { // Only execute if current module = USER_MODULE = this template + if ((USER_MODULE == Settings.module) || (StrCaseStr_P(val.getStr(), PSTR(D_CMND_MODULE " 0")))) { // Only execute if current module = USER_MODULE = this template char* backup_data = XdrvMailbox.data; - XdrvMailbox.data = (char*)val.getStr(); // Backlog commands + XdrvMailbox.data = (char*)val.getStr(); // Backlog commands + ReplaceChar(XdrvMailbox.data, '|', ';'); // Support '|' as command separator for JSON backwards compatibility uint32_t backup_data_len = XdrvMailbox.data_len; - XdrvMailbox.data_len = 1; // Any data + XdrvMailbox.data_len = 1; // Any data uint32_t backup_index = XdrvMailbox.index; - XdrvMailbox.index = 0; // Backlog0 - no delay + XdrvMailbox.index = 0; // Backlog0 - no delay CmndBacklog(); XdrvMailbox.index = backup_index; XdrvMailbox.data_len = backup_data_len; diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 9f52d2747..893d8418e 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1149,7 +1149,7 @@ void Every250mSeconds(void) } #endif // FIRMWARE_MINIMAL if (ota_retry_counter < OTA_ATTEMPTS / 2) { - if (StrStr_P(TasmotaGlobal.mqtt_data, PSTR(".gz"))) { + if (StrCaseStr_P(TasmotaGlobal.mqtt_data, PSTR(".gz"))) { ota_retry_counter = 1; } else { strcat_P(TasmotaGlobal.mqtt_data, PSTR(".gz")); From ec1e240163f478bb711f8b045c04ac9119af5624 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 29 Apr 2021 17:03:36 +0200 Subject: [PATCH 79/97] Update it_IT.h Fix quotes (#11950) --- tasmota/language/it_IT.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index c8f8706bf..c58ba8d70 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -496,7 +496,7 @@ #define D_ZIGBEE_JSON_REQUIRED "Configurazione richiede oggetti JSON" #define D_ZIGBEE_RESET_1_OR_2 "1 o 2 per ripristino" #define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "Trovata EEPROM ZBBridge all'indirizzo" -#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizzazione parametri Zigbee, controlla con "ZbConfig"" +#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizzazione parametri Zigbee, controlla con \"ZbConfig\"" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energia - oggi" From 3c78626b126e378adefeb42da98ae9fd22717cba Mon Sep 17 00:00:00 2001 From: ksaye Date: Thu, 29 Apr 2021 12:53:46 -0500 Subject: [PATCH 80/97] Adding support for SAS Token Generation Azure IoT Hub uses a Sha256 has as opposed to a password. This change enables the admin to add the 'Preshared Key' and lets Tasmota calculate the SAS token, vs the original changes where the end user had to calculate the SAS Token. --- tasmota/xdrv_02_mqtt.ino | 64 +++++++++++++++++++++++++++++++++++----- 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/tasmota/xdrv_02_mqtt.ino b/tasmota/xdrv_02_mqtt.ino index 8fcb330a4..e7dcecbcb 100644 --- a/tasmota/xdrv_02_mqtt.ino +++ b/tasmota/xdrv_02_mqtt.ino @@ -24,6 +24,8 @@ #endif #ifdef USE_MQTT_AZURE_IOT +#include +#include #include #undef MQTT_PORT #define MQTT_PORT 8883 @@ -222,6 +224,51 @@ void MqttInit(void) { MqttClient.setSocketTimeout(Settings.mqtt_socket_timeout); } +String azurePreSharedKeytoSASToken(char *iotHubFQDN, const char *deviceId, const char *preSharedKey, int sasTTL = 86400){ + int ttl = time(NULL) + sasTTL; + String dataToSignString = urlEncodeBase64(String(iotHubFQDN) + "/devices/" + String(deviceId)) + "\n" + String(ttl); + char dataToSign[dataToSignString.length() + 1]; + dataToSignString.toCharArray(dataToSign, dataToSignString.length() + 1); + + unsigned char decodedPSK[32]; + unsigned char encryptedSignature[100]; + unsigned char encodedSignature[100]; + br_sha256_context sha256_context; + br_hmac_key_context hmac_key_context; + br_hmac_context hmac_context; + + // need to base64 decode the Preshared key and the length + int base64_decoded_device_length = decode_base64((unsigned char*)preSharedKey, decodedPSK); + + // create the sha256 hmac and hash the data + br_sha256_init(&sha256_context); + br_hmac_key_init(&hmac_key_context, sha256_context.vtable, decodedPSK, base64_decoded_device_length); + br_hmac_init(&hmac_context, &hmac_key_context, 32); + br_hmac_update(&hmac_context, dataToSign, sizeof(dataToSign)-1); + br_hmac_out(&hmac_context, encryptedSignature); + + // base64 decode the HMAC to a char + encode_base64(encryptedSignature, br_hmac_size(&hmac_context), encodedSignature); + + // creating the real SAS Token + String realSASToken = "SharedAccessSignature "; + realSASToken += "sr=" + urlEncodeBase64(String(iotHubFQDN) + "/devices/" + String(deviceId)); + realSASToken += "&sig=" + urlEncodeBase64(String((char*)encodedSignature)); + realSASToken += "&se=" + String(ttl); + + AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT "SASToken is '%s'"), realSASToken.c_str()); + + return realSASToken; +} + +String urlEncodeBase64(String stringToEncode){ + // correctly URL encoding the 64 characters of Base64 and the '=' sign + stringToEncode.replace("+", "%2B"); + stringToEncode.replace("=", "%3D"); + stringToEncode.replace("/", "%2F"); + return stringToEncode; +} + bool MqttIsConnected(void) { return MqttClient.connected(); } @@ -259,8 +306,7 @@ bool MqttPublishLib(const char* topic, bool retained) { bool result; #ifdef USE_MQTT_AZURE_IOT - String sourceTopicString = String(topic); - sourceTopicString.replace("/", "%2F"); + String sourceTopicString = urlEncodeBase64(String(topic)); String topicString = "devices/" + String(SettingsText(SET_MQTT_CLIENT)); topicString+= "/messages/events/topic=" + sourceTopicString; @@ -268,9 +314,9 @@ bool MqttPublishLib(const char* topic, bool retained) { JsonParserObject message_object = mqtt_message.getRootObject(); if (message_object.isValid()) { // only sending valid JSON, yet this is optional result = MqttClient.publish(topicString.c_str(), TasmotaGlobal.mqtt_data, retained); - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "Sending '%s'"), TasmotaGlobal.mqtt_data); + AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT "Sending '%s'"), TasmotaGlobal.mqtt_data); } else { - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "Invalid JSON, '%s' for topic '%s', not sending to Azure IoT Hub"), TasmotaGlobal.mqtt_data, topic); + AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT "Invalid JSON, '%s' for topic '%s', not sending to Azure IoT Hub"), TasmotaGlobal.mqtt_data, topic); result = true; } #else @@ -747,12 +793,14 @@ void MqttReconnect(void) { #endif #ifdef USE_MQTT_AZURE_IOT - if (String(mqtt_pwd).indexOf("SharedAccessSignature") == -1) { - AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_MQTT "Azure IoT incorrect SAS Token format. Refer to https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support")); - return; + String azureMqtt_password = SettingsText(SET_MQTT_PWD); + if (azureMqtt_password.indexOf("SharedAccessSignature") == -1) { + // assuming a PreSharedKey was provided, calculating a SAS Token into azureMqtt_password + azureMqtt_password = azurePreSharedKeytoSASToken(SettingsText(SET_MQTT_HOST), SettingsText(SET_MQTT_CLIENT), SettingsText(SET_MQTT_PWD)); } + String azureMqtt_userString = String(SettingsText(SET_MQTT_HOST)) + "/" + String(SettingsText(SET_MQTT_CLIENT)); + "/?api-version=2018-06-30"; - if (MqttClient.connect(TasmotaGlobal.mqtt_client, azureMqtt_userString.c_str(), mqtt_pwd, stopic, 1, lwt_retain, TasmotaGlobal.mqtt_data, MQTT_CLEAN_SESSION)) { + if (MqttClient.connect(TasmotaGlobal.mqtt_client, azureMqtt_userString.c_str(), azureMqtt_password.c_str(), stopic, 1, lwt_retain, TasmotaGlobal.mqtt_data, MQTT_CLEAN_SESSION)) { #else if (MqttClient.connect(TasmotaGlobal.mqtt_client, mqtt_user, mqtt_pwd, stopic, 1, lwt_retain, TasmotaGlobal.mqtt_data, MQTT_CLEAN_SESSION)) { #endif // USE_MQTT_AZURE_IOT From 5b90754af61c3ebeecbb097c753210c27218c70a Mon Sep 17 00:00:00 2001 From: ksaye Date: Thu, 29 Apr 2021 13:13:58 -0500 Subject: [PATCH 81/97] Moving the SSL and Base64 to global --- tasmota/xdrv_02_mqtt.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xdrv_02_mqtt.ino b/tasmota/xdrv_02_mqtt.ino index e7dcecbcb..51d19f365 100644 --- a/tasmota/xdrv_02_mqtt.ino +++ b/tasmota/xdrv_02_mqtt.ino @@ -23,9 +23,9 @@ #define MQTT_WIFI_CLIENT_TIMEOUT 200 // Wifi TCP connection timeout (default is 5000 mSec) #endif -#ifdef USE_MQTT_AZURE_IOT #include #include +#ifdef USE_MQTT_AZURE_IOT #include #undef MQTT_PORT #define MQTT_PORT 8883 From 8aa006625a0974055cc697ae932a48f15928ca26 Mon Sep 17 00:00:00 2001 From: ksaye Date: Thu, 29 Apr 2021 14:45:45 -0500 Subject: [PATCH 82/97] Moving includes back to local Moving the includes back under the '#ifdef USE_MQTT_AZURE_IOT', so the build process will complete for all builds. --- tasmota/xdrv_02_mqtt.ino | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tasmota/xdrv_02_mqtt.ino b/tasmota/xdrv_02_mqtt.ino index 51d19f365..aee1a5dd7 100644 --- a/tasmota/xdrv_02_mqtt.ino +++ b/tasmota/xdrv_02_mqtt.ino @@ -23,9 +23,9 @@ #define MQTT_WIFI_CLIENT_TIMEOUT 200 // Wifi TCP connection timeout (default is 5000 mSec) #endif +#ifdef USE_MQTT_AZURE_IOT #include #include -#ifdef USE_MQTT_AZURE_IOT #include #undef MQTT_PORT #define MQTT_PORT 8883 @@ -224,6 +224,7 @@ void MqttInit(void) { MqttClient.setSocketTimeout(Settings.mqtt_socket_timeout); } +#ifdef USE_MQTT_AZURE_IOT String azurePreSharedKeytoSASToken(char *iotHubFQDN, const char *deviceId, const char *preSharedKey, int sasTTL = 86400){ int ttl = time(NULL) + sasTTL; String dataToSignString = urlEncodeBase64(String(iotHubFQDN) + "/devices/" + String(deviceId)) + "\n" + String(ttl); @@ -268,6 +269,7 @@ String urlEncodeBase64(String stringToEncode){ stringToEncode.replace("/", "%2F"); return stringToEncode; } +#endif // USE_MQTT_AZURE_IOT bool MqttIsConnected(void) { return MqttClient.connected(); From 442a7f9ba725fd45c21ca806d1112582c7e0916c Mon Sep 17 00:00:00 2001 From: Adrian Scillato <39969427+ascillato2@users.noreply.github.com> Date: Thu, 29 Apr 2021 23:39:08 -0300 Subject: [PATCH 83/97] Use t_bearssl.h instead of bearssl.h --- tasmota/xdrv_02_mqtt.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xdrv_02_mqtt.ino b/tasmota/xdrv_02_mqtt.ino index aee1a5dd7..3d474a684 100644 --- a/tasmota/xdrv_02_mqtt.ino +++ b/tasmota/xdrv_02_mqtt.ino @@ -24,7 +24,7 @@ #endif #ifdef USE_MQTT_AZURE_IOT -#include +#include #include #include #undef MQTT_PORT From 1ba8c0d16cca5caed03afecc3c28383057d5a790 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 30 Apr 2021 10:22:05 +0200 Subject: [PATCH 84/97] Update release binary information --- RELEASENOTES.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 4b97efa26..3593304e3 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -55,7 +55,7 @@ The following binary downloads have been compiled with ESP8266/Arduino library c Above binaries are also available as gzipped version allowing faster uploads. -The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota/release. The links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz`` +The binaries can be downloaded from either https://github.com/arendst/Tasmota/tree/release-firmware or http://ota.tasmota.com/tasmota/release. The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz`` ### ESP32 based The following binary downloads have been compiled with ESP32/Arduino library core version **1.0.6**. @@ -70,7 +70,7 @@ The following binary downloads have been compiled with ESP32/Arduino library cor - **tasmota32-odroidgo.bin** = The Odroid-Go version is specifically tailored to Odroid_go hardware. - **tasmota32-core2.bin** = The Core2 version is specifically tailored to M5Stack Core2 hardware. -The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota32/release. The links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota32/release/tasmota32.bin`` +The binaries can be downloaded from either https://github.com/arendst/Tasmota/tree/release-firmware or http://ota.tasmota.com/tasmota32/release. The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota32/release/tasmota32.bin`` [List](MODULES.md) of embedded modules. From 3c7494b4906c0be0ae4fd58ba064456933fdfd75 Mon Sep 17 00:00:00 2001 From: blakadder Date: Fri, 30 Apr 2021 11:17:34 +0200 Subject: [PATCH 85/97] add hidden define for DY-SV17F MP3 player adds the missing define for DY-SV17F MP3 player in my_user_config spotted in https://github.com/arendst/Tasmota/blob/1ba8c0d16cca5caed03afecc3c28383057d5a790/tasmota/xdrv_14_mp3.ino#L22 --- tasmota/my_user_config.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 5a5dda444..5861c5710 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -685,8 +685,9 @@ //#define USE_DYP // Add support for DYP ME-007 ultrasonic distance sensor, serial port version (+0k5 code) #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) //#define USE_TCP_BRIDGE // Add support for Serial to TCP bridge (+1.3k code) -//#define USE_MP3_PLAYER // Use of the DFPlayer Mini MP3 Player RB-DFR-562 commands: play, volume and stop +//#define USE_MP3_PLAYER // Use of the DFPlayer Mini MP3 Player RB-DFR-562 commands: play, pause, stop, track, volume and reset #define MP3_VOLUME 10 // Set the startup volume on init, the range can be 0..30(max) +// #define USE_DY_SV17F // Use of DY-SV17F MP3 Player commands: play, stop, track and volume //#define USE_AZ7798 // Add support for AZ-Instrument 7798 CO2 datalogger (+1k6 code) //#define USE_PN532_HSU // Add support for PN532 using HSU (Serial) interface (+1k8 code, 140 bytes mem) // #define USE_PN532_DATA_FUNCTION // Add sensor40 command support for erase, setting data block content (+1k7 code, 388 bytes mem) From 65e1ceec8386c34ea10e864fe956b9ec9c0b79c2 Mon Sep 17 00:00:00 2001 From: pharaocurt <32060079+pharaocurt@users.noreply.github.com> Date: Fri, 30 Apr 2021 11:36:47 +0200 Subject: [PATCH 86/97] Correction of tasmota/xsns_05_ds18x20.ino Ds18x20Name() search. sizeof(ds18x20_chipids) calculates number of chipids, e.g. 4 chipids + 0 entry it will return 5. So the 1st checked chipid must start at ds18x20_chipids[4], not at ds18x20_chipids[5]. --- tasmota/xsns_05_ds18x20.ino | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tasmota/xsns_05_ds18x20.ino b/tasmota/xsns_05_ds18x20.ino index 68c2cbd83..1eae7a52a 100644 --- a/tasmota/xsns_05_ds18x20.ino +++ b/tasmota/xsns_05_ds18x20.ino @@ -420,11 +420,10 @@ bool Ds18x20Read(uint8_t sensor) { void Ds18x20Name(uint8_t sensor) { uint8_t index = sizeof(ds18x20_chipids); - while (index) { + while (--index) { if (ds18x20_sensor[ds18x20_sensor[sensor].index].address[0] == ds18x20_chipids[index]) { break; } - index--; } GetTextIndexed(DS18X20Data.name, sizeof(DS18X20Data.name), index, kDs18x20Types); if (DS18X20Data.sensors > 1) { From b1371b63ccc59c19bf1df47e87c44436024eee7f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 30 Apr 2021 11:59:08 +0200 Subject: [PATCH 87/97] Correction of Ds18x20Name() search Correction of Ds18x20Name() search (#11958) --- tasmota/xsns_05_ds18x20_esp32.ino | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tasmota/xsns_05_ds18x20_esp32.ino b/tasmota/xsns_05_ds18x20_esp32.ino index 2f929dab7..4c501dde7 100644 --- a/tasmota/xsns_05_ds18x20_esp32.ino +++ b/tasmota/xsns_05_ds18x20_esp32.ino @@ -156,11 +156,10 @@ bool Ds18x20Read(uint8_t sensor, float &t) { void Ds18x20Name(uint8_t sensor) { uint8_t index = sizeof(ds18x20_chipids); - while (index) { + while (--index) { if (ds18x20_sensor[ds18x20_sensor[sensor].index].address[0] == ds18x20_chipids[index]) { break; } - index--; } GetTextIndexed(DS18X20Data.name, sizeof(DS18X20Data.name), index, kDs18x20Types); if (DS18X20Data.sensors > 1) { From 0007e7c67280c4f3816a0e60aa545c32b53c0896 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 30 Apr 2021 12:34:00 +0200 Subject: [PATCH 88/97] Zigbee avoir erasing ZbData if zigbee is not started --- tasmota/xdrv_23_zigbee_4b_data.ino | 4 +--- tasmota/xdrv_23_zigbee_A_impl.ino | 6 ++++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_4b_data.ino b/tasmota/xdrv_23_zigbee_4b_data.ino index 080afe8a2..1c4b9b525 100644 --- a/tasmota/xdrv_23_zigbee_4b_data.ino +++ b/tasmota/xdrv_23_zigbee_4b_data.ino @@ -220,6 +220,7 @@ bool hydrateDevicesData(void) { \*********************************************************************************************/ void hibernateAllData(void) { if (Rtc.utc_time < START_VALID_TIME) { return; } + if (zigbee_devices.devicesSize() == 0) { return; } // safe-guard, if data is empty, don't save anything Univ_Write_File f; const char * storage_class = PSTR(""); @@ -242,9 +243,6 @@ void hibernateAllData(void) { #endif if (f.valid()) { - // first prefix is number of devices - uint8_t device_num = zigbee_devices.devicesSize(); - for (const auto & device : zigbee_devices.getDevices()) { // allocte a buffer for a single device SBuffer buf = hibernateDeviceData(device); diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index d1eb6d8bc..973a5a902 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -2177,8 +2177,10 @@ bool Xdrv23(uint8_t function) result = DecodeCommand(kZbCommands, ZigbeeCommand, kZbSynonyms); break; case FUNC_SAVE_BEFORE_RESTART: - hibernateAllData(); - restoreDumpAllDevices(); + if (!zigbee.init_phase) { + hibernateAllData(); + restoreDumpAllDevices(); + } break; } } From 4e45c594729f960b5d9ad846554b8d343b037901 Mon Sep 17 00:00:00 2001 From: blakadder Date: Fri, 30 Apr 2021 14:06:34 +0200 Subject: [PATCH 89/97] remove github/release link --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0dea9cf4b..4f98cdd70 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Alternative firmware for [ESP8266](https://en.wikipedia.org/wiki/ESP8266) and [ESP32](https://en.wikipedia.org/wiki/ESP32) based devices with **easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX**. _Written for PlatformIO with limited support for Arduino IDE._ -[![GitHub version](https://img.shields.io/github/release/arendst/Tasmota.svg)](https://github.com/arendst/Tasmota/releases/latest) +[![GitHub version](https://img.shields.io/github/release/arendst/Tasmota.svg)](http://ota.tasmota.com/tasmota/release) [![GitHub download](https://img.shields.io/github/downloads/arendst/Tasmota/total.svg)](https://github.com/arendst/Tasmota/releases/latest) [![License](https://img.shields.io/github/license/arendst/Tasmota.svg)](LICENSE.txt) [![Chat](https://img.shields.io/discord/479389167382691863.svg)](https://discord.gg/Ks2Kzd4) @@ -17,7 +17,7 @@ If you like **Tasmota**, give it a star, or fork it and contribute! See [RELEASENOTES.md](https://github.com/arendst/Tasmota/blob/master/RELEASENOTES.md) for release information. -In addition to the [release webpage](https://github.com/arendst/Tasmota/releases/latest) the binaries can also be downloaded from http://ota.tasmota.com/tasmota/release/ +Firmware binaries can be downloaded from http://ota.tasmota.com/tasmota/release/ or http://ota.tasmota.com/tasmota32/release/ for ESP32 binaries. ## Development @@ -31,7 +31,7 @@ See [CHANGELOG.md](CHANGELOG.md) for detailed change information. Unless your Tasmota powered device exhibits a problem or you need to make use of a feature that is not available in the Tasmota version currently installed on your device, leave your device alone - it works so don't make unnecessary changes! If the release version (i.e., the master branch) exhibits unexpected behaviour for your device and configuration, you should upgrade to the latest development version instead to see if your problem is resolved as some bugs in previous releases or development builds may already have been resolved. -Every commit made to the development branch, which is compiling successfuly, will post new binary files at http://ota.tasmota.com/tasmota/ (this web address can be used for OTA updates too). It is important to note that these binaries are based on the current development codebase. These commits are tested as much as is possible and are typically quite stable. However, it is infeasible to test on the hundreds of different types of devices with all the available configuration options permitted. +Every commit made to the development branch, which is compiling successfuly, will post new binary files at http://ota.tasmota.com/tasmota/ (this web address can be used for OTA updates too). It is important to note that these binaries are based on the current development codebase. These commits are tested as much as is possible and are typically quite stable. However, it is infeasible to test on the hundreds of different types of devices with all the available configuration options permitted. Note that there is a chance, as with any upgrade, that the device may not function as expected. You must always account for the possibility that you may need to flash the device via the serial programming interface if the OTA upgrade fails. Even with the master release, you should always attempt to test the device or a similar prototype before upgrading a device which is in production or is hard to reach. And, as always, make a backup of the device configuration before beginning any firmware update. @@ -45,10 +45,10 @@ We don't take any responsibility nor liability for using this software nor for t ## Note -Please do not ask to add new devices unless it requires additional code for new features. If the device is not listed as a module, try using [Templates](https://tasmota.github.io/docs/Templates) first. If it is not listed in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates) create your own [Template](https://tasmota.github.io/docs/Templates#creating-your-template). +Please do not ask to add new devices unless it requires additional code for new features. If the device is not listed as a module, try using [Templates](https://tasmota.github.io/docs/Templates) first. If it is not listed in the [Tasmota Device Templates Repository](http://templates.blakadder.com) create your own [Template](https://tasmota.github.io/docs/Templates#creating-your-template). ## Quick Install -Download one of the released binaries from https://github.com/arendst/Tasmota/releases and flash it to your hardware [using our installation guide](https://tasmota.github.io/docs/Getting-Started). +Download one of the released binaries from http://ota.tasmota.com/tasmota/release/ or http://ota.tasmota.com/tasmota32/release/ and flash it to your hardware [using our installation guide](https://tasmota.github.io/docs/Getting-Started). ## Important User Compilation Information If you want to compile Tasmota yourself keep in mind the following: From 0ecb5202f723d0dec75df30a63b5c07f383e43ae Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Fri, 30 Apr 2021 15:26:41 +0200 Subject: [PATCH 90/97] move touch to driver --- .../src/renderer.cpp | 19 +- .../Display_Renderer-gemu-1.0/src/renderer.h | 21 ++ lib/lib_display/UDisplay/uDisplay.cpp | 2 +- .../Xlatb_RA8876-gemu-1.0/RA8876.cpp | 128 ++++++- .../Xlatb_RA8876-gemu-1.0/RA8876.h | 20 +- tasmota/xdrv_10_scripter.ino | 249 ++++++++++---- tasmota/xdrv_13_display.ino | 278 ---------------- tasmota/xdrv_55_touch.ino | 314 ++++++++++++++++++ tasmota/xdsp_04_ili9341.ino | 23 +- tasmota/xdsp_17_universal.ino | 38 +-- 10 files changed, 695 insertions(+), 397 deletions(-) create mode 100644 tasmota/xdrv_55_touch.ino diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp index 4146826ab..edb2fb4d5 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp @@ -27,11 +27,7 @@ #include #include "renderer.h" -#define USE_EPD_FONTS -//#define USE_ALL_EPD_FONTS -//#define USE_GFX_FONTS -#define USE_TINY_FONT -#define USE_7SEG_FONT + uint8_t wr_redir=0; @@ -43,8 +39,12 @@ uint8_t wr_redir=0; #define OLED_FONT_HEIGTH 8 #define BLACK 0 -Renderer::Renderer(int16_t x, int16_t y) : -Adafruit_GFX(x, y) { +#ifdef USE_GFX +Renderer::Renderer(int16_t x, int16_t y) : Adafruit_GFX(x, y) { +#else +Renderer::Renderer(int16_t x, int16_t y) { +#endif + font=0; #ifdef USE_EPD_FONTS selected_font = &Font12; @@ -628,6 +628,9 @@ LVGL_PARAMS *Renderer::lvgl_pars(void) { return &lvgl_param; } + +#ifndef LVGL_RENDERER + void VButton::xdrawButton(bool inverted) { wr_redir=1; drawButton(inverted); @@ -723,7 +726,7 @@ uint16_t VButton::UpdateSlider(int16_t x, int16_t y) { } } - +#endif // LVGL_RENDERER diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h index f94b65393..e9597a437 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h @@ -9,8 +9,20 @@ #define WHITE 1 #define INVERSE 2 +#define USE_EPD_FONTS +//#define USE_ALL_EPD_FONTS +//#define USE_GFX_FONTS +#define USE_TINY_FONT +#define USE_7SEG_FONT + #define MAX_INDEXCOLORS 32 +//#define LVGL_RENDERER + +#ifdef LVGL_RENDERER +#undef USE_EPD_FONTS +#endif + // depends on GFX driver // GFX patched // a. in class GFX setCursor,setTextSize => virtual @@ -36,7 +48,14 @@ typedef struct LVGL_PARAMS { typedef void (*pwr_cb)(uint8_t); typedef void (*dim_cb)(uint8_t); +#define USE_GFX + +#ifdef USE_GFX class Renderer : public Adafruit_GFX { +#else +class Renderer { +#endif + //Paint(unsigned char* image, int width, int height); //~Renderer(); public: @@ -115,6 +134,7 @@ struct Slider { uint16_t barcol; }; +#ifndef LVGL_RENDERER class VButton : public Adafruit_GFX_Button { public: TButton_State vpower; @@ -125,6 +145,7 @@ class VButton : public Adafruit_GFX_Button { uint16_t UpdateSlider(int16_t x, int16_t y); void SliderInit(Renderer *rend, uint16_t xp, uint16_t yp, uint16_t xs, uint16_t ys, uint16_t nelem, uint16_t bgcol, uint16_t frcol, uint16_t barcol); }; +#endif // LVGL_RENDERER #endif diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index c252395df..de9dcc628 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -20,7 +20,7 @@ #include #include "uDisplay.h" -#define UDSP_DEBUG +//#define UDSP_DEBUG const uint16_t udisp_colors[]={UDISP_BLACK,UDISP_WHITE,UDISP_RED,UDISP_GREEN,UDISP_BLUE,UDISP_CYAN,UDISP_MAGENTA,\ UDISP_YELLOW,UDISP_NAVY,UDISP_DARKGREEN,UDISP_DARKCYAN,UDISP_MAROON,UDISP_PURPLE,UDISP_OLIVE,\ diff --git a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp index d9d53bf13..74d28af2e 100644 --- a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp +++ b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.cpp @@ -951,14 +951,13 @@ void RA8876::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) { //RA8876_CS_LOW while (len--) { - uint16_t color=*data++; + uint16_t color = *data++; #if 0 SPI.transfer(RA8876_DATA_WRITE); SPI.transfer(color&0xff); SPI.transfer(RA8876_DATA_WRITE); SPI.transfer(color>>8); - #else //waitWriteFifo(); @@ -1467,3 +1466,128 @@ void RA8876::FastString(uint16_t x,uint16_t y,uint16_t tcolor, const char* str) setTextColor(tcolor,textbgcolor); xwrite((uint8_t*)str,strlen(str)); } + +// ESP 32 DMA section , derived from TFT_eSPI +#ifdef ESP32 + +/*************************************************************************************** +** Function name: initDMA +** Description: Initialise the DMA engine - returns true if init OK +***************************************************************************************/ +bool RA8876::initDMA() +{ + if (DMA_Enabled) return false; + + esp_err_t ret; + spi_bus_config_t buscfg = { + .mosi_io_num = _mosi, + .miso_io_num = _miso, + .sclk_io_num = _sclk, + .quadwp_io_num = -1, + .quadhd_io_num = -1, + .max_transfer_sz = width() * height() * 2 + 8, // TFT screen size + .flags = 0, + .intr_flags = 0 + }; + + + spi_device_interface_config_t devcfg = { + .command_bits = 0, + .address_bits = 0, + .dummy_bits = 0, + .mode = SPI_MODE3, + .duty_cycle_pos = 0, + .cs_ena_pretrans = 0, + .cs_ena_posttrans = 0, + .clock_speed_hz = RA8876_SPI_SPEED, + .input_delay_ns = 0, + .spics_io_num = m_csPin, + .flags = SPI_DEVICE_NO_DUMMY, //0, + .queue_size = 1, + .pre_cb = 0, //dc_callback, //Callback to handle D/C line + .post_cb = 0 + }; + ret = spi_bus_initialize(spi_host, &buscfg, 1); + ESP_ERROR_CHECK(ret); + ret = spi_bus_add_device(spi_host, &devcfg, &dmaHAL); + ESP_ERROR_CHECK(ret); + + DMA_Enabled = true; + spiBusyCheck = 0; + return true; +} + +/*************************************************************************************** +** Function name: deInitDMA +** Description: Disconnect the DMA engine from SPI +***************************************************************************************/ +void RA8876::deInitDMA(void) { + if (!DMA_Enabled) return; + spi_bus_remove_device(dmaHAL); + spi_bus_free(spi_host); + DMA_Enabled = false; +} + +/*************************************************************************************** +** Function name: dmaBusy +** Description: Check if DMA is busy +***************************************************************************************/ +bool RA8876::dmaBusy(void) { + if (!DMA_Enabled || !spiBusyCheck) return false; + + spi_transaction_t *rtrans; + esp_err_t ret; + uint8_t checks = spiBusyCheck; + for (int i = 0; i < checks; ++i) { + ret = spi_device_get_trans_result(dmaHAL, &rtrans, 0); + if (ret == ESP_OK) spiBusyCheck--; + } + + //Serial.print("spiBusyCheck=");Serial.println(spiBusyCheck); + if (spiBusyCheck == 0) return false; + return true; +} + + +/*************************************************************************************** +** Function name: dmaWait +** Description: Wait until DMA is over (blocking!) +***************************************************************************************/ +void RA8876::dmaWait(void) { + if (!DMA_Enabled || !spiBusyCheck) return; + spi_transaction_t *rtrans; + esp_err_t ret; + for (int i = 0; i < spiBusyCheck; ++i) { + ret = spi_device_get_trans_result(dmaHAL, &rtrans, portMAX_DELAY); + assert(ret == ESP_OK); + } + spiBusyCheck = 0; +} + + +/*************************************************************************************** +** Function name: pushPixelsDMA +** Description: Push pixels to TFT (len must be less than 32767) +***************************************************************************************/ +// This will byte swap the original image if setSwapBytes(true) was called by sketch. +void RA8876::pushPixelsDMA(uint16_t* image, uint32_t len) { + + if ((len == 0) || (!DMA_Enabled)) return; + + dmaWait(); + + esp_err_t ret; + + memset(&trans, 0, sizeof(spi_transaction_t)); + + trans.user = (void *)1; + trans.tx_buffer = image; //finally send the line data + trans.length = len * 16; //Data length, in bits + trans.flags = 0; //SPI_TRANS_USE_TXDATA flag + + ret = spi_device_queue_trans(dmaHAL, &trans, portMAX_DELAY); + assert(ret == ESP_OK); + + spiBusyCheck++; +} +#endif // ESP32 diff --git a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.h b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.h index 14b821471..7cf2f031b 100644 --- a/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.h +++ b/lib/lib_display/Xlatb_RA8876-gemu-1.0/RA8876.h @@ -22,6 +22,9 @@ #include "Arduino.h" #include #include +#ifdef ESP32 +#include "driver/spi_master.h" +#endif #undef SPRINT #define SPRINT(A) {char str[32];sprintf(str,"val: %d ",A);Serial.println((char*)str);} @@ -147,7 +150,7 @@ typedef uint8_t FontFlags; // 1MHz. TODO: Figure out actual speed to use // Data sheet section 5.2 says maximum SPI clock is 50MHz. //#define RA8876_SPI_SPEED 10000000 -#define RA8876_SPI_SPEED 20000000 +#define RA8876_SPI_SPEED 25000000 // With SPI, the RA8876 expects an initial byte where the top two bits are meaningful. Bit 7 // is A0, bit 6 is WR#. See data sheet section 7.3.2 and section 19. @@ -565,6 +568,21 @@ class RA8876 : public Renderer { enum FontSource m_fontSource; enum FontSize m_fontSize; FontFlags m_fontFlags; + +#ifdef ESP32 + // dma section + bool DMA_Enabled = false; + uint8_t spiBusyCheck = 0; + spi_transaction_t trans; + spi_device_handle_t dmaHAL; + spi_host_device_t spi_host = VSPI_HOST; + // spi_host_device_t spi_host = VSPI_HOST; + bool initDMA(); + void deInitDMA(void); + bool dmaBusy(void); + void dmaWait(void); + void pushPixelsDMA(uint16_t* image, uint32_t len); +#endif // ESP32 }; #endif diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index ef6e3429b..3f5cb8e73 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -2668,7 +2668,8 @@ chknext: #ifdef USE_LVGL if (!strncmp(vname, "lvgl(", 5)) { lp = GetNumericArgument(lp + 5, OPER_EQU, &fvar, gv); - fvar = lvgl_test(fvar); + SCRIPT_SKIP_SPACES + fvar = lvgl_test(&lp, fvar); lp++; len = 0; goto exit; @@ -7870,82 +7871,192 @@ uint32_t script_i2c(uint8_t sel, uint8_t val, uint8_t val1) { #include #include "lvgl.h" - -const char ili9342[] PROGMEM = -":H,ILI9342,320,240,16,SPI,1,*,*,*,*,*,*,*,40\n" -":S,2,1,3,0,100,100\n" -":I\n" -"EF,3,03,80,02\n" -"CF,3,00,C1,30\n" -"ED,4,64,03,12,81\n" -"E8,3,85,00,78\n" -"CB,5,39,2C,00,34,02\n" -"F7,1,20\n" -"EA,2,00,00\n" -"C0,1,23\n" -"C1,1,10\n" -"C5,2,3e,28\n" -"C7,1,86\n" -"36,1,48\n" -"37,1,00\n" -"3A,1,55\n" -"B1,2,00,18\n" -"B6,3,08,82,27\n" -"F2,1,00\n" -"26,1,01\n" -"E0,0F,0F,31,2B,0C,0E,08,4E,F1,37,07,10,03,0E,09,00\n" -"E1,0F,00,0E,14,03,11,07,31,C1,48,08,0F,0C,31,36,0F\n" -"21,80\n" -"11,80\n" -"29,80\n" -":o,28\n" -":O,29\n" -":A,2A,2B,2C,16\n" -":R,36\n" -":0,08,00,00,00\n" -":1,A8,00,00,01\n" -":2,C8,00,00,02\n" -":3,68,00,00,03\n" -":i,21,20\n" -":TI2,38,22,21\n" -"#\n"; +#define MAX_LVGL_OBJS 8 +uint8_t lvgl_numobjs; +lv_obj_t *lvgl_buttons[MAX_LVGL_OBJS]; void start_lvgl(const char * uconfig); +lv_event_t lvgl_last_event; +uint8_t lvgl_last_object; +uint8_t lvgl_last_slider; -void btn_event_cb(lv_obj_t * btn, lv_event_t event); -void btn_event_cb(lv_obj_t * btn, lv_event_t event) { - if (event == LV_EVENT_CLICKED) { - AddLog_P(LOG_LEVEL_INFO,PSTR(">>> clicked")); +void lvgl_set_last(lv_obj_t * obj, lv_event_t event); +void lvgl_set_last(lv_obj_t * obj, lv_event_t event) { + lvgl_last_event = event; + lvgl_last_object = 0; + for (uint8_t cnt = 0; cnt < MAX_LVGL_OBJS; cnt++) { + if (lvgl_buttons[cnt] == obj) { + lvgl_last_object = cnt + 1; + return; } + } } -int32_t lvgl_test(int32_t p) { - - start_lvgl(ili9342); - - lv_obj_clean(lv_scr_act()); - - if (p == 0) { - lv_obj_t *label1 = lv_label_create(lv_scr_act(), NULL); - /*Modify the Label's text*/ - lv_label_set_text(label1, "Hello world!"); - /* Align the Label to the center - * NULL means align on parent (which is the screen now) - * 0, 0 at the end means an x, y offset after alignment*/ - lv_obj_align(label1, NULL, LV_ALIGN_CENTER, 0, 0); - /*Add a button*/ - lv_obj_t *btn1 = lv_btn_create(lv_scr_act(), NULL); /*Add to the active screen*/ - lv_obj_set_pos(btn1, 2, 2); /*Adjust the position*/ - lv_obj_set_size(btn1, 96, 30); /* set size of button */ - lv_obj_set_event_cb(btn1, btn_event_cb); - /*Add text*/ - lv_obj_t *label = lv_label_create(btn1, NULL); /*Put on 'btn1'*/ - lv_label_set_text(label, "Click"); - } else { - lvgl_setup(); +void btn_event_cb(lv_obj_t * btn, lv_event_t event); +void btn_event_cb(lv_obj_t * btn, lv_event_t event) { + lvgl_set_last(btn, event); + if (event == LV_EVENT_CLICKED) { + Run_Scripter(">lvb", 4, 0); } - return 0; +} + +void slider_event_cb(lv_obj_t * sld, lv_event_t event); +void slider_event_cb(lv_obj_t * sld, lv_event_t event) { + lvgl_set_last(sld, event); + lvgl_last_slider = lv_slider_get_value(sld); + if (event == LV_EVENT_VALUE_CHANGED) { + Run_Scripter(">lvs", 4, 0); + } +} + +void lvgl_StoreObj(lv_obj_t *obj); +void lvgl_StoreObj(lv_obj_t *obj) { + if (lvgl_numobjs < MAX_LVGL_OBJS) { + lvgl_buttons[lvgl_numobjs] = obj; + lvgl_numobjs++; + } +} + +int32_t lvgl_test(char **lpp, int32_t p) { + char *lp = *lpp; + lv_obj_t *obj; + lv_obj_t *label; + float xp, yp, xs, ys, min, max; + char str[SCRIPT_MAXSSIZE]; + int32_t res = 0; + + switch (p) { + case 0: + start_lvgl(0); + lvgl_numobjs = 0; + for (uint8_t cnt = 0; cnt < MAX_LVGL_OBJS; cnt++) { + lvgl_buttons[cnt] = 0; + } + break; + + case 1: + lv_obj_clean(lv_scr_act()); + break; + + case 2: + // create button; + lp = GetNumericArgument(lp, OPER_EQU, &xp, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &yp, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &xs, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &ys, 0); + SCRIPT_SKIP_SPACES + lp = GetStringArgument(lp, OPER_EQU, str, 0); + SCRIPT_SKIP_SPACES + + obj = lv_btn_create(lv_scr_act(), NULL); + lv_obj_set_pos(obj, xp, yp); + lv_obj_set_size(obj, xs, ys); + lv_obj_set_event_cb(obj, btn_event_cb); + label = lv_label_create(obj, NULL); + lv_label_set_text(label, str); + lvgl_StoreObj(obj); + break; + + case 3: + lp = GetNumericArgument(lp, OPER_EQU, &xp, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &yp, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &xs, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &ys, 0); + SCRIPT_SKIP_SPACES + + obj = lv_slider_create(lv_scr_act(), NULL); + lv_obj_set_pos(obj, xp, yp); + lv_obj_set_size(obj, xs, ys); + lv_obj_set_event_cb(obj, slider_event_cb); + lvgl_StoreObj(obj); + break; + + case 4: + lp = GetNumericArgument(lp, OPER_EQU, &xp, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &yp, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &xs, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &ys, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &min, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &max, 0); + SCRIPT_SKIP_SPACES + + obj = lv_gauge_create(lv_scr_act(), NULL); + lv_obj_set_pos(obj, xp, yp); + lv_obj_set_size(obj, xs, ys); + lv_gauge_set_range(obj, min, max); + lvgl_StoreObj(obj); + break; + + case 5: + lp = GetNumericArgument(lp, OPER_EQU, &min, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &max, 0); + SCRIPT_SKIP_SPACES + if (lvgl_buttons[(uint8_t)min - 1]) { + lv_gauge_set_value(lvgl_buttons[(uint8_t)min - 1], 0, max); + } + break; + + case 6: + // create label; + lp = GetNumericArgument(lp, OPER_EQU, &xp, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &yp, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &xs, 0); + SCRIPT_SKIP_SPACES + lp = GetNumericArgument(lp, OPER_EQU, &ys, 0); + SCRIPT_SKIP_SPACES + lp = GetStringArgument(lp, OPER_EQU, str, 0); + SCRIPT_SKIP_SPACES + + obj = lv_label_create(lv_scr_act(), NULL); + lv_obj_set_pos(obj, xp, yp); + lv_obj_set_size(obj, xs, ys); + lv_label_set_text(obj, str); + lvgl_StoreObj(obj); + break; + + case 7: + lp = GetNumericArgument(lp, OPER_EQU, &min, 0); + SCRIPT_SKIP_SPACES + lp = GetStringArgument(lp, OPER_EQU, str, 0); + SCRIPT_SKIP_SPACES + if (lvgl_buttons[(uint8_t)min - 1]) { + lv_label_set_text(lvgl_buttons[(uint8_t)min - 1], str); + } + break; + + case 50: + res = lvgl_last_object; + break; + case 51: + res = lvgl_last_event; + break; + case 52: + res = lvgl_last_slider; + break; + + + default: + lvgl_setup(); + break; + } + + *lpp = lp; + return res; } lv_obj_t *tabview, // LittlevGL tabview object diff --git a/tasmota/xdrv_13_display.ino b/tasmota/xdrv_13_display.ino index e90eab48a..516bb12b2 100755 --- a/tasmota/xdrv_13_display.ino +++ b/tasmota/xdrv_13_display.ino @@ -27,19 +27,12 @@ Renderer *renderer; enum ColorType { COLOR_BW, COLOR_COLOR }; -#ifndef MAX_TOUCH_BUTTONS -#define MAX_TOUCH_BUTTONS 16 -#endif #ifdef USE_UFILESYS extern FS *ufsp; extern FS *ffsp; #endif -#ifdef USE_TOUCH_BUTTONS -VButton *buttons[MAX_TOUCH_BUTTONS]; -#endif - // drawing color is WHITE // on epaper the whole display buffer is transfered inverted this results in white paper uint16_t fg_color = 1; @@ -2673,277 +2666,6 @@ void AddValue(uint8_t num,float fval) { } #endif // USE_GRAPH -/*********************************************************************************************\ - * Touch panel control -\*********************************************************************************************/ - - -bool FT5206_found = false; -bool XPT2046_found = false; -int16_t touch_xp; -int16_t touch_yp; -bool touched; - -uint32_t Touch_Status(uint32_t sel) { - if (FT5206_found || XPT2046_found) { - switch (sel) { - case 0: - return touched; - case 1: - return touch_xp; - case 2: - return touch_yp; - } - return 0; - } else { - return 0; - } -} - -#if defined(USE_FT5206) || defined(USE_XPT2046) - - -#ifdef USE_M5STACK_CORE2 -uint8_t tbstate[3]; -#endif // USE_M5STACK_CORE2 - -#ifdef USE_FT5206 -#include -// touch panel controller -#undef FT5206_address -#define FT5206_address 0x38 - -FT5206_Class *FT5206_touchp; - - -bool FT5206_Touch_Init(TwoWire &i2c) { - FT5206_found = false; - FT5206_touchp = new FT5206_Class(); - if (FT5206_touchp->begin(i2c, FT5206_address)) { - I2cSetActiveFound(FT5206_address, "FT5206"); - FT5206_found = true; - } - return FT5206_found; -} - -bool FT5206_touched() { - return FT5206_touchp->touched(); -} -int16_t FT5206_x() { - TP_Point pLoc = FT5206_touchp->getPoint(0); - return pLoc.x; -} -int16_t FT5206_y() { - TP_Point pLoc = FT5206_touchp->getPoint(0); - return pLoc.y; -} -#endif // USE_FT5206 - -#ifdef USE_XPT2046 -#include -XPT2046_Touchscreen *XPT2046_touchp; - - -bool XPT2046_Touch_Init(uint16_t CS) { - XPT2046_touchp = new XPT2046_Touchscreen(CS); - XPT2046_found = XPT2046_touchp->begin(); - if (XPT2046_found) { - AddLog(LOG_LEVEL_INFO, PSTR("TS: XPT2046")); - } - return XPT2046_found; -} -bool XPT2046_touched() { - return XPT2046_touchp->touched(); -} -int16_t XPT2046_x() { - TS_Point pLoc = XPT2046_touchp->getPoint(); - return pLoc.x; -} -int16_t XPT2046_y() { - TS_Point pLoc = XPT2046_touchp->getPoint(); - return pLoc.y; -} -#endif // USE_XPT2046 - - - -void Touch_Check(void(*rotconvert)(int16_t *x, int16_t *y)) { - -#ifdef USE_FT5206 - if (FT5206_found) { - touch_xp = FT5206_x(); - touch_yp = FT5206_y(); - touched = FT5206_touched(); - } -#endif // USE_FT5206 - -#ifdef USE_XPT2046 - if (XPT2046_found) { - touch_xp = XPT2046_x(); - touch_yp = XPT2046_y(); - touched = XPT2046_touched(); - } -#endif // USE_XPT2046 - - if (touched) { - -#ifdef USE_TOUCH_BUTTONS -#ifdef USE_M5STACK_CORE2 - // handle 3 built in touch buttons - uint16_t xcenter = 80; -#define TDELTA 30 -#define TYPOS 275 - for (uint32_t tbut = 0; tbut < 3; tbut++) { - if (touch_xp > (xcenter - TDELTA) && touch_xp < (xcenter + TDELTA) && touch_yp > (TYPOS - TDELTA) && touch_yp < (TYPOS + TDELTA)) { - // hit a button - if (!(tbstate[tbut] & 1)) { - // pressed - tbstate[tbut] |= 1; - //AddLog(LOG_LEVEL_INFO, PSTR("tbut: %d pressed"), tbut); - Touch_MQTT(tbut, "BIB", tbstate[tbut] & 1); - } - } - xcenter += 100; - } -#endif // USE_M5STACK_CORE2 -#endif // USE_TOUCH_BUTTONS - - rotconvert(&touch_xp, &touch_yp); - -#ifdef USE_TOUCH_BUTTONS - CheckTouchButtons(touched, touch_xp, touch_yp); -#endif // USE_TOUCH_BUTTONS - - } else { -#ifdef USE_M5STACK_CORE2 - for (uint32_t tbut = 0; tbut < 3; tbut++) { - if (tbstate[tbut] & 1) { - // released - tbstate[tbut] &= 0xfe; - Touch_MQTT(tbut, "BIB", tbstate[tbut] & 1); - //AddLog(LOG_LEVEL_INFO, PSTR("tbut: %d released"), tbut); - } - } -#endif // USE_M5STACK_CORE2 - -#ifdef USE_TOUCH_BUTTONS - CheckTouchButtons(touched, touch_xp, touch_yp); -#endif // USE_TOUCH_BUTTONS - - } -} -#endif - -#ifdef USE_TOUCH_BUTTONS -void Touch_MQTT(uint8_t index, const char *cp, uint32_t val) { -#ifdef USE_FT5206 - if (FT5206_found) ResponseTime_P(PSTR(",\"FT5206\":{\"%s%d\":\"%d\"}}"), cp, index+1, val); -#endif -#ifdef USE_XPT2046 - if (XPT2046_found) ResponseTime_P(PSTR(",\"XPT2046\":{\"%s%d\":\"%d\"}}"), cp, index+1, val); -#endif // USE_XPT2046 - MqttPublishTeleSensor(); -} - -void Touch_RDW_BUTT(uint32_t count, uint32_t pwr) { - buttons[count]->xdrawButton(pwr); - if (pwr) buttons[count]->vpower.on_off = 1; - else buttons[count]->vpower.on_off = 0; -} - - - -void CheckTouchButtons(bool touched, int16_t touch_x, int16_t touch_y) { - uint16_t temp; - uint8_t rbutt=0; - uint8_t vbutt=0; - - if (!renderer) return; - if (touched) { - // AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("touch after convert %d - %d"), pLoc.x, pLoc.y); - // now must compare with defined buttons - for (uint8_t count = 0; count < MAX_TOUCH_BUTTONS; count++) { - if (buttons[count]) { - if (!buttons[count]->vpower.slider) { - if (!buttons[count]->vpower.disable) { - if (buttons[count]->contains(touch_x, touch_y)) { - // did hit - buttons[count]->press(true); - if (buttons[count]->justPressed()) { - if (!buttons[count]->vpower.is_virtual) { - uint8_t pwr=bitRead(TasmotaGlobal.power, rbutt); - if (!SendKey(KEY_BUTTON, rbutt+1, POWER_TOGGLE)) { - ExecuteCommandPower(rbutt+1, POWER_TOGGLE, SRC_BUTTON); - Touch_RDW_BUTT(count, !pwr); - } - } else { - // virtual button - const char *cp; - if (!buttons[count]->vpower.is_pushbutton) { - // toggle button - buttons[count]->vpower.on_off ^= 1; - cp="TBT"; - } else { - // push button - buttons[count]->vpower.on_off = 1; - cp="PBT"; - } - buttons[count]->xdrawButton(buttons[count]->vpower.on_off); - Touch_MQTT(count, cp, buttons[count]->vpower.on_off); - } - } - } - if (!buttons[count]->vpower.is_virtual) { - rbutt++; - } else { - vbutt++; - } - } - } else { - // slider - if (buttons[count]->didhit(touch_x, touch_y)) { - uint16_t value = buttons[count]->UpdateSlider(touch_x, touch_y); - Touch_MQTT(count, "SLD", value); - } - } - } - } - - } else { - // no hit - for (uint8_t count = 0; count < MAX_TOUCH_BUTTONS; count++) { - if (buttons[count]) { - if (!buttons[count]->vpower.slider) { - buttons[count]->press(false); - if (buttons[count]->justReleased()) { - if (buttons[count]->vpower.is_virtual) { - if (buttons[count]->vpower.is_pushbutton) { - // push button - buttons[count]->vpower.on_off = 0; - Touch_MQTT(count,"PBT", buttons[count]->vpower.on_off); - buttons[count]->xdrawButton(buttons[count]->vpower.on_off); - } - } - } - if (!buttons[count]->vpower.is_virtual) { - // check if power button stage changed - uint8_t pwr = bitRead(TasmotaGlobal.power, rbutt); - uint8_t vpwr = buttons[count]->vpower.on_off; - if (pwr != vpwr) { - Touch_RDW_BUTT(count, pwr); - } - rbutt++; - } - } - } - } - touch_xp = 0; - touch_yp = 0; - } -} -#endif // USE_TOUCH_BUTTONS - - /*********************************************************************************************\ * Interface \*********************************************************************************************/ diff --git a/tasmota/xdrv_55_touch.ino b/tasmota/xdrv_55_touch.ino new file mode 100644 index 000000000..b02944328 --- /dev/null +++ b/tasmota/xdrv_55_touch.ino @@ -0,0 +1,314 @@ +/* + xdrv_55_touch.ino - Touch contolers + + Copyright (C) 2021 Gerhard Mutz 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 . +*/ + + + +#if defined(USE_FT5206) || defined(USE_XPT2046) || defined(USE_LILYGO47) + +#ifdef LVGL_RENDERER +#undef USE_TOUCH_BUTTONS +#endif + +#include + +#define XDRV_55 55 + +bool FT5206_found = false; +bool XPT2046_found = false; +int16_t touch_xp; +int16_t touch_yp; +bool touched; + +#ifndef MAX_TOUCH_BUTTONS +#define MAX_TOUCH_BUTTONS 16 +#endif + +#ifdef USE_TOUCH_BUTTONS +VButton *buttons[MAX_TOUCH_BUTTONS]; +#endif + +uint32_t Touch_Status(uint32_t sel) { + if (FT5206_found || XPT2046_found) { + switch (sel) { + case 0: + return touched; + case 1: + return touch_xp; + case 2: + return touch_yp; + } + return 0; + } else { + return 0; + } +} + +#ifdef USE_M5STACK_CORE2 +uint8_t tbstate[3]; +#endif // USE_M5STACK_CORE2 + +#ifdef USE_FT5206 +#include +// touch panel controller +#undef FT5206_address +#define FT5206_address 0x38 + +FT5206_Class *FT5206_touchp; + +bool FT5206_Touch_Init(TwoWire &i2c) { + FT5206_found = false; + FT5206_touchp = new FT5206_Class(); + if (FT5206_touchp->begin(i2c, FT5206_address)) { + I2cSetActiveFound(FT5206_address, "FT5206"); + FT5206_found = true; + } + //AddLog(LOG_LEVEL_INFO, PSTR("TS: FT5206 %d"),FT5206_found); + return FT5206_found; +} + +bool FT5206_touched() { + return FT5206_touchp->touched(); +} +int16_t FT5206_x() { + TP_Point pLoc = FT5206_touchp->getPoint(0); + return pLoc.x; +} +int16_t FT5206_y() { + TP_Point pLoc = FT5206_touchp->getPoint(0); + return pLoc.y; +} +#endif // USE_FT5206 + +#ifdef USE_XPT2046 +#include +XPT2046_Touchscreen *XPT2046_touchp; + + +bool XPT2046_Touch_Init(uint16_t CS) { + XPT2046_touchp = new XPT2046_Touchscreen(CS); + XPT2046_found = XPT2046_touchp->begin(); + if (XPT2046_found) { + AddLog(LOG_LEVEL_INFO, PSTR("TS: XPT2046")); + } + return XPT2046_found; +} +bool XPT2046_touched() { + return XPT2046_touchp->touched(); +} +int16_t XPT2046_x() { + TS_Point pLoc = XPT2046_touchp->getPoint(); + return pLoc.x; +} +int16_t XPT2046_y() { + TS_Point pLoc = XPT2046_touchp->getPoint(); + return pLoc.y; +} +#endif // USE_XPT2046 + + + +void Touch_Check(void(*rotconvert)(int16_t *x, int16_t *y)) { + +#ifdef USE_FT5206 + if (FT5206_found) { + touch_xp = FT5206_x(); + touch_yp = FT5206_y(); + touched = FT5206_touched(); + } +#endif // USE_FT5206 + +#ifdef USE_XPT2046 + if (XPT2046_found) { + touch_xp = XPT2046_x(); + touch_yp = XPT2046_y(); + touched = XPT2046_touched(); + } +#endif // USE_XPT2046 + + if (touched) { + +#ifdef USE_TOUCH_BUTTONS +#ifdef USE_M5STACK_CORE2 + // handle 3 built in touch buttons + uint16_t xcenter = 80; +#define TDELTA 30 +#define TYPOS 275 + for (uint32_t tbut = 0; tbut < 3; tbut++) { + if (touch_xp > (xcenter - TDELTA) && touch_xp < (xcenter + TDELTA) && touch_yp > (TYPOS - TDELTA) && touch_yp < (TYPOS + TDELTA)) { + // hit a button + if (!(tbstate[tbut] & 1)) { + // pressed + tbstate[tbut] |= 1; + //AddLog(LOG_LEVEL_INFO, PSTR("tbut: %d pressed"), tbut); + Touch_MQTT(tbut, "BIB", tbstate[tbut] & 1); + } + } + xcenter += 100; + } +#endif // USE_M5STACK_CORE2 +#endif // USE_TOUCH_BUTTONS + + rotconvert(&touch_xp, &touch_yp); + +#ifdef USE_TOUCH_BUTTONS + CheckTouchButtons(touched, touch_xp, touch_yp); +#endif // USE_TOUCH_BUTTONS + + } else { +#ifdef USE_M5STACK_CORE2 + for (uint32_t tbut = 0; tbut < 3; tbut++) { + if (tbstate[tbut] & 1) { + // released + tbstate[tbut] &= 0xfe; + Touch_MQTT(tbut, "BIB", tbstate[tbut] & 1); + //AddLog(LOG_LEVEL_INFO, PSTR("tbut: %d released"), tbut); + } + } +#endif // USE_M5STACK_CORE2 + +#ifdef USE_TOUCH_BUTTONS + CheckTouchButtons(touched, touch_xp, touch_yp); +#endif // USE_TOUCH_BUTTONS + + } +} + +#ifdef USE_TOUCH_BUTTONS +void Touch_MQTT(uint8_t index, const char *cp, uint32_t val) { +#ifdef USE_FT5206 + if (FT5206_found) ResponseTime_P(PSTR(",\"FT5206\":{\"%s%d\":\"%d\"}}"), cp, index+1, val); +#endif +#ifdef USE_XPT2046 + if (XPT2046_found) ResponseTime_P(PSTR(",\"XPT2046\":{\"%s%d\":\"%d\"}}"), cp, index+1, val); +#endif // USE_XPT2046 + MqttPublishTeleSensor(); +} + +void Touch_RDW_BUTT(uint32_t count, uint32_t pwr) { + buttons[count]->xdrawButton(pwr); + if (pwr) buttons[count]->vpower.on_off = 1; + else buttons[count]->vpower.on_off = 0; +} + +void CheckTouchButtons(bool touched, int16_t touch_x, int16_t touch_y) { + uint16_t temp; + uint8_t rbutt=0; + uint8_t vbutt=0; + + if (!renderer) return; + if (touched) { + // AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("touch after convert %d - %d"), pLoc.x, pLoc.y); + // now must compare with defined buttons + for (uint8_t count = 0; count < MAX_TOUCH_BUTTONS; count++) { + if (buttons[count]) { + if (!buttons[count]->vpower.slider) { + if (!buttons[count]->vpower.disable) { + if (buttons[count]->contains(touch_x, touch_y)) { + // did hit + buttons[count]->press(true); + if (buttons[count]->justPressed()) { + if (!buttons[count]->vpower.is_virtual) { + uint8_t pwr=bitRead(TasmotaGlobal.power, rbutt); + if (!SendKey(KEY_BUTTON, rbutt+1, POWER_TOGGLE)) { + ExecuteCommandPower(rbutt+1, POWER_TOGGLE, SRC_BUTTON); + Touch_RDW_BUTT(count, !pwr); + } + } else { + // virtual button + const char *cp; + if (!buttons[count]->vpower.is_pushbutton) { + // toggle button + buttons[count]->vpower.on_off ^= 1; + cp="TBT"; + } else { + // push button + buttons[count]->vpower.on_off = 1; + cp="PBT"; + } + buttons[count]->xdrawButton(buttons[count]->vpower.on_off); + Touch_MQTT(count, cp, buttons[count]->vpower.on_off); + } + } + } + if (!buttons[count]->vpower.is_virtual) { + rbutt++; + } else { + vbutt++; + } + } + } else { + // slider + if (buttons[count]->didhit(touch_x, touch_y)) { + uint16_t value = buttons[count]->UpdateSlider(touch_x, touch_y); + Touch_MQTT(count, "SLD", value); + } + } + } + } + + } else { + // no hit + for (uint8_t count = 0; count < MAX_TOUCH_BUTTONS; count++) { + if (buttons[count]) { + if (!buttons[count]->vpower.slider) { + buttons[count]->press(false); + if (buttons[count]->justReleased()) { + if (buttons[count]->vpower.is_virtual) { + if (buttons[count]->vpower.is_pushbutton) { + // push button + buttons[count]->vpower.on_off = 0; + Touch_MQTT(count,"PBT", buttons[count]->vpower.on_off); + buttons[count]->xdrawButton(buttons[count]->vpower.on_off); + } + } + } + if (!buttons[count]->vpower.is_virtual) { + // check if power button stage changed + uint8_t pwr = bitRead(TasmotaGlobal.power, rbutt); + uint8_t vpwr = buttons[count]->vpower.on_off; + if (pwr != vpwr) { + Touch_RDW_BUTT(count, pwr); + } + rbutt++; + } + } + } + } + touch_xp = 0; + touch_yp = 0; + } +} +#endif // USE_TOUCH_BUTTONS + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ +bool Xdrv55(uint8_t function) { + bool result = false; + + switch (function) { + case FUNC_INIT: + break; + case FUNC_EVERY_100_MSECOND: + break; + } + return result; +} + +#endif // USE_TOUCH diff --git a/tasmota/xdsp_04_ili9341.ino b/tasmota/xdsp_04_ili9341.ino index 73d6c183e..32844cab0 100644 --- a/tasmota/xdsp_04_ili9341.ino +++ b/tasmota/xdsp_04_ili9341.ino @@ -40,6 +40,8 @@ uint8_t ili9342_ctouch_counter = 0; bool tft_init_done = false; +void Core2DisplayPower(uint8_t on); +void Core2DisplayDim(uint8_t dim); //Settings.display_options.type = ILIMODE_9341; @@ -89,6 +91,11 @@ void ILI9341_InitDriver() ili9341_2->init(Settings.display_width, Settings.display_height); renderer = ili9341_2; +#ifdef USE_M5STACK_CORE2 + renderer->SetPwrCB(Core2DisplayPower); + renderer->SetDimCB(Core2DisplayDim); +#endif + renderer->DisplayInit(DISPLAY_INIT_MODE, Settings.display_size, Settings.display_rotate, Settings.display_font); renderer->dim(Settings.display_dimmer); @@ -131,22 +138,6 @@ void ILI9341_InitDriver() } } - -void Core2DisplayPower(uint8_t on); -void Core2DisplayDim(uint8_t dim); - -void ili9342_bpwr(uint8_t on) { -#ifdef USE_M5STACK_CORE2 - Core2DisplayPower(on); -#endif -} - -void ili9342_dimm(uint8_t dim) { -#ifdef USE_M5STACK_CORE2 - Core2DisplayDim(dim); -#endif -} - #if defined(USE_FT5206) || defined(USE_XPT2046) #ifdef USE_TOUCH_BUTTONS diff --git a/tasmota/xdsp_17_universal.ino b/tasmota/xdsp_17_universal.ino index b91dc9134..588aaa8ba 100644 --- a/tasmota/xdsp_17_universal.ino +++ b/tasmota/xdsp_17_universal.ino @@ -18,7 +18,7 @@ */ -#ifdef USE_DISPLAY +#if defined(USE_DISPLAY) || defined(LVGL_RENDERER) #ifdef USE_UNIVERSAL_DISPLAY #define XDSP_17 17 @@ -27,14 +27,23 @@ bool udisp_init_done = false; uint8_t ctouch_counter; -extern uint8_t color_type; -extern uint16_t fg_color; -extern uint16_t bg_color; + #ifdef USE_UFILESYS extern FS *ffsp; #endif +#ifndef USE_DISPLAY +uint8_t color_type; +uint16_t fg_color; +uint16_t bg_color; +Renderer *renderer; +#else +extern uint8_t color_type; +extern uint16_t fg_color; +extern uint16_t bg_color; +#endif + #define DISPDESC_SIZE 1000 @@ -340,22 +349,6 @@ uDisplay *udisp; /*********************************************************************************************/ -/* - -void udisp_bpwr(uint8_t on) { -#ifdef USE_M5STACK_CORE2 - Core2DisplayPower(on); -#endif -} - -void udisp_dimm(uint8_t dim) { -#ifdef USE_M5STACK_CORE2 - Core2DisplayDim(dim); -#endif -} - -*/ - void TS_RotConvert(int16_t *x, int16_t *y) { if (renderer) renderer->TS_RotConvert(x, y); } @@ -462,8 +455,8 @@ void UDISP_Refresh(void) // Every second * Interface \*********************************************************************************************/ -bool Xdsp17(uint8_t function) -{ +#ifndef LVGL_RENDERER +bool Xdsp17(uint8_t function) { bool result = false; if (FUNC_DISPLAY_INIT_DRIVER == function) { @@ -493,6 +486,7 @@ bool Xdsp17(uint8_t function) } return result; } +#endif // !LVGL_RENDERER #endif // USE_UNIVERSAL_DISPLAY #endif // USE_DISPLAY From dc2932db55beefb4cb22ae2b2f2c55b6ff25541b Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Fri, 30 Apr 2021 15:33:22 +0200 Subject: [PATCH 91/97] Update xdsp_04_ili9341.ino --- tasmota/xdsp_04_ili9341.ino | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 tasmota/xdsp_04_ili9341.ino diff --git a/tasmota/xdsp_04_ili9341.ino b/tasmota/xdsp_04_ili9341.ino old mode 100644 new mode 100755 From d86353369eb1be1701d8bf4fa3a7ece3165add68 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Fri, 30 Apr 2021 15:39:53 +0200 Subject: [PATCH 92/97] ili9341 callbacks --- lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp b/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp index 9b3c7fbcb..4459eb957 100644 --- a/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp +++ b/lib/lib_display/ILI9341-gemu-1.0/ILI9341_2.cpp @@ -530,7 +530,10 @@ void ili9342_bpwr(uint8_t on); void ILI9341_2::DisplayOnff(int8_t on) { if ((_hwspi >= 2) && (_bp < 0)) { - ili9342_bpwr(on); + //ili9342_bpwr(on); + if (pwr_cbp) { + pwr_cbp(on); + } } if (on) { @@ -604,7 +607,10 @@ void ILI9341_2::dim(uint8_t dim) { ledcWrite(ESP32_PWM_CHANNEL,dimmer); } else { if (_hwspi>=2) { - ili9342_dimm(dim); + //ili9342_dimm(dim); + if (dim_cbp) { + dim_cbp(dim); + } } } #endif From 86ec4af6c55a57d64cca74988a148404f9cd5832 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 30 Apr 2021 15:42:57 +0200 Subject: [PATCH 93/97] Make Telegram command ``TmState`` persistent Make Telegram command ``TmState`` persistent (#11965) --- CHANGELOG.md | 6 +++- RELEASENOTES.md | 1 + tasmota/settings.h | 64 +++++++++++++++++++++++++++++++----- tasmota/settings.ino | 11 ++++--- tasmota/tasmota_version.h | 2 +- tasmota/xdrv_40_telegram.ino | 17 ++++------ 6 files changed, 76 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32ad7bbd1..d0656cd43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,11 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [9.4.0.2] +## [9.4.0.3] +### Added +- Make Telegram command ``TmState`` persistent (#11965) + +## [9.4.0.2] 20210430 ### Added - Initial support for optional ``Template`` JSON fieldpair ``"CMND":"||..."`` (#11788) - ESP32 pulldown buttons ``Button_d`` and ``Button_id`` and switches ``Switch_d`` (#10814) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 3593304e3..337ff0a18 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -81,6 +81,7 @@ The binaries can be downloaded from either https://github.com/arendst/Tasmota/tr - Initial support for optional ``Template`` JSON fieldpair ``"CMND":"||..."`` [#11788](https://github.com/arendst/Tasmota/issues/11788) - ESP32 pulldown buttons ``Button_d`` and ``Button_id`` and switches ``Switch_d`` [#10814](https://github.com/arendst/Tasmota/issues/10814) - Support for MQTT using Azure IoT Hub by Kevin Saye [#11906](https://github.com/arendst/Tasmota/issues/11906) +- Make Telegram command ``TmState`` persistent [#11965](https://github.com/arendst/Tasmota/issues/11965) ### Breaking Changed diff --git a/tasmota/settings.h b/tasmota/settings.h index 8388bb81d..d3e60ad12 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -22,6 +22,7 @@ const uint8_t PARAM8_SIZE = 18; // Number of param bytes (SetOption) +// Bitfield to be used for any SetOption0 .. SetOption31 persistent single bit typedef union { // Restricted by MISRA-C Rule 18.4 but so useful... uint32_t data; // Allow bit manipulation using SetOption struct { // SetOption0 .. SetOption31 @@ -58,8 +59,9 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t hass_light : 1; // bit 30 (v6.0.0b) - SetOption30 - (HAss) enforce autodiscovery as light (1) uint32_t global_state : 1; // bit 31 (v6.1.0) - SetOption31 - (Wifi, MQTT) Control link led blinking (1) }; -} SysBitfield; +} SOBitfield; +// Bitfield to be used for any SetOption50 .. SetOption81 persistent single bit typedef union { // Restricted by MISRA-C Rule 18.4 but so useful... uint32_t data; // Allow bit manipulation using SetOption struct { // SetOption50 .. SetOption81 @@ -96,8 +98,9 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t shutter_mode : 1; // bit 30 (v6.6.0.14) - SetOption80 - (Shutter) Enable shutter support (1) uint32_t pcf8574_ports_inverted : 1; // bit 31 (v6.6.0.14) - SetOption81 - (PCF8574) Invert all ports on PCF8574 devices (1) }; -} SysBitfield3; +} SOBitfield3; +// Bitfield to be used for any SetOption82 .. SetOption113 persistent single bit typedef union { // Restricted by MISRA-C Rule 18.4 but so useful... uint32_t data; // Allow bit manipulation using SetOption struct { // SetOption82 .. SetOption113 @@ -134,8 +137,9 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t zb_topic_fname : 1; // bit 30 (v8.5.0.1) - SetOption112 - (Zigbee) Use friendly name in zigbee topic (1) (use with SetOption89) uint32_t rotary_poweron_dimlow : 1; // bit 31 (v9.0.0.2) - SetOption113 - (Rotary) Set dimmer low on rotary dial after power off (1) }; -} SysBitfield4; +} SOBitfield4; +// Bitfield to be used for any SetOption114 .. SetOption145 persistent single bit typedef union { // Restricted by MISRA-C Rule 18.4 but so useful... uint32_t data; // Allow bit manipulation using SetOption struct { // SetOption114 .. SetOption145 @@ -172,8 +176,9 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t spare30 : 1; // bit 30 uint32_t spare31 : 1; // bit 31 }; -} SysBitfield5; +} SOBitfield5; +// Bitfield to be used for persistent multi bit typedef union { uint32_t data; // Allow bit manipulation struct { @@ -195,6 +200,7 @@ typedef union { }; } SysMBitfield1; +// Bitfield to be used for persistent multi bit typedef union { uint32_t data; // Allow bit manipulation struct { @@ -232,6 +238,45 @@ typedef union { }; } SysMBitfield2; +// Bitfield to be used for non-SetOption persistent single bit +typedef union { + uint32_t data; // Allow bit manipulation + struct { + uint32_t telegram_send_enable : 1; // bit 0 (v9.4.0.3) - CMND_TMSTATE 0/1 - Enable Telegram send + uint32_t telegram_recv_enable : 1; // bit 1 (v9.4.0.3) - CMND_TMSTATE 2/3 - Enable Telegram receive + uint32_t telegram_echo_enable : 1; // bit 2 (v9.4.0.3) - CMND_TMSTATE 4/5 - Enable Telegram echo + uint32_t spare03 : 1; // bit 3 + uint32_t spare04 : 1; // bit 4 + uint32_t spare05 : 1; // bit 5 + uint32_t spare06 : 1; // bit 6 + uint32_t spare07 : 1; // bit 7 + uint32_t spare08 : 1; // bit 8 + uint32_t spare09 : 1; // bit 9 + uint32_t spare10 : 1; // bit 10 + uint32_t spare11 : 1; // bit 11 + uint32_t spare12 : 1; // bit 12 + uint32_t spare13 : 1; // bit 13 + uint32_t spare14 : 1; // bit 14 + uint32_t spare15 : 1; // bit 15 + uint32_t spare16 : 1; // bit 16 + uint32_t spare17 : 1; // bit 17 + uint32_t spare18 : 1; // bit 18 + uint32_t spare19 : 1; // bit 19 + uint32_t spare20 : 1; // bit 20 + uint32_t spare21 : 1; // bit 21 + uint32_t spare22 : 1; // bit 22 + uint32_t spare23 : 1; // bit 23 + uint32_t spare24 : 1; // bit 24 + uint32_t spare25 : 1; // bit 25 + uint32_t spare26 : 1; // bit 26 + uint32_t spare27 : 1; // bit 27 + uint32_t spare28 : 1; // bit 28 + uint32_t spare29 : 1; // bit 29 + uint32_t spare30 : 1; // bit 30 + uint32_t spare31 : 1; // bit 31 + }; +} SBitfield1; + typedef union { uint16_t data; struct { @@ -400,7 +445,7 @@ struct { unsigned long version; // 008 uint16_t bootcount; // 00C uint16_t cfg_crc; // 00E - SysBitfield flag; // 010 + SOBitfield flag; // 010 int16_t save_data; // 014 int8_t timezone; // 016 @@ -472,7 +517,7 @@ struct { uint16_t blinktime; // 39A uint16_t blinkcount; // 39C uint16_t light_rotation; // 39E - SysBitfield3 flag3; // 3A0 + SOBitfield3 flag3; // 3A0 uint8_t ex_switchmode[8]; // 3A4 - Free since 9.2.0.6 @@ -651,7 +696,7 @@ struct { uint8_t ex_adc_param_type; // EF7 Free since 9.0.0.1 - SysBitfield4 flag4; // EF8 + SOBitfield4 flag4; // EF8 uint16_t mqtt_port; // EFC uint8_t serial_config; // EFE uint8_t wifi_output_power; // EFF @@ -694,14 +739,15 @@ struct { uint16_t shd_warmup_brightness; // F5C uint8_t shd_warmup_time; // F5E - uint8_t free_f5f[69]; // F5F - Decrement if adding new Setting variables just above and below + uint8_t free_f5f[65]; // F5F - Decrement if adding new Setting variables just above and below // Only 32 bit boundary variables below + SBitfield1 sbflag1; // FA0 TeleinfoCfg teleinfo; // FA4 uint64_t rf_protocol_mask; // FA8 uint8_t device_group_tie[4]; // FB0 - SysBitfield5 flag5; // FB4 + SOBitfield5 flag5; // FB4 uint16_t pulse_counter_debounce_low; // FB8 uint16_t pulse_counter_debounce_high; // FBA uint32_t keeloq_master_msb; // FBC diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 5691f20a0..74e66166f 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -706,10 +706,10 @@ void SettingsDefaultSet2(void) { memset((char*)&Settings +16, 0x00, sizeof(Settings) -16); // this little trick allows GCC to optimize the assignment by grouping values and doing only ORs - SysBitfield flag = { 0 }; - SysBitfield3 flag3 = { 0 }; - SysBitfield4 flag4 = { 0 }; - SysBitfield5 flag5 = { 0 }; + SOBitfield flag = { 0 }; + SOBitfield3 flag3 = { 0 }; + SOBitfield4 flag4 = { 0 }; + SOBitfield5 flag5 = { 0 }; SysMBitfield1 flag2 = { 0 }; SysMBitfield2 mbflag2 = { 0 }; @@ -1259,6 +1259,9 @@ void SettingsDelta(void) { if (Settings.version < 0x09030104) { Settings.mbflag2.data = 0; } + if (Settings.version < 0x09040002) { + Settings.sbflag1.data = 0; + } Settings.version = VERSION; SettingsSave(1); diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index ed8d5d0f2..897dfde36 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,6 +20,6 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x09040002; +const uint32_t VERSION = 0x09040003; #endif // _TASMOTA_VERSION_H_ diff --git a/tasmota/xdrv_40_telegram.ino b/tasmota/xdrv_40_telegram.ino index 8d1099fc1..66191c43f 100644 --- a/tasmota/xdrv_40_telegram.ino +++ b/tasmota/xdrv_40_telegram.ino @@ -78,9 +78,6 @@ struct { uint8_t retry = 0; uint8_t poll = TELEGRAM_LOOP_WAIT; uint8_t wait = 0; - bool send_enable = false; - bool recv_enable = false; - bool echo_enable = false; bool recv_busy = false; bool skip = true; // Skip first telegram if restarted } Telegram; @@ -317,7 +314,7 @@ String TelegramExecuteCommand(const char *svalue) { } void TelegramLoop(void) { - if (!TasmotaGlobal.global_state.network_down && (Telegram.recv_enable || Telegram.echo_enable)) { + if (!TasmotaGlobal.global_state.network_down && (Settings.sbflag1.telegram_recv_enable || Settings.sbflag1.telegram_echo_enable)) { switch (Telegram.state) { case 0: TelegramInit(); @@ -330,7 +327,7 @@ void TelegramLoop(void) { Telegram.state++; break; case 2: - if (Telegram.echo_enable) { + if (Settings.sbflag1.telegram_echo_enable) { if (Telegram.retry && (Telegram.index < Telegram.message_count)) { if (TelegramSendMessage(Telegram.message[Telegram.index].chat_id, Telegram.message[Telegram.index].text)) { Telegram.index++; @@ -391,21 +388,21 @@ void CmndTmState(void) { switch (XdrvMailbox.payload) { case 0: // Off case 1: // On - Telegram.send_enable = XdrvMailbox.payload &1; + Settings.sbflag1.telegram_send_enable = XdrvMailbox.payload &1; break; case 2: // Off case 3: // On - Telegram.recv_enable = XdrvMailbox.payload &1; + Settings.sbflag1.telegram_recv_enable = XdrvMailbox.payload &1; break; case 4: // Off case 5: // On - Telegram.echo_enable = XdrvMailbox.payload &1; + Settings.sbflag1.telegram_echo_enable = XdrvMailbox.payload &1; break; } } } snprintf_P (TasmotaGlobal.mqtt_data, sizeof(TasmotaGlobal.mqtt_data), PSTR("{\"%s\":{\"Send\":\"%s\",\"Receive\":\"%s\",\"Echo\":\"%s\"}}"), - XdrvMailbox.command, GetStateText(Telegram.send_enable), GetStateText(Telegram.recv_enable), GetStateText(Telegram.echo_enable)); + XdrvMailbox.command, GetStateText(Settings.sbflag1.telegram_send_enable), GetStateText(Settings.sbflag1.telegram_recv_enable), GetStateText(Settings.sbflag1.telegram_echo_enable)); } void CmndTmPoll(void) { @@ -433,7 +430,7 @@ void CmndTmChatId(void) { } void CmndTmSend(void) { - if (!Telegram.send_enable || !strlen(SettingsText(SET_TELEGRAM_CHATID))) { + if (!Settings.sbflag1.telegram_send_enable || !strlen(SettingsText(SET_TELEGRAM_CHATID))) { ResponseCmndFailed(); return; } From d417eb0e2b98f45129871134bfb89f316ef4774a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 30 Apr 2021 17:46:01 +0200 Subject: [PATCH 94/97] Fix display model message --- tasmota/xdsp_01_lcd.ino | 2 ++ tasmota/xdsp_02_ssd1306.ino | 2 +- tasmota/xdsp_03_matrix.ino | 2 ++ tasmota/xdsp_07_sh1106.ino | 4 ++-- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tasmota/xdsp_01_lcd.ino b/tasmota/xdsp_01_lcd.ino index efb3b542c..7a2b16c20 100644 --- a/tasmota/xdsp_01_lcd.ino +++ b/tasmota/xdsp_01_lcd.ino @@ -81,6 +81,8 @@ void LcdInitDriver(void) { #endif // USE_DISPLAY_MODES1TO5 LcdInitMode(); + + AddLog(LOG_LEVEL_INFO, PSTR("DSP: LCD")); } } diff --git a/tasmota/xdsp_02_ssd1306.ino b/tasmota/xdsp_02_ssd1306.ino index 9b7ae5ded..7e96b7162 100644 --- a/tasmota/xdsp_02_ssd1306.ino +++ b/tasmota/xdsp_02_ssd1306.ino @@ -88,7 +88,7 @@ void SSD1306InitDriver(void) { renderer->DisplayOnff(1); #endif - AddLog(LOG_LEVEL_INFO, PSTR("DSP: SD1306")); + AddLog(LOG_LEVEL_INFO, PSTR("DSP: SSD1306")); } } diff --git a/tasmota/xdsp_03_matrix.ino b/tasmota/xdsp_03_matrix.ino index 6d20efeec..957db8431 100644 --- a/tasmota/xdsp_03_matrix.ino +++ b/tasmota/xdsp_03_matrix.ino @@ -221,6 +221,8 @@ void MatrixInitDriver(void) { Settings.display_height = 8; MatrixInitMode(); + + AddLog(LOG_LEVEL_INFO, PSTR("DSP: 8x8Matrix")); } } } diff --git a/tasmota/xdsp_07_sh1106.ino b/tasmota/xdsp_07_sh1106.ino index 807e43f75..6763b076b 100644 --- a/tasmota/xdsp_07_sh1106.ino +++ b/tasmota/xdsp_07_sh1106.ino @@ -85,9 +85,9 @@ void SH1106InitDriver() { renderer->Updateframe(); renderer->DisplayOnff(1); #endif - } - AddLog(LOG_LEVEL_INFO, PSTR("DSP: SH1106")); + AddLog(LOG_LEVEL_INFO, PSTR("DSP: SH1106")); + } } From 10435c9f23839e011bd58f5f0b34adae897c25f6 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 30 Apr 2021 19:12:04 +0200 Subject: [PATCH 95/97] Zigbee allow EFR32 flashing for Tube's device and fix Xmodem retries --- TEMPLATES.md | 5 ++-- tasmota/tasmota_template.h | 2 +- tasmota/xdrv_23_zigbee_9_serial.ino | 4 +++ tasmota/xdrv_23_zigbee_9a_upload.ino | 39 ++++++++++++++++++---------- 4 files changed, 34 insertions(+), 16 deletions(-) diff --git a/TEMPLATES.md b/TEMPLATES.md index 00c12bc02..ecf4192a3 100644 --- a/TEMPLATES.md +++ b/TEMPLATES.md @@ -2139,6 +2139,7 @@ Y09 {"NAME":"Y09","GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0 ## Zigbee Bridge ``` -Sonoff ZBBridge {"NAME":"Sonoff ZbBridge","GPIO":[320,3552,0,3584,5312,0,0,0,640,576,608,0,32,0],"FLAG":0,"BASE":75} -Tube's CC2652P2 Ethernet to {"NAME":"Tube ZB CC2652","GPIO":[0,0,0,3840,0,3584,0,0,0,0,0,0,5536,3552,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,3840,5792,0,0,0,0,0,0],"FLAG":0,"BASE":1} +Sonoff ZBBridge {"NAME":"Sonoff ZbBridge","GPIO":[320,3552,0,3584,5312,5313,0,0,640,576,608,0,32,0],"FLAG":0,"BASE":75} +Tube's CC2652P2 Ethernet {"NAME":"Tube ZB CC2652","GPIO":[0,0,0,3840,0,3584,0,0,0,0,0,0,5536,3552,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,3840,5792,0,0,0,0,0,0],"FLAG":0,"BASE":1} +Tube's EFR32 Ethernet {"NAME":"Tube ZB EFR32","GPIO":[0,0,0,3840,0,3552,1,0,0,0,0,0,5536,3584,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,5793,5792,0,0,0,0,0,0],"FLAG":0,"BASE":1} ``` diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index f53975e5d..9808e018d 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -700,7 +700,7 @@ const uint16_t kGpioNiceList[] PROGMEM = { #ifdef USE_ZIGBEE AGPIO(GPIO_ZIGBEE_TX), // Zigbee Serial interface AGPIO(GPIO_ZIGBEE_RX), // Zigbee Serial interface - AGPIO(GPIO_ZIGBEE_RST), // Zigbee reset + AGPIO(GPIO_ZIGBEE_RST) + 2, // Zigbee reset, pin 1 is reset, pin 2 is bootloader mode #endif #ifdef USE_MHZ19 AGPIO(GPIO_MHZ_TXD), // MH-Z19 Serial interface diff --git a/tasmota/xdrv_23_zigbee_9_serial.ino b/tasmota/xdrv_23_zigbee_9_serial.ino index 9b70496eb..14d2b1436 100644 --- a/tasmota/xdrv_23_zigbee_9_serial.ino +++ b/tasmota/xdrv_23_zigbee_9_serial.ino @@ -302,6 +302,10 @@ void ZigbeeInitSerial(void) pinMode(Pin(GPIO_ZIGBEE_RST), OUTPUT); digitalWrite(Pin(GPIO_ZIGBEE_RST), 1); } + if (PinUsed(GPIO_ZIGBEE_RST, 1)) { + pinMode(Pin(GPIO_ZIGBEE_RST, 1), OUTPUT); + digitalWrite(Pin(GPIO_ZIGBEE_RST, 1), 1); + } zigbee.active = true; zigbee.init_phase = true; // start the state machine diff --git a/tasmota/xdrv_23_zigbee_9a_upload.ino b/tasmota/xdrv_23_zigbee_9a_upload.ino index 0bc60223d..0aac5eb1c 100644 --- a/tasmota/xdrv_23_zigbee_9a_upload.ino +++ b/tasmota/xdrv_23_zigbee_9a_upload.ino @@ -42,13 +42,14 @@ enum ZbUploadSteps { ZBU_IDLE, ZBU_INIT, ZBU_SOFTWARE_RESET, ZBU_SOFTWARE_SEND, ZBU_HARDWARE_RESET, ZBU_PROMPT, ZBU_SYNC, ZBU_UPLOAD, ZBU_EOT, ZBU_COMPLETE, ZBU_DONE, ZBU_ERROR, ZBU_FINISH }; -const uint8_t PIN_ZIGBEE_BOOTLOADER = 5; +const uint8_t PIN_ZIGBEE_DEFAULT_BOOTLOADER = 5; // default pin for Sonoff ZBBridge struct ZBUPLOAD { uint32_t ota_size = 0; - uint32_t sector_counter = 0; + int32_t sector_base = -1; + int32_t sector_counter = -1; uint32_t byte_counter = 0; - char *buffer; + char *buffer = nullptr; uint8_t ota_step = ZBU_IDLE; uint8_t bootloader = 0; uint8_t state = ZBU_IDLE; @@ -65,16 +66,18 @@ uint32_t ZigbeeUploadAvailable(void) { } char ZigbeeUploadFlashRead(void) { - if (0 == ZbUpload.byte_counter) { + if (nullptr == ZbUpload.buffer) { if (!(ZbUpload.buffer = (char *)malloc(SPI_FLASH_SEC_SIZE))) { - return (-1); // Not enough (memory) space + return -1; // Not enough (memory) space } } uint32_t index = ZbUpload.byte_counter % SPI_FLASH_SEC_SIZE; - if (0 == index) { + int32_t sector = ZbUpload.sector_base + ZbUpload.byte_counter / SPI_FLASH_SEC_SIZE; + if (sector != ZbUpload.sector_counter) { + ZbUpload.sector_counter = sector; ESP.flashRead(ZbUpload.sector_counter * SPI_FLASH_SEC_SIZE, (uint32_t*)ZbUpload.buffer, SPI_FLASH_SEC_SIZE); - ZbUpload.sector_counter++; + // AddLog_P(LOG_LEVEL_DEBUG, "= sector %d %*_H", ZbUpload.sector_counter, 256, ZbUpload.buffer); } char data = ZbUpload.buffer[index]; @@ -91,7 +94,6 @@ char ZigbeeUploadFlashRead(void) { // When the source device reaches the last XModem data block, it should be padded to 128 bytes // of data using SUB (ASCII 0x1A) characters. data = XM_SUB; -// if (ZbUpload.buffer) { free(ZbUpload.buffer); } // Don't in case of retries } return data; } @@ -146,7 +148,7 @@ char XModemWaitACK(void) while (!ZigbeeSerial->available()) { delayMicroseconds(100); i++; - if (i > 200) { return -1; } + if (i > 4000) { return -1; } } in_char = ZigbeeSerial->read(); @@ -176,6 +178,7 @@ bool XModemSendPacket(uint32_t packet_no) { uint8_t packet_num = packet_no; + // AddLog(LOG_LEVEL_DEBUG, "++ Packet %d, retries %d, counter %d", packet_no, retries, ZbUpload.byte_counter); // Try to send packet, so header first ZigbeeSerial->write(XM_SOH); ZigbeeSerial->write(packet_num); @@ -215,8 +218,11 @@ void ZigbeeUploadSetSoftwareBootloader() { } void ZigbeeUploadSetBootloader(uint8_t state) { - pinMode(PIN_ZIGBEE_BOOTLOADER, OUTPUT); - digitalWrite(PIN_ZIGBEE_BOOTLOADER, state); // Toggle Gecko bootloader + int32_t pin_bootloader = Pin(GPIO_ZIGBEE_RST, 1); + if (pin_bootloader < 0) { pin_bootloader = PIN_ZIGBEE_DEFAULT_BOOTLOADER; } + AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Bootloader pin %d"), pin_bootloader); + pinMode(pin_bootloader, OUTPUT); + digitalWrite(pin_bootloader, state); // Toggle Gecko bootloader digitalWrite(Pin(GPIO_ZIGBEE_RST), 0); delay(100); // Need to experiment to find a value as low as possible digitalWrite(Pin(GPIO_ZIGBEE_RST), 1); // Reboot MCU EFR32 @@ -301,6 +307,7 @@ bool ZigbeeUploadXmodem(void) { XModem.timeout = millis() + (10 * 1000); // Allow 10 seconds to receive EBL prompt XModem.delay = millis() + (2 * XMODEM_FLUSH_DELAY); ZbUpload.byte_counter = 0; + ZbUpload.sector_counter = -1; ZbUpload.ota_step = ZBU_PROMPT; } break; @@ -311,6 +318,7 @@ bool ZigbeeUploadXmodem(void) { XModem.timeout = millis() + (30 * 1000); // Allow 30 seconds to receive EBL prompt XModem.delay = millis() + (2 * XMODEM_FLUSH_DELAY); ZbUpload.byte_counter = 0; + ZbUpload.sector_counter = -1; ZbUpload.ota_step = ZBU_PROMPT; break; } @@ -332,6 +340,7 @@ bool ZigbeeUploadXmodem(void) { XModem.timeout = millis() + (30 * 1000); // Allow 30 seconds to receive EBL prompt XModem.delay = millis() + (2 * XMODEM_FLUSH_DELAY); ZbUpload.byte_counter = 0; + ZbUpload.sector_counter = -1; ZbUpload.ota_step = ZBU_PROMPT; break; } @@ -390,8 +399,10 @@ bool ZigbeeUploadXmodem(void) { XModem.oldChecksum = (xmodem_sync == XM_NAK); XModem.packet_no = 1; ZbUpload.byte_counter = 0; + ZbUpload.sector_counter = -1; ZbUpload.ota_step = ZBU_UPLOAD; AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: Init packet send")); + delay(100); } } break; @@ -440,6 +451,7 @@ bool ZigbeeUploadXmodem(void) { AddLog(LOG_LEVEL_DEBUG, PSTR("XMD: " D_SUCCESSFUL)); XModem.timeout = millis() + (30 * 1000); // Allow 30 seconds to receive EBL prompt ZbUpload.byte_counter = 0; + ZbUpload.sector_counter = -1; ZbUpload.ota_step = ZBU_COMPLETE; } } @@ -479,7 +491,7 @@ bool ZigbeeUploadXmodem(void) { TasmotaGlobal.sleep = Settings.sleep; // Restore loop sleep } // TasmotaGlobal.restart_flag = 2; // Restart to disable bootloader and use new firmware - if (ZbUpload.buffer) { free(ZbUpload.buffer); } + if (ZbUpload.buffer) { free(ZbUpload.buffer); ZbUpload.buffer = nullptr; } ZbUpload.ota_step = ZBU_FINISH; // Never return to zero without a restart to get a sane Zigbee environment break; } @@ -506,7 +518,8 @@ uint8_t ZigbeeUploadStep1Init(void) { } void ZigbeeUploadStep1Done(uint32_t data, size_t size) { - ZbUpload.sector_counter = data; + ZbUpload.sector_base = data; + ZbUpload.sector_counter = -1; ZbUpload.ota_size = size; ZbUpload.ota_step = ZBU_INIT; ZbUpload.state = ZBU_UPLOAD; // Signal upload done and ready for delayed upload to MCU EFR32 From 6c03d934961e0b941a9bf104625338686c71eeeb Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 30 Apr 2021 21:53:04 +0200 Subject: [PATCH 96/97] Add firmware for Tube's Zigbee EFR32 EZSP 6.7.9 --- CHANGELOG.md | 1 + .../MGM210PA32JIA_ncp-uart-sw_6.7.9.gbl | Bin 0 -> 206672 bytes tools/fw_TubeZigbee_efr32/readme.md | 28 ++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 tools/fw_TubeZigbee_efr32/MGM210PA32JIA_ncp-uart-sw_6.7.9.gbl create mode 100644 tools/fw_TubeZigbee_efr32/readme.md diff --git a/CHANGELOG.md b/CHANGELOG.md index d0656cd43..16561eec7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ## [9.4.0.3] ### Added - Make Telegram command ``TmState`` persistent (#11965) +- Add firmware for Tube's Zigbee coordinator based on EFR32 and ESP32 ## [9.4.0.2] 20210430 ### Added diff --git a/tools/fw_TubeZigbee_efr32/MGM210PA32JIA_ncp-uart-sw_6.7.9.gbl b/tools/fw_TubeZigbee_efr32/MGM210PA32JIA_ncp-uart-sw_6.7.9.gbl new file mode 100644 index 0000000000000000000000000000000000000000..4c7d1e5032724bed644f9ee520c99a1d2a57a8b9 GIT binary patch literal 206672 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%0A-mC&3fGj?SKml~jqsIM74){`%A;6 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 DkyuvD literal 0 HcmV?d00001 diff --git a/tools/fw_TubeZigbee_efr32/readme.md b/tools/fw_TubeZigbee_efr32/readme.md new file mode 100644 index 000000000..20e2929c5 --- /dev/null +++ b/tools/fw_TubeZigbee_efr32/readme.md @@ -0,0 +1,28 @@ +# Tube's Zigbee Gateways firmware + +This firmware is to be used with Tube'z Zigbee EFR32 based gateway: +- https://github.com/tube0013/tube_gateways +- https://www.tubeszb.com/product/efr32_gw_2/6 + +### Currently recommended versions + +- `MGM210PA32JIA_ncp-uart-sw_6.7.9.gbl` - EZSP version 6.7.9 + +The device comes pre-flashed with EZSP 6.9.1_2 but there are unresolved issues with Tasmota and we currently only support 6.7.x. You need to downgrade the flash firmware to 6.7.9. Simply use the **Firmware Upggrade** feature of Tasmota, it will automatically detect that the firmware is for the EFR32 and not for Tasmota. + +## EFR32, EmberZNet and EZSP Protocol Versions + +EZSP stands for "EmberZNet Serial Protocol" which is the default serial interface used in compatible Zigbee coordinator firmware for the Silicon Labs EFR32 hardware family such as the EFR32MG21/MGM210 and EFR32MG12/MGM12 series. + +- https://www.silabs.com/wireless/zigbee/efr32mg21-series-2-socs +- https://www.silabs.com/wireless/zigbee/efr32mg21-series-2-modules +- https://www.silabs.com/wireless/zigbee/efr32mg12-series-1-socs +- https://www.silabs.com/wireless/zigbee/efr32mg12-series-1-modules + +Silicon Labs do not currently have a consolidated list of changes by EmberZNet SDK or EZSP protocol versions. The EZSP additions, changes and deletions have only ever been listed in the [Zigbee EmberZNet Release Notes](https://www.silabs.com/search#q=Zigbee%20EmberZNet%20Release%20Notes&t=All&sort=relevancy) (EmberZNet SDK) under the "New items" section as well as the matching UG100 EZSP Reference Guide included with each EmberZNet SDK release. + +The largest change was between EZSP v4 (first added in EmberZNet 4.7.2 SDK) and EZSP v5 that was added in EmberZNet 5.9.0 SDK which requires the Legacy Frame ID 0xFF. The change from EZSP v5 to EZSP v6 was done in EmberZNet 6.0.0 SDK. The change from EZSP v6 to EZSP v7 was in EmberZNet 6.4.0 SDK. EmberZNet 6.7.0 SDK added EZSP v8 (and Secure EZSP Protocol Version 2). + +Perhaps more important to know is that EZSP v5, v6 and v7 (EmberZNet 6.6.x.x) use the same framing format, but EmberZNet 6.7.x.x/EZSP v8 introduced new framing format and expanded command id field from 8 bits to 16 bits. + +See Silabs [Zigbee & Thread Knowledge Base Articles List](https://silabs-prod.adobecqms.net/community/wireless/zigbee-and-thread/knowledge-base.entry.html/2020/04/01/zigbee_thread_knowledgebasearticleslist-ih5r) for background information. From ae4de426d02195257134899a445cb41492ddc4d6 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 30 Apr 2021 22:14:00 +0200 Subject: [PATCH 97/97] Add Zigbee firmware 6.7.9 for Sonoff ZBBridge --- CHANGELOG.md | 3 ++- .../ncp-uart-nsw_6.7.9_115200.ota | Bin 0 -> 192240 bytes tools/fw_SonoffZigbeeBridge_ezsp/readme.md | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 tools/fw_SonoffZigbeeBridge_ezsp/ncp-uart-nsw_6.7.9_115200.ota diff --git a/CHANGELOG.md b/CHANGELOG.md index 16561eec7..29a92c959 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,8 @@ All notable changes to this project will be documented in this file. ## [9.4.0.3] ### Added - Make Telegram command ``TmState`` persistent (#11965) -- Add firmware for Tube's Zigbee coordinator based on EFR32 and ESP32 +- Add Zigbee firmware for Tube's Zigbee coordinator based on EFR32 and ESP32 +- Add Zigbee firmware 6.7.9 for Sonoff ZBBridge ## [9.4.0.2] 20210430 ### Added diff --git a/tools/fw_SonoffZigbeeBridge_ezsp/ncp-uart-nsw_6.7.9_115200.ota b/tools/fw_SonoffZigbeeBridge_ezsp/ncp-uart-nsw_6.7.9_115200.ota new file mode 100644 index 0000000000000000000000000000000000000000..3d187c02452f11c4075144428d51f35bee32d105 GIT binary patch literal 192240 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

`_Hd&eRbz6&}pHvrFqWHV}>yT{0>JOV|kPb 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

DA3%#H(eUE= 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 z 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 J008x(Ru3ZcHcJ2i literal 0 HcmV?d00001 diff --git a/tools/fw_SonoffZigbeeBridge_ezsp/readme.md b/tools/fw_SonoffZigbeeBridge_ezsp/readme.md index cfa78ae2d..b6132aaf9 100644 --- a/tools/fw_SonoffZigbeeBridge_ezsp/readme.md +++ b/tools/fw_SonoffZigbeeBridge_ezsp/readme.md @@ -6,6 +6,8 @@ - `ncp-uart-sw-6.7.8_115200.ota` - NEW: The current and recommended stable version for EZSP v8 compatible hosts. +- `ncp-uart-nsw_6.7.9_115200.ota` - has some additional bug fixes and is under testing. + ### Archived versions - `ncp-uart-sw_6.7.6_115200.ota` - OLD: Original version for EZSP v8 compatible hosts, (contains a bug that can cause battery of IKEA and Philips remotes to drain).