diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f87f575a..29a92c959 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,15 +3,34 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [9.4.0.1] - +## [9.4.0.3] +### Added +- Make Telegram command ``TmState`` persistent (#11965) +- 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 +- 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) ## [Released] -## [9.4.0] 20210422 +## [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) + +### Changed +- 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) + ## [9.3.1.4] 20210422 ### Added - Command ``TuyaTempSetRes 0..3`` to control Tuya Temperature Set Resolution (#11781) 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: diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 63474515a..337ff0a18 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,81 +70,24 @@ 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. [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v9.4.0 Leslie +## Changelog v9.4.0.2 ### 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) +- 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 -- 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 ### 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/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/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 f605d2728..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,13 +39,17 @@ 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; #endif - + disp_bpp = 16; } uint16_t Renderer::GetColorFromIndex(uint8_t index) { @@ -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,40 @@ 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; +} + +LVGL_PARAMS *Renderer::lvgl_pars(void) { + return &lvgl_param; +} + + +#ifndef LVGL_RENDERER + void VButton::xdrawButton(bool inverted) { wr_redir=1; drawButton(inverted); @@ -683,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 c0e244c6c..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,15 +9,53 @@ #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 // 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); + +#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: @@ -42,12 +80,24 @@ 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); + virtual LVGL_PARAMS *lvgl_pars(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; + 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)); @@ -84,6 +134,7 @@ struct Slider { uint16_t barcol; }; +#ifndef LVGL_RENDERER class VButton : public Adafruit_GFX_Button { public: TButton_State vpower; @@ -94,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/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/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 diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index a0403e927..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,\ @@ -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; @@ -53,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; @@ -95,7 +111,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 @@ -106,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 { @@ -269,14 +286,23 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { lutptime = next_val(&lp1); lut3time = next_val(&lp1); break; + case 'B': + lvgl_param.fluslines = next_val(&lp1); + lvgl_param.use_dma = next_val(&lp1); + break; } } } - 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++; } } @@ -348,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) { @@ -441,9 +459,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); @@ -452,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; @@ -483,9 +520,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; } @@ -533,8 +581,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"); @@ -899,6 +949,9 @@ for(y=h; y>0; y--) { void uDisplay::Splash(void) { + + if (splash_font < 0) return; + if (ep_mode) { Updateframe(); delay(lut3time * 10); @@ -911,12 +964,27 @@ 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) { + if (!ep_mode) { + 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 } else { - SPI_CS_LOW SPI_BEGIN_TRANSACTION + SPI_CS_LOW setAddrWindow_int(x0, y0, x1 - x0, y1 - y0 ); } } @@ -971,14 +1039,95 @@ void uDisplay::setAddrWindow_int(uint16_t x, uint16_t y, uint16_t w, uint16_t h) } -void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean first) { +#define CNV_B1_OR ((0x10<<11) | (0x20<<5) | 0x10) +static inline uint8_t ulv_color_to1(uint16_t color) { + 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; + }*/ +} + +// 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; - while (len--) { - color = *data++; - WriteColor(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 ( (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++); + } + } + } else { + // 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) { @@ -1092,7 +1241,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 +1315,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 @@ -1203,7 +1359,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; } @@ -1684,3 +1840,159 @@ void uDisplay::drawFastHLine_EPD(int16_t x, int16_t y, int16_t w, uint16_t color x++; } } + + +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 +} + + +// 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(); + + 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 8cf0aff7f..c93c1acb4 100755 --- a/lib/lib_display/UDisplay/uDisplay.h +++ b/lib/lib_display/UDisplay/uDisplay.h @@ -5,6 +5,9 @@ #include #include #include +#ifdef ESP32 +#include "driver/spi_master.h" +#endif #define _UDSP_I2C 1 #define _UDSP_SPI 2 @@ -58,8 +61,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); @@ -79,9 +82,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,8 +93,12 @@ 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 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); @@ -156,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; @@ -203,6 +210,25 @@ 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; + void pushColorsMono(uint16_t *data, uint16_t len); +#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 0e36a6dde..74d28af2e 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. @@ -481,6 +485,9 @@ void RA8876::DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font) { } bool RA8876::initDisplay() { + + lvgl_param.fluslines = 10; + SPI.beginTransaction(m_spiSettings); // Set chip config register @@ -590,7 +597,7 @@ bool RA8876::initDisplay() { // TODO: Track backlight pin and turn on backlight SPI.endTransaction(); - +initdone = 1; return true; } @@ -932,19 +939,25 @@ 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--) { - 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(); @@ -1453,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/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/Berry/default/be_driverlib.c b/lib/libesp32/Berry/default/be_driverlib.c index fd9c2ccbb..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); @@ -30,8 +28,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 +49,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}, @@ -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 020766460..eb267f5db 100644 --- a/lib/libesp32/Berry/default/be_energylib.c +++ b/lib/libesp32/Berry/default/be_energylib.c @@ -5,12 +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), }; @@ -18,9 +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 1aa4cc771..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), @@ -290,7 +289,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..a536fd6df 100644 --- a/lib/libesp32/Berry/default/be_light_lib.c +++ b/lib/libesp32/Berry/default/be_light_lib.c @@ -3,11 +3,9 @@ * * 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); extern int l_setlight(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,9 +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 b0833d54b..0bce12420 100644 --- a/lib/libesp32/Berry/default/be_lv_lvgl_module.c +++ b/lib/libesp32/Berry/default/be_lv_lvgl_module.c @@ -4,9 +4,7 @@ /******************************************************************** * LVGL Module *******************************************************************/ -#include "be_object.h" -#include "be_string.h" -#include "be_gc.h" +#include "be_constobj.h" #ifdef USE_LVGL @@ -14,6 +12,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 +611,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), @@ -627,67 +630,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 @@ -1148,6 +1151,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/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_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_tasmotalib.c b/lib/libesp32/Berry/default/be_tasmotalib.c index 42589dd3a..d9539dcbe 100644 --- a/lib/libesp32/Berry/default/be_tasmotalib.c +++ b/lib/libesp32/Berry/default/be_tasmotalib.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" extern int l_getFreeHeap(bvm *vm); extern int l_publish(bvm *vm); @@ -13,6 +11,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); @@ -58,9 +58,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_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}, @@ -118,7 +118,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 @@ -146,7 +146,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 @@ -174,13 +174,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_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}, @@ -227,7 +227,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 @@ -255,7 +255,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 @@ -292,12 +292,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_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}, @@ -356,7 +356,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 @@ -384,7 +384,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 @@ -412,12 +412,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_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}, @@ -447,7 +447,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 @@ -475,7 +475,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 @@ -496,10 +496,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_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}, @@ -519,7 +519,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 @@ -547,7 +547,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 @@ -598,22 +598,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_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}, @@ -784,7 +784,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 @@ -812,7 +812,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 @@ -848,15 +848,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_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}, @@ -915,7 +915,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 @@ -943,7 +943,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 @@ -963,11 +963,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_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}, @@ -997,7 +997,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 @@ -1025,7 +1025,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 @@ -1056,12 +1056,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_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}, @@ -1105,7 +1105,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 @@ -1133,7 +1133,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 @@ -1160,12 +1160,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_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}, @@ -1195,7 +1195,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 @@ -1223,7 +1223,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 @@ -1245,10 +1245,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_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}, @@ -1268,7 +1268,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 @@ -1296,7 +1296,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 @@ -1325,13 +1325,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_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}, @@ -1374,7 +1374,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 @@ -1402,7 +1402,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 @@ -1424,11 +1424,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}, @@ -1437,51 +1438,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); /*******************************************************************/ @@ -1523,30 +1489,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}, @@ -1575,176 +1542,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); /*******************************************************************/ @@ -1764,10 +1696,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_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}, @@ -1792,7 +1724,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 @@ -1820,7 +1752,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 @@ -1866,24 +1798,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_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}, @@ -1985,7 +1917,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 @@ -2013,7 +1945,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 @@ -2038,12 +1970,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_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}, @@ -2083,7 +2015,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 @@ -2111,7 +2043,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 @@ -2120,6 +2052,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, 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}, + { { .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) " @@ -2137,13 +2129,13 @@ static const bclosure wire_scan_closure = { ** 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_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}, @@ -2178,7 +2170,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 @@ -2206,7 +2198,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 @@ -2231,11 +2223,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_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}, @@ -2265,7 +2257,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 @@ -2293,7 +2285,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 @@ -2320,11 +2312,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_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}, @@ -2356,7 +2348,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 @@ -2384,7 +2376,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 @@ -2393,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 }, @@ -2415,6 +2407,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 +2449,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 }, @@ -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 1ac65dd82..70de0989b 100644 --- a/lib/libesp32/Berry/default/be_wirelib.c +++ b/lib/libesp32/Berry/default/be_wirelib.c @@ -5,9 +5,9 @@ * * 2 wire communication - I2C *******************************************************************/ -#include "be_object.h" -#include "be_string.h" -#include "be_gc.h" +#include "be_constobj.h" + +#ifdef USE_I2C extern int b_wire_init(bvm *vm); @@ -41,14 +41,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_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}, @@ -139,11 +139,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_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}, @@ -206,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 }, @@ -232,12 +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/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/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 5b083c19e..3254fc34e 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,1626 +1,1706 @@ -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_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_STYLE_OUTLINE_WIDTH; +extern const bcstring be_const_str_get_line_count; +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_clear_btn_ctrl_all; +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_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_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_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_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_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_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_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_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_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_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_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_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_SM16716_CLK; -extern const bcstring be_const_str_PMS5003_RX; -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_pin_used; -extern const bcstring be_const_str_get_angle; -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_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_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_set_shadow_blend_mode; -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_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_ROT1B; +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_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_STYLE_PATTERN_IMAGE; -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_ALIGN_IN_TOP_MID; +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_STYLE_SHADOW_BLEND_MODE; +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_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_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_OUTPUT_LO; -extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_CHART_PART_BG; +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_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_SENSOR_END; +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_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_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 aea00d40e..696d9067c 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,2437 +1,2557 @@ -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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(ALIGN_IN_TOP_MID, "ALIGN_IN_TOP_MID", 717802025u, 0, 16, &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(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(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(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_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, + (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_GESTURE_DIR_BOTTOM, - (const bstring *)&be_const_str_fade_in, - (const bstring *)&be_const_str_get_cell_merge_right, + (const bstring *)&be_const_str_SLIDER_TYPE_RANGE, + (const bstring *)&be_const_str_set_ctrl_map, 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_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_PURPLE, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_BTNMATRIX_CTRL_DISABLED, NULL, NULL, - (const bstring *)&be_const_str_MCP39F5_RST, - (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_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_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, + (const bstring *)&be_const_str_get_max_height, NULL, - (const bstring *)&be_const_str_CHART_UPDATE_MODE_CIRCULAR, - (const bstring *)&be_const_str_ANIM_ON, - (const bstring *)&be_const_str_get_color, + (const bstring *)&be_const_str_IRRECV, + (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_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, + (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_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_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_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_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, - 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_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_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, - NULL, - NULL, - (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, - NULL, - (const bstring *)&be_const_str_ALIGN_OUT_RIGHT_MID, - 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_ROT1A, - (const bstring *)&be_const_str_EXS_ENABLE, - 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, - 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, - 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_elif, (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, + (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_ALIGN_OUT_TOP_MID, - (const bstring *)&be_const_str_get_btn_label, - (const bstring *)&be_const_str_OBJMASK_PART_MAIN, + (const bstring *)&be_const_str_focus, 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, + (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_TASMOTACLIENT_TXD, + (const bstring *)&be_const_str_STYLE_PATTERN_RECOLOR_OPA, + NULL, + (const bstring *)&be_const_str_HRE_CLOCK, + NULL, + (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_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, + (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_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_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_EVENT_REFRESH, + (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_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_lv_slider, - 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_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_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, + (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, - 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_DCKI, + (const bstring *)&be_const_str_MCP39F5_TX, + (const bstring *)&be_const_str_ADC_BUTTON, (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_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_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_DDSU666_TX, - (const bstring *)&be_const_str_opt_neq, (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_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_STYLE_LINE_WIDTH, + (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_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_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, + 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_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_SYMBOL_BATTERY_2, + (const bstring *)&be_const_str_add_style, + (const bstring *)&be_const_str_SYMBOL_UP, 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___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, + NULL, + 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_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, - (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_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 = 802, - .count = 1605, + .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_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/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/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..97f56d038 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 = GC_CONST, \ + .extra = 0, \ + .slen = _len, \ + .hash = 0, \ + .s = _s \ } #define be_local_const_str(_name) (bstring*) &be_local_const_str_##_name @@ -296,16 +296,16 @@ 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 */ \ - GC_CONST, /* marked outside of GC */ \ + BE_PROTO, /* type BE_PROTO */ \ + 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 */ \ @@ -319,8 +319,8 @@ typedef struct bntvmodule { #define be_define_local_closure(_name) \ const bclosure _name##_closure = { \ NULL, /* bgcobject *next */ \ - 36, /* type BE_CLOSURE */ \ - GC_CONST, /* marked */ \ + BE_CLOSURE, /* type BE_CLOSURE */ \ + GC_CONST, /* marked GC_CONST */ \ 0, /* nupvals */ \ NULL, /* bgcobject *gray */ \ (bproto*) &_name##_proto, /* proto */ \ diff --git a/lib/libesp32_epdiy/src/epd4in7.cpp b/lib/libesp32_epdiy/src/epd4in7.cpp index 9f0e44e86..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(); @@ -157,26 +158,49 @@ 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++; +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; +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 old mode 100644 new mode 100755 index 8f9e62570..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 @@ -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; @@ -22,107 +24,16 @@ 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*/ } @@ -139,64 +50,65 @@ 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). -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); +// // 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; - 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 - } +// uint16_t width = (area->x2 - area->x1 + 1); +// uint16_t height = (area->y2 - area->y1 + 1); - uDisplay_lvgl *display = glue->display; +// // 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 +// // } - 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; - } +// Renderer *display = glue->display; - // 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); +// 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; +// } - lv_disp_flush_ready(disp); -} +// 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); + +// } + +// #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 ------------------------------------------------------ @@ -208,9 +120,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 @@ -221,9 +130,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 } @@ -286,23 +192,34 @@ 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) -// 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; // 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; + uint8_t flushlines = tft->lvgl_pars()->fluslines; + lvgl_buffer_size = tft->width() * (flushlines ? flushlines:LV_BUFFER_ROWS); + 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])) { display = tft; touchscreen = (void *)touch; @@ -316,8 +233,8 @@ LvGLStatus Adafruit_LvGL_Glue::begin(uDisplay_lvgl *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_HOR_RES_MAX * LV_BUFFER_ROWS); + lv_pixel_buf2, // 2nd half buf + lvgl_buffer_size); // Initialize LvGL display driver lv_disp_drv_init(&lv_disp_drv); diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h old mode 100644 new mode 100755 index f60f86d41..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 @@ -2,7 +2,7 @@ #define _ADAFRUIT_LVGL_GLUE_H_ #include // LittlevGL core lib -#include +#include #include // ESP32-specific timer lib #include @@ -27,10 +27,11 @@ 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); + 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! - 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,10 +41,10 @@ public: void stopScreenshot(void) { screenshot = nullptr; } private: - LvGLStatus begin(uDisplay_lvgl *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; + 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 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/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/pio-tools/override_copy.py b/pio-tools/override_copy.py index 5318f9169..4f17079b2 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") diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index d1897880a..b9a9a7654 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 +; Custom config Zigbee [env] -> platformio_tasmota_cenv_example.ini extra_configs = platformio_tasmota_cenv.ini ; *** Build/upload environment @@ -101,8 +102,8 @@ 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 - mcspr/toolchain-xtensa @ 5.100200.201223 +; *** 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 build_flags = ${esp82xx_defaults.build_flags} @@ -119,12 +120,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 @@ -161,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 diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini new file mode 100644 index 000000000..6570d9e36 --- /dev/null +++ b/platformio_tasmota_cenv_sample.ini @@ -0,0 +1,63 @@ +[env:tasmota-zigbee] +board = esp8266_4M2M +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 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 # 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/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 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" 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 000000000..5f71db4e7 Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/DSEG7Classic-Bold.ttf differ diff --git a/tasmota/lvgl_berry/fonts/DSEG7/DSEG7Classic-BoldItalic.ttf b/tasmota/lvgl_berry/fonts/DSEG7/DSEG7Classic-BoldItalic.ttf new file mode 100644 index 000000000..de0b43a76 Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/DSEG7Classic-BoldItalic.ttf differ diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_10.lvfont b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_10.lvfont new file mode 100644 index 000000000..54cce1507 Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_10.lvfont differ 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 000000000..dfcaeec5e Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_12.lvfont differ 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 000000000..1b7eda875 Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_14.lvfont differ diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_16.lvfont b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_16.lvfont new file mode 100644 index 000000000..dea988369 Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_16.lvfont differ 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 000000000..dc8d895b0 Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_18.lvfont differ diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_20.lvfont b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_20.lvfont new file mode 100644 index 000000000..5c13f78c0 Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_20.lvfont differ diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_24.lvfont b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_24.lvfont new file mode 100644 index 000000000..8766137a4 Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_24.lvfont differ diff --git a/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_28.lvfont b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_28.lvfont new file mode 100644 index 000000000..405c58573 Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_28.lvfont differ 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 000000000..32f389611 Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_36.lvfont differ 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 000000000..8fbb10dcb Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_48.lvfont differ 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 000000000..625eda6e8 Binary files /dev/null and b/tasmota/lvgl_berry/fonts/DSEG7/font_files/seg7_8.lvfont differ diff --git a/tasmota/lvgl_berry/fonts/DSEG7/gen_seg7_fonts.bash b/tasmota/lvgl_berry/fonts/DSEG7/gen_seg7_fonts.bash new file mode 100755 index 000000000..3c019eead --- /dev/null +++ b/tasmota/lvgl_berry/fonts/DSEG7/gen_seg7_fonts.bash @@ -0,0 +1,42 @@ +#!/bin/bash +# +# Convert fonts to files and C files +# + +FONT_CONV="lv_font_conv" +FONT_DIR="font_files/" +C_DIR="c_files/" + +# from size 8 to 18, pixel perfect non-italic + +${FONT_CONV} --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 8 --format bin --bpp 1 -o ${FONT_DIR}/seg7_8.lvfont +${FONT_CONV} --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 10 --format bin --bpp 1 -o ${FONT_DIR}/seg7_10.lvfont +${FONT_CONV} --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 12 --format bin --bpp 1 -o ${FONT_DIR}/seg7_12.lvfont +${FONT_CONV} --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 14 --format bin --bpp 1 -o ${FONT_DIR}/seg7_14.lvfont +${FONT_CONV} --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 16 --format bin --bpp 1 -o ${FONT_DIR}/seg7_16.lvfont +${FONT_CONV} --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 18 --format bin --bpp 1 -o ${FONT_DIR}/seg7_18.lvfont + +# above 18, 2 bits per pixel, italic + +${FONT_CONV} --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 20 --format bin --bpp 2 -o ${FONT_DIR}/seg7_20.lvfont +${FONT_CONV} --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 24 --format bin --bpp 2 -o ${FONT_DIR}/seg7_24.lvfont +${FONT_CONV} --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 28 --format bin --bpp 2 -o ${FONT_DIR}/seg7_28.lvfont +${FONT_CONV} --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 36 --format bin --bpp 2 -o ${FONT_DIR}/seg7_36.lvfont +${FONT_CONV} --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 48 --format bin --bpp 2 -o ${FONT_DIR}/seg7_48.lvfont + +# from size 8 to 18, pixel perfect non-italic + +${FONT_CONV} --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 8 --format lvgl --bpp 1 -o ${C_DIR}/seg7_8.c +${FONT_CONV} --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 10 --format lvgl --bpp 1 -o ${C_DIR}/seg7_10.c +${FONT_CONV} --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 12 --format lvgl --bpp 1 -o ${C_DIR}/seg7_12.c +${FONT_CONV} --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 14 --format lvgl --bpp 1 -o ${C_DIR}/seg7_14.c +${FONT_CONV} --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 16 --format lvgl --bpp 1 -o ${C_DIR}/seg7_16.c +${FONT_CONV} --font DSEG7Classic-Bold.ttf -r 0x20-0x3F --size 18 --format lvgl --bpp 1 -o ${C_DIR}/seg7_18.c + +# above 18, 2 bits per pixel, italic + +${FONT_CONV} --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 20 --format lvgl --bpp 2 -o ${C_DIR}/seg7_20.c +${FONT_CONV} --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 24 --format lvgl --bpp 2 -o ${C_DIR}/seg7_24.c +${FONT_CONV} --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 28 --format lvgl --bpp 2 -o ${C_DIR}/seg7_28.c +${FONT_CONV} --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 36 --format lvgl --bpp 2 -o ${C_DIR}/seg7_36.c +${FONT_CONV} --font DSEG7Classic-BoldItalic.ttf -r 0x20-0x3F --size 48 --format lvgl --bpp 2 -o ${C_DIR}/seg7_48.c diff --git a/tasmota/lvgl_berry/tasmota_lv_conf.h b/tasmota/lvgl_berry/tasmota_lv_conf.h index ccc4146dc..a9eec7018 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 @@ -425,8 +425,8 @@ typedef void * lv_indev_drv_user_data_t; /*Type of user data in the i /*Pixel perfect monospace font * http://pelulamu.net/unscii/ */ -#define LV_FONT_UNSCII_8 0 -#define LV_FONT_UNSCII_16 0 +#define LV_FONT_UNSCII_8 1 +#define LV_FONT_UNSCII_16 1 /* Optionally declare your custom fonts here. * You can use these fonts as default font too @@ -434,7 +434,19 @@ typedef void * lv_indev_drv_user_data_t; /*Type of user data in the i * #define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(my_font_1) \ * LV_FONT_DECLARE(my_font_2) */ -#define LV_FONT_CUSTOM_DECLARE +// Tasmota specific +#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(seg7_8) \ + LV_FONT_DECLARE(seg7_10) \ + LV_FONT_DECLARE(seg7_12) \ + LV_FONT_DECLARE(seg7_14) \ + LV_FONT_DECLARE(seg7_16) \ + LV_FONT_DECLARE(seg7_18) \ + LV_FONT_DECLARE(seg7_20) \ + LV_FONT_DECLARE(seg7_24) \ + LV_FONT_DECLARE(seg7_28) \ + LV_FONT_DECLARE(seg7_36) \ + LV_FONT_DECLARE(seg7_48) \ + /* Enable it if you have fonts with a lot of characters. * The limit depends on the font size, font face and bpp diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index e046703dd..5861c5710 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) @@ -684,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) @@ -784,6 +786,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/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 3eb10d608..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 }; @@ -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 } /********************************************************************************************/ @@ -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/support.ino b/tasmota/support.ino index f86cb1f16..954a553bd 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -515,6 +515,14 @@ char* UpperCase_P(char* dest, const char* source) return dest; } +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]; + UpperCase_P(case_search, search); + return strstr(case_source, case_search); +} + char* Trim(char* p) { if (*p != '\0') { @@ -1395,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]; @@ -1402,6 +1411,8 @@ bool ValidTemplate(const char *search) { LowerCase(search_name, search); return (strstr(template_name, search_name) != nullptr); +*/ + return (StrCaseStr_P(SettingsText(SET_TEMPLATE_NAME), search) != nullptr); } String AnyModuleName(uint32_t index) @@ -1645,6 +1656,23 @@ 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) || (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 + 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 + 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_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_command.ino b/tasmota/support_command.ino index a701203de..13744c602 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 }; @@ -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, ";"); @@ -2114,6 +2123,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 +2235,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_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"); 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 bccf37f7f..893d8418e 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 @@ -1147,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 (StrCaseStr_P(TasmotaGlobal.mqtt_data, PSTR(".gz"))) { ota_retry_counter = 1; } else { strcat_P(TasmotaGlobal.mqtt_data, PSTR(".gz")); @@ -1286,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 @@ -1324,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 @@ -1678,6 +1682,19 @@ 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 + 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/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.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 02aef4f39..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 @@ -288,6 +287,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; 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/tasmota_template.h b/tasmota/tasmota_template.h index 542539331..9808e018d 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, GPIO_SWT1_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|" D_SENSOR_SWITCH "_d|" +#endif ; const char kSensorNamesFixed[] PROGMEM = @@ -362,11 +368,20 @@ 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 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 @@ -685,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/tasmota_version.h b/tasmota/tasmota_version.h index 0f79cf4d9..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 = 0x09040000; +const uint32_t VERSION = 0x09040003; #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); } diff --git a/tasmota/xdrv_02_mqtt.ino b/tasmota/xdrv_02_mqtt.ino index b72cc671c..3d474a684 100644 --- a/tasmota/xdrv_02_mqtt.ino +++ b/tasmota/xdrv_02_mqtt.ino @@ -23,6 +23,14 @@ #define MQTT_WIFI_CLIENT_TIMEOUT 200 // Wifi TCP connection timeout (default is 5000 mSec) #endif +#ifdef USE_MQTT_AZURE_IOT +#include +#include +#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 @@ -216,6 +224,53 @@ 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); + 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; +} +#endif // USE_MQTT_AZURE_IOT + bool MqttIsConnected(void) { return MqttClient.connected(); } @@ -225,7 +280,14 @@ void MqttDisconnect(void) { } void MqttSubscribeLib(const char *topic) { +#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 } @@ -244,7 +306,24 @@ bool MqttPublishLib(const char* topic, bool retained) { } } - bool result = MqttClient.publish(topic, TasmotaGlobal.mqtt_data, retained); + bool result; +#ifdef USE_MQTT_AZURE_IOT + String sourceTopicString = urlEncodeBase64(String(topic)); + 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_DEBUG, PSTR(D_LOG_MQTT "Sending '%s'"), TasmotaGlobal.mqtt_data); + } else { + 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 + result = MqttClient.publish(topic, TasmotaGlobal.mqtt_data, retained); +#endif // USE_MQTT_AZURE_IOT yield(); // #3313 return result; } @@ -276,7 +355,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]; +#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)); @@ -698,7 +794,18 @@ void MqttReconnect(void) { } #endif +#ifdef USE_MQTT_AZURE_IOT + 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(), 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 #ifdef USE_MQTT_TLS if (Mqtt.mqtt_tls) { #ifdef ESP8266 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..3f5cb8e73 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); @@ -209,7 +212,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 +1511,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; @@ -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; } @@ -2599,6 +2602,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)) { @@ -2621,6 +2665,16 @@ 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); + SCRIPT_SKIP_SPACES + fvar = lvgl_test(&lp, fvar); + lp++; + len = 0; + goto exit; + } +#endif // USE_LVGL break; case 'm': if (!strncmp(vname, "med(", 4)) { @@ -3289,7 +3343,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); @@ -3412,22 +3466,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 '%': @@ -3582,6 +3656,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; @@ -4684,6 +4764,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; @@ -5241,8 +5327,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]); } @@ -6407,10 +6493,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); @@ -6418,23 +6506,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); } @@ -7704,6 +7827,337 @@ 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" + +#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 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; + } + } +} + + +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); + } +} + +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 + *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 + +#define CANVAS_WIDTH 200 // Dimensions in pixels +#define CANVAS_HEIGHT 150 + +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); + + // 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; + + // 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); + + // 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); + */ +} + + +#endif // USE_LVGL /*********************************************************************************************\ * Interface @@ -7868,6 +8322,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; @@ -7886,13 +8346,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_13_display.ino b/tasmota/xdrv_13_display.ino index 429f09967..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; @@ -60,7 +53,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 +578,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); } @@ -824,27 +817,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; @@ -2664,273 +2666,6 @@ void AddValue(uint8_t num,float fval) { } #endif // USE_GRAPH -/*********************************************************************************************\ - * 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; - -#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 - -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)) { - -#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_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index b3586909d..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 { @@ -1357,6 +1359,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 +1384,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.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.temperature_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]); diff --git a/tasmota/xdrv_20_hue.ino b/tasmota/xdrv_20_hue.ino index e41233b9c..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 { @@ -992,7 +995,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); } 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_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")]; 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..8ed8b82eb 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 (((uint32_t)&_FS_end) > 0x40280000) && (((uint32_t)&_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..1c4b9b525 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,126 @@ 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; } + 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(""); - 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()) { + 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 +265,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 +283,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..70bfc53c4 --- /dev/null +++ b/tasmota/xdrv_23_zigbee_4c_devices.ino @@ -0,0 +1,505 @@ +/* + 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) { + 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"); + } + } +#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..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) @@ -481,8 +485,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 +915,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_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 diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index 00309085b..973a5a902 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,10 +2177,10 @@ 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(); + if (!zigbee.init_phase) { + hibernateAllData(); + restoreDumpAllDevices(); + } break; } } 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; } 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_lvlg.ino b/tasmota/xdrv_52_3_berry_lvlg.ino index 2d07d8886..93e15d441 100644 --- a/tasmota/xdrv_52_3_berry_lvlg.ino +++ b/tasmota/xdrv_52_3_berry_lvlg.ino @@ -226,6 +226,23 @@ extern "C" { be_return(vm); } + int lv0_load_font(bvm *vm) { + int argc = be_top(vm); + if (argc == 1 && be_isstring(vm, 1)) { + lv_font_t * font = lv_font_load(be_tostring(vm, 1)); + if (font != nullptr) { + be_getglobal(vm, "lv_font"); + be_pushcomptr(vm, font); + be_call(vm, 1); + be_pop(vm, 1); + be_return(vm); + } else { + be_return_nil(vm); + } + } + be_raise(vm, kTypeError, nullptr); + } + int lv0_load_montserrat_font(bvm *vm) { int argc = be_top(vm); if (argc == 1 && be_isint(vm, 1)) { @@ -383,6 +400,40 @@ extern "C" { be_raise(vm, kTypeError, nullptr); } + int lv0_load_seg7_font(bvm *vm) { + int argc = be_top(vm); + if (argc == 1 && be_isint(vm, 1)) { + lv_font_t * font = nullptr; + int32_t font_size = be_toindex(vm, 1); + + switch (font_size) { + case 8: font = &seg7_8; break; + case 10: font = &seg7_10; break; + case 12: font = &seg7_12; break; + case 14: font = &seg7_14; break; + case 16: font = &seg7_16; break; + case 18: font = &seg7_18; break; + case 20: font = &seg7_20; break; + case 24: font = &seg7_24; break; + case 28: font = &seg7_28; break; + case 36: font = &seg7_36; break; + case 48: font = &seg7_48; break; + default: break; + } + + if (font != nullptr) { + be_getglobal(vm, "lv_font"); + be_pushcomptr(vm, font); + be_call(vm, 1); + be_pop(vm, 1); + be_return(vm); + } else { + be_return_nil(vm); + } + } + be_raise(vm, kTypeError, nullptr); + } + #include "lvgl_berry/tasmota_logo_64_truecolor_alpha.h" void lv_img_set_tasmota_logo(lv_obj_t * img) { 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); 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..da5e94f08 100644 --- a/tasmota/xdrv_52_7_berry_embedded.ino +++ b/tasmota/xdrv_52_7_berry_embedded.ino @@ -32,10 +32,12 @@ const char berry_prog[] = // auto-import modules // // import alias +#ifdef USE_ENERGY_SENSOR "import energy " +#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 " @@ -350,7 +352,7 @@ const char berry_prog[] = // "end " // "end " - "end " + // "end " // // Monkey patch `Driver` class - To be continued // "class Driver2 : Driver " @@ -376,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 :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 diff --git a/tasmota/xdrv_54_lvgl.ino b/tasmota/xdrv_54_lvgl.ino index a73fc629a..c67640ef6 100644 --- a/tasmota/xdrv_54_lvgl.ino +++ b/tasmota/xdrv_54_lvgl.ino @@ -20,8 +20,9 @@ #ifdef USE_LVGL -#include +#include #include "lvgl.h" +#include "tasmota_lvgl_assets.h" // force compilation of assets #define XDRV_54 54 @@ -37,12 +38,13 @@ * 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 = 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" { @@ -118,9 +120,68 @@ 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) { +#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; + } 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, false); + display->setAddrWindow(0,0,0,0); + uint32_t chrono_time = millis() - chrono_start; + + lv_disp_flush_ready(disp); + + 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); + } +} + /************************************************************ * Callbacks for file system access from LVGL - * + * * Useful to load fonts or images from file system ************************************************************/ @@ -216,7 +277,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); @@ -237,11 +298,14 @@ 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) { @@ -250,25 +314,22 @@ void start_lvgl(const char * uconfig) { return; } - if (udisp == nullptr) { - udisp = new uDisplay_lvgl((char*)uconfig); + if (uconfig && !renderer) { +#ifdef USE_UNIVERSAL_DISPLAY // TODO - we will probably support only UNIV_DISPLAY + renderer = Init_uDisplay((char*)uconfig, -1); + if (!renderer) return; +#else + return; +#endif } - 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, (void*)1, false); if (status != LVGL_OK) { AddLog(LOG_LEVEL_ERROR, PSTR("Glue error %d"), status); return; @@ -276,8 +337,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); @@ -318,6 +381,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")); } /*********************************************************************************************\ 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/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; } 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_04_ili9341.ino b/tasmota/xdsp_04_ili9341.ino old mode 100644 new mode 100755 index 73d6c183e..32844cab0 --- 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_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")); + } } 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_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; diff --git a/tasmota/xdsp_17_universal.ino b/tasmota/xdsp_17_universal.ino index 3bf8710b2..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,21 +27,33 @@ 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 + +void Core2DisplayPower(uint8_t on); +void Core2DisplayDim(uint8_t dim); + //#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 +83,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 +205,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 +229,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 +239,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)); @@ -296,19 +322,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; @@ -317,21 +349,6 @@ uDisplay *udisp; /*********************************************************************************************/ -void Core2DisplayPower(uint8_t on); -void Core2DisplayDim(uint8_t dim); - -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); } @@ -438,12 +455,12 @@ 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) { - Init_uDisplay(0); + Init_uDisplay(0, -1); } else if (udisp_init_done && (XDSP_17 == Settings.display_model)) { switch (function) { @@ -469,6 +486,7 @@ bool Xdsp17(uint8_t function) } return result; } +#endif // !LVGL_RENDERER #endif // USE_UNIVERSAL_DISPLAY #endif // USE_DISPLAY 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) { 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) { diff --git a/tasmota/xsns_75_prometheus.ino b/tasmota/xsns_75_prometheus.ino index 0b0251229..223312987 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 ""; } @@ -86,17 +89,29 @@ 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); } + // 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); @@ -148,8 +163,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); + } } } } 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 000000000..3d187c024 Binary files /dev/null and b/tools/fw_SonoffZigbeeBridge_ezsp/ncp-uart-nsw_6.7.9_115200.ota differ 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). 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 000000000..4c7d1e503 Binary files /dev/null and b/tools/fw_TubeZigbee_efr32/MGM210PA32JIA_ncp-uart-sw_6.7.9.gbl differ 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. diff --git a/tools/lv_berry/convert.py b/tools/lv_berry/convert.py index 1283f4cc1..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 @@ -400,6 +397,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 +515,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), @@ -539,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 @@ -684,6 +686,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)