diff --git a/lib/libesp32/berry/LICENSE b/lib/libesp32/berry/LICENSE deleted file mode 100644 index 609969272..000000000 --- a/lib/libesp32/berry/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018-2020 Guan Wenliang - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/lib/libesp32/berry/Makefile b/lib/libesp32/berry/Makefile deleted file mode 100644 index f9d61125d..000000000 --- a/lib/libesp32/berry/Makefile +++ /dev/null @@ -1,105 +0,0 @@ -CFLAGS = -Wall -Wextra -std=c99 -pedantic-errors -O2 -LIBS = -lm -TARGET = berry -CC ?= gcc -MKDIR = mkdir -LFLAGS = - -INCPATH = src default -SRCPATH = src default -GENERATE = generate -CONFIG = default/berry_conf.h -COC = tools/coc/coc -PY = python3 -PYCOC = tools/pycoc/main.py -CONST_TAB = $(GENERATE)/be_const_strtab.h -MAKE_COC = $(MAKE) -C tools/coc - -ifeq ($(OS), Windows_NT) # Windows - CFLAGS += -Wno-format # for "%I64d" warning - LFLAGS += -Wl,--out-implib,berry.lib # export symbols lib for dll linked - TARGET := $(TARGET).exe - COC := $(COC).exe - PY := $(PY).exe -else - CFLAGS += -DUSE_READLINE_LIB - LIBS += -lreadline -ldl - OS := $(shell uname) - ifeq ($(OS), Linux) - LFLAGS += -Wl,--export-dynamic - endif -endif - -ifneq ($(V), 1) - Q=@ - MSG=@echo - MAKE_COC += -s Q=$(Q) -else - MSG=@true -endif - -ifeq ($(TEST), 1) - CFLAGS += -fprofile-arcs -ftest-coverage - LFLAGS += -fprofile-arcs -ftest-coverage -endif - -SRCS = $(foreach dir, $(SRCPATH), $(wildcard $(dir)/*.c)) -OBJS = $(patsubst %.c, %.o, $(SRCS)) -DEPS = $(patsubst %.c, %.d, $(SRCS)) -INCFLAGS = $(foreach dir, $(INCPATH), -I"$(dir)") - -.PHONY : clean - -all: $(TARGET) - -debug: CFLAGS += -O0 -g -DBE_DEBUG -debug: all - -test: CFLAGS += --coverage -test: LFLAGS += --coverage -test: all - $(MSG) [Run Testcases...] - $(Q) ./testall.be - $(Q) $(RM) */*.gcno */*.gcda - -$(TARGET): $(OBJS) - $(MSG) [Linking...] - $(Q) $(CC) $(OBJS) $(LFLAGS) $(LIBS) -o $@ - $(MSG) done - -$(OBJS): %.o: %.c - $(MSG) [Compile] $< - $(Q) $(CC) -MM $(CFLAGS) $(INCFLAGS) -MT"$*.d" -MT"$(<:.c=.o)" $< > $*.d - $(Q) $(CC) $(CFLAGS) $(INCFLAGS) -c $< -o $@ - -sinclude $(DEPS) - -$(OBJS): $(CONST_TAB) - -$(CONST_TAB): $(COC) $(GENERATE) $(SRCS) $(CONFIG) - $(MSG) [Prebuild] generate resources - $(Q) $(COC) -i $(SRCPATH) -c $(CONFIG) -o $(GENERATE) - -$(GENERATE): - $(Q) $(MKDIR) $(GENERATE) - -$(COC): - $(MSG) [Make] coc - $(Q) $(MAKE_COC) - -install: - cp $(TARGET) /usr/local/bin - -uninstall: - $(RM) /usr/local/bin/$(TARGET) - -prebuild: $(COC) $(GENERATE) - $(MSG) [Prebuild] generate resources - $(Q) $(PY) $(PYCOC) -o $(GENERATE) $(SRCPATH) -c $(CONFIG) - $(MSG) done - -clean: - $(MSG) [Clean...] - $(Q) $(RM) $(OBJS) $(DEPS) $(GENERATE)/* berry.lib - $(Q) $(MAKE_COC) clean - $(MSG) done diff --git a/lib/libesp32/berry/README.md b/lib/libesp32/berry/README.md deleted file mode 100644 index 6d02dcd38..000000000 --- a/lib/libesp32/berry/README.md +++ /dev/null @@ -1,163 +0,0 @@ -

-

- Berry -

-

The Berry Script Language.

-

- -## Introduction - -Berry is a ultra-lightweight dynamically typed embedded scripting language. It is designed for lower-performance embedded devices. The Berry interpreter-core's code size is less than 40KiB and can run on less than 4KiB heap (on ARM Cortex M4 CPU, Thumb ISA and ARMCC compiler). - -The interpreter of Berry include a one-pass compiler and register-based VM, all the code is written in ANSI C99. In Berry not every type is a class object. Some simple value types, such as int, real, boolean and string are not class object, but list, map and range are class object. This is a consideration about performance. -Register-based VM is the same meaning as above. - -Berry has the following advantages: - -* Lightweight: A well-optimized interpreter with very little resources. Ideal for use in microprocessors. -* Fast: optimized one-pass bytecode compiler and register-based virtual machine. -* Powerful: supports imperative programming, object-oriented programming, functional programming. -* Flexible: Berry is a dynamic type script, and it's intended for embedding in applications. It can provide good dynamic scalability for the host system. -* Simple: simple and natural syntax, support garbage collection, and easy to use FFI (foreign function interface). -* RAM saving: With compile-time object construction, most of the constant objects are stored in read-only code data segments, so the RAM usage of the interpreter is very low when it starts. - -## Documents - -LaTeX documents repository: [https://github.com/Skiars/berry_doc](https://github.com/Skiars/berry_doc) - -Short Manual: [berry_short_manual.pdf](https://github.com/Skiars/berry_doc/releases/download/latest/berry_short_manual.pdf). - -Reference Manual: [berry_rm_en_us.pdf](https://github.com/Skiars/berry_doc/releases/download/latest/berry_rm_en_us.pdf), [berry_rm_zh_cn.pdf](https://github.com/Skiars/berry_doc/releases/download/latest/berry_rm_zh_cn.pdf). - -Berry's EBNF grammar definition: [tools/grammar/berry.ebnf](./tools/grammar/berry.ebnf) - -## Features - -* Base Type - * Nil: `nil` - * Boolean: `true` and `false` - * Numerical: Integer (`int`) and Real (`real`) - * String: Single quotation-mark string and double quotation-mark string - * Class: Instance template, read only - * Instance: Object constructed by class - * Module: Read-write key-value pair table - * List: Ordered container, like `[1, 2, 3]` - * Map: Hash Map container, like `{ 'a': 1, 2: 3, 'map': {} }` - * Range: include a lower and a upper integer value, like `0..5` -* Operator and Expression - * Assign operator: `=`, `+=`, `-=`, `*=`, `/=`, `%=`, `&=`, `|=`, `^=`, `<<=`, `>>=` - * Relational operator: `<`, `<=`, `==`, `!=`, `>`, `>=` - * Logic operator: `&&`, `||`, `!` - * Arithmetic operator: `+`, `-`, `*`, `/`, `%` - * Bitwise operator: `&`, `|`, `~`, `^`, `<<`, `>>` - * Field operator: `.` - * Subscript operator: `[]` - * Connect string operator: `+` - * Conditional operator: `? :` - * Brackets: `()` -* Control Structure - * Conditional statement: `if-else` - * Iteration statement: `while` and `for` - * Jump statement: `break` and `continue` -* Function - * Local variable and block scope - * Return statement - * Nested functions definition - * Closure based on Upvalue - * Anonymous function - * Lambda expression -* Class - * Inheritance (only public single inheritance) - * Method and Operator Overload - * Constructor method - * Destructive method -* Module Management - * Built-in module that takes almost no RAM - * Extension module support: script module, bytecode file module and shared library (like *.so, *.dll) module -* GC (Garbage collection) - * Mark-Sweep GC -* Exceptional Handling - * Throw any exception value using the `raise` statement - * Multiple catch mode -* Bytecode file support - * Export function to bytecode file - * Load the bytecode file and execute - -## Build and Run - -1. Install the readline library (Windows does not need): - - ``` bash - sudo apt install libreadline-dev # Ubuntu - brew install readline # MacOS - ``` - -2. Build (The default compiler is GCC): - - ``` - make - ``` - -3. Run: - - ``` bash - ./berry # Bash or PowerShell - berry # Windows CMD - ``` - -4. Install (Only Unix-like): - - ``` bash - make install - ``` - -## Editor pulgins - -[Visual Studio Code](https://code.visualstudio.com/) pulgin are in this directory: [./tools/pulgins/vscode](./tools/pulgins/vscode). - -## Examples - -After compiling successfully, use the `berry` command with no parameters to enter the REPL environment: -``` -Berry 0.0.1 (build in Dec 24 2018, 18:12:49) -[GCC 8.2.0] on Linux (default) -> -``` - -Now enter this code: - -``` lua -print("Hello world!") -``` - -You will see this output: - -``` -Hello world! -``` - -You can copy this code to the REPL: - -``` ruby -def fib(x) - if x <= 1 - return x - end - return fib(x - 1) + fib(x - 2) -end -fib(10) -``` - -This example code will output the result `55` and you can save the above code to a plain text file (eg test.be) and run this command: - -``` bash -./berry test.be -``` - -This will also get the correct output. - -## License - -Berry is free software distributed under the [MIT license](./LICENSE). - -The Berry interpreter partly referred to [Lua](http://www.lua.org/)'s design. View Lua's license here: http://www.lua.org/license.html. diff --git a/lib/libesp32/berry/berry-logo.png b/lib/libesp32/berry/berry-logo.png deleted file mode 100644 index 1eb419089..000000000 Binary files a/lib/libesp32/berry/berry-logo.png and /dev/null differ diff --git a/lib/libesp32/berry/default/be_animate_lib.c b/lib/libesp32/berry/default/be_animate_lib.c deleted file mode 100644 index 398f87b66..000000000 --- a/lib/libesp32/berry/default/be_animate_lib.c +++ /dev/null @@ -1,712 +0,0 @@ -/******************************************************************** - * Berry module `animate` - * - * To use: `import animate` - * - *******************************************************************/ -#include "be_constobj.h" - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Animate_rotate_init, /* name */ - be_nested_proto( - 12, /* nstack */ - 5, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(init), - /* K1 */ be_nested_str(closure), - /* K2 */ be_nested_str(code), - /* K3 */ be_nested_str(push), - /* K4 */ be_nested_str(animate), - /* K5 */ be_nested_str(ins_ramp), - /* K6 */ be_nested_str(ins_goto), - /* K7 */ be_const_int(0), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x60140003, // 0000 GETGBL R5 G3 - 0x5C180000, // 0001 MOVE R6 R0 - 0x7C140200, // 0002 CALL R5 1 - 0x8C140B00, // 0003 GETMET R5 R5 K0 - 0x7C140200, // 0004 CALL R5 1 - 0x90020201, // 0005 SETMBR R0 K1 R1 - 0x88140102, // 0006 GETMBR R5 R0 K2 - 0x8C140B03, // 0007 GETMET R5 R5 K3 - 0xB81E0800, // 0008 GETNGBL R7 K4 - 0x8C1C0F05, // 0009 GETMET R7 R7 K5 - 0x5C240400, // 000A MOVE R9 R2 - 0x5C280600, // 000B MOVE R10 R3 - 0x5C2C0800, // 000C MOVE R11 R4 - 0x7C1C0800, // 000D CALL R7 4 - 0x7C140400, // 000E CALL R5 2 - 0x88140102, // 000F GETMBR R5 R0 K2 - 0x8C140B03, // 0010 GETMET R5 R5 K3 - 0xB81E0800, // 0011 GETNGBL R7 K4 - 0x8C1C0F06, // 0012 GETMET R7 R7 K6 - 0x58240007, // 0013 LDCONST R9 K7 - 0x58280007, // 0014 LDCONST R10 K7 - 0x582C0007, // 0015 LDCONST R11 K7 - 0x7C1C0800, // 0016 CALL R7 4 - 0x7C140400, // 0017 CALL R5 2 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Animate_rotate -********************************************************************/ -extern const bclass be_class_Animate_engine; -be_local_class(Animate_rotate, - 0, - &be_class_Animate_engine, - be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(init, -1), be_const_closure(Animate_rotate_init_closure) }, - })), - be_str_literal("Animate_rotate") -); - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Animate_from_to_init, /* name */ - be_nested_proto( - 12, /* nstack */ - 5, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(init), - /* K1 */ be_nested_str(closure), - /* K2 */ be_nested_str(code), - /* K3 */ be_nested_str(push), - /* K4 */ be_nested_str(animate), - /* K5 */ be_nested_str(ins_ramp), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x60140003, // 0000 GETGBL R5 G3 - 0x5C180000, // 0001 MOVE R6 R0 - 0x7C140200, // 0002 CALL R5 1 - 0x8C140B00, // 0003 GETMET R5 R5 K0 - 0x7C140200, // 0004 CALL R5 1 - 0x90020201, // 0005 SETMBR R0 K1 R1 - 0x88140102, // 0006 GETMBR R5 R0 K2 - 0x8C140B03, // 0007 GETMET R5 R5 K3 - 0xB81E0800, // 0008 GETNGBL R7 K4 - 0x8C1C0F05, // 0009 GETMET R7 R7 K5 - 0x5C240400, // 000A MOVE R9 R2 - 0x5C280600, // 000B MOVE R10 R3 - 0x5C2C0800, // 000C MOVE R11 R4 - 0x7C1C0800, // 000D CALL R7 4 - 0x7C140400, // 000E CALL R5 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Animate_from_to -********************************************************************/ -extern const bclass be_class_Animate_engine; -be_local_class(Animate_from_to, - 0, - &be_class_Animate_engine, - be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(init, -1), be_const_closure(Animate_from_to_init_closure) }, - })), - be_str_literal("Animate_from_to") -); - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Animate_back_forth_init, /* name */ - be_nested_proto( - 12, /* nstack */ - 5, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(init), - /* K1 */ be_nested_str(closure), - /* K2 */ be_nested_str(code), - /* K3 */ be_nested_str(push), - /* K4 */ be_nested_str(animate), - /* K5 */ be_nested_str(ins_ramp), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str(ins_goto), - /* K8 */ be_const_int(0), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0x60140003, // 0000 GETGBL R5 G3 - 0x5C180000, // 0001 MOVE R6 R0 - 0x7C140200, // 0002 CALL R5 1 - 0x8C140B00, // 0003 GETMET R5 R5 K0 - 0x7C140200, // 0004 CALL R5 1 - 0x90020201, // 0005 SETMBR R0 K1 R1 - 0x88140102, // 0006 GETMBR R5 R0 K2 - 0x8C140B03, // 0007 GETMET R5 R5 K3 - 0xB81E0800, // 0008 GETNGBL R7 K4 - 0x8C1C0F05, // 0009 GETMET R7 R7 K5 - 0x5C240400, // 000A MOVE R9 R2 - 0x5C280600, // 000B MOVE R10 R3 - 0x0C2C0906, // 000C DIV R11 R4 K6 - 0x7C1C0800, // 000D CALL R7 4 - 0x7C140400, // 000E CALL R5 2 - 0x88140102, // 000F GETMBR R5 R0 K2 - 0x8C140B03, // 0010 GETMET R5 R5 K3 - 0xB81E0800, // 0011 GETNGBL R7 K4 - 0x8C1C0F05, // 0012 GETMET R7 R7 K5 - 0x5C240600, // 0013 MOVE R9 R3 - 0x5C280400, // 0014 MOVE R10 R2 - 0x0C2C0906, // 0015 DIV R11 R4 K6 - 0x7C1C0800, // 0016 CALL R7 4 - 0x7C140400, // 0017 CALL R5 2 - 0x88140102, // 0018 GETMBR R5 R0 K2 - 0x8C140B03, // 0019 GETMET R5 R5 K3 - 0xB81E0800, // 001A GETNGBL R7 K4 - 0x8C1C0F07, // 001B GETMET R7 R7 K7 - 0x58240008, // 001C LDCONST R9 K8 - 0x58280008, // 001D LDCONST R10 K8 - 0x582C0008, // 001E LDCONST R11 K8 - 0x7C1C0800, // 001F CALL R7 4 - 0x7C140400, // 0020 CALL R5 2 - 0x80000000, // 0021 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Animate_back_forth -********************************************************************/ -extern const bclass be_class_Animate_engine; -be_local_class(Animate_back_forth, - 0, - &be_class_Animate_engine, - be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(init, -1), be_const_closure(Animate_back_forth_init_closure) }, - })), - be_str_literal("Animate_back_forth") -); - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Animate_ins_goto_init, /* name */ - be_nested_proto( - 4, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(pc_rel), - /* K1 */ be_nested_str(pc_abs), - /* K2 */ be_nested_str(duration), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Animate_ins_goto -********************************************************************/ -be_local_class(Animate_ins_goto, - 3, - NULL, - be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(pc_rel, -1), be_const_var(0) }, - { be_const_key(duration, -1), be_const_var(2) }, - { be_const_key(pc_abs, -1), be_const_var(1) }, - { be_const_key(init, 2), be_const_closure(Animate_ins_goto_init_closure) }, - })), - be_str_literal("Animate_ins_goto") -); - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Animate_ins_ramp_init, /* name */ - be_nested_proto( - 4, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(a), - /* K1 */ be_nested_str(b), - /* K2 */ be_nested_str(duration), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Animate_ins_ramp -********************************************************************/ -be_local_class(Animate_ins_ramp, - 3, - NULL, - be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(a, -1), be_const_var(0) }, - { be_const_key(b, 2), be_const_var(1) }, - { be_const_key(duration, -1), be_const_var(2) }, - { be_const_key(init, -1), be_const_closure(Animate_ins_ramp_init_closure) }, - })), - be_str_literal("Animate_ins_ramp") -); - -/******************************************************************** -** Solidified function: run -********************************************************************/ -be_local_closure(Animate_engine_run, /* name */ - be_nested_proto( - 6, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(millis), - /* K2 */ be_nested_str(value), - /* K3 */ be_nested_str(ins_time), - /* K4 */ be_nested_str(running), - /* K5 */ be_nested_str(add_driver), - }), - &be_const_str_run, - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x1C0C0203, // 0001 EQ R3 R1 R3 - 0x780E0003, // 0002 JMPF R3 #0007 - 0xB80E0000, // 0003 GETNGBL R3 K0 - 0x8C0C0701, // 0004 GETMET R3 R3 K1 - 0x7C0C0200, // 0005 CALL R3 1 - 0x5C040600, // 0006 MOVE R1 R3 - 0x4C0C0000, // 0007 LDNIL R3 - 0x200C0403, // 0008 NE R3 R2 R3 - 0x780E0000, // 0009 JMPF R3 #000B - 0x90020402, // 000A SETMBR R0 K2 R2 - 0x90020601, // 000B SETMBR R0 K3 R1 - 0x500C0200, // 000C LDBOOL R3 1 0 - 0x90020803, // 000D SETMBR R0 K4 R3 - 0xB80E0000, // 000E GETNGBL R3 K0 - 0x8C0C0705, // 000F GETMET R3 R3 K5 - 0x5C140000, // 0010 MOVE R5 R0 - 0x7C0C0400, // 0011 CALL R3 2 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Animate_engine_init, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(code), - /* K1 */ be_nested_str(pc), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str(ins_time), - /* K4 */ be_nested_str(running), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x90020302, // 0003 SETMBR R0 K1 K2 - 0x90020702, // 0004 SETMBR R0 K3 K2 - 0x50040000, // 0005 LDBOOL R1 0 0 - 0x90020801, // 0006 SETMBR R0 K4 R1 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autorun -********************************************************************/ -be_local_closure(Animate_engine_autorun, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(run), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(add_driver), - }), - &be_const_str_autorun, - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 - 0xB80E0200, // 0004 GETNGBL R3 K1 - 0x8C0C0702, // 0005 GETMET R3 R3 K2 - 0x5C140000, // 0006 MOVE R5 R0 - 0x7C0C0400, // 0007 CALL R3 2 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -be_local_closure(Animate_engine_stop, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(running), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(remove_driver), - }), - &be_const_str_stop, - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0xB8060200, // 0002 GETNGBL R1 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 - 0x5C0C0000, // 0004 MOVE R3 R0 - 0x7C040400, // 0005 CALL R1 2 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_running -********************************************************************/ -be_local_closure(Animate_engine_is_running, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(running), - }), - &be_const_str_is_running, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_50ms -********************************************************************/ -be_local_closure(Animate_engine_every_50ms, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(animate), - }), - &be_const_str_every_50ms, - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: animate -********************************************************************/ -be_local_closure(Animate_engine_animate, /* name */ - be_nested_proto( - 12, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str(running), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(millis), - /* K3 */ be_nested_str(ins_time), - /* K4 */ be_nested_str(pc), - /* K5 */ be_nested_str(code), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str(internal_error), - /* K8 */ be_nested_str(Animate_X20pc_X20is_X20out_X20of_X20range), - /* K9 */ be_nested_str(animate), - /* K10 */ be_nested_str(ins_ramp), - /* K11 */ be_nested_str(closure), - /* K12 */ be_nested_str(duration), - /* K13 */ be_nested_str(value), - /* K14 */ be_nested_str(scale_uint), - /* K15 */ be_nested_str(a), - /* K16 */ be_nested_str(b), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str(ins_goto), - /* K19 */ be_nested_str(pc_rel), - /* K20 */ be_nested_str(pc_abs), - /* K21 */ be_nested_str(unknown_X20instruction), - }), - &be_const_str_animate, - &be_const_str_solidified, - ( &(const binstruction[99]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0000, // 0001 JMPT R2 #0003 - 0x80000400, // 0002 RET 0 - 0x4C080000, // 0003 LDNIL R2 - 0x1C080202, // 0004 EQ R2 R1 R2 - 0x780A0003, // 0005 JMPF R2 #000A - 0xB80A0200, // 0006 GETNGBL R2 K1 - 0x8C080502, // 0007 GETMET R2 R2 K2 - 0x7C080200, // 0008 CALL R2 1 - 0x5C040400, // 0009 MOVE R1 R2 - 0x50080200, // 000A LDBOOL R2 1 0 - 0x780A0054, // 000B JMPF R2 #0061 - 0x88080103, // 000C GETMBR R2 R0 K3 - 0x04080202, // 000D SUB R2 R1 R2 - 0x880C0104, // 000E GETMBR R3 R0 K4 - 0x6010000C, // 000F GETGBL R4 G12 - 0x88140105, // 0010 GETMBR R5 R0 K5 - 0x7C100200, // 0011 CALL R4 1 - 0x280C0604, // 0012 GE R3 R3 R4 - 0x780E0002, // 0013 JMPF R3 #0017 - 0x500C0000, // 0014 LDBOOL R3 0 0 - 0x90020003, // 0015 SETMBR R0 K0 R3 - 0x70020049, // 0016 JMP #0061 - 0x880C0104, // 0017 GETMBR R3 R0 K4 - 0x140C0706, // 0018 LT R3 R3 K6 - 0x780E0000, // 0019 JMPF R3 #001B - 0xB0060F08, // 001A RAISE 1 K7 K8 - 0x880C0104, // 001B GETMBR R3 R0 K4 - 0x88100105, // 001C GETMBR R4 R0 K5 - 0x940C0803, // 001D GETIDX R3 R4 R3 - 0x6014000F, // 001E GETGBL R5 G15 - 0x5C180600, // 001F MOVE R6 R3 - 0xB81E1200, // 0020 GETNGBL R7 K9 - 0x881C0F0A, // 0021 GETMBR R7 R7 K10 - 0x7C140400, // 0022 CALL R5 2 - 0x78160020, // 0023 JMPF R5 #0045 - 0x8810010B, // 0024 GETMBR R4 R0 K11 - 0x8814070C, // 0025 GETMBR R5 R3 K12 - 0x14140405, // 0026 LT R5 R2 R5 - 0x7816000E, // 0027 JMPF R5 #0037 - 0xB8160200, // 0028 GETNGBL R5 K1 - 0x8C140B0E, // 0029 GETMET R5 R5 K14 - 0x5C1C0400, // 002A MOVE R7 R2 - 0x58200006, // 002B LDCONST R8 K6 - 0x8824070C, // 002C GETMBR R9 R3 K12 - 0x8828070F, // 002D GETMBR R10 R3 K15 - 0x882C0710, // 002E GETMBR R11 R3 K16 - 0x7C140C00, // 002F CALL R5 6 - 0x90021A05, // 0030 SETMBR R0 K13 R5 - 0x78120002, // 0031 JMPF R4 #0035 - 0x5C140800, // 0032 MOVE R5 R4 - 0x8818010D, // 0033 GETMBR R6 R0 K13 - 0x7C140200, // 0034 CALL R5 1 - 0x7002002A, // 0035 JMP #0061 - 0x7002000C, // 0036 JMP #0044 - 0x88140710, // 0037 GETMBR R5 R3 K16 - 0x90021A05, // 0038 SETMBR R0 K13 R5 - 0x78120002, // 0039 JMPF R4 #003D - 0x5C140800, // 003A MOVE R5 R4 - 0x8818010D, // 003B GETMBR R6 R0 K13 - 0x7C140200, // 003C CALL R5 1 - 0x88140104, // 003D GETMBR R5 R0 K4 - 0x00140B11, // 003E ADD R5 R5 K17 - 0x90020805, // 003F SETMBR R0 K4 R5 - 0x8814070C, // 0040 GETMBR R5 R3 K12 - 0x04140405, // 0041 SUB R5 R2 R5 - 0x04140205, // 0042 SUB R5 R1 R5 - 0x90020605, // 0043 SETMBR R0 K3 R5 - 0x7002001A, // 0044 JMP #0060 - 0x6010000F, // 0045 GETGBL R4 G15 - 0x5C140600, // 0046 MOVE R5 R3 - 0xB81A1200, // 0047 GETNGBL R6 K9 - 0x88180D12, // 0048 GETMBR R6 R6 K18 - 0x7C100400, // 0049 CALL R4 2 - 0x78120013, // 004A JMPF R4 #005F - 0x8810070C, // 004B GETMBR R4 R3 K12 - 0x14100404, // 004C LT R4 R2 R4 - 0x78120001, // 004D JMPF R4 #0050 - 0x70020011, // 004E JMP #0061 - 0x7002000D, // 004F JMP #005E - 0x88100713, // 0050 GETMBR R4 R3 K19 - 0x20100906, // 0051 NE R4 R4 K6 - 0x78120004, // 0052 JMPF R4 #0058 - 0x88100104, // 0053 GETMBR R4 R0 K4 - 0x88140713, // 0054 GETMBR R5 R3 K19 - 0x00100805, // 0055 ADD R4 R4 R5 - 0x90020804, // 0056 SETMBR R0 K4 R4 - 0x70020001, // 0057 JMP #005A - 0x88100714, // 0058 GETMBR R4 R3 K20 - 0x90020804, // 0059 SETMBR R0 K4 R4 - 0x8810070C, // 005A GETMBR R4 R3 K12 - 0x04100404, // 005B SUB R4 R2 R4 - 0x04100204, // 005C SUB R4 R1 R4 - 0x90020604, // 005D SETMBR R0 K3 R4 - 0x70020000, // 005E JMP #0060 - 0xB0060F15, // 005F RAISE 1 K7 K21 - 0x7001FFA8, // 0060 JMP #000A - 0x8808010D, // 0061 GETMBR R2 R0 K13 - 0x80040400, // 0062 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Animate_engine -********************************************************************/ -be_local_class(Animate_engine, - 6, - NULL, - be_nested_map(13, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(code, -1), be_const_var(0) }, - { be_const_key(run, 4), be_const_closure(Animate_engine_run_closure) }, - { be_const_key(running, 8), be_const_var(4) }, - { be_const_key(init, -1), be_const_closure(Animate_engine_init_closure) }, - { be_const_key(autorun, -1), be_const_closure(Animate_engine_autorun_closure) }, - { be_const_key(value, -1), be_const_var(5) }, - { be_const_key(stop, 3), be_const_closure(Animate_engine_stop_closure) }, - { be_const_key(pc, -1), be_const_var(2) }, - { be_const_key(is_running, 11), be_const_closure(Animate_engine_is_running_closure) }, - { be_const_key(every_50ms, 10), be_const_closure(Animate_engine_every_50ms_closure) }, - { be_const_key(animate, -1), be_const_closure(Animate_engine_animate_closure) }, - { be_const_key(closure, -1), be_const_var(1) }, - { be_const_key(ins_time, 9), be_const_var(3) }, - })), - be_str_literal("Animate_engine") -); - -/******************************************************************** -** Solidified module: animate -********************************************************************/ -be_local_module(animate, - "animate", - be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(rotate, 2), be_const_class(be_class_Animate_rotate) }, - { be_const_key(from_to, 3), be_const_class(be_class_Animate_from_to) }, - { be_const_key(back_forth, -1), be_const_class(be_class_Animate_back_forth) }, - { be_const_key(ins_goto, -1), be_const_class(be_class_Animate_ins_goto) }, - { be_const_key(ins_ramp, -1), be_const_class(be_class_Animate_ins_ramp) }, - { be_const_key(engine, -1), be_const_class(be_class_Animate_engine) }, - })) -); -BE_EXPORT_VARIABLE be_define_const_native_module(animate); -/********************************************************************/ diff --git a/lib/libesp32/berry/default/be_autoconf_lib.c b/lib/libesp32/berry/default/be_autoconf_lib.c deleted file mode 100644 index da41707c7..000000000 --- a/lib/libesp32/berry/default/be_autoconf_lib.c +++ /dev/null @@ -1,1394 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * To use: `import autoconf` - * - *******************************************************************/ -#include "be_constobj.h" - - -/******************************************************************** -** Solidified function: page_autoconf_ctl -********************************************************************/ -be_local_closure(Autoconf_page_autoconf_ctl, /* name */ - be_nested_proto( - 13, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[41]) { /* constants */ - /* K0 */ be_nested_str(webserver), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(path), - /* K3 */ be_nested_str(check_privileged_access), - /* K4 */ be_nested_str(has_arg), - /* K5 */ be_nested_str(reapply), - /* K6 */ be_nested_str(tasmota), - /* K7 */ be_nested_str(log), - /* K8 */ be_nested_str(CFG_X3A_X20removing_X20first_X20time_X20marker), - /* K9 */ be_const_int(2), - /* K10 */ be_nested_str(clear_first_time), - /* K11 */ be_nested_str(redirect), - /* K12 */ be_nested_str(_X2F_X3Frst_X3D), - /* K13 */ be_nested_str(zip), - /* K14 */ be_nested_str(CFG_X3A_X20removing_X20autoconf_X20files), - /* K15 */ be_nested_str(delete_all_configs), - /* K16 */ be_nested_str(arg), - /* K17 */ be_nested_str(reset), - /* K18 */ be_nested_str(format), - /* K19 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_X2F_X25s_X2Eautoconf), - /* K20 */ be_nested_str(arch), - /* K21 */ be_nested_str(CFG_X3A_X20downloading_X20_X27_X25s_X27), - /* K22 */ be_nested_str(_X25s_X2Eautoconf), - /* K23 */ be_nested_str(webclient), - /* K24 */ be_nested_str(begin), - /* K25 */ be_nested_str(GET), - /* K26 */ be_nested_str(return_X20code_X3D_X25i), - /* K27 */ be_nested_str(connection_error), - /* K28 */ be_nested_str(write_file), - /* K29 */ be_nested_str(close), - /* K30 */ be_nested_str(value_error), - /* K31 */ be_nested_str(Unknown_X20command), - /* K32 */ be_nested_str(CFG_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K33 */ be_nested_str(content_start), - /* K34 */ be_nested_str(Parameter_X20error), - /* K35 */ be_nested_str(content_send_style), - /* K36 */ be_nested_str(content_send), - /* K37 */ be_nested_str(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E), - /* K38 */ be_nested_str(content_button), - /* K39 */ be_nested_str(BUTTON_CONFIGURATION), - /* K40 */ be_nested_str(content_stop), - }), - &be_const_str_page_autoconf_ctl, - &be_const_str_solidified, - ( &(const binstruction[117]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0xA40E0400, // 0002 IMPORT R3 K2 - 0x8C100303, // 0003 GETMET R4 R1 K3 - 0x7C100200, // 0004 CALL R4 1 - 0x74120001, // 0005 JMPT R4 #0008 - 0x4C100000, // 0006 LDNIL R4 - 0x80040800, // 0007 RET 1 R4 - 0xA802004E, // 0008 EXBLK 0 #0058 - 0x8C100304, // 0009 GETMET R4 R1 K4 - 0x58180005, // 000A LDCONST R6 K5 - 0x7C100400, // 000B CALL R4 2 - 0x7812000A, // 000C JMPF R4 #0018 - 0xB8120C00, // 000D GETNGBL R4 K6 - 0x8C100907, // 000E GETMET R4 R4 K7 - 0x58180008, // 000F LDCONST R6 K8 - 0x581C0009, // 0010 LDCONST R7 K9 - 0x7C100600, // 0011 CALL R4 3 - 0x8C10010A, // 0012 GETMET R4 R0 K10 - 0x7C100200, // 0013 CALL R4 1 - 0x8C10030B, // 0014 GETMET R4 R1 K11 - 0x5818000C, // 0015 LDCONST R6 K12 - 0x7C100400, // 0016 CALL R4 2 - 0x7002003D, // 0017 JMP #0056 - 0x8C100304, // 0018 GETMET R4 R1 K4 - 0x5818000D, // 0019 LDCONST R6 K13 - 0x7C100400, // 001A CALL R4 2 - 0x78120038, // 001B JMPF R4 #0055 - 0xB8120C00, // 001C GETNGBL R4 K6 - 0x8C100907, // 001D GETMET R4 R4 K7 - 0x5818000E, // 001E LDCONST R6 K14 - 0x581C0009, // 001F LDCONST R7 K9 - 0x7C100600, // 0020 CALL R4 3 - 0x8C10010F, // 0021 GETMET R4 R0 K15 - 0x7C100200, // 0022 CALL R4 1 - 0x8C100310, // 0023 GETMET R4 R1 K16 - 0x5818000D, // 0024 LDCONST R6 K13 - 0x7C100400, // 0025 CALL R4 2 - 0x20140911, // 0026 NE R5 R4 K17 - 0x78160026, // 0027 JMPF R5 #004F - 0x8C140512, // 0028 GETMET R5 R2 K18 - 0x581C0013, // 0029 LDCONST R7 K19 - 0xB8220C00, // 002A GETNGBL R8 K6 - 0x8C201114, // 002B GETMET R8 R8 K20 - 0x7C200200, // 002C CALL R8 1 - 0x5C240800, // 002D MOVE R9 R4 - 0x7C140800, // 002E CALL R5 4 - 0xB81A0C00, // 002F GETNGBL R6 K6 - 0x8C180D07, // 0030 GETMET R6 R6 K7 - 0x8C200512, // 0031 GETMET R8 R2 K18 - 0x58280015, // 0032 LDCONST R10 K21 - 0x5C2C0A00, // 0033 MOVE R11 R5 - 0x7C200600, // 0034 CALL R8 3 - 0x58240009, // 0035 LDCONST R9 K9 - 0x7C180600, // 0036 CALL R6 3 - 0x8C180512, // 0037 GETMET R6 R2 K18 - 0x58200016, // 0038 LDCONST R8 K22 - 0x5C240800, // 0039 MOVE R9 R4 - 0x7C180600, // 003A CALL R6 3 - 0xB81E2E00, // 003B GETNGBL R7 K23 - 0x7C1C0000, // 003C CALL R7 0 - 0x8C200F18, // 003D GETMET R8 R7 K24 - 0x5C280A00, // 003E MOVE R10 R5 - 0x7C200400, // 003F CALL R8 2 - 0x8C200F19, // 0040 GETMET R8 R7 K25 - 0x7C200200, // 0041 CALL R8 1 - 0x542600C7, // 0042 LDINT R9 200 - 0x20241009, // 0043 NE R9 R8 R9 - 0x78260004, // 0044 JMPF R9 #004A - 0x8C240512, // 0045 GETMET R9 R2 K18 - 0x582C001A, // 0046 LDCONST R11 K26 - 0x5C301000, // 0047 MOVE R12 R8 - 0x7C240600, // 0048 CALL R9 3 - 0xB0063609, // 0049 RAISE 1 K27 R9 - 0x8C240F1C, // 004A GETMET R9 R7 K28 - 0x5C2C0C00, // 004B MOVE R11 R6 - 0x7C240400, // 004C CALL R9 2 - 0x8C240F1D, // 004D GETMET R9 R7 K29 - 0x7C240200, // 004E CALL R9 1 - 0x8C14010A, // 004F GETMET R5 R0 K10 - 0x7C140200, // 0050 CALL R5 1 - 0x8C14030B, // 0051 GETMET R5 R1 K11 - 0x581C000C, // 0052 LDCONST R7 K12 - 0x7C140400, // 0053 CALL R5 2 - 0x70020000, // 0054 JMP #0056 - 0xB0063D1F, // 0055 RAISE 1 K30 K31 - 0xA8040001, // 0056 EXBLK 1 1 - 0x7002001B, // 0057 JMP #0074 - 0xAC100002, // 0058 CATCH R4 0 2 - 0x70020018, // 0059 JMP #0073 - 0x60180001, // 005A GETGBL R6 G1 - 0x8C1C0512, // 005B GETMET R7 R2 K18 - 0x58240020, // 005C LDCONST R9 K32 - 0x5C280800, // 005D MOVE R10 R4 - 0x5C2C0A00, // 005E MOVE R11 R5 - 0x7C1C0800, // 005F CALL R7 4 - 0x7C180200, // 0060 CALL R6 1 - 0x8C180321, // 0061 GETMET R6 R1 K33 - 0x58200022, // 0062 LDCONST R8 K34 - 0x7C180400, // 0063 CALL R6 2 - 0x8C180323, // 0064 GETMET R6 R1 K35 - 0x7C180200, // 0065 CALL R6 1 - 0x8C180324, // 0066 GETMET R6 R1 K36 - 0x8C200512, // 0067 GETMET R8 R2 K18 - 0x58280025, // 0068 LDCONST R10 K37 - 0x5C2C0800, // 0069 MOVE R11 R4 - 0x5C300A00, // 006A MOVE R12 R5 - 0x7C200800, // 006B CALL R8 4 - 0x7C180400, // 006C CALL R6 2 - 0x8C180326, // 006D GETMET R6 R1 K38 - 0x88200327, // 006E GETMBR R8 R1 K39 - 0x7C180400, // 006F CALL R6 2 - 0x8C180328, // 0070 GETMET R6 R1 K40 - 0x7C180200, // 0071 CALL R6 1 - 0x70020000, // 0072 JMP #0074 - 0xB0080000, // 0073 RAISE 2 R0 R0 - 0x80000000, // 0074 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoexec -********************************************************************/ -be_local_closure(Autoconf_autoexec, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[32]) { /* constants */ - /* K0 */ be_nested_str(_archive), - /* K1 */ be_nested_str(path), - /* K2 */ be_nested_str(_X23init_X2Ebat), - /* K3 */ be_nested_str(is_first_time), - /* K4 */ be_nested_str(exists), - /* K5 */ be_nested_str(set_first_time), - /* K6 */ be_nested_str(run_bat), - /* K7 */ be_nested_str(tasmota), - /* K8 */ be_nested_str(log), - /* K9 */ be_nested_str(CFG_X3A_X20_X27init_X2Ebat_X27_X20done_X2C_X20restarting), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str(cmd), - /* K12 */ be_nested_str(Restart_X201), - /* K13 */ be_nested_str(_X23display_X2Eini), - /* K14 */ be_nested_str(gpio), - /* K15 */ be_nested_str(pin_used), - /* K16 */ be_nested_str(OPTION_A), - /* K17 */ be_nested_str(display_X2Eini), - /* K18 */ be_nested_str(CFG_X3A_X20skipping_X20_X27display_X2Eini_X27_X20because_X20already_X20present_X20in_X20file_X2Dsystem), - /* K19 */ be_nested_str(display), - /* K20 */ be_nested_str(r), - /* K21 */ be_nested_str(read), - /* K22 */ be_nested_str(close), - /* K23 */ be_nested_str(start), - /* K24 */ be_nested_str(_X23autoexec_X2Ebat), - /* K25 */ be_nested_str(CFG_X3A_X20running_X20), - /* K26 */ be_const_int(3), - /* K27 */ be_nested_str(CFG_X3A_X20ran_X20_X20), - /* K28 */ be_nested_str(_X23autoexec_X2Ebe), - /* K29 */ be_nested_str(CFG_X3A_X20loading_X20), - /* K30 */ be_nested_str(load), - /* K31 */ be_nested_str(CFG_X3A_X20loaded_X20_X20), - }), - &be_const_str_autoexec, - &be_const_str_solidified, - ( &(const binstruction[107]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060000, // 0003 JMPF R1 #0005 - 0x80000200, // 0004 RET 0 - 0xA4060200, // 0005 IMPORT R1 K1 - 0x88080100, // 0006 GETMBR R2 R0 K0 - 0x00080502, // 0007 ADD R2 R2 K2 - 0x8C0C0103, // 0008 GETMET R3 R0 K3 - 0x7C0C0200, // 0009 CALL R3 1 - 0x780E0012, // 000A JMPF R3 #001E - 0x8C0C0304, // 000B GETMET R3 R1 K4 - 0x5C140400, // 000C MOVE R5 R2 - 0x7C0C0400, // 000D CALL R3 2 - 0x780E000E, // 000E JMPF R3 #001E - 0x8C0C0105, // 000F GETMET R3 R0 K5 - 0x7C0C0200, // 0010 CALL R3 1 - 0x8C0C0106, // 0011 GETMET R3 R0 K6 - 0x5C140400, // 0012 MOVE R5 R2 - 0x7C0C0400, // 0013 CALL R3 2 - 0xB80E0E00, // 0014 GETNGBL R3 K7 - 0x8C0C0708, // 0015 GETMET R3 R3 K8 - 0x58140009, // 0016 LDCONST R5 K9 - 0x5818000A, // 0017 LDCONST R6 K10 - 0x7C0C0600, // 0018 CALL R3 3 - 0xB80E0E00, // 0019 GETNGBL R3 K7 - 0x8C0C070B, // 001A GETMET R3 R3 K11 - 0x5814000C, // 001B LDCONST R5 K12 - 0x7C0C0400, // 001C CALL R3 2 - 0x80000600, // 001D RET 0 - 0x880C0100, // 001E GETMBR R3 R0 K0 - 0x000C070D, // 001F ADD R3 R3 K13 - 0x5C080600, // 0020 MOVE R2 R3 - 0xB80E1C00, // 0021 GETNGBL R3 K14 - 0x8C0C070F, // 0022 GETMET R3 R3 K15 - 0xB8161C00, // 0023 GETNGBL R5 K14 - 0x88140B10, // 0024 GETMBR R5 R5 K16 - 0x5818000A, // 0025 LDCONST R6 K10 - 0x7C0C0600, // 0026 CALL R3 3 - 0x780E0019, // 0027 JMPF R3 #0042 - 0x8C0C0304, // 0028 GETMET R3 R1 K4 - 0x5C140400, // 0029 MOVE R5 R2 - 0x7C0C0400, // 002A CALL R3 2 - 0x780E0015, // 002B JMPF R3 #0042 - 0x8C0C0304, // 002C GETMET R3 R1 K4 - 0x58140011, // 002D LDCONST R5 K17 - 0x7C0C0400, // 002E CALL R3 2 - 0x780E0005, // 002F JMPF R3 #0036 - 0xB80E0E00, // 0030 GETNGBL R3 K7 - 0x8C0C0708, // 0031 GETMET R3 R3 K8 - 0x58140012, // 0032 LDCONST R5 K18 - 0x5818000A, // 0033 LDCONST R6 K10 - 0x7C0C0600, // 0034 CALL R3 3 - 0x7002000B, // 0035 JMP #0042 - 0xA40E2600, // 0036 IMPORT R3 K19 - 0x60100011, // 0037 GETGBL R4 G17 - 0x5C140400, // 0038 MOVE R5 R2 - 0x58180014, // 0039 LDCONST R6 K20 - 0x7C100400, // 003A CALL R4 2 - 0x8C140915, // 003B GETMET R5 R4 K21 - 0x7C140200, // 003C CALL R5 1 - 0x8C180916, // 003D GETMET R6 R4 K22 - 0x7C180200, // 003E CALL R6 1 - 0x8C180717, // 003F GETMET R6 R3 K23 - 0x5C200A00, // 0040 MOVE R8 R5 - 0x7C180400, // 0041 CALL R6 2 - 0x880C0100, // 0042 GETMBR R3 R0 K0 - 0x000C0718, // 0043 ADD R3 R3 K24 - 0x5C080600, // 0044 MOVE R2 R3 - 0x8C0C0304, // 0045 GETMET R3 R1 K4 - 0x5C140400, // 0046 MOVE R5 R2 - 0x7C0C0400, // 0047 CALL R3 2 - 0x780E000C, // 0048 JMPF R3 #0056 - 0xB80E0E00, // 0049 GETNGBL R3 K7 - 0x8C0C0708, // 004A GETMET R3 R3 K8 - 0x00163202, // 004B ADD R5 K25 R2 - 0x5818001A, // 004C LDCONST R6 K26 - 0x7C0C0600, // 004D CALL R3 3 - 0x8C0C0106, // 004E GETMET R3 R0 K6 - 0x5C140400, // 004F MOVE R5 R2 - 0x7C0C0400, // 0050 CALL R3 2 - 0xB80E0E00, // 0051 GETNGBL R3 K7 - 0x8C0C0708, // 0052 GETMET R3 R3 K8 - 0x00163602, // 0053 ADD R5 K27 R2 - 0x5818001A, // 0054 LDCONST R6 K26 - 0x7C0C0600, // 0055 CALL R3 3 - 0x880C0100, // 0056 GETMBR R3 R0 K0 - 0x000C071C, // 0057 ADD R3 R3 K28 - 0x5C080600, // 0058 MOVE R2 R3 - 0x8C0C0304, // 0059 GETMET R3 R1 K4 - 0x5C140400, // 005A MOVE R5 R2 - 0x7C0C0400, // 005B CALL R3 2 - 0x780E000C, // 005C JMPF R3 #006A - 0xB80E0E00, // 005D GETNGBL R3 K7 - 0x8C0C0708, // 005E GETMET R3 R3 K8 - 0x00163A02, // 005F ADD R5 K29 R2 - 0x5818001A, // 0060 LDCONST R6 K26 - 0x7C0C0600, // 0061 CALL R3 3 - 0xB80E3C00, // 0062 GETNGBL R3 K30 - 0x5C100400, // 0063 MOVE R4 R2 - 0x7C0C0200, // 0064 CALL R3 1 - 0xB80E0E00, // 0065 GETNGBL R3 K7 - 0x8C0C0708, // 0066 GETMET R3 R3 K8 - 0x00163E02, // 0067 ADD R5 K31 R2 - 0x5818001A, // 0068 LDCONST R6 K26 - 0x7C0C0600, // 0069 CALL R3 3 - 0x80000000, // 006A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: run_bat -********************************************************************/ -be_local_closure(Autoconf_run_bat, /* name */ - be_nested_proto( - 13, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(r), - /* K2 */ be_nested_str(readline), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str(_X0A), - /* K5 */ be_nested_str(tasmota), - /* K6 */ be_nested_str(cmd), - /* K7 */ be_nested_str(close), - /* K8 */ be_nested_str(format), - /* K9 */ be_nested_str(CFG_X3A_X20could_X20not_X20run_X20_X25s_X20_X28_X25s_X20_X2D_X20_X25s_X29), - }), - &be_const_str_run_bat, - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0xA8020023, // 0002 EXBLK 0 #0027 - 0x60100011, // 0003 GETGBL R4 G17 - 0x5C140200, // 0004 MOVE R5 R1 - 0x58180001, // 0005 LDCONST R6 K1 - 0x7C100400, // 0006 CALL R4 2 - 0x5C0C0800, // 0007 MOVE R3 R4 - 0x50100200, // 0008 LDBOOL R4 1 0 - 0x78120018, // 0009 JMPF R4 #0023 - 0x8C100702, // 000A GETMET R4 R3 K2 - 0x7C100200, // 000B CALL R4 1 - 0x6014000C, // 000C GETGBL R5 G12 - 0x5C180800, // 000D MOVE R6 R4 - 0x7C140200, // 000E CALL R5 1 - 0x1C140B03, // 000F EQ R5 R5 K3 - 0x78160000, // 0010 JMPF R5 #0012 - 0x70020010, // 0011 JMP #0023 - 0x5415FFFE, // 0012 LDINT R5 -1 - 0x94140805, // 0013 GETIDX R5 R4 R5 - 0x1C140B04, // 0014 EQ R5 R5 K4 - 0x78160002, // 0015 JMPF R5 #0019 - 0x5415FFFD, // 0016 LDINT R5 -2 - 0x40160605, // 0017 CONNECT R5 K3 R5 - 0x94100805, // 0018 GETIDX R4 R4 R5 - 0x6014000C, // 0019 GETGBL R5 G12 - 0x5C180800, // 001A MOVE R6 R4 - 0x7C140200, // 001B CALL R5 1 - 0x24140B03, // 001C GT R5 R5 K3 - 0x78160003, // 001D JMPF R5 #0022 - 0xB8160A00, // 001E GETNGBL R5 K5 - 0x8C140B06, // 001F GETMET R5 R5 K6 - 0x5C1C0800, // 0020 MOVE R7 R4 - 0x7C140400, // 0021 CALL R5 2 - 0x7001FFE4, // 0022 JMP #0008 - 0x8C100707, // 0023 GETMET R4 R3 K7 - 0x7C100200, // 0024 CALL R4 1 - 0xA8040001, // 0025 EXBLK 1 1 - 0x7002000D, // 0026 JMP #0035 - 0xAC100002, // 0027 CATCH R4 0 2 - 0x7002000A, // 0028 JMP #0034 - 0x60180001, // 0029 GETGBL R6 G1 - 0x8C1C0508, // 002A GETMET R7 R2 K8 - 0x58240009, // 002B LDCONST R9 K9 - 0x5C280200, // 002C MOVE R10 R1 - 0x5C2C0800, // 002D MOVE R11 R4 - 0x5C300A00, // 002E MOVE R12 R5 - 0x7C1C0A00, // 002F CALL R7 5 - 0x7C180200, // 0030 CALL R6 1 - 0x8C180707, // 0031 GETMET R6 R3 K7 - 0x7C180200, // 0032 CALL R6 1 - 0x70020000, // 0033 JMP #0035 - 0xB0080000, // 0034 RAISE 2 R0 R0 - 0x80000000, // 0035 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: page_autoconf_mgr -********************************************************************/ -be_local_closure(Autoconf_page_autoconf_mgr, /* name */ - be_nested_proto( - 19, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[39]) { /* constants */ - /* K0 */ be_nested_str(webserver), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(check_privileged_access), - /* K3 */ be_nested_str(content_start), - /* K4 */ be_nested_str(Auto_X2Dconfiguration), - /* K5 */ be_nested_str(content_send_style), - /* K6 */ be_nested_str(content_send), - /* K7 */ be_nested_str(_X3Cp_X3E_X3Csmall_X3E_X26nbsp_X3B_X28This_X20feature_X20requires_X20an_X20internet_X20connection_X29_X3C_X2Fsmall_X3E_X3C_X2Fp_X3E), - /* K8 */ be_nested_str(get_current_module_path), - /* K9 */ be_nested_str(tr), - /* K10 */ be_nested_str(get_current_module_name), - /* K11 */ be_nested_str(_), - /* K12 */ be_nested_str(_X20), - /* K13 */ be_nested_str(_error), - /* K14 */ be_nested_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B), - /* K15 */ be_nested_str(_X26lt_X3BNone_X26gt_X3B), - /* K16 */ be_nested_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E), - /* K17 */ be_nested_str(format), - /* K18 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27Autoconfiguration_X27_X3E_X26nbsp_X3BCurrent_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E), - /* K19 */ be_nested_str(_X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E), - /* K20 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20), - /* K21 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E), - /* K22 */ be_nested_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E), - /* K23 */ be_nested_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E), - /* K24 */ be_nested_str(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K25 */ be_nested_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27New_X20autoconf_X27_X3E_X26nbsp_X3BSelect_X20new_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E), - /* K26 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dzip_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20), - /* K27 */ be_nested_str(onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20change_X20the_X20current_X20configuration_X20and_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E), - /* K28 */ be_nested_str(_X3Clabel_X3EChoose_X20a_X20device_X20configuration_X3A_X3C_X2Flabel_X3E_X3Cbr_X3E), - /* K29 */ be_nested_str(_X3Cselect_X20name_X3D_X27zip_X27_X3E), - /* K30 */ be_nested_str(load_templates), - /* K31 */ be_nested_str(_X3Coption_X20value_X3D_X27reset_X27_X3E_X26lt_X3BRemove_X20autoconf_X26gt_X3B_X3C_X2Foption_X3E), - /* K32 */ be_nested_str(_X3Coption_X20value_X3D_X27_X25s_X27_X3E_X25s_X3C_X2Foption_X3E), - /* K33 */ be_nested_str(stop_iteration), - /* K34 */ be_nested_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E), - /* K35 */ be_nested_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E), - /* K36 */ be_nested_str(content_button), - /* K37 */ be_nested_str(BUTTON_CONFIGURATION), - /* K38 */ be_nested_str(content_stop), - }), - &be_const_str_page_autoconf_mgr, - &be_const_str_solidified, - ( &(const binstruction[124]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0302, // 0002 GETMET R3 R1 K2 - 0x7C0C0200, // 0003 CALL R3 1 - 0x740E0001, // 0004 JMPT R3 #0007 - 0x4C0C0000, // 0005 LDNIL R3 - 0x80040600, // 0006 RET 1 R3 - 0x8C0C0303, // 0007 GETMET R3 R1 K3 - 0x58140004, // 0008 LDCONST R5 K4 - 0x7C0C0400, // 0009 CALL R3 2 - 0x8C0C0305, // 000A GETMET R3 R1 K5 - 0x7C0C0200, // 000B CALL R3 1 - 0x8C0C0306, // 000C GETMET R3 R1 K6 - 0x58140007, // 000D LDCONST R5 K7 - 0x7C0C0400, // 000E CALL R3 2 - 0x8C0C0108, // 000F GETMET R3 R0 K8 - 0x7C0C0200, // 0010 CALL R3 1 - 0x780E0006, // 0011 JMPF R3 #0019 - 0x8C100509, // 0012 GETMET R4 R2 K9 - 0x8C18010A, // 0013 GETMET R6 R0 K10 - 0x7C180200, // 0014 CALL R6 1 - 0x581C000B, // 0015 LDCONST R7 K11 - 0x5820000C, // 0016 LDCONST R8 K12 - 0x7C100800, // 0017 CALL R4 4 - 0x70020004, // 0018 JMP #001E - 0x8810010D, // 0019 GETMBR R4 R0 K13 - 0x78120001, // 001A JMPF R4 #001D - 0x5810000E, // 001B LDCONST R4 K14 - 0x70020000, // 001C JMP #001E - 0x5810000F, // 001D LDCONST R4 K15 - 0x8C140306, // 001E GETMET R5 R1 K6 - 0x581C0010, // 001F LDCONST R7 K16 - 0x7C140400, // 0020 CALL R5 2 - 0x8C140306, // 0021 GETMET R5 R1 K6 - 0x8C1C0511, // 0022 GETMET R7 R2 K17 - 0x58240012, // 0023 LDCONST R9 K18 - 0x7C1C0400, // 0024 CALL R7 2 - 0x7C140400, // 0025 CALL R5 2 - 0x8C140306, // 0026 GETMET R5 R1 K6 - 0x8C1C0511, // 0027 GETMET R7 R2 K17 - 0x58240013, // 0028 LDCONST R9 K19 - 0x5C280800, // 0029 MOVE R10 R4 - 0x7C1C0600, // 002A CALL R7 3 - 0x7C140400, // 002B CALL R5 2 - 0x780E000B, // 002C JMPF R3 #0039 - 0x8C140306, // 002D GETMET R5 R1 K6 - 0x581C0014, // 002E LDCONST R7 K20 - 0x7C140400, // 002F CALL R5 2 - 0x8C140306, // 0030 GETMET R5 R1 K6 - 0x581C0015, // 0031 LDCONST R7 K21 - 0x7C140400, // 0032 CALL R5 2 - 0x8C140306, // 0033 GETMET R5 R1 K6 - 0x581C0016, // 0034 LDCONST R7 K22 - 0x7C140400, // 0035 CALL R5 2 - 0x8C140306, // 0036 GETMET R5 R1 K6 - 0x581C0017, // 0037 LDCONST R7 K23 - 0x7C140400, // 0038 CALL R5 2 - 0x8C140306, // 0039 GETMET R5 R1 K6 - 0x581C0018, // 003A LDCONST R7 K24 - 0x7C140400, // 003B CALL R5 2 - 0x8C140306, // 003C GETMET R5 R1 K6 - 0x581C0010, // 003D LDCONST R7 K16 - 0x7C140400, // 003E CALL R5 2 - 0x8C140306, // 003F GETMET R5 R1 K6 - 0x8C1C0511, // 0040 GETMET R7 R2 K17 - 0x58240019, // 0041 LDCONST R9 K25 - 0x7C1C0400, // 0042 CALL R7 2 - 0x7C140400, // 0043 CALL R5 2 - 0x8C140306, // 0044 GETMET R5 R1 K6 - 0x581C001A, // 0045 LDCONST R7 K26 - 0x7C140400, // 0046 CALL R5 2 - 0x8C140306, // 0047 GETMET R5 R1 K6 - 0x581C001B, // 0048 LDCONST R7 K27 - 0x7C140400, // 0049 CALL R5 2 - 0x8C140306, // 004A GETMET R5 R1 K6 - 0x581C001C, // 004B LDCONST R7 K28 - 0x7C140400, // 004C CALL R5 2 - 0x8C140306, // 004D GETMET R5 R1 K6 - 0x581C001D, // 004E LDCONST R7 K29 - 0x7C140400, // 004F CALL R5 2 - 0x8C14011E, // 0050 GETMET R5 R0 K30 - 0x7C140200, // 0051 CALL R5 1 - 0x8C180306, // 0052 GETMET R6 R1 K6 - 0x5820001F, // 0053 LDCONST R8 K31 - 0x7C180400, // 0054 CALL R6 2 - 0x60180010, // 0055 GETGBL R6 G16 - 0x5C1C0A00, // 0056 MOVE R7 R5 - 0x7C180200, // 0057 CALL R6 1 - 0xA802000D, // 0058 EXBLK 0 #0067 - 0x5C1C0C00, // 0059 MOVE R7 R6 - 0x7C1C0000, // 005A CALL R7 0 - 0x8C200306, // 005B GETMET R8 R1 K6 - 0x8C280511, // 005C GETMET R10 R2 K17 - 0x58300020, // 005D LDCONST R12 K32 - 0x5C340E00, // 005E MOVE R13 R7 - 0x8C380509, // 005F GETMET R14 R2 K9 - 0x5C400E00, // 0060 MOVE R16 R7 - 0x5844000B, // 0061 LDCONST R17 K11 - 0x5848000C, // 0062 LDCONST R18 K12 - 0x7C380800, // 0063 CALL R14 4 - 0x7C280800, // 0064 CALL R10 4 - 0x7C200400, // 0065 CALL R8 2 - 0x7001FFF1, // 0066 JMP #0059 - 0x58180021, // 0067 LDCONST R6 K33 - 0xAC180200, // 0068 CATCH R6 1 0 - 0xB0080000, // 0069 RAISE 2 R0 R0 - 0x8C180306, // 006A GETMET R6 R1 K6 - 0x58200022, // 006B LDCONST R8 K34 - 0x7C180400, // 006C CALL R6 2 - 0x8C180306, // 006D GETMET R6 R1 K6 - 0x58200023, // 006E LDCONST R8 K35 - 0x7C180400, // 006F CALL R6 2 - 0x8C180306, // 0070 GETMET R6 R1 K6 - 0x58200017, // 0071 LDCONST R8 K23 - 0x7C180400, // 0072 CALL R6 2 - 0x8C180306, // 0073 GETMET R6 R1 K6 - 0x58200018, // 0074 LDCONST R8 K24 - 0x7C180400, // 0075 CALL R6 2 - 0x8C180324, // 0076 GETMET R6 R1 K36 - 0x88200325, // 0077 GETMBR R8 R1 K37 - 0x7C180400, // 0078 CALL R6 2 - 0x8C180326, // 0079 GETMET R6 R1 K38 - 0x7C180200, // 007A CALL R6 1 - 0x80000000, // 007B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_current_module_name -********************************************************************/ -be_local_closure(Autoconf_get_current_module_name, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_archive), - /* K1 */ be_const_int(0), - }), - &be_const_str_get_current_module_name, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x5405FFF5, // 0000 LDINT R1 -10 - 0x40060201, // 0001 CONNECT R1 K1 R1 - 0x88080100, // 0002 GETMBR R2 R0 K0 - 0x94040401, // 0003 GETIDX R1 R2 R1 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: delete_all_configs -********************************************************************/ -be_local_closure(Autoconf_delete_all_configs, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(path), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(listdir), - /* K3 */ be_nested_str(_X2F), - /* K4 */ be_nested_str(find), - /* K5 */ be_nested_str(_X2Eautoconf), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str(remove), - /* K8 */ be_nested_str(stop_iteration), - }), - &be_const_str_delete_all_configs, - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0302, // 0002 GETMET R3 R1 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x7C0C0400, // 0004 CALL R3 2 - 0x60100010, // 0005 GETGBL R4 G16 - 0x5C140600, // 0006 MOVE R5 R3 - 0x7C100200, // 0007 CALL R4 1 - 0xA802000B, // 0008 EXBLK 0 #0015 - 0x5C140800, // 0009 MOVE R5 R4 - 0x7C140000, // 000A CALL R5 0 - 0x8C180504, // 000B GETMET R6 R2 K4 - 0x5C200A00, // 000C MOVE R8 R5 - 0x58240005, // 000D LDCONST R9 K5 - 0x7C180600, // 000E CALL R6 3 - 0x24180D06, // 000F GT R6 R6 K6 - 0x781A0002, // 0010 JMPF R6 #0014 - 0x8C180307, // 0011 GETMET R6 R1 K7 - 0x5C200A00, // 0012 MOVE R8 R5 - 0x7C180400, // 0013 CALL R6 2 - 0x7001FFF3, // 0014 JMP #0009 - 0x58100008, // 0015 LDCONST R4 K8 - 0xAC100200, // 0016 CATCH R4 1 0 - 0xB0080000, // 0017 RAISE 2 R0 R0 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_first_time -********************************************************************/ -be_local_closure(Autoconf_set_first_time, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_X2F_X2Eautoconf), - /* K1 */ be_nested_str(w), - /* K2 */ be_nested_str(close), - }), - &be_const_str_set_first_time, - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x60040011, // 0000 GETGBL R1 G17 - 0x58080000, // 0001 LDCONST R2 K0 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x7C040400, // 0003 CALL R1 2 - 0x8C080302, // 0004 GETMET R2 R1 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: load_templates -********************************************************************/ -be_local_closure(Autoconf_load_templates, /* name */ - be_nested_proto( - 15, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(json), - /* K2 */ be_nested_str(format), - /* K3 */ be_nested_str(https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_manifest_X2Ejson), - /* K4 */ be_nested_str(tasmota), - /* K5 */ be_nested_str(arch), - /* K6 */ be_nested_str(log), - /* K7 */ be_nested_str(CFG_X3A_X20loading_X20_X27_X25s_X27), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str(webclient), - /* K10 */ be_nested_str(begin), - /* K11 */ be_nested_str(GET), - /* K12 */ be_nested_str(CFG_X3A_X20return_code_X3D_X25i), - /* K13 */ be_const_int(2), - /* K14 */ be_nested_str(get_string), - /* K15 */ be_nested_str(close), - /* K16 */ be_nested_str(load), - /* K17 */ be_nested_str(CFG_X3A_X20loaded_X20_X27_X25s_X27), - /* K18 */ be_nested_str(find), - /* K19 */ be_nested_str(files), - /* K20 */ be_nested_str(CFG_X3A_X20exception_X20_X27_X25s_X27_X20_X2D_X20_X27_X25s_X27), - }), - &be_const_str_load_templates, - &be_const_str_solidified, - ( &(const binstruction[86]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0xA8020042, // 0002 EXBLK 0 #0046 - 0x8C0C0302, // 0003 GETMET R3 R1 K2 - 0x58140003, // 0004 LDCONST R5 K3 - 0xB81A0800, // 0005 GETNGBL R6 K4 - 0x8C180D05, // 0006 GETMET R6 R6 K5 - 0x7C180200, // 0007 CALL R6 1 - 0x7C0C0600, // 0008 CALL R3 3 - 0xB8120800, // 0009 GETNGBL R4 K4 - 0x8C100906, // 000A GETMET R4 R4 K6 - 0x8C180302, // 000B GETMET R6 R1 K2 - 0x58200007, // 000C LDCONST R8 K7 - 0x5C240600, // 000D MOVE R9 R3 - 0x7C180600, // 000E CALL R6 3 - 0x581C0008, // 000F LDCONST R7 K8 - 0x7C100600, // 0010 CALL R4 3 - 0xB8121200, // 0011 GETNGBL R4 K9 - 0x7C100000, // 0012 CALL R4 0 - 0x8C14090A, // 0013 GETMET R5 R4 K10 - 0x5C1C0600, // 0014 MOVE R7 R3 - 0x7C140400, // 0015 CALL R5 2 - 0x8C14090B, // 0016 GETMET R5 R4 K11 - 0x7C140200, // 0017 CALL R5 1 - 0x541A00C7, // 0018 LDINT R6 200 - 0x20180A06, // 0019 NE R6 R5 R6 - 0x781A000A, // 001A JMPF R6 #0026 - 0xB81A0800, // 001B GETNGBL R6 K4 - 0x8C180D06, // 001C GETMET R6 R6 K6 - 0x8C200302, // 001D GETMET R8 R1 K2 - 0x5828000C, // 001E LDCONST R10 K12 - 0x5C2C0A00, // 001F MOVE R11 R5 - 0x7C200600, // 0020 CALL R8 3 - 0x5824000D, // 0021 LDCONST R9 K13 - 0x7C180600, // 0022 CALL R6 3 - 0x4C180000, // 0023 LDNIL R6 - 0xA8040001, // 0024 EXBLK 1 1 - 0x80040C00, // 0025 RET 1 R6 - 0x8C18090E, // 0026 GETMET R6 R4 K14 - 0x7C180200, // 0027 CALL R6 1 - 0x8C1C090F, // 0028 GETMET R7 R4 K15 - 0x7C1C0200, // 0029 CALL R7 1 - 0x8C1C0510, // 002A GETMET R7 R2 K16 - 0x5C240C00, // 002B MOVE R9 R6 - 0x7C1C0400, // 002C CALL R7 2 - 0xB8220800, // 002D GETNGBL R8 K4 - 0x8C201106, // 002E GETMET R8 R8 K6 - 0x8C280302, // 002F GETMET R10 R1 K2 - 0x58300011, // 0030 LDCONST R12 K17 - 0x60340008, // 0031 GETGBL R13 G8 - 0x5C380E00, // 0032 MOVE R14 R7 - 0x7C340200, // 0033 CALL R13 1 - 0x7C280600, // 0034 CALL R10 3 - 0x582C0008, // 0035 LDCONST R11 K8 - 0x7C200600, // 0036 CALL R8 3 - 0x8C200F12, // 0037 GETMET R8 R7 K18 - 0x58280013, // 0038 LDCONST R10 K19 - 0x7C200400, // 0039 CALL R8 2 - 0x6024000F, // 003A GETGBL R9 G15 - 0x5C281000, // 003B MOVE R10 R8 - 0x602C0012, // 003C GETGBL R11 G18 - 0x7C240400, // 003D CALL R9 2 - 0x78260001, // 003E JMPF R9 #0041 - 0xA8040001, // 003F EXBLK 1 1 - 0x80041000, // 0040 RET 1 R8 - 0x4C240000, // 0041 LDNIL R9 - 0xA8040001, // 0042 EXBLK 1 1 - 0x80041200, // 0043 RET 1 R9 - 0xA8040001, // 0044 EXBLK 1 1 - 0x7002000E, // 0045 JMP #0055 - 0xAC0C0002, // 0046 CATCH R3 0 2 - 0x7002000B, // 0047 JMP #0054 - 0xB8160800, // 0048 GETNGBL R5 K4 - 0x8C140B06, // 0049 GETMET R5 R5 K6 - 0x8C1C0302, // 004A GETMET R7 R1 K2 - 0x58240014, // 004B LDCONST R9 K20 - 0x5C280600, // 004C MOVE R10 R3 - 0x5C2C0800, // 004D MOVE R11 R4 - 0x7C1C0800, // 004E CALL R7 4 - 0x5820000D, // 004F LDCONST R8 K13 - 0x7C140600, // 0050 CALL R5 3 - 0x4C140000, // 0051 LDNIL R5 - 0x80040A00, // 0052 RET 1 R5 - 0x70020000, // 0053 JMP #0055 - 0xB0080000, // 0054 RAISE 2 R0 R0 - 0x80000000, // 0055 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_add_config_button -********************************************************************/ -be_local_closure(Autoconf_web_add_config_button, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(webserver), - /* K1 */ be_nested_str(content_send), - /* K2 */ be_nested_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3E_X26_X23129668_X3B_X20Auto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E), - }), - &be_const_str_web_add_config_button, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x7C080400, // 0003 CALL R2 2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_first_time -********************************************************************/ -be_local_closure(Autoconf_is_first_time, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(path), - /* K1 */ be_nested_str(exists), - /* K2 */ be_nested_str(_X2F_X2Eautoconf), - }), - &be_const_str_is_first_time, - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x7C080400, // 0003 CALL R2 2 - 0x780A0000, // 0004 JMPF R2 #0006 - 0x50080001, // 0005 LDBOOL R2 0 1 - 0x50080200, // 0006 LDBOOL R2 1 0 - 0x80040400, // 0007 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Autoconf_init, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str(path), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(listdir), - /* K3 */ be_nested_str(_X2F), - /* K4 */ be_nested_str(tasmota), - /* K5 */ be_nested_str(add_driver), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str(find), - /* K8 */ be_nested_str(_X2Eautoconf), - /* K9 */ be_nested_str(format), - /* K10 */ be_nested_str(CFG_X3A_X20multiple_X20autoconf_X20files_X20found_X2C_X20aborting_X20_X28_X27_X25s_X27_X20_X2B_X20_X27_X25s_X27_X29), - /* K11 */ be_nested_str(_error), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str(log), - /* K14 */ be_nested_str(CFG_X3A_X20no_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found), - /* K15 */ be_const_int(2), - /* K16 */ be_nested_str(_archive), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0302, // 0002 GETMET R3 R1 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x7C0C0400, // 0004 CALL R3 2 - 0x4C100000, // 0005 LDNIL R4 - 0xB8160800, // 0006 GETNGBL R5 K4 - 0x8C140B05, // 0007 GETMET R5 R5 K5 - 0x5C1C0000, // 0008 MOVE R7 R0 - 0x7C140400, // 0009 CALL R5 2 - 0x58140006, // 000A LDCONST R5 K6 - 0x6018000C, // 000B GETGBL R6 G12 - 0x5C1C0600, // 000C MOVE R7 R3 - 0x7C180200, // 000D CALL R6 1 - 0x14180A06, // 000E LT R6 R5 R6 - 0x781A0016, // 000F JMPF R6 #0027 - 0x8C180507, // 0010 GETMET R6 R2 K7 - 0x94200605, // 0011 GETIDX R8 R3 R5 - 0x58240008, // 0012 LDCONST R9 K8 - 0x7C180600, // 0013 CALL R6 3 - 0x24180D06, // 0014 GT R6 R6 K6 - 0x781A000E, // 0015 JMPF R6 #0025 - 0x4C180000, // 0016 LDNIL R6 - 0x20180806, // 0017 NE R6 R4 R6 - 0x781A000A, // 0018 JMPF R6 #0024 - 0x60180001, // 0019 GETGBL R6 G1 - 0x8C1C0509, // 001A GETMET R7 R2 K9 - 0x5824000A, // 001B LDCONST R9 K10 - 0x5C280800, // 001C MOVE R10 R4 - 0x942C0605, // 001D GETIDX R11 R3 R5 - 0x7C1C0800, // 001E CALL R7 4 - 0x7C180200, // 001F CALL R6 1 - 0x50180200, // 0020 LDBOOL R6 1 0 - 0x90021606, // 0021 SETMBR R0 K11 R6 - 0x4C180000, // 0022 LDNIL R6 - 0x80040C00, // 0023 RET 1 R6 - 0x94100605, // 0024 GETIDX R4 R3 R5 - 0x00140B0C, // 0025 ADD R5 R5 K12 - 0x7001FFE3, // 0026 JMP #000B - 0x4C180000, // 0027 LDNIL R6 - 0x1C180806, // 0028 EQ R6 R4 R6 - 0x781A0006, // 0029 JMPF R6 #0031 - 0xB81A0800, // 002A GETNGBL R6 K4 - 0x8C180D0D, // 002B GETMET R6 R6 K13 - 0x5820000E, // 002C LDCONST R8 K14 - 0x5824000F, // 002D LDCONST R9 K15 - 0x7C180600, // 002E CALL R6 3 - 0x4C180000, // 002F LDNIL R6 - 0x80040C00, // 0030 RET 1 R6 - 0x90022004, // 0031 SETMBR R0 K16 R4 - 0x80000000, // 0032 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: preinit -********************************************************************/ -be_local_closure(Autoconf_preinit, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(_archive), - /* K1 */ be_nested_str(path), - /* K2 */ be_nested_str(_X23preinit_X2Ebe), - /* K3 */ be_nested_str(exists), - /* K4 */ be_nested_str(tasmota), - /* K5 */ be_nested_str(log), - /* K6 */ be_nested_str(CFG_X3A_X20loading_X20), - /* K7 */ be_const_int(3), - /* K8 */ be_nested_str(load), - /* K9 */ be_nested_str(CFG_X3A_X20loaded_X20_X20), - }), - &be_const_str_preinit, - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060000, // 0003 JMPF R1 #0005 - 0x80000200, // 0004 RET 0 - 0xA4060200, // 0005 IMPORT R1 K1 - 0x88080100, // 0006 GETMBR R2 R0 K0 - 0x00080502, // 0007 ADD R2 R2 K2 - 0x8C0C0303, // 0008 GETMET R3 R1 K3 - 0x5C140400, // 0009 MOVE R5 R2 - 0x7C0C0400, // 000A CALL R3 2 - 0x780E000C, // 000B JMPF R3 #0019 - 0xB80E0800, // 000C GETNGBL R3 K4 - 0x8C0C0705, // 000D GETMET R3 R3 K5 - 0x00160C02, // 000E ADD R5 K6 R2 - 0x58180007, // 000F LDCONST R6 K7 - 0x7C0C0600, // 0010 CALL R3 3 - 0xB80E1000, // 0011 GETNGBL R3 K8 - 0x5C100400, // 0012 MOVE R4 R2 - 0x7C0C0200, // 0013 CALL R3 1 - 0xB80E0800, // 0014 GETNGBL R3 K4 - 0x8C0C0705, // 0015 GETMET R3 R3 K5 - 0x00161202, // 0016 ADD R5 K9 R2 - 0x58180007, // 0017 LDCONST R6 K7 - 0x7C0C0600, // 0018 CALL R3 3 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: reset -********************************************************************/ -be_local_closure(Autoconf_reset, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str(path), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(listdir), - /* K3 */ be_nested_str(_X2F), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str(find), - /* K6 */ be_nested_str(_X2Eautoconf), - /* K7 */ be_nested_str(remove), - /* K8 */ be_nested_str(format), - /* K9 */ be_nested_str(CFG_X3A_X20removed_X20file_X20_X27_X25s_X27), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str(_archive), - /* K12 */ be_nested_str(_error), - }), - &be_const_str_reset, - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0302, // 0002 GETMET R3 R1 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x7C0C0400, // 0004 CALL R3 2 - 0x4C100000, // 0005 LDNIL R4 - 0x58140004, // 0006 LDCONST R5 K4 - 0x6018000C, // 0007 GETGBL R6 G12 - 0x5C1C0600, // 0008 MOVE R7 R3 - 0x7C180200, // 0009 CALL R6 1 - 0x14180A06, // 000A LT R6 R5 R6 - 0x781A0011, // 000B JMPF R6 #001E - 0x94180605, // 000C GETIDX R6 R3 R5 - 0x8C1C0505, // 000D GETMET R7 R2 K5 - 0x5C240C00, // 000E MOVE R9 R6 - 0x58280006, // 000F LDCONST R10 K6 - 0x7C1C0600, // 0010 CALL R7 3 - 0x241C0F04, // 0011 GT R7 R7 K4 - 0x781E0008, // 0012 JMPF R7 #001C - 0x8C1C0307, // 0013 GETMET R7 R1 K7 - 0x5C240C00, // 0014 MOVE R9 R6 - 0x7C1C0400, // 0015 CALL R7 2 - 0x601C0001, // 0016 GETGBL R7 G1 - 0x8C200508, // 0017 GETMET R8 R2 K8 - 0x58280009, // 0018 LDCONST R10 K9 - 0x5C2C0C00, // 0019 MOVE R11 R6 - 0x7C200600, // 001A CALL R8 3 - 0x7C1C0200, // 001B CALL R7 1 - 0x00140B0A, // 001C ADD R5 R5 K10 - 0x7001FFE8, // 001D JMP #0007 - 0x4C180000, // 001E LDNIL R6 - 0x90021606, // 001F SETMBR R0 K11 R6 - 0x4C180000, // 0020 LDNIL R6 - 0x90021806, // 0021 SETMBR R0 K12 R6 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_add_handler -********************************************************************/ -be_local_closure(Autoconf_web_add_handler, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 2, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(page_autoconf_mgr), - }), - &be_const_str__X3Clambda_X3E, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0x80040000, // 0003 RET 1 R0 - }) - ), - be_nested_proto( - 2, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(page_autoconf_ctl), - }), - &be_const_str__X3Clambda_X3E, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0x80040000, // 0003 RET 1 R0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(webserver), - /* K1 */ be_nested_str(on), - /* K2 */ be_nested_str(_X2Fac), - /* K3 */ be_nested_str(HTTP_GET), - /* K4 */ be_nested_str(HTTP_POST), - }), - &be_const_str_web_add_handler, - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x88180303, // 0004 GETMBR R6 R1 K3 - 0x7C080800, // 0005 CALL R2 4 - 0x8C080301, // 0006 GETMET R2 R1 K1 - 0x58100002, // 0007 LDCONST R4 K2 - 0x84140001, // 0008 CLOSURE R5 P1 - 0x88180304, // 0009 GETMBR R6 R1 K4 - 0x7C080800, // 000A CALL R2 4 - 0xA0000000, // 000B CLOSE R0 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear_first_time -********************************************************************/ -be_local_closure(Autoconf_clear_first_time, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(path), - /* K1 */ be_nested_str(remove), - /* K2 */ be_nested_str(_X2F_X2Eautoconf), - }), - &be_const_str_clear_first_time, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x7C080400, // 0003 CALL R2 2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_current_module_path -********************************************************************/ -be_local_closure(Autoconf_get_current_module_path, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(_archive), - }), - &be_const_str_get_current_module_path, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Autoconf -********************************************************************/ -be_local_class(Autoconf, - 2, - NULL, - be_nested_map(18, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(page_autoconf_ctl, -1), be_const_closure(Autoconf_page_autoconf_ctl_closure) }, - { be_const_key(autoexec, -1), be_const_closure(Autoconf_autoexec_closure) }, - { be_const_key(run_bat, 17), be_const_closure(Autoconf_run_bat_closure) }, - { be_const_key(page_autoconf_mgr, -1), be_const_closure(Autoconf_page_autoconf_mgr_closure) }, - { be_const_key(get_current_module_path, 13), be_const_closure(Autoconf_get_current_module_path_closure) }, - { be_const_key(preinit, -1), be_const_closure(Autoconf_preinit_closure) }, - { be_const_key(clear_first_time, -1), be_const_closure(Autoconf_clear_first_time_closure) }, - { be_const_key(load_templates, -1), be_const_closure(Autoconf_load_templates_closure) }, - { be_const_key(_archive, -1), be_const_var(0) }, - { be_const_key(web_add_config_button, -1), be_const_closure(Autoconf_web_add_config_button_closure) }, - { be_const_key(is_first_time, -1), be_const_closure(Autoconf_is_first_time_closure) }, - { be_const_key(web_add_handler, -1), be_const_closure(Autoconf_web_add_handler_closure) }, - { be_const_key(delete_all_configs, 4), be_const_closure(Autoconf_delete_all_configs_closure) }, - { be_const_key(reset, 5), be_const_closure(Autoconf_reset_closure) }, - { be_const_key(get_current_module_name, 11), be_const_closure(Autoconf_get_current_module_name_closure) }, - { be_const_key(init, 6), be_const_closure(Autoconf_init_closure) }, - { be_const_key(_error, -1), be_const_var(1) }, - { be_const_key(set_first_time, -1), be_const_closure(Autoconf_set_first_time_closure) }, - })), - be_str_literal("Autoconf") -); - -/******************************************************************** -** Solidified function: _anonymous_ -********************************************************************/ -be_local_closure(_anonymous_, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_const_class(be_class_Autoconf), - }), - &be_const_str__anonymous_, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0xB4000000, // 0001 CLASS K0 - 0x5C080200, // 0002 MOVE R2 R1 - 0x7C080000, // 0003 CALL R2 0 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified module: autoconf -********************************************************************/ -be_local_module(autoconf, - "autoconf", - be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(init, -1), be_const_closure(_anonymous__closure) }, - })) -); -BE_EXPORT_VARIABLE be_define_const_native_module(autoconf); -/********************************************************************/ diff --git a/lib/libesp32/berry/default/be_crypto_lib.c b/lib/libesp32/berry/default/be_crypto_lib.c deleted file mode 100644 index 04a10b28e..000000000 --- a/lib/libesp32/berry/default/be_crypto_lib.c +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************** - * Berry module `webserver` - * - * To use: `import webserver` - * - * Allows to respond to HTTP request - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_ALEXA_AVS - -extern int m_aes_gcm_init(bvm *vm); -extern int m_aes_gcm_encryt(bvm *vm); -extern int m_aes_gcm_decryt(bvm *vm); -extern int m_aes_gcm_tag(bvm *vm); - -extern int m_ec_c25519_pubkey(bvm *vm); -extern int m_ec_c25519_sharedkey(bvm *vm); - -#include "../generate/be_fixed_be_class_aes_gcm.h" -#include "../generate/be_fixed_be_class_ec_c25519.h" - -void be_load_crypto_lib(bvm *vm) { - // insert the class GCM in module AES - be_newmodule(vm); - be_setname(vm, -1, "crypto"); - be_setglobal(vm, "crypto"); - - be_pushntvclass(vm, &be_class_aes_gcm); - be_setmember(vm, -2, "AES_GCM"); - be_pop(vm, 1); - - be_pushntvclass(vm, &be_class_ec_c25519); - be_setmember(vm, -2, "EC_C25519"); - be_pop(vm, 2); -} -/* @const_object_info_begin - -class be_class_aes_gcm (scope: global, name: AES_GCM) { - .p1, var - .p2, var - - init, func(m_aes_gcm_init) - encrypt, func(m_aes_gcm_encryt) - decrypt, func(m_aes_gcm_decryt) - tag, func(m_aes_gcm_tag) -} - -class be_class_ec_c25519 (scope: global, name: EC_C25519) { - public_key, func(m_ec_c25519_pubkey) - shared_key, func(m_ec_c25519_sharedkey) -} - -@const_object_info_end */ - -#endif // USE_ALEXA_AVS diff --git a/lib/libesp32/berry/default/be_ctypes.c b/lib/libesp32/berry/default/be_ctypes.c deleted file mode 100644 index 18e655d8b..000000000 --- a/lib/libesp32/berry/default/be_ctypes.c +++ /dev/null @@ -1,494 +0,0 @@ -/******************************************************************** - * Tasmota ctypes mapping - *******************************************************************/ -#include "be_constobj.h" -#include - -extern __attribute__((noreturn)) void be_raisef(bvm *vm, const char *except, const char *msg, ...); - -// binary search within an array of sorted strings -// the first 4 bytes are a pointer to a string -// returns 0..total_elements-1 or -1 if not found - -int32_t bin_search_ctypes(const char * needle, const void * table, size_t elt_size, size_t total_elements) { - int32_t low = 0; - int32_t high = total_elements - 1; - int32_t mid = (low + high) / 2; - // start a dissect - while (low <= high) { - const char * elt = *(const char **) ( ((uint8_t*)table) + mid * elt_size ); - int32_t comp = strcmp(needle, elt); - if (comp < 0) { - high = mid - 1; - } else if (comp > 0) { - low = mid + 1; - } else { - break; - } - mid = (low + high) / 2; - } - if (low <= high) { - return mid; - } else { - return -1; - } -} - -enum { - ctypes_i32 = 14, - ctypes_i16 = 12, - ctypes_i8 = 11, - ctypes_u32 = 4, - ctypes_u16 = 2, - ctypes_u8 = 1, - - // big endian - ctypes_be_i32 = -14, - ctypes_be_i16 = -12, - ctypes_be_i8 = -11, - ctypes_be_u32 = -4, - ctypes_be_u16 = -2, - ctypes_be_u8 = -1, - - // floating point - ctypes_float = 5, - ctypes_double = 10, - - // pointer - ctypes_ptr32 = 9, - ctypes_ptr64 = -9, - - ctypes_bf = 0, //bif-field -}; - -typedef struct be_ctypes_structure_item_t { - const char * name; - uint16_t offset_bytes; - uint8_t offset_bits : 3; - uint8_t len_bits : 5; - int8_t type : 5; - uint8_t mapping : 3; -} be_ctypes_structure_item_t; - -typedef struct be_ctypes_structure_t { - uint16_t size_bytes; /* size in bytes */ - uint16_t size_elt; /* number of elements */ - const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ - const be_ctypes_structure_item_t * items; -} be_ctypes_structure_t; - -typedef struct be_ctypes_class_t { - const char * name; - const be_ctypes_structure_t * definitions; -} be_ctypes_class_t; - -typedef struct be_ctypes_classes_t { - uint16_t size; - const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ - const be_ctypes_class_t * classes; -} be_ctypes_classes_t; - -// const be_ctypes_class_t * g_ctypes_classes = NULL; - -// -// Constructor for ctypes structure -// -// If no arg: allocate a bytes() structure of the right size, filled with zeroes -// Arg1 is instance self -// If arg 2 is int or comptr (and not null): create a mapped bytes buffer to read/write at a specific location (can be copied if need a snapshot) -// If arg 2 is a bytes object, consider it's comptr and map the buffer (it's basically casting). WARNING no size check is done so you can easily corrupt memory -int be_ctypes_init(bvm *vm) { - int argc = be_top(vm); - void * src_data = NULL; - if (argc > 1 && (be_isint(vm, 2) || be_iscomptr(vm, 2) || be_isbytes(vm, 2))) { - if (be_iscomptr(vm, 2)) { - src_data = be_tocomptr(vm, 2); - } else if (be_isbytes(vm, 2)) { - be_getmember(vm, 2, ".p"); - src_data = be_tocomptr(vm, -1); - be_pop(vm, 1); - } else { - src_data = (void*) be_toint(vm, 2); - } - } - - // look for class definition - be_getmember(vm, 1, "_def"); // static class comptr - const be_ctypes_structure_t *definitions; - definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, -1); - be_pop(vm, 1); - - // call super(self, bytes) - be_getglobal(vm, "super"); // push super function - be_pushvalue(vm, 1); // push self instance - be_getglobal(vm, "bytes"); // push bytes class - be_call(vm, 2); - be_pop(vm, 2); - // berry_log_C("be_ctypes_init> super found %p", be_toint(vm, -1)); - - // call bytes.init(self) - be_getmember(vm, -1, "init"); - be_pushvalue(vm, -2); - if (src_data) { be_pushcomptr(vm, src_data); } // if mapped, push address - be_pushint(vm, definitions ? -definitions->size_bytes : 0); // negative size signals a fixed size - be_call(vm, src_data ? 3 : 2); // call with 2 or 3 arguments depending on provided address - be_pop(vm, src_data ? 4 : 3); - // super(self, bytes) still on top of stack - - be_pop(vm, 1); - - be_return(vm); -} - -// -// copy ctypes_bytes, with same class and same content -// -int be_ctypes_copy(bvm *vm) { - size_t len; - const void * src = be_tobytes(vm, 1, &len); - be_classof(vm, 1); - // stack: 1/self + class_object - be_call(vm, 0); // call empty constructor to build empty resizable copy - // stack: 1/ self + new_empty_instance - - // source object (self) - be_getmember(vm, 1, ".p"); - const void* src_buf = be_tocomptr(vm, -1); - be_pop(vm, 1); - - be_getmember(vm, 1, ".len"); - int32_t src_len = be_toint(vm, -1); - be_pop(vm, 1); - - // dest object - be_getmember(vm, -1, ".p"); - const void* dst_buf = be_tocomptr(vm, -1); - be_pop(vm, 1); - - be_getmember(vm, -1, ".len"); - int32_t dst_len = be_toint(vm, -1); - be_pop(vm, 1); - - if (src_len != dst_len) { - be_raisef(vm, "internal_error", "new object has wrong size %i (should be %i)", dst_len, src_len); - } - - // copy bytes - memmove((void*)dst_buf, src_buf, src_len); - - be_return(vm); -} - -// get an attribute from a ctypes structure -// arg1: ctypes instance -// arg2: name of the argument -// The class has a `_def` static class attribute with the C low-level mapping definition -int be_ctypes_member(bvm *vm) { - int argc = be_top(vm); - be_getmember(vm, 1, "_def"); - const be_ctypes_structure_t *definitions; - definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, -1); - be_pop(vm, 1); - const char *name = be_tostring(vm, 2); - - // look for member - int32_t member_idx = bin_search_ctypes(name, &definitions->items[0], sizeof(be_ctypes_structure_item_t), definitions->size_elt); - if (member_idx >= 0) { - const be_ctypes_structure_item_t *member = &definitions->items[member_idx]; - // berry_log_C("member found bytes=%i, bits=%i, len_bits=%i, type=%i", member->offset_bytes, member->offset_bits, member->len_bits, member->type); - - // dispatch according to types - if (ctypes_bf == member->type) { - // bitfield - be_getmember(vm, 1, "getbits"); - be_pushvalue(vm, 1); // self - be_pushint(vm, member->offset_bytes * 8 + member->offset_bits); - be_pushint(vm, member->len_bits); - be_call(vm, 3); - be_pop(vm, 3); - // int result at top of stack - } else if (ctypes_float == member->type) { - // Note: double not supported (no need identified) - // get raw int32_t - be_getmember(vm, 1, "geti"); // self.get or self.geti - be_pushvalue(vm, 1); // push self - be_pushint(vm, member->offset_bytes); - be_pushint(vm, 4); // size is 4 bytes - be_call(vm, 3); - be_pop(vm, 3); - // get int and convert to float - int32_t val = be_toint(vm, -1); - be_pop(vm, 1); - float *fval = (float*) &val; // type wizardry - be_pushreal(vm, *fval); - } else if (ctypes_ptr32 == member->type) { - be_getmember(vm, 1, "geti"); // self.get or self.geti - be_pushvalue(vm, 1); // push self - be_pushint(vm, member->offset_bytes); - be_pushint(vm, 4); // size is 4 bytes TODO 32 bits only supported here - be_call(vm, 3); - be_pop(vm, 3); - // convert to ptr - int32_t val = be_toint(vm, -1); - be_pop(vm, 1); - be_pushcomptr(vm, (void*) val); - } else { - // general int support - int size = member->type; // eventually 1/2/4, positive if little endian, negative if big endian - int sign = bfalse; // signed int - if (size >= ctypes_i8) { - size -= ctypes_i8 - 1; - sign = btrue; - } - if (size <= ctypes_be_i8) { - size += ctypes_be_i8 - 1; - sign = btrue; - } - // get - be_getmember(vm, 1, sign ? "geti" : "get"); // self.get or self.geti - be_pushvalue(vm, 1); // push self - be_pushint(vm, member->offset_bytes); - be_pushint(vm, size); - be_call(vm, 3); - be_pop(vm, 3); - // int result at top of stack - } - // the int result is at top of the stack - // check if we need an instance mapping - if (member->mapping > 0 && definitions->instance_mapping) { - const char * mapping_name = definitions->instance_mapping[member->mapping - 1]; - if (mapping_name) { - be_getglobal(vm, mapping_name); // stack: class - be_pushvalue(vm, -2); // stack: class, value - be_pushint(vm, -1); // stack; class, value, -1 - be_call(vm, 2); // call constructor with 2 parameters - be_pop(vm, 2); // leave new instance on top of stack - } - } - be_return(vm); - } - - be_return_nil(vm); -} - -// setmember takes 3 arguments: -// 1: self (subclass of bytes()) -// 2: name of member -// 3: value -int be_ctypes_setmember(bvm *vm) { - int argc = be_top(vm); - - // If the value is an instance, we call 'toint()' and replace the value - if (be_isinstance(vm, 3)) { - - be_getmember(vm, 3, "toint"); - if (!be_isnil(vm, -1)) { - be_pushvalue(vm, 3); - be_call(vm, 1); - be_pop(vm, 1); - be_moveto(vm, -1, 3); - } else { - be_raise(vm, "value_error", "Value is an instance without 'toint()' method"); - } - be_pop(vm, 1); - } - - // If the value is a pointer, replace with an int of same value (works only on 32 bits CPU) - if (be_iscomptr(vm, 3)) { - void * v = be_tocomptr(vm, 3); - be_pushint(vm, (int32_t) v); - be_moveto(vm, -1, 3); - be_pop(vm, 1); - } - - be_getmember(vm, 1, "_def"); - const be_ctypes_structure_t *definitions; - definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, -1); - be_pop(vm, 1); - const char *name = be_tostring(vm, 2); - - // look for member - int32_t member_idx = bin_search_ctypes(name, &definitions->items[0], sizeof(be_ctypes_structure_item_t), definitions->size_elt); - if (member_idx >= 0) { - const be_ctypes_structure_item_t *member = &definitions->items[member_idx]; - // berry_log_C("member found bytes=%i, bits=%i, len_bits=%i, type=%i", member->offset_bytes, member->offset_bits, member->len_bits, member->type); - - // dispatch according to types - if (ctypes_bf == member->type) { - // bitfield - be_getmember(vm, 1, "setbits"); - be_pushvalue(vm, 1); // self - be_pushint(vm, member->offset_bytes * 8 + member->offset_bits); - be_pushint(vm, member->len_bits); - be_pushvalue(vm, 3); // val - be_call(vm, 4); - be_pop(vm, 5); - be_return_nil(vm); - } else if (ctypes_float == member->type) { - // Note: double not supported (no need identified) - float val = be_toreal(vm, 3); - int32_t *ival = (int32_t*) &val; - // set - be_getmember(vm, 1, "seti"); - be_pushvalue(vm, 1); // push self - be_pushint(vm, member->offset_bytes); - be_pushint(vm, *ival); - be_pushint(vm, 4); // size is 4 bytes - be_call(vm, 4); - be_pop(vm, 5); - be_return_nil(vm); - } else if (ctypes_ptr32 == member->type) { - // Note: 64 bits pointer not supported - int32_t ptr; - if (be_iscomptr(vm, 3)) { - ptr = (int32_t) be_tocomptr(vm, 3); - } else { - ptr = be_toint(vm, 3); - } - // set - be_getmember(vm, 1, "seti"); - be_pushvalue(vm, 1); // push self - be_pushint(vm, member->offset_bytes); - be_pushint(vm, ptr); - be_pushint(vm, 4); // size is 4 bytes - 64 bits not suppported - be_call(vm, 4); - be_pop(vm, 5); - be_return_nil(vm); - } else { - // general int support - int size = member->type; // eventually 1/2/4, positive if little endian, negative if big endian - int sign = bfalse; // signed int - if (size >= ctypes_i8) { - size -= ctypes_i8 - 1; - sign = btrue; - } - if (size <= ctypes_be_i8) { - size += ctypes_be_i8 - 1; - sign = btrue; - } - // set - be_getmember(vm, 1, sign ? "seti" : "set"); // self.get or self.geti - be_pushvalue(vm, 1); // push self - be_pushint(vm, member->offset_bytes); - be_pushvalue(vm, 3); // val - be_pushint(vm, size); - be_call(vm, 4); - be_pop(vm, 5); - be_return_nil(vm); - } - } else { - be_raisef(vm, "attribute_error", "class '%s' cannot assign to attribute '%s'", - be_classname(vm, 1), be_tostring(vm, 2)); - } -} - -// -// tomap, create a map instance containing all values decoded -// -int be_ctypes_tomap(bvm *vm) { - // don't need argc - be_getmember(vm, 1, "_def"); - const be_ctypes_structure_t *definitions; - definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, -1); - be_pop(vm, 1); - - // create empty map - be_newobject(vm, "map"); - - for (uint32_t i = 0; i < definitions->size_elt; i++) { - const be_ctypes_structure_item_t * item = &definitions->items[i]; - - be_pushstring(vm, item->name); // stack: map - key - - be_getmember(vm, 1, "member"); - be_pushvalue(vm, 1); - be_pushstring(vm, item->name); - be_call(vm, 2); - be_pop(vm, 2); // stack: map - key - value - - be_data_insert(vm, -3); - be_pop(vm, 2); // stack: map - } - - be_pop(vm, 1); // remove map struct, to leave map instance - be_return(vm); -} - -// -// Constructor for ctypes_dyn structure -// -// Arg1 is instance self -// Arg2 is int or comptr (and not null): create a mapped bytes buffer to read/write at a specific location -// Arg3 is int or comptr (and not null): the binary definition of the struct (dynamic and not fixed as static member) -int be_ctypes_dyn_init(bvm *vm) { - int argc = be_top(vm); - void * src_data = NULL; - const be_ctypes_structure_t * definitions = NULL; - if (argc > 2 && (be_isint(vm, 2) || be_iscomptr(vm, 2)) && (be_isint(vm, 3) || be_iscomptr(vm, 3))) { - if (be_iscomptr(vm, 2)) { - src_data = be_tocomptr(vm, 2); - } else { - src_data = (void*) be_toint(vm, 2); - } - if (be_iscomptr(vm, 3)) { - definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, 3); - } else { - definitions = (const be_ctypes_structure_t *) be_toint(vm, 3); - } - } - if (!src_data || !definitions) { - be_raise(vm, "value_error", "'address' and 'definition' cannot be null"); - } - - // store definition in member variable - be_pushcomptr(vm, (void*) definitions); - be_setmember(vm, 1, "_def"); // static class comptr - be_pop(vm, 1); - - // call bytes.init(self) - be_getbuiltin(vm, "bytes"); // shortcut `ctypes` init and call directly bytes.init() - be_getmember(vm, -1, "init"); - be_pushvalue(vm, 1); - be_pushcomptr(vm, src_data); - be_pushint(vm, -definitions->size_bytes); // negative size signals a fixed size - be_call(vm, 3); // call with 2 or 3 arguments depending on provided address - be_pop(vm, 4); - // super(self, bytes) still on top of stack - - be_pop(vm, 1); - - be_return(vm); -} - -BE_EXPORT_VARIABLE extern const bclass be_class_bytes; - -#include "../generate/be_fixed_be_class_ctypes.h" -#include "../generate/be_fixed_be_class_ctypes_dyn.h" - -void be_load_ctypes_lib(bvm *vm) { - be_pushntvclass(vm, &be_class_ctypes); - be_setglobal(vm, "ctypes_bytes"); - be_pop(vm, 1); - be_pushntvclass(vm, &be_class_ctypes_dyn); - be_setglobal(vm, "ctypes_bytes_dyn"); - be_pop(vm, 1); -} - -/* @const_object_info_begin -class be_class_ctypes (scope: global, name: ctypes_bytes, super: be_class_bytes) { - _def, nil() - copy, func(be_ctypes_copy) - init, func(be_ctypes_init) - member, func(be_ctypes_member) - setmember, func(be_ctypes_setmember) - - tomap, func(be_ctypes_tomap) -} -@const_object_info_end */ - -/* @const_object_info_begin -class be_class_ctypes_dyn (scope: global, name: ctypes_bytes_dyn, super: be_class_ctypes) { - _def, var - init, func(be_ctypes_dyn_init) -} -@const_object_info_end */ diff --git a/lib/libesp32/berry/default/be_display_lib.c b/lib/libesp32/berry/default/be_display_lib.c deleted file mode 100644 index 3943396fc..000000000 --- a/lib/libesp32/berry/default/be_display_lib.c +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * To use: `import display` - * - * Initialize Universal Display driver - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_DISPLAY - -// Tasmota specific - -extern int be_ntv_display_start(bvm *vm); - -/******************************************************************** -** Solidified module: display -********************************************************************/ -be_local_module(display, - "display", - be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(start, -1), be_const_func(be_ntv_display_start) }, - })) -); -BE_EXPORT_VARIABLE be_define_const_native_module(display); -/********************************************************************/ - -#endif // USE_DISPLAY \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_driverlib.c b/lib/libesp32/berry/default/be_driverlib.c deleted file mode 100644 index 45a611382..000000000 --- a/lib/libesp32/berry/default/be_driverlib.c +++ /dev/null @@ -1,153 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * To use: `d = Driver()` - * - *******************************************************************/ -#include "be_constobj.h" - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Driver_init, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_tasmota -********************************************************************/ -be_local_closure(Driver_get_tasmota, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - }), - &be_const_str_get_tasmota, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_cmd -********************************************************************/ -be_local_closure(Driver_add_cmd, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 2), - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - &be_const_str__X3Clambda_X3E, - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x68100000, // 0000 GETUPV R4 U0 - 0x68140001, // 0001 GETUPV R5 U1 - 0x5C180000, // 0002 MOVE R6 R0 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x5C200400, // 0004 MOVE R8 R2 - 0x5C240600, // 0005 MOVE R9 R3 - 0x7C100A00, // 0006 CALL R4 5 - 0x80040800, // 0007 RET 1 R4 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(add_cmd), - }), - &be_const_str_add_cmd, - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x84180000, // 0003 CLOSURE R6 P0 - 0x7C0C0600, // 0004 CALL R3 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Driver -********************************************************************/ -be_local_class(Driver, - 13, - NULL, - be_nested_map(16, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(web_add_main_button, 14), be_const_var(4) }, - { be_const_key(web_add_console_button, -1), be_const_var(7) }, - { be_const_key(web_add_management_button, 8), be_const_var(5) }, - { be_const_key(init, -1), be_const_closure(Driver_init_closure) }, - { be_const_key(json_append, -1), be_const_var(10) }, - { be_const_key(web_add_config_button, 7), be_const_var(6) }, - { be_const_key(every_100ms, -1), be_const_var(1) }, - { be_const_key(display, -1), be_const_var(12) }, - { be_const_key(web_add_button, 13), be_const_var(3) }, - { be_const_key(every_second, -1), be_const_var(0) }, - { be_const_key(save_before_restart, -1), be_const_var(8) }, - { be_const_key(get_tasmota, -1), be_const_closure(Driver_get_tasmota_closure) }, - { be_const_key(web_sensor, 6), be_const_var(9) }, - { be_const_key(web_add_handler, -1), be_const_var(2) }, - { be_const_key(button_pressed, 1), be_const_var(11) }, - { be_const_key(add_cmd, -1), be_const_closure(Driver_add_cmd_closure) }, - })), - be_str_literal("Driver") -); -/*******************************************************************/ - -void be_load_Driver_class(bvm *vm) { - be_pushntvclass(vm, &be_class_Driver); - be_setglobal(vm, "Driver"); - be_pop(vm, 1); -} diff --git a/lib/libesp32/berry/default/be_energy_ctypes_definitions.c b/lib/libesp32/berry/default/be_energy_ctypes_definitions.c deleted file mode 100644 index 86f84ef64..000000000 --- a/lib/libesp32/berry/default/be_energy_ctypes_definitions.c +++ /dev/null @@ -1,117 +0,0 @@ -/******************************************************************** - * Tasmota LVGL ctypes mapping - *******************************************************************/ -#include "be_ctypes.h" - -#ifdef USE_ENERGY_SENSOR - -/******************************************************************** - * Generated code, don't edit - *******************************************************************/ - -static const char * be_ctypes_instance_mappings[]; /* forward definition */ - -const be_ctypes_structure_t be_energy_struct = { - 250, /* size in bytes */ - 85, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[85]) { - { "active_power", 24, 0, 0, ctypes_float, 0 }, - { "active_power_2", 28, 0, 0, ctypes_float, 0 }, - { "active_power_3", 32, 0, 0, ctypes_float, 0 }, - { "apparent_power", 36, 0, 0, ctypes_float, 0 }, - { "apparent_power_2", 40, 0, 0, ctypes_float, 0 }, - { "apparent_power_3", 44, 0, 0, ctypes_float, 0 }, - { "command_code", 205, 0, 0, ctypes_u8, 0 }, - { "current", 12, 0, 0, ctypes_float, 0 }, - { "current_2", 16, 0, 0, ctypes_float, 0 }, - { "current_3", 20, 0, 0, ctypes_float, 0 }, - { "current_available", 215, 0, 0, ctypes_u8, 0 }, - { "daily", 120, 0, 0, ctypes_float, 0 }, - { "daily_2", 124, 0, 0, ctypes_float, 0 }, - { "daily_3", 128, 0, 0, ctypes_float, 0 }, - { "daily_sum", 144, 0, 0, ctypes_float, 0 }, - { "data_valid", 206, 0, 0, ctypes_u8, 0 }, - { "data_valid_2", 207, 0, 0, ctypes_u8, 0 }, - { "data_valid_3", 208, 0, 0, ctypes_u8, 0 }, - { "export_active", 96, 0, 0, ctypes_float, 0 }, - { "export_active_2", 100, 0, 0, ctypes_float, 0 }, - { "export_active_3", 104, 0, 0, ctypes_float, 0 }, - { "fifth_second", 204, 0, 0, ctypes_u8, 0 }, - { "frequency", 72, 0, 0, ctypes_float, 0 }, - { "frequency_2", 76, 0, 0, ctypes_float, 0 }, - { "frequency_3", 80, 0, 0, ctypes_float, 0 }, - { "frequency_common", 211, 0, 0, ctypes_u8, 0 }, - { "import_active", 84, 0, 0, ctypes_float, 0 }, - { "import_active_2", 88, 0, 0, ctypes_float, 0 }, - { "import_active_3", 92, 0, 0, ctypes_float, 0 }, - { "max_current_flag", 242, 0, 0, ctypes_u8, 0 }, - { "max_energy_state", 249, 0, 0, ctypes_u8, 0 }, - { "max_power_flag", 238, 0, 0, ctypes_u8, 0 }, - { "max_voltage_flag", 240, 0, 0, ctypes_u8, 0 }, - { "min_current_flag", 241, 0, 0, ctypes_u8, 0 }, - { "min_power_flag", 237, 0, 0, ctypes_u8, 0 }, - { "min_voltage_flag", 239, 0, 0, ctypes_u8, 0 }, - { "mplh_counter", 244, 0, 0, ctypes_u16, 0 }, - { "mplr_counter", 248, 0, 0, ctypes_u8, 0 }, - { "mplw_counter", 246, 0, 0, ctypes_u16, 0 }, - { "period", 192, 0, 0, ctypes_u32, 0 }, - { "period_2", 196, 0, 0, ctypes_u32, 0 }, - { "period_3", 200, 0, 0, ctypes_u32, 0 }, - { "phase_count", 209, 0, 0, ctypes_u8, 0 }, - { "power_factor", 60, 0, 0, ctypes_float, 0 }, - { "power_factor_2", 64, 0, 0, ctypes_float, 0 }, - { "power_factor_3", 68, 0, 0, ctypes_float, 0 }, - { "power_history_0", 218, 0, 0, ctypes_u16, 0 }, - { "power_history_0_2", 220, 0, 0, ctypes_u16, 0 }, - { "power_history_0_3", 222, 0, 0, ctypes_u16, 0 }, - { "power_history_1", 224, 0, 0, ctypes_u16, 0 }, - { "power_history_1_2", 226, 0, 0, ctypes_u16, 0 }, - { "power_history_1_3", 228, 0, 0, ctypes_u16, 0 }, - { "power_history_2", 230, 0, 0, ctypes_u16, 0 }, - { "power_history_2_2", 232, 0, 0, ctypes_u16, 0 }, - { "power_history_2_3", 234, 0, 0, ctypes_u16, 0 }, - { "power_on", 217, 0, 0, ctypes_u8, 0 }, - { "power_steady_counter", 236, 0, 0, ctypes_u8, 0 }, - { "reactive_power", 48, 0, 0, ctypes_float, 0 }, - { "reactive_power_2", 52, 0, 0, ctypes_float, 0 }, - { "reactive_power_3", 56, 0, 0, ctypes_float, 0 }, - { "start_energy", 108, 0, 0, ctypes_float, 0 }, - { "start_energy_2", 112, 0, 0, ctypes_float, 0 }, - { "start_energy_3", 116, 0, 0, ctypes_float, 0 }, - { "today_delta_kwh", 156, 0, 0, ctypes_u32, 0 }, - { "today_delta_kwh_2", 160, 0, 0, ctypes_u32, 0 }, - { "today_delta_kwh_3", 164, 0, 0, ctypes_u32, 0 }, - { "today_kwh", 180, 0, 0, ctypes_u32, 0 }, - { "today_kwh_2", 184, 0, 0, ctypes_u32, 0 }, - { "today_kwh_3", 188, 0, 0, ctypes_u32, 0 }, - { "today_offset_init_kwh", 213, 0, 0, ctypes_u8, 0 }, - { "today_offset_kwh", 168, 0, 0, ctypes_u32, 0 }, - { "today_offset_kwh_2", 172, 0, 0, ctypes_u32, 0 }, - { "today_offset_kwh_3", 176, 0, 0, ctypes_u32, 0 }, - { "total", 132, 0, 0, ctypes_float, 0 }, - { "total_2", 136, 0, 0, ctypes_float, 0 }, - { "total_3", 140, 0, 0, ctypes_float, 0 }, - { "total_sum", 148, 0, 0, ctypes_float, 0 }, - { "type_dc", 216, 0, 0, ctypes_u8, 0 }, - { "use_overtemp", 212, 0, 0, ctypes_u8, 0 }, - { "voltage", 0, 0, 0, ctypes_float, 0 }, - { "voltage_2", 4, 0, 0, ctypes_float, 0 }, - { "voltage_3", 8, 0, 0, ctypes_float, 0 }, - { "voltage_available", 214, 0, 0, ctypes_u8, 0 }, - { "voltage_common", 210, 0, 0, ctypes_u8, 0 }, - { "yesterday_sum", 152, 0, 0, ctypes_float, 0 }, -}}; - -static const char * be_ctypes_instance_mappings[] = { - NULL -}; - -static be_define_ctypes_class(energy_struct, &be_energy_struct, &be_class_ctypes, "energy_struct"); - -void be_load_ctypes_energy_definitions_lib(bvm *vm) { - ctypes_register_class(vm, &be_class_energy_struct, &be_energy_struct); -} -/********************************************************************/ - -#endif // USE_ENERGY_SENSOR \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_energylib.c b/lib/libesp32/berry/default/be_energylib.c deleted file mode 100644 index cbdddbfca..000000000 --- a/lib/libesp32/berry/default/be_energylib.c +++ /dev/null @@ -1,186 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * To use: `import power` - * - * read power values - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_ENERGY_SENSOR - -extern struct ENERGY Energy; -/* - -_energy = nil # avoid compilation error -energy = module("energy") -energy._ptr = nil - -def init(m) - import global - global._energy = energy_struct(m._ptr) - return m -end -energy.init = init - -def read() - return _energy.tomap() -end -energy.read = read - -def member(k) - return _energy.(k) -end -energy.member = member - -def setmember(k, v) - _energy.(k) = v -end -energy.setmember = setmember - -import solidify -solidify.dump(energy) -*/ - - -/******************************************************************** -** Solidified function: member -********************************************************************/ -be_local_closure(energy_member, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(_energy), - }), - &be_const_str_member, - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040200, // 0001 GETMBR R1 R1 R0 - 0x80040200, // 0002 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: setmember -********************************************************************/ -be_local_closure(energy_setmember, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(_energy), - }), - &be_const_str_setmember, - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x90080001, // 0001 SETMBR R2 R0 R1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read -********************************************************************/ -be_local_closure(energy_read, /* name */ - be_nested_proto( - 2, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_energy), - /* K1 */ be_nested_str(tomap), - }), - &be_const_str_read, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0xB8020000, // 0000 GETNGBL R0 K0 - 0x8C000101, // 0001 GETMET R0 R0 K1 - 0x7C000200, // 0002 CALL R0 1 - 0x80040000, // 0003 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(energy_init, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(global), - /* K1 */ be_nested_str(_energy), - /* K2 */ be_nested_str(energy_struct), - /* K3 */ be_nested_str(_ptr), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xB80A0400, // 0001 GETNGBL R2 K2 - 0x880C0103, // 0002 GETMBR R3 R0 K3 - 0x7C080200, // 0003 CALL R2 1 - 0x90060202, // 0004 SETMBR R1 K1 R2 - 0x80040000, // 0005 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified module: energy -********************************************************************/ -be_local_module(energy, - "energy", - be_nested_map(5, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(init, -1), be_const_closure(energy_init_closure) }, - { be_const_key(member, 2), be_const_closure(energy_member_closure) }, - { be_const_key(_ptr, 3), be_const_comptr(&Energy) }, - { be_const_key(setmember, -1), be_const_closure(energy_setmember_closure) }, - { be_const_key(read, -1), be_const_closure(energy_read_closure) }, - })) -); -BE_EXPORT_VARIABLE be_define_const_native_module(energy); -/********************************************************************/ - - -// { be_const_key(_ptr, 3), be_const_comptr(&Energy) }, /* patch */ - -#endif // USE_ENERGY_SENSOR \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_flash_lib.c b/lib/libesp32/berry/default/be_flash_lib.c deleted file mode 100644 index 539805d5d..000000000 --- a/lib/libesp32/berry/default/be_flash_lib.c +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************** - * Berry module `webserver` - * - * To use: `import webserver` - * - * Allows to respond to HTTP request - *******************************************************************/ -#include "be_constobj.h" - -extern int p_flash_read(bvm *vm); -extern int p_flash_write(bvm *vm); -extern int p_flash_erase(bvm *vm); - -/* @const_object_info_begin -module flash (scope: global) { - read, func(p_flash_read) - write, func(p_flash_write) - erase, func(p_flash_erase) -} -@const_object_info_end */ -#include "../generate/be_fixed_flash.h" diff --git a/lib/libesp32/berry/default/be_gpio_lib.c b/lib/libesp32/berry/default/be_gpio_lib.c deleted file mode 100644 index 3f0b2b3ed..000000000 --- a/lib/libesp32/berry/default/be_gpio_lib.c +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * To use: `import power` - * - * read power values - *******************************************************************/ -#include "be_constobj.h" - -// Tasmota specific - -extern int gp_member(bvm *vm); -extern int gp_pin_mode(bvm *vm); -extern int gp_digital_write(bvm *vm); -extern int gp_digital_read(bvm *vm); -extern int gp_dac_voltage(bvm *vm); - -extern int gp_pin_used(bvm *vm); -extern int gp_pin(bvm *vm); - -/* @const_object_info_begin -module gpio (scope: global) { - member, func(gp_member) - - pin_mode, func(gp_pin_mode) - digital_write, func(gp_digital_write) - digital_read, func(gp_digital_read) - dac_voltage, func(gp_dac_voltage) - - pin_used, func(gp_pin_used) - pin, func(gp_pin) -} -@const_object_info_end */ -#include "../generate/be_fixed_gpio.h" diff --git a/lib/libesp32/berry/default/be_i2c_axp192_lib.c b/lib/libesp32/berry/default/be_i2c_axp192_lib.c deleted file mode 100644 index 4f9f02307..000000000 --- a/lib/libesp32/berry/default/be_i2c_axp192_lib.c +++ /dev/null @@ -1,899 +0,0 @@ -/******************************************************************** - * Tasmota LVGL lv_signal_bars widget - *******************************************************************/ -#include "be_constobj.h" - -/******************************************************************** -** Solidified function: get_warning_level -********************************************************************/ -be_local_closure(AXP192_get_warning_level, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_int(1), - }), - &be_const_str_get_warning_level, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0046, // 0001 LDINT R3 71 - 0x7C040400, // 0002 CALL R1 2 - 0x2C040301, // 0003 AND R1 R1 K1 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_vbus_current -********************************************************************/ -be_local_closure(AXP192_get_vbus_current, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3EC00000), - }), - &be_const_str_get_vbus_current, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E005B, // 0001 LDINT R3 92 - 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_chg_current -********************************************************************/ -be_local_closure(AXP192_set_chg_current, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(write8), - /* K1 */ be_nested_str(read8), - }), - &be_const_str_set_chg_current, - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x54120032, // 0001 LDINT R4 51 - 0x8C140101, // 0002 GETMET R5 R0 K1 - 0x541E0032, // 0003 LDINT R7 51 - 0x7C140400, // 0004 CALL R5 2 - 0x541A00EF, // 0005 LDINT R6 240 - 0x2C140A06, // 0006 AND R5 R5 R6 - 0x541A000E, // 0007 LDINT R6 15 - 0x2C180206, // 0008 AND R6 R1 R6 - 0x30140A06, // 0009 OR R5 R5 R6 - 0x7C080600, // 000A CALL R2 3 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_bat_current -********************************************************************/ -be_local_closure(AXP192_get_bat_current, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read13), - /* K1 */ be_const_real_hex(0x3F000000), - }), - &be_const_str_get_bat_current, - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0079, // 0001 LDINT R3 122 - 0x7C040400, // 0002 CALL R1 2 - 0x8C080100, // 0003 GETMET R2 R0 K0 - 0x5412007B, // 0004 LDINT R4 124 - 0x7C080400, // 0005 CALL R2 2 - 0x04040202, // 0006 SUB R1 R1 R2 - 0x08040301, // 0007 MUL R1 R1 K1 - 0x80040200, // 0008 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_bat_power -********************************************************************/ -be_local_closure(AXP192_get_bat_power, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read24), - /* K1 */ be_const_real_hex(0x3A102DE1), - }), - &be_const_str_get_bat_power, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E006F, // 0001 LDINT R3 112 - 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: json_append -********************************************************************/ -be_local_closure(AXP192_json_append, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(wire), - }), - &be_const_str_json_append, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x74060001, // 0001 JMPT R1 #0004 - 0x4C040000, // 0002 LDNIL R1 - 0x80040200, // 0003 RET 1 R1 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_vbus_voltage -********************************************************************/ -be_local_closure(AXP192_get_vbus_voltage, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3ADED28A), - }), - &be_const_str_get_vbus_voltage, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0059, // 0001 LDINT R3 90 - 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_temp -********************************************************************/ -be_local_closure(AXP192_get_temp, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3DCCCCCD), - /* K2 */ be_const_real_hex(0x4310B333), - }), - &be_const_str_get_temp, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E005D, // 0001 LDINT R3 94 - 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 - 0x04040302, // 0004 SUB R1 R1 K2 - 0x80040200, // 0005 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: battery_present -********************************************************************/ -be_local_closure(AXP192_battery_present, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(1), - }), - &be_const_str_battery_present, - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x58100003, // 0003 LDCONST R4 K3 - 0x58140003, // 0004 LDCONST R5 K3 - 0x7C040800, // 0005 CALL R1 4 - 0x540A001F, // 0006 LDINT R2 32 - 0x2C040202, // 0007 AND R1 R1 R2 - 0x78060002, // 0008 JMPF R1 #000C - 0x50040200, // 0009 LDBOOL R1 1 0 - 0x80040200, // 000A RET 1 R1 - 0x70020001, // 000B JMP #000E - 0x50040000, // 000C LDBOOL R1 0 0 - 0x80040200, // 000D RET 1 R1 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_aps_voltage -********************************************************************/ -be_local_closure(AXP192_get_aps_voltage, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3AB78035), - }), - &be_const_str_get_aps_voltage, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E007D, // 0001 LDINT R3 126 - 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_dcdc_enable -********************************************************************/ -be_local_closure(AXP192_set_dcdc_enable, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(1), - /* K1 */ be_nested_str(write_bit), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(2), - /* K4 */ be_const_int(3), - }), - &be_const_str_set_dcdc_enable, - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 - 0x780E0004, // 0001 JMPF R3 #0007 - 0x8C0C0101, // 0002 GETMET R3 R0 K1 - 0x54160011, // 0003 LDINT R5 18 - 0x58180002, // 0004 LDCONST R6 K2 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x7C0C0800, // 0006 CALL R3 4 - 0x1C0C0303, // 0007 EQ R3 R1 K3 - 0x780E0004, // 0008 JMPF R3 #000E - 0x8C0C0101, // 0009 GETMET R3 R0 K1 - 0x54160011, // 000A LDINT R5 18 - 0x541A0003, // 000B LDINT R6 4 - 0x5C1C0400, // 000C MOVE R7 R2 - 0x7C0C0800, // 000D CALL R3 4 - 0x1C0C0304, // 000E EQ R3 R1 K4 - 0x780E0004, // 000F JMPF R3 #0015 - 0x8C0C0101, // 0010 GETMET R3 R0 K1 - 0x54160011, // 0011 LDINT R5 18 - 0x58180000, // 0012 LDCONST R6 K0 - 0x5C1C0400, // 0013 MOVE R7 R2 - 0x7C0C0800, // 0014 CALL R3 4 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_ldo_voltage -********************************************************************/ -be_local_closure(AXP192_set_ldo_voltage, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(2), - /* K1 */ be_nested_str(write8), - /* K2 */ be_nested_str(read8), - /* K3 */ be_const_int(3), - }), - &be_const_str_set_ldo_voltage, - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x540E0CE3, // 0000 LDINT R3 3300 - 0x240C0403, // 0001 GT R3 R2 R3 - 0x780E0001, // 0002 JMPF R3 #0005 - 0x540A000E, // 0003 LDINT R2 15 - 0x70020004, // 0004 JMP #000A - 0x540E0063, // 0005 LDINT R3 100 - 0x0C0C0403, // 0006 DIV R3 R2 R3 - 0x54120011, // 0007 LDINT R4 18 - 0x040C0604, // 0008 SUB R3 R3 R4 - 0x5C080600, // 0009 MOVE R2 R3 - 0x1C0C0300, // 000A EQ R3 R1 K0 - 0x780E000C, // 000B JMPF R3 #0019 - 0x8C0C0101, // 000C GETMET R3 R0 K1 - 0x54160027, // 000D LDINT R5 40 - 0x8C180102, // 000E GETMET R6 R0 K2 - 0x54220027, // 000F LDINT R8 40 - 0x7C180400, // 0010 CALL R6 2 - 0x541E000E, // 0011 LDINT R7 15 - 0x2C180C07, // 0012 AND R6 R6 R7 - 0x541E000E, // 0013 LDINT R7 15 - 0x2C1C0407, // 0014 AND R7 R2 R7 - 0x54220003, // 0015 LDINT R8 4 - 0x381C0E08, // 0016 SHL R7 R7 R8 - 0x30180C07, // 0017 OR R6 R6 R7 - 0x7C0C0600, // 0018 CALL R3 3 - 0x1C0C0303, // 0019 EQ R3 R1 K3 - 0x780E000A, // 001A JMPF R3 #0026 - 0x8C0C0101, // 001B GETMET R3 R0 K1 - 0x54160027, // 001C LDINT R5 40 - 0x8C180102, // 001D GETMET R6 R0 K2 - 0x54220027, // 001E LDINT R8 40 - 0x7C180400, // 001F CALL R6 2 - 0x541E00EF, // 0020 LDINT R7 240 - 0x2C180C07, // 0021 AND R6 R6 R7 - 0x541E000E, // 0022 LDINT R7 15 - 0x2C1C0407, // 0023 AND R7 R2 R7 - 0x30180C07, // 0024 OR R6 R6 R7 - 0x7C0C0600, // 0025 CALL R3 3 - 0x80000000, // 0026 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(AXP192_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(I2C_Driver), - /* K1 */ be_nested_str(init), - /* K2 */ be_nested_str(AXP192), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x60040003, // 0000 GETGBL R1 G3 - 0x5C080000, // 0001 MOVE R2 R0 - 0xB80E0000, // 0002 GETNGBL R3 K0 - 0x7C040400, // 0003 CALL R1 2 - 0x8C040301, // 0004 GETMET R1 R1 K1 - 0x580C0002, // 0005 LDCONST R3 K2 - 0x54120033, // 0006 LDINT R4 52 - 0x7C040600, // 0007 CALL R1 3 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_bat_voltage -********************************************************************/ -be_local_closure(AXP192_get_bat_voltage, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read12), - /* K1 */ be_const_real_hex(0x3A902DE0), - }), - &be_const_str_get_bat_voltage, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0077, // 0001 LDINT R3 120 - 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_ldo_enable -********************************************************************/ -be_local_closure(AXP192_set_ldo_enable, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_const_int(2), - /* K1 */ be_nested_str(write_bit), - /* K2 */ be_const_int(3), - }), - &be_const_str_set_ldo_enable, - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 - 0x780E0004, // 0001 JMPF R3 #0007 - 0x8C0C0101, // 0002 GETMET R3 R0 K1 - 0x54160011, // 0003 LDINT R5 18 - 0x58180000, // 0004 LDCONST R6 K0 - 0x5C1C0400, // 0005 MOVE R7 R2 - 0x7C0C0800, // 0006 CALL R3 4 - 0x1C0C0302, // 0007 EQ R3 R1 K2 - 0x780E0004, // 0008 JMPF R3 #000E - 0x8C0C0101, // 0009 GETMET R3 R0 K1 - 0x54160011, // 000A LDINT R5 18 - 0x58180002, // 000B LDCONST R6 K2 - 0x5C1C0400, // 000C MOVE R7 R2 - 0x7C0C0800, // 000D CALL R3 4 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_dc_voltage -********************************************************************/ -be_local_closure(AXP192_set_dc_voltage, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_int(1), - /* K1 */ be_const_int(3), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str(write8), - /* K5 */ be_nested_str(read8), - }), - &be_const_str_set_dc_voltage, - &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ - 0x140C0300, // 0000 LT R3 R1 K0 - 0x740E0001, // 0001 JMPT R3 #0004 - 0x240C0301, // 0002 GT R3 R1 K1 - 0x780E0000, // 0003 JMPF R3 #0005 - 0x80000600, // 0004 RET 0 - 0x4C0C0000, // 0005 LDNIL R3 - 0x541202BB, // 0006 LDINT R4 700 - 0x14100404, // 0007 LT R4 R2 R4 - 0x78120001, // 0008 JMPF R4 #000B - 0x580C0002, // 0009 LDCONST R3 K2 - 0x70020010, // 000A JMP #001C - 0x54120DAB, // 000B LDINT R4 3500 - 0x24100404, // 000C GT R4 R2 R4 - 0x78120001, // 000D JMPF R4 #0010 - 0x540E006F, // 000E LDINT R3 112 - 0x7002000B, // 000F JMP #001C - 0x1C100303, // 0010 EQ R4 R1 K3 - 0x78120004, // 0011 JMPF R4 #0017 - 0x541208E2, // 0012 LDINT R4 2275 - 0x24100404, // 0013 GT R4 R2 R4 - 0x78120001, // 0014 JMPF R4 #0017 - 0x540E003E, // 0015 LDINT R3 63 - 0x70020004, // 0016 JMP #001C - 0x541202BB, // 0017 LDINT R4 700 - 0x04100404, // 0018 SUB R4 R2 R4 - 0x54160018, // 0019 LDINT R5 25 - 0x0C100805, // 001A DIV R4 R4 R5 - 0x5C0C0800, // 001B MOVE R3 R4 - 0x54120025, // 001C LDINT R4 38 - 0x1C140301, // 001D EQ R5 R1 K1 - 0x78160001, // 001E JMPF R5 #0021 - 0x54120026, // 001F LDINT R4 39 - 0x70020002, // 0020 JMP #0024 - 0x1C140303, // 0021 EQ R5 R1 K3 - 0x78160000, // 0022 JMPF R5 #0024 - 0x54120022, // 0023 LDINT R4 35 - 0x8C140104, // 0024 GETMET R5 R0 K4 - 0x5C1C0800, // 0025 MOVE R7 R4 - 0x8C200105, // 0026 GETMET R8 R0 K5 - 0x5C280800, // 0027 MOVE R10 R4 - 0x7C200400, // 0028 CALL R8 2 - 0x5426007F, // 0029 LDINT R9 128 - 0x2C201009, // 002A AND R8 R8 R9 - 0x5426007E, // 002B LDINT R9 127 - 0x2C240609, // 002C AND R9 R3 R9 - 0x30201009, // 002D OR R8 R8 R9 - 0x7C140600, // 002E CALL R5 3 - 0x80000000, // 002F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: write_gpio -********************************************************************/ -be_local_closure(AXP192_write_gpio, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_const_int(2), - /* K2 */ be_nested_str(write_bit), - /* K3 */ be_const_int(3), - }), - &be_const_str_write_gpio, - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x280C0300, // 0000 GE R3 R1 K0 - 0x780E0007, // 0001 JMPF R3 #000A - 0x180C0301, // 0002 LE R3 R1 K1 - 0x780E0005, // 0003 JMPF R3 #000A - 0x8C0C0102, // 0004 GETMET R3 R0 K2 - 0x54160093, // 0005 LDINT R5 148 - 0x5C180200, // 0006 MOVE R6 R1 - 0x5C1C0400, // 0007 MOVE R7 R2 - 0x7C0C0800, // 0008 CALL R3 4 - 0x70020009, // 0009 JMP #0014 - 0x280C0303, // 000A GE R3 R1 K3 - 0x780E0007, // 000B JMPF R3 #0014 - 0x540E0003, // 000C LDINT R3 4 - 0x180C0203, // 000D LE R3 R1 R3 - 0x780E0004, // 000E JMPF R3 #0014 - 0x8C0C0102, // 000F GETMET R3 R0 K2 - 0x54160095, // 0010 LDINT R5 150 - 0x04180303, // 0011 SUB R6 R1 K3 - 0x5C1C0400, // 0012 MOVE R7 R2 - 0x7C0C0800, // 0013 CALL R3 4 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: web_sensor -********************************************************************/ -be_local_closure(AXP192_web_sensor, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(format), - /* K3 */ be_nested_str(_X7Bs_X7DVBus_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D), - /* K4 */ be_nested_str(_X7Bs_X7DVBus_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D), - /* K5 */ be_nested_str(_X7Bs_X7DBatt_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D), - /* K6 */ be_nested_str(_X7Bs_X7DBatt_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D), - /* K7 */ be_nested_str(_X7Bs_X7DTemp_X20AXP_X7Bm_X7D_X25_X2E1f_X20_XB0C_X7Be_X7D), - /* K8 */ be_nested_str(get_vbus_voltage), - /* K9 */ be_nested_str(get_bat_voltage), - /* K10 */ be_nested_str(get_bat_current), - /* K11 */ be_nested_str(get_temp), - /* K12 */ be_nested_str(tasmota), - /* K13 */ be_nested_str(web_send_decimal), - }), - &be_const_str_web_sensor, - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x74060001, // 0001 JMPT R1 #0004 - 0x4C040000, // 0002 LDNIL R1 - 0x80040200, // 0003 RET 1 R1 - 0xA4060200, // 0004 IMPORT R1 K1 - 0x8C080302, // 0005 GETMET R2 R1 K2 - 0x40120704, // 0006 CONNECT R4 K3 K4 - 0x40100905, // 0007 CONNECT R4 R4 K5 - 0x40100906, // 0008 CONNECT R4 R4 K6 - 0x40100907, // 0009 CONNECT R4 R4 K7 - 0x8C140108, // 000A GETMET R5 R0 K8 - 0x7C140200, // 000B CALL R5 1 - 0x8C180108, // 000C GETMET R6 R0 K8 - 0x7C180200, // 000D CALL R6 1 - 0x8C1C0109, // 000E GETMET R7 R0 K9 - 0x7C1C0200, // 000F CALL R7 1 - 0x8C20010A, // 0010 GETMET R8 R0 K10 - 0x7C200200, // 0011 CALL R8 1 - 0x8C24010B, // 0012 GETMET R9 R0 K11 - 0x7C240200, // 0013 CALL R9 1 - 0x7C080E00, // 0014 CALL R2 7 - 0xB80E1800, // 0015 GETNGBL R3 K12 - 0x8C0C070D, // 0016 GETMET R3 R3 K13 - 0x5C140400, // 0017 MOVE R5 R2 - 0x7C0C0400, // 0018 CALL R3 2 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_bat_charge_current -********************************************************************/ -be_local_closure(AXP192_get_bat_charge_current, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(read13), - /* K1 */ be_const_real_hex(0x3F000000), - }), - &be_const_str_get_bat_charge_current, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0079, // 0001 LDINT R3 122 - 0x7C040400, // 0002 CALL R1 2 - 0x08040301, // 0003 MUL R1 R1 K1 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_battery_chargin_status -********************************************************************/ -be_local_closure(AXP192_get_battery_chargin_status, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(1), - }), - &be_const_str_get_battery_chargin_status, - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x58100003, // 0003 LDCONST R4 K3 - 0x58140003, // 0004 LDCONST R5 K3 - 0x7C040800, // 0005 CALL R1 4 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_input_power_status -********************************************************************/ -be_local_closure(AXP192_get_input_power_status, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(1), - }), - &be_const_str_get_input_power_status, - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x58100003, // 0003 LDCONST R4 K3 - 0x58140004, // 0004 LDCONST R5 K4 - 0x7C040800, // 0005 CALL R1 4 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: AXP192 -********************************************************************/ -extern const bclass be_class_I2C_Driver; -be_local_class(AXP192, - 0, - &be_class_I2C_Driver, - be_nested_map(21, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(get_warning_level, -1), be_const_closure(AXP192_get_warning_level_closure) }, - { be_const_key(get_vbus_current, -1), be_const_closure(AXP192_get_vbus_current_closure) }, - { be_const_key(get_aps_voltage, -1), be_const_closure(AXP192_get_aps_voltage_closure) }, - { be_const_key(get_bat_current, -1), be_const_closure(AXP192_get_bat_current_closure) }, - { be_const_key(get_bat_power, 2), be_const_closure(AXP192_get_bat_power_closure) }, - { be_const_key(json_append, -1), be_const_closure(AXP192_json_append_closure) }, - { be_const_key(get_vbus_voltage, -1), be_const_closure(AXP192_get_vbus_voltage_closure) }, - { be_const_key(get_battery_chargin_status, 9), be_const_closure(AXP192_get_battery_chargin_status_closure) }, - { be_const_key(battery_present, -1), be_const_closure(AXP192_battery_present_closure) }, - { be_const_key(get_bat_charge_current, 14), be_const_closure(AXP192_get_bat_charge_current_closure) }, - { be_const_key(set_dcdc_enable, -1), be_const_closure(AXP192_set_dcdc_enable_closure) }, - { be_const_key(get_temp, 19), be_const_closure(AXP192_get_temp_closure) }, - { be_const_key(set_chg_current, 13), be_const_closure(AXP192_set_chg_current_closure) }, - { be_const_key(set_ldo_enable, 18), be_const_closure(AXP192_set_ldo_enable_closure) }, - { be_const_key(set_dc_voltage, -1), be_const_closure(AXP192_set_dc_voltage_closure) }, - { be_const_key(get_bat_voltage, 7), be_const_closure(AXP192_get_bat_voltage_closure) }, - { be_const_key(write_gpio, -1), be_const_closure(AXP192_write_gpio_closure) }, - { be_const_key(web_sensor, -1), be_const_closure(AXP192_web_sensor_closure) }, - { be_const_key(init, -1), be_const_closure(AXP192_init_closure) }, - { be_const_key(set_ldo_voltage, -1), be_const_closure(AXP192_set_ldo_voltage_closure) }, - { be_const_key(get_input_power_status, -1), be_const_closure(AXP192_get_input_power_status_closure) }, - })), - be_str_literal("AXP192") -); -/*******************************************************************/ - -void be_load_AXP192_class(bvm *vm) { - be_pushntvclass(vm, &be_class_AXP192); - be_setglobal(vm, "AXP192"); - be_pop(vm, 1); -} diff --git a/lib/libesp32/berry/default/be_i2c_driverlib.c b/lib/libesp32/berry/default/be_i2c_driverlib.c deleted file mode 100644 index 45f829e19..000000000 --- a/lib/libesp32/berry/default/be_i2c_driverlib.c +++ /dev/null @@ -1,425 +0,0 @@ -/******************************************************************** - * Tasmota I2C_Driver class - * - * To use: `d = I2C_Driver(addr, name)` - * where: - * addr: I2C address of the device - * name: name of the I2C chip for logging - * - *******************************************************************/ -#include "be_constobj.h" - -/******************************************************************** -** Solidified function: read32 -********************************************************************/ -be_local_closure(I2C_Driver_read32, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read_bytes), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(2), - /* K6 */ be_const_int(3), - }), - &be_const_str_read32, - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x5C140200, // 0003 MOVE R5 R1 - 0x541A0003, // 0004 LDINT R6 4 - 0x7C080800, // 0005 CALL R2 4 - 0x940C0503, // 0006 GETIDX R3 R2 K3 - 0x54120017, // 0007 LDINT R4 24 - 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100504, // 0009 GETIDX R4 R2 K4 - 0x5416000F, // 000A LDINT R5 16 - 0x38100805, // 000B SHL R4 R4 R5 - 0x000C0604, // 000C ADD R3 R3 R4 - 0x94100505, // 000D GETIDX R4 R2 K5 - 0x54160007, // 000E LDINT R5 8 - 0x38100805, // 000F SHL R4 R4 R5 - 0x000C0604, // 0010 ADD R3 R3 R4 - 0x94100506, // 0011 GETIDX R4 R2 K6 - 0x000C0604, // 0012 ADD R3 R3 R4 - 0x80040600, // 0013 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: write8 -********************************************************************/ -be_local_closure(I2C_Driver_write8, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(write), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(1), - }), - &be_const_str_write8, - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x58200003, // 0005 LDCONST R8 K3 - 0x7C0C0A00, // 0006 CALL R3 5 - 0x80040600, // 0007 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read12 -********************************************************************/ -be_local_closure(I2C_Driver_read12, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read_bytes), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(2), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), - }), - &be_const_str_read12, - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 - 0x7C080800, // 0005 CALL R2 4 - 0x940C0504, // 0006 GETIDX R3 R2 K4 - 0x54120003, // 0007 LDINT R4 4 - 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100505, // 0009 GETIDX R4 R2 K5 - 0x000C0604, // 000A ADD R3 R3 R4 - 0x80040600, // 000B RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: write_bit -********************************************************************/ -be_local_closure(I2C_Driver_write_bit, /* name */ - be_nested_proto( - 11, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str(write8), - /* K3 */ be_nested_str(read8), - }), - &be_const_str_write_bit, - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x14100500, // 0000 LT R4 R2 K0 - 0x74120002, // 0001 JMPT R4 #0005 - 0x54120006, // 0002 LDINT R4 7 - 0x24100404, // 0003 GT R4 R2 R4 - 0x78120000, // 0004 JMPF R4 #0006 - 0x80000800, // 0005 RET 0 - 0x38120202, // 0006 SHL R4 K1 R2 - 0x780E0007, // 0007 JMPF R3 #0010 - 0x8C140102, // 0008 GETMET R5 R0 K2 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x8C200103, // 000A GETMET R8 R0 K3 - 0x5C280200, // 000B MOVE R10 R1 - 0x7C200400, // 000C CALL R8 2 - 0x30201004, // 000D OR R8 R8 R4 - 0x7C140600, // 000E CALL R5 3 - 0x70020008, // 000F JMP #0019 - 0x8C140102, // 0010 GETMET R5 R0 K2 - 0x5C1C0200, // 0011 MOVE R7 R1 - 0x8C200103, // 0012 GETMET R8 R0 K3 - 0x5C280200, // 0013 MOVE R10 R1 - 0x7C200400, // 0014 CALL R8 2 - 0x542600FE, // 0015 LDINT R9 255 - 0x04241204, // 0016 SUB R9 R9 R4 - 0x2C201009, // 0017 AND R8 R8 R9 - 0x7C140600, // 0018 CALL R5 3 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read24 -********************************************************************/ -be_local_closure(I2C_Driver_read24, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read_bytes), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(3), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), - /* K6 */ be_const_int(2), - }), - &be_const_str_read24, - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 - 0x7C080800, // 0005 CALL R2 4 - 0x940C0504, // 0006 GETIDX R3 R2 K4 - 0x5412000F, // 0007 LDINT R4 16 - 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100505, // 0009 GETIDX R4 R2 K5 - 0x54160007, // 000A LDINT R5 8 - 0x38100805, // 000B SHL R4 R4 R5 - 0x000C0604, // 000C ADD R3 R3 R4 - 0x94100506, // 000D GETIDX R4 R2 K6 - 0x000C0604, // 000E ADD R3 R3 R4 - 0x80040600, // 000F RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read8 -********************************************************************/ -be_local_closure(I2C_Driver_read8, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(1), - }), - &be_const_str_read8, - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 - 0x7C080800, // 0005 CALL R2 4 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(I2C_Driver_init, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(get_tasmota), - /* K1 */ be_nested_str(i2c_enabled), - /* K2 */ be_nested_str(addr), - /* K3 */ be_nested_str(wire), - /* K4 */ be_nested_str(wire_scan), - /* K5 */ be_nested_str(function), - /* K6 */ be_nested_str(name), - /* K7 */ be_nested_str(I2C_X3A), - /* K8 */ be_nested_str(detected_X20on_X20bus), - /* K9 */ be_nested_str(bus), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x7C100200, // 0001 CALL R4 1 - 0x4C140000, // 0002 LDNIL R5 - 0x20140605, // 0003 NE R5 R3 R5 - 0x78160004, // 0004 JMPF R5 #000A - 0x8C140901, // 0005 GETMET R5 R4 K1 - 0x5C1C0600, // 0006 MOVE R7 R3 - 0x7C140400, // 0007 CALL R5 2 - 0x74160000, // 0008 JMPT R5 #000A - 0x80000A00, // 0009 RET 0 - 0x90020402, // 000A SETMBR R0 K2 R2 - 0x8C140904, // 000B GETMET R5 R4 K4 - 0x881C0102, // 000C GETMBR R7 R0 K2 - 0x7C140400, // 000D CALL R5 2 - 0x90020605, // 000E SETMBR R0 K3 R5 - 0x88140103, // 000F GETMBR R5 R0 K3 - 0x78160019, // 0010 JMPF R5 #002B - 0x60140004, // 0011 GETGBL R5 G4 - 0x5C180200, // 0012 MOVE R6 R1 - 0x7C140200, // 0013 CALL R5 1 - 0x1C140B05, // 0014 EQ R5 R5 K5 - 0x78160004, // 0015 JMPF R5 #001B - 0x5C140200, // 0016 MOVE R5 R1 - 0x5C180000, // 0017 MOVE R6 R0 - 0x7C140200, // 0018 CALL R5 1 - 0x90020C05, // 0019 SETMBR R0 K6 R5 - 0x70020000, // 001A JMP #001C - 0x90020C01, // 001B SETMBR R0 K6 R1 - 0x88140106, // 001C GETMBR R5 R0 K6 - 0x4C180000, // 001D LDNIL R6 - 0x1C140A06, // 001E EQ R5 R5 R6 - 0x78160001, // 001F JMPF R5 #0022 - 0x4C140000, // 0020 LDNIL R5 - 0x90020605, // 0021 SETMBR R0 K3 R5 - 0x88140103, // 0022 GETMBR R5 R0 K3 - 0x78160006, // 0023 JMPF R5 #002B - 0x60140001, // 0024 GETGBL R5 G1 - 0x58180007, // 0025 LDCONST R6 K7 - 0x881C0106, // 0026 GETMBR R7 R0 K6 - 0x58200008, // 0027 LDCONST R8 K8 - 0x88240103, // 0028 GETMBR R9 R0 K3 - 0x88241309, // 0029 GETMBR R9 R9 K9 - 0x7C140800, // 002A CALL R5 4 - 0x80000000, // 002B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read13 -********************************************************************/ -be_local_closure(I2C_Driver_read13, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(wire), - /* K1 */ be_nested_str(read_bytes), - /* K2 */ be_nested_str(addr), - /* K3 */ be_const_int(2), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), - }), - &be_const_str_read13, - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 - 0x7C080800, // 0005 CALL R2 4 - 0x940C0504, // 0006 GETIDX R3 R2 K4 - 0x54120004, // 0007 LDINT R4 5 - 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100505, // 0009 GETIDX R4 R2 K5 - 0x000C0604, // 000A ADD R3 R3 R4 - 0x80040600, // 000B RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: I2C_Driver -********************************************************************/ -be_local_class(I2C_Driver, - 3, - NULL, - be_nested_map(11, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(read32, -1), be_const_closure(I2C_Driver_read32_closure) }, - { be_const_key(write8, 6), be_const_closure(I2C_Driver_write8_closure) }, - { be_const_key(name, -1), be_const_var(2) }, - { be_const_key(addr, 8), be_const_var(1) }, - { be_const_key(read12, -1), be_const_closure(I2C_Driver_read12_closure) }, - { be_const_key(wire, 10), be_const_var(0) }, - { be_const_key(read13, -1), be_const_closure(I2C_Driver_read13_closure) }, - { be_const_key(read24, -1), be_const_closure(I2C_Driver_read24_closure) }, - { be_const_key(read8, -1), be_const_closure(I2C_Driver_read8_closure) }, - { be_const_key(init, -1), be_const_closure(I2C_Driver_init_closure) }, - { be_const_key(write_bit, -1), be_const_closure(I2C_Driver_write_bit_closure) }, - })), - be_str_literal("I2C_Driver") -); -/*******************************************************************/ - -void be_load_I2C_Driver_class(bvm *vm) { - be_pushntvclass(vm, &be_class_I2C_Driver); - be_setglobal(vm, "I2C_Driver"); - be_pop(vm, 1); -} diff --git a/lib/libesp32/berry/default/be_i2s_audio_lib.c b/lib/libesp32/berry/default/be_i2s_audio_lib.c deleted file mode 100644 index ef8720b23..000000000 --- a/lib/libesp32/berry/default/be_i2s_audio_lib.c +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************** - * Tasmota I2S audio classes - * - * - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_I2S -#ifdef USE_I2S_AUDIO_BERRY - -extern int i2s_output_i2s_init(bvm *vm); -extern int i2s_output_i2s_deinit(bvm *vm); -extern int i2s_output_i2s_stop(bvm *vm); - -extern int i2s_generator_wav_init(bvm *vm); -extern int i2s_generator_wav_deinit(bvm *vm); -extern int i2s_generator_wav_begin(bvm *vm); -extern int i2s_generator_wav_loop(bvm *vm); -extern int i2s_generator_wav_stop(bvm *vm); -extern int i2s_generator_wav_isrunning(bvm *vm); - -extern int i2s_generator_mp3_init(bvm *vm); -extern int i2s_generator_mp3_deinit(bvm *vm); -extern int i2s_generator_mp3_begin(bvm *vm); -extern int i2s_generator_mp3_loop(bvm *vm); -extern int i2s_generator_mp3_stop(bvm *vm); -extern int i2s_generator_mp3_isrunning(bvm *vm); - -#ifdef USE_UFILESYS -extern int i2s_file_source_fs_init(bvm *vm); -extern int i2s_file_source_fs_deinit(bvm *vm); -#endif // USE_UFILESYS - - -#include "../generate/be_fixed_be_class_audio_output.h" -#include "../generate/be_fixed_be_class_audio_output_i2s.h" -#include "../generate/be_fixed_be_class_audio_generator.h" -#include "../generate/be_fixed_be_class_audio_generator_wav.h" -#include "../generate/be_fixed_be_class_audio_generator_mp3.h" -#include "../generate/be_fixed_be_class_audio_file_source.h" -#include "../generate/be_fixed_be_class_audio_file_source_fs.h" - -void be_load_driver_audio_lib(bvm *vm) { - be_pushntvclass(vm, &be_class_audio_output); - be_setglobal(vm, "AudioOutput"); - be_pop(vm, 1); - - be_pushntvclass(vm, &be_class_audio_output_i2s); - be_setglobal(vm, "AudioOutputI2S"); - be_pop(vm, 1); - - be_pushntvclass(vm, &be_class_audio_generator_wav); - be_setglobal(vm, "AudioGeneratorWAV"); - be_pop(vm, 1); - - be_pushntvclass(vm, &be_class_audio_generator_mp3); - be_setglobal(vm, "AudioGeneratorMP3"); - be_pop(vm, 1); - -#ifdef USE_UFILESYS - be_pushntvclass(vm, &be_class_audio_file_source_fs); - be_setglobal(vm, "AudioFileSourceFS"); - be_pop(vm, 1); -#endif // USE_UFILESYS -} - -/* @const_object_info_begin - -class be_class_audio_output (scope: global, name: AudioOutput) { - .p, var -} - -class be_class_audio_generator (scope: global, name: AudioGenerator) { - .p, var -} - -class be_class_audio_file_source (scope: global, name: AudioFileSource) { - .p, var -} - -class be_class_audio_output_i2s (scope: global, name: AudioOutputI2S, super: be_class_audio_output) { - init, func(i2s_output_i2s_init) - deinit, func(i2s_output_i2s_deinit) - stop, func(i2s_output_i2s_stop) -} - -class be_class_audio_generator_wav (scope: global, name: AudioGeneratorWAV, super: be_class_audio_generator) { - init, func(i2s_generator_wav_init) - deinit, func(i2s_generator_wav_deinit) - begin, func(i2s_generator_wav_begin) - loop, func(i2s_generator_wav_loop) - stop, func(i2s_generator_wav_stop) - isrunning, func(i2s_generator_wav_isrunning) -} - -class be_class_audio_generator_mp3 (scope: global, name: AudioGeneratorMP3, super: be_class_audio_generator) { - init, func(i2s_generator_mp3_init) - deinit, func(i2s_generator_mp3_deinit) - begin, func(i2s_generator_mp3_begin) - loop, func(i2s_generator_mp3_loop) - stop, func(i2s_generator_mp3_stop) - isrunning, func(i2s_generator_mp3_isrunning) -} - -class be_class_audio_file_source_fs (scope: global, name: AudioFileSourceFS, super: be_class_audio_file_source) { - init, func(i2s_file_source_fs_init) - deinit, func(i2s_file_source_fs_deinit) -} - -@const_object_info_end */ - -#endif // USE_I2S_AUDIO_BERRY -#endif // USE_I2S \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_leds_animator_lib.c b/lib/libesp32/berry/default/be_leds_animator_lib.c deleted file mode 100644 index bd82193b9..000000000 --- a/lib/libesp32/berry/default/be_leds_animator_lib.c +++ /dev/null @@ -1,381 +0,0 @@ -/******************************************************************** - * Berry class `Leds_animator` - * - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_WS2812 - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Leds_animator_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(bri), - /* K2 */ be_nested_str(running), - /* K3 */ be_nested_str(pixel_count), - /* K4 */ be_nested_str(animators), - /* K5 */ be_nested_str(clear), - /* K6 */ be_nested_str(tasmota), - /* K7 */ be_nested_str(add_driver), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x540A0031, // 0001 LDINT R2 50 - 0x90020202, // 0002 SETMBR R0 K1 R2 - 0x50080000, // 0003 LDBOOL R2 0 0 - 0x90020402, // 0004 SETMBR R0 K2 R2 - 0x8C080303, // 0005 GETMET R2 R1 K3 - 0x7C080200, // 0006 CALL R2 1 - 0x90020602, // 0007 SETMBR R0 K3 R2 - 0x60080012, // 0008 GETGBL R2 G18 - 0x7C080000, // 0009 CALL R2 0 - 0x90020802, // 000A SETMBR R0 K4 R2 - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0xB80A0C00, // 000D GETNGBL R2 K6 - 0x8C080507, // 000E GETMET R2 R2 K7 - 0x5C100000, // 000F MOVE R4 R0 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_bri -********************************************************************/ -be_local_closure(Leds_animator_set_bri, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(bri), - }), - &be_const_str_set_bri, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -be_local_closure(Leds_animator_stop, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(running), - }), - &be_const_str_stop, - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: animate -********************************************************************/ -be_local_closure(Leds_animator_animate, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - &be_const_str_animate, - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove -********************************************************************/ -be_local_closure(Leds_animator_remove, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(remove_driver), - }), - &be_const_str_remove, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_50ms -********************************************************************/ -be_local_closure(Leds_animator_every_50ms, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(running), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(animators), - /* K3 */ be_nested_str(is_running), - /* K4 */ be_nested_str(animate), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str(remove), - }), - &be_const_str_every_50ms, - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060015, // 0001 JMPF R1 #0018 - 0x58040001, // 0002 LDCONST R1 K1 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x880C0102, // 0004 GETMBR R3 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x14080202, // 0006 LT R2 R1 R2 - 0x780A000D, // 0007 JMPF R2 #0016 - 0x88080102, // 0008 GETMBR R2 R0 K2 - 0x94080401, // 0009 GETIDX R2 R2 R1 - 0x8C0C0503, // 000A GETMET R3 R2 K3 - 0x7C0C0200, // 000B CALL R3 1 - 0x780E0003, // 000C JMPF R3 #0011 - 0x8C0C0504, // 000D GETMET R3 R2 K4 - 0x7C0C0200, // 000E CALL R3 1 - 0x00040305, // 000F ADD R1 R1 K5 - 0x70020003, // 0010 JMP #0015 - 0x880C0102, // 0011 GETMBR R3 R0 K2 - 0x8C0C0706, // 0012 GETMET R3 R3 K6 - 0x5C140200, // 0013 MOVE R5 R1 - 0x7C0C0400, // 0014 CALL R3 2 - 0x7001FFEC, // 0015 JMP #0003 - 0x8C080104, // 0016 GETMET R2 R0 K4 - 0x7C080200, // 0017 CALL R2 1 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_bri -********************************************************************/ -be_local_closure(Leds_animator_get_bri, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(bri), - }), - &be_const_str_get_bri, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x80040400, // 0001 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(Leds_animator_start, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(running), - }), - &be_const_str_start, - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x50040200, // 0000 LDBOOL R1 1 0 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_anim -********************************************************************/ -be_local_closure(Leds_animator_add_anim, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(animators), - /* K1 */ be_nested_str(push), - /* K2 */ be_nested_str(run), - }), - &be_const_str_add_anim, - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x8C080302, // 0004 GETMET R2 R1 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear -********************************************************************/ -be_local_closure(Leds_animator_clear, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(stop), - /* K1 */ be_nested_str(strip), - /* K2 */ be_nested_str(clear), - }), - &be_const_str_clear, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x8C040302, // 0003 GETMET R1 R1 K2 - 0x7C040200, // 0004 CALL R1 1 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Leds_animator -********************************************************************/ -be_local_class(Leds_animator, - 5, - NULL, - be_nested_map(15, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(init, 12), be_const_closure(Leds_animator_init_closure) }, - { be_const_key(clear, -1), be_const_closure(Leds_animator_clear_closure) }, - { be_const_key(stop, -1), be_const_closure(Leds_animator_stop_closure) }, - { be_const_key(strip, 4), be_const_var(0) }, - { be_const_key(pixel_count, 6), be_const_var(1) }, - { be_const_key(animate, -1), be_const_closure(Leds_animator_animate_closure) }, - { be_const_key(add_anim, 13), be_const_closure(Leds_animator_add_anim_closure) }, - { be_const_key(bri, -1), be_const_var(2) }, - { be_const_key(every_50ms, -1), be_const_closure(Leds_animator_every_50ms_closure) }, - { be_const_key(remove, 7), be_const_closure(Leds_animator_remove_closure) }, - { be_const_key(get_bri, -1), be_const_closure(Leds_animator_get_bri_closure) }, - { be_const_key(start, -1), be_const_closure(Leds_animator_start_closure) }, - { be_const_key(running, -1), be_const_var(3) }, - { be_const_key(animators, -1), be_const_var(4) }, - { be_const_key(set_bri, 1), be_const_closure(Leds_animator_set_bri_closure) }, - })), - be_str_literal("Leds_animator") -); -/*******************************************************************/ - -void be_load_Leds_animator_class(bvm *vm) { - be_pushntvclass(vm, &be_class_Leds_animator); - be_setglobal(vm, "Leds_animator"); - be_pop(vm, 1); -} - -#endif // USE_WS2812 diff --git a/lib/libesp32/berry/default/be_leds_lib.c b/lib/libesp32/berry/default/be_leds_lib.c deleted file mode 100644 index 58b0a991e..000000000 --- a/lib/libesp32/berry/default/be_leds_lib.c +++ /dev/null @@ -1,1815 +0,0 @@ -/******************************************************************** - * Berry class `Leds` - * - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_WS2812 - -/******************************************************************** -** Solidified function: pixel_count -********************************************************************/ -be_local_closure(Leds_matrix_pixel_count, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(w), - /* K1 */ be_nested_str(h), - }), - &be_const_str_pixel_count, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x08040202, // 0002 MUL R1 R1 R2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_alternate -********************************************************************/ -be_local_closure(Leds_matrix_set_alternate, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(alternate), - }), - &be_const_str_set_alternate, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pixel_size -********************************************************************/ -be_local_closure(Leds_matrix_pixel_size, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(pixel_size), - }), - &be_const_str_pixel_size, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_pixel_color -********************************************************************/ -be_local_closure(Leds_matrix_set_pixel_color, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(set_pixel_color), - /* K2 */ be_nested_str(offset), - }), - &be_const_str_set_pixel_color, - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x88180102, // 0002 GETMBR R6 R0 K2 - 0x00180206, // 0003 ADD R6 R1 R6 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x5C200600, // 0005 MOVE R8 R3 - 0x7C100800, // 0006 CALL R4 4 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_matrix_pixel_color -********************************************************************/ -be_local_closure(Leds_matrix_set_matrix_pixel_color, /* name */ - be_nested_proto( - 10, /* nstack */ - 5, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(alternate), - /* K1 */ be_const_int(2), - /* K2 */ be_nested_str(strip), - /* K3 */ be_nested_str(set_pixel_color), - /* K4 */ be_nested_str(w), - /* K5 */ be_nested_str(h), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str(offset), - }), - &be_const_str_set_matrix_pixel_color, - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x88140100, // 0000 GETMBR R5 R0 K0 - 0x7816000F, // 0001 JMPF R5 #0012 - 0x10140301, // 0002 MOD R5 R1 K1 - 0x7816000D, // 0003 JMPF R5 #0012 - 0x88140102, // 0004 GETMBR R5 R0 K2 - 0x8C140B03, // 0005 GETMET R5 R5 K3 - 0x881C0104, // 0006 GETMBR R7 R0 K4 - 0x081C0207, // 0007 MUL R7 R1 R7 - 0x88200105, // 0008 GETMBR R8 R0 K5 - 0x001C0E08, // 0009 ADD R7 R7 R8 - 0x041C0E02, // 000A SUB R7 R7 R2 - 0x041C0F06, // 000B SUB R7 R7 K6 - 0x88200107, // 000C GETMBR R8 R0 K7 - 0x001C0E08, // 000D ADD R7 R7 R8 - 0x5C200600, // 000E MOVE R8 R3 - 0x5C240800, // 000F MOVE R9 R4 - 0x7C140800, // 0010 CALL R5 4 - 0x70020009, // 0011 JMP #001C - 0x88140102, // 0012 GETMBR R5 R0 K2 - 0x8C140B03, // 0013 GETMET R5 R5 K3 - 0x881C0104, // 0014 GETMBR R7 R0 K4 - 0x081C0207, // 0015 MUL R7 R1 R7 - 0x001C0E02, // 0016 ADD R7 R7 R2 - 0x88200107, // 0017 GETMBR R8 R0 K7 - 0x001C0E08, // 0018 ADD R7 R7 R8 - 0x5C200600, // 0019 MOVE R8 R3 - 0x5C240800, // 001A MOVE R9 R4 - 0x7C140800, // 001B CALL R5 4 - 0x80000000, // 001C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: show -********************************************************************/ -be_local_closure(Leds_matrix_show, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(offset), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(w), - /* K3 */ be_nested_str(h), - /* K4 */ be_nested_str(strip), - /* K5 */ be_nested_str(leds), - /* K6 */ be_nested_str(show), - }), - &be_const_str_show, - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x60080017, // 0000 GETGBL R2 G23 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0x7C080200, // 0002 CALL R2 1 - 0x740A0009, // 0003 JMPT R2 #000E - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x1C080501, // 0005 EQ R2 R2 K1 - 0x780A0009, // 0006 JMPF R2 #0011 - 0x88080102, // 0007 GETMBR R2 R0 K2 - 0x880C0103, // 0008 GETMBR R3 R0 K3 - 0x08080403, // 0009 MUL R2 R2 R3 - 0x880C0104, // 000A GETMBR R3 R0 K4 - 0x880C0705, // 000B GETMBR R3 R3 K5 - 0x1C080403, // 000C EQ R2 R2 R3 - 0x780A0002, // 000D JMPF R2 #0011 - 0x88080104, // 000E GETMBR R2 R0 K4 - 0x8C080506, // 000F GETMET R2 R2 K6 - 0x7C080200, // 0010 CALL R2 1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_dirty -********************************************************************/ -be_local_closure(Leds_matrix_is_dirty, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(is_dirty), - }), - &be_const_str_is_dirty, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear_to -********************************************************************/ -be_local_closure(Leds_matrix_clear_to, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(w), - /* K2 */ be_nested_str(h), - /* K3 */ be_nested_str(strip), - /* K4 */ be_nested_str(set_pixel_color), - /* K5 */ be_nested_str(offset), - /* K6 */ be_const_int(1), - }), - &be_const_str_clear_to, - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x08100805, // 0003 MUL R4 R4 R5 - 0x14100604, // 0004 LT R4 R3 R4 - 0x78120008, // 0005 JMPF R4 #000F - 0x88100103, // 0006 GETMBR R4 R0 K3 - 0x8C100904, // 0007 GETMET R4 R4 K4 - 0x88180105, // 0008 GETMBR R6 R0 K5 - 0x00180606, // 0009 ADD R6 R3 R6 - 0x5C1C0200, // 000A MOVE R7 R1 - 0x5C200400, // 000B MOVE R8 R2 - 0x7C100800, // 000C CALL R4 4 - 0x000C0706, // 000D ADD R3 R3 K6 - 0x7001FFF1, // 000E JMP #0001 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear -********************************************************************/ -be_local_closure(Leds_matrix_clear, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(clear_to), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(show), - }), - &be_const_str_clear, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x7C040400, // 0002 CALL R1 2 - 0x8C040102, // 0003 GETMET R1 R0 K2 - 0x7C040200, // 0004 CALL R1 1 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pixels_buffer -********************************************************************/ -be_local_closure(Leds_matrix_pixels_buffer, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - &be_const_str_pixels_buffer, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Leds_matrix_init, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(offset), - /* K2 */ be_nested_str(h), - /* K3 */ be_nested_str(w), - /* K4 */ be_nested_str(alternate), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020204, // 0001 SETMBR R0 K1 R4 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x90020602, // 0003 SETMBR R0 K3 R2 - 0x50140000, // 0004 LDBOOL R5 0 0 - 0x90020805, // 0005 SETMBR R0 K4 R5 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: dirty -********************************************************************/ -be_local_closure(Leds_matrix_dirty, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(dirty), - }), - &be_const_str_dirty, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_pixel_color -********************************************************************/ -be_local_closure(Leds_matrix_get_pixel_color, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(get_pixel_color), - /* K2 */ be_nested_str(offseta), - }), - &be_const_str_get_pixel_color, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x00100204, // 0003 ADD R4 R1 R4 - 0x7C080400, // 0004 CALL R2 2 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_alternate -********************************************************************/ -be_local_closure(Leds_matrix_get_alternate, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(alternate), - }), - &be_const_str_get_alternate, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: begin -********************************************************************/ -be_local_closure(Leds_matrix_begin, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - &be_const_str_begin, - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: can_show -********************************************************************/ -be_local_closure(Leds_matrix_can_show, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(can_show), - }), - &be_const_str_can_show, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Leds_matrix -********************************************************************/ -be_local_class(Leds_matrix, - 5, - NULL, - be_nested_map(21, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(pixel_count, -1), be_const_closure(Leds_matrix_pixel_count_closure) }, - { be_const_key(h, 6), be_const_var(2) }, - { be_const_key(set_alternate, 7), be_const_closure(Leds_matrix_set_alternate_closure) }, - { be_const_key(pixel_size, 16), be_const_closure(Leds_matrix_pixel_size_closure) }, - { be_const_key(set_pixel_color, 19), be_const_closure(Leds_matrix_set_pixel_color_closure) }, - { be_const_key(set_matrix_pixel_color, 10), be_const_closure(Leds_matrix_set_matrix_pixel_color_closure) }, - { be_const_key(show, -1), be_const_closure(Leds_matrix_show_closure) }, - { be_const_key(alternate, -1), be_const_var(4) }, - { be_const_key(strip, -1), be_const_var(0) }, - { be_const_key(clear_to, -1), be_const_closure(Leds_matrix_clear_to_closure) }, - { be_const_key(w, 15), be_const_var(3) }, - { be_const_key(pixels_buffer, -1), be_const_closure(Leds_matrix_pixels_buffer_closure) }, - { be_const_key(init, -1), be_const_closure(Leds_matrix_init_closure) }, - { be_const_key(dirty, -1), be_const_closure(Leds_matrix_dirty_closure) }, - { be_const_key(get_pixel_color, -1), be_const_closure(Leds_matrix_get_pixel_color_closure) }, - { be_const_key(get_alternate, 17), be_const_closure(Leds_matrix_get_alternate_closure) }, - { be_const_key(offset, 8), be_const_var(1) }, - { be_const_key(clear, -1), be_const_closure(Leds_matrix_clear_closure) }, - { be_const_key(begin, -1), be_const_closure(Leds_matrix_begin_closure) }, - { be_const_key(is_dirty, -1), be_const_closure(Leds_matrix_is_dirty_closure) }, - { be_const_key(can_show, -1), be_const_closure(Leds_matrix_can_show_closure) }, - })), - be_str_literal("Leds_matrix") -); - -/******************************************************************** -** Solidified function: create_matrix -********************************************************************/ -be_local_closure(Leds_create_matrix, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(leds), - /* K2 */ be_nested_str(value_error), - /* K3 */ be_nested_str(out_X20of_X20range), - /* K4 */ be_const_class(be_class_Leds_matrix), - }), - &be_const_str_create_matrix, - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x60100009, // 0000 GETGBL R4 G9 - 0x5C140600, // 0001 MOVE R5 R3 - 0x7C100200, // 0002 CALL R4 1 - 0x5C0C0800, // 0003 MOVE R3 R4 - 0x60100009, // 0004 GETGBL R4 G9 - 0x5C140200, // 0005 MOVE R5 R1 - 0x7C100200, // 0006 CALL R4 1 - 0x5C040800, // 0007 MOVE R1 R4 - 0x60100009, // 0008 GETGBL R4 G9 - 0x5C140400, // 0009 MOVE R5 R2 - 0x7C100200, // 000A CALL R4 1 - 0x5C080800, // 000B MOVE R2 R4 - 0x4C100000, // 000C LDNIL R4 - 0x1C100604, // 000D EQ R4 R3 R4 - 0x78120000, // 000E JMPF R4 #0010 - 0x580C0000, // 000F LDCONST R3 K0 - 0x08100202, // 0010 MUL R4 R1 R2 - 0x00100803, // 0011 ADD R4 R4 R3 - 0x88140101, // 0012 GETMBR R5 R0 K1 - 0x24100805, // 0013 GT R4 R4 R5 - 0x74120005, // 0014 JMPT R4 #001B - 0x14100500, // 0015 LT R4 R2 K0 - 0x74120003, // 0016 JMPT R4 #001B - 0x14100300, // 0017 LT R4 R1 K0 - 0x74120001, // 0018 JMPT R4 #001B - 0x14100700, // 0019 LT R4 R3 K0 - 0x78120000, // 001A JMPF R4 #001C - 0xB0060503, // 001B RAISE 1 K2 K3 - 0x58100004, // 001C LDCONST R4 K4 - 0xB4000004, // 001D CLASS K4 - 0x5C140800, // 001E MOVE R5 R4 - 0x5C180000, // 001F MOVE R6 R0 - 0x5C1C0200, // 0020 MOVE R7 R1 - 0x5C200400, // 0021 MOVE R8 R2 - 0x5C240600, // 0022 MOVE R9 R3 - 0x7C140800, // 0023 CALL R5 4 - 0x80040A00, // 0024 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: begin -********************************************************************/ -be_local_closure(Leds_begin, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(call_native), - /* K1 */ be_const_int(1), - }), - &be_const_str_begin, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x7C040400, // 0002 CALL R1 2 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: to_gamma -********************************************************************/ -be_local_closure(Leds_to_gamma, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(scale_uint), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(16711680), - /* K4 */ be_nested_str(gamma), - /* K5 */ be_nested_str(light), - /* K6 */ be_nested_str(gamma8), - }), - &be_const_str_to_gamma, - &be_const_str_solidified, - ( &(const binstruction[67]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x200C0403, // 0001 NE R3 R2 R3 - 0x780E0001, // 0002 JMPF R3 #0005 - 0x5C0C0400, // 0003 MOVE R3 R2 - 0x70020000, // 0004 JMP #0006 - 0x540E0063, // 0005 LDINT R3 100 - 0x5C080600, // 0006 MOVE R2 R3 - 0xB80E0000, // 0007 GETNGBL R3 K0 - 0x8C0C0701, // 0008 GETMET R3 R3 K1 - 0x5C140400, // 0009 MOVE R5 R2 - 0x58180002, // 000A LDCONST R6 K2 - 0x541E0063, // 000B LDINT R7 100 - 0x58200002, // 000C LDCONST R8 K2 - 0x2C240303, // 000D AND R9 R1 K3 - 0x542A000F, // 000E LDINT R10 16 - 0x3C24120A, // 000F SHR R9 R9 R10 - 0x7C0C0C00, // 0010 CALL R3 6 - 0xB8120000, // 0011 GETNGBL R4 K0 - 0x8C100901, // 0012 GETMET R4 R4 K1 - 0x5C180400, // 0013 MOVE R6 R2 - 0x581C0002, // 0014 LDCONST R7 K2 - 0x54220063, // 0015 LDINT R8 100 - 0x58240002, // 0016 LDCONST R9 K2 - 0x542AFEFF, // 0017 LDINT R10 65280 - 0x2C28020A, // 0018 AND R10 R1 R10 - 0x542E0007, // 0019 LDINT R11 8 - 0x3C28140B, // 001A SHR R10 R10 R11 - 0x7C100C00, // 001B CALL R4 6 - 0xB8160000, // 001C GETNGBL R5 K0 - 0x8C140B01, // 001D GETMET R5 R5 K1 - 0x5C1C0400, // 001E MOVE R7 R2 - 0x58200002, // 001F LDCONST R8 K2 - 0x54260063, // 0020 LDINT R9 100 - 0x58280002, // 0021 LDCONST R10 K2 - 0x542E00FE, // 0022 LDINT R11 255 - 0x2C2C020B, // 0023 AND R11 R1 R11 - 0x7C140C00, // 0024 CALL R5 6 - 0x88180104, // 0025 GETMBR R6 R0 K4 - 0x781A0013, // 0026 JMPF R6 #003B - 0xB81A0A00, // 0027 GETNGBL R6 K5 - 0x8C180D06, // 0028 GETMET R6 R6 K6 - 0x5C200600, // 0029 MOVE R8 R3 - 0x7C180400, // 002A CALL R6 2 - 0x541E000F, // 002B LDINT R7 16 - 0x38180C07, // 002C SHL R6 R6 R7 - 0xB81E0A00, // 002D GETNGBL R7 K5 - 0x8C1C0F06, // 002E GETMET R7 R7 K6 - 0x5C240800, // 002F MOVE R9 R4 - 0x7C1C0400, // 0030 CALL R7 2 - 0x54220007, // 0031 LDINT R8 8 - 0x381C0E08, // 0032 SHL R7 R7 R8 - 0x30180C07, // 0033 OR R6 R6 R7 - 0xB81E0A00, // 0034 GETNGBL R7 K5 - 0x8C1C0F06, // 0035 GETMET R7 R7 K6 - 0x5C240A00, // 0036 MOVE R9 R5 - 0x7C1C0400, // 0037 CALL R7 2 - 0x30180C07, // 0038 OR R6 R6 R7 - 0x80040C00, // 0039 RET 1 R6 - 0x70020006, // 003A JMP #0042 - 0x541A000F, // 003B LDINT R6 16 - 0x38180606, // 003C SHL R6 R3 R6 - 0x541E0007, // 003D LDINT R7 8 - 0x381C0807, // 003E SHL R7 R4 R7 - 0x30180C07, // 003F OR R6 R6 R7 - 0x30180C05, // 0040 OR R6 R6 R5 - 0x80040C00, // 0041 RET 1 R6 - 0x80000000, // 0042 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pixel_count -********************************************************************/ -be_local_closure(Leds_pixel_count, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(call_native), - }), - &be_const_str_pixel_count, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0007, // 0001 LDINT R3 8 - 0x7C040400, // 0002 CALL R1 2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: matrix -********************************************************************/ -be_local_closure(Leds_matrix, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(Leds), - /* K1 */ be_nested_str(create_matrix), - /* K2 */ be_const_int(0), - }), - &be_const_str_matrix, - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x08140001, // 0001 MUL R5 R0 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x5C1C0600, // 0003 MOVE R7 R3 - 0x7C100600, // 0004 CALL R4 3 - 0x8C140901, // 0005 GETMET R5 R4 K1 - 0x5C1C0000, // 0006 MOVE R7 R0 - 0x5C200200, // 0007 MOVE R8 R1 - 0x58240002, // 0008 LDCONST R9 K2 - 0x7C140800, // 0009 CALL R5 4 - 0x80040A00, // 000A RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pixel_size -********************************************************************/ -be_local_closure(Leds_pixel_size, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(call_native), - }), - &be_const_str_pixel_size, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0006, // 0001 LDINT R3 7 - 0x7C040400, // 0002 CALL R1 2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pixels_buffer -********************************************************************/ -be_local_closure(Leds_pixels_buffer, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(call_native), - }), - &be_const_str_pixels_buffer, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0005, // 0001 LDINT R3 6 - 0x7C040400, // 0002 CALL R1 2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_pixel_color -********************************************************************/ -be_local_closure(Leds_get_pixel_color, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(call_native), - }), - &be_const_str_get_pixel_color, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5412000A, // 0001 LDINT R4 11 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C080600, // 0003 CALL R2 3 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_pixel_color -********************************************************************/ -be_local_closure(Leds_set_pixel_color, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(call_native), - /* K1 */ be_nested_str(to_gamma), - }), - &be_const_str_set_pixel_color, - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x541A0009, // 0001 LDINT R6 10 - 0x5C1C0200, // 0002 MOVE R7 R1 - 0x8C200101, // 0003 GETMET R8 R0 K1 - 0x5C280400, // 0004 MOVE R10 R2 - 0x5C2C0600, // 0005 MOVE R11 R3 - 0x7C200600, // 0006 CALL R8 3 - 0x7C100800, // 0007 CALL R4 4 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_dirty -********************************************************************/ -be_local_closure(Leds_is_dirty, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(call_native), - }), - &be_const_str_is_dirty, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0003, // 0001 LDINT R3 4 - 0x7C040400, // 0002 CALL R1 2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Leds_init, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(gamma), - /* K1 */ be_nested_str(leds), - /* K2 */ be_nested_str(pin), - /* K3 */ be_nested_str(WS2812), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str(valuer_error), - /* K6 */ be_nested_str(no_X20GPIO_X20specified_X20for_X20neopixelbus), - /* K7 */ be_nested_str(ctor), - /* K8 */ be_nested_str(_p), - /* K9 */ be_nested_str(internal_error), - /* K10 */ be_nested_str(couldn_X27t_X20not_X20initialize_X20noepixelbus), - /* K11 */ be_nested_str(begin), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[36]) { /* code */ - 0x50140200, // 0000 LDBOOL R5 1 0 - 0x90020005, // 0001 SETMBR R0 K0 R5 - 0x60140009, // 0002 GETGBL R5 G9 - 0x5C180200, // 0003 MOVE R6 R1 - 0x7C140200, // 0004 CALL R5 1 - 0x90020205, // 0005 SETMBR R0 K1 R5 - 0x4C140000, // 0006 LDNIL R5 - 0x1C140405, // 0007 EQ R5 R2 R5 - 0x78160008, // 0008 JMPF R5 #0012 - 0x8C140502, // 0009 GETMET R5 R2 K2 - 0x881C0503, // 000A GETMBR R7 R2 K3 - 0x7C140400, // 000B CALL R5 2 - 0x28140B04, // 000C GE R5 R5 K4 - 0x78160003, // 000D JMPF R5 #0012 - 0x8C140502, // 000E GETMET R5 R2 K2 - 0x881C0503, // 000F GETMBR R7 R2 K3 - 0x7C140400, // 0010 CALL R5 2 - 0x5C080A00, // 0011 MOVE R2 R5 - 0x4C140000, // 0012 LDNIL R5 - 0x1C140405, // 0013 EQ R5 R2 R5 - 0x78160000, // 0014 JMPF R5 #0016 - 0xB0060B06, // 0015 RAISE 1 K5 K6 - 0x8C140107, // 0016 GETMET R5 R0 K7 - 0x881C0101, // 0017 GETMBR R7 R0 K1 - 0x5C200400, // 0018 MOVE R8 R2 - 0x5C240600, // 0019 MOVE R9 R3 - 0x5C280800, // 001A MOVE R10 R4 - 0x7C140A00, // 001B CALL R5 5 - 0x88140108, // 001C GETMBR R5 R0 K8 - 0x4C180000, // 001D LDNIL R6 - 0x1C140A06, // 001E EQ R5 R5 R6 - 0x78160000, // 001F JMPF R5 #0021 - 0xB006130A, // 0020 RAISE 1 K9 K10 - 0x8C14010B, // 0021 GETMET R5 R0 K11 - 0x7C140200, // 0022 CALL R5 1 - 0x80000000, // 0023 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear_to -********************************************************************/ -be_local_closure(Leds_clear_to, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(call_native), - /* K1 */ be_nested_str(to_gamma), - }), - &be_const_str_clear_to, - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x54160008, // 0001 LDINT R5 9 - 0x8C180101, // 0002 GETMET R6 R0 K1 - 0x5C200200, // 0003 MOVE R8 R1 - 0x5C240400, // 0004 MOVE R9 R2 - 0x7C180600, // 0005 CALL R6 3 - 0x7C0C0600, // 0006 CALL R3 3 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: can_show -********************************************************************/ -be_local_closure(Leds_can_show, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(call_native), - /* K1 */ be_const_int(3), - }), - &be_const_str_can_show, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x7C040400, // 0002 CALL R1 2 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear -********************************************************************/ -be_local_closure(Leds_clear, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(clear_to), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(show), - }), - &be_const_str_clear, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x7C040400, // 0002 CALL R1 2 - 0x8C040102, // 0003 GETMET R1 R0 K2 - 0x7C040200, // 0004 CALL R1 1 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: show -********************************************************************/ -be_local_closure(Leds_show, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(call_native), - /* K1 */ be_const_int(2), - }), - &be_const_str_show, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x7C040400, // 0002 CALL R1 2 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: ctor -********************************************************************/ -be_local_closure(Leds_ctor, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(call_native), - /* K1 */ be_const_int(0), - }), - &be_const_str_ctor, - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x1C100604, // 0001 EQ R4 R3 R4 - 0x78120005, // 0002 JMPF R4 #0009 - 0x8C100100, // 0003 GETMET R4 R0 K0 - 0x58180001, // 0004 LDCONST R6 K1 - 0x5C1C0200, // 0005 MOVE R7 R1 - 0x5C200400, // 0006 MOVE R8 R2 - 0x7C100800, // 0007 CALL R4 4 - 0x70020005, // 0008 JMP #000F - 0x8C100100, // 0009 GETMET R4 R0 K0 - 0x58180001, // 000A LDCONST R6 K1 - 0x5C1C0200, // 000B MOVE R7 R1 - 0x5C200400, // 000C MOVE R8 R2 - 0x5C240600, // 000D MOVE R9 R3 - 0x7C100A00, // 000E CALL R4 5 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: dirty -********************************************************************/ -be_local_closure(Leds_dirty, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(call_native), - }), - &be_const_str_dirty, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x540E0004, // 0001 LDINT R3 5 - 0x7C040400, // 0002 CALL R1 2 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_pixel_color -********************************************************************/ -be_local_closure(Leds_segment_get_pixel_color, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(get_pixel_color), - /* K2 */ be_nested_str(offseta), - }), - &be_const_str_get_pixel_color, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x00100204, // 0003 ADD R4 R1 R4 - 0x7C080400, // 0004 CALL R2 2 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear_to -********************************************************************/ -be_local_closure(Leds_segment_clear_to, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(leds), - /* K2 */ be_nested_str(strip), - /* K3 */ be_nested_str(set_pixel_color), - /* K4 */ be_nested_str(offset), - /* K5 */ be_const_int(1), - }), - &be_const_str_clear_to, - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x14100604, // 0002 LT R4 R3 R4 - 0x78120008, // 0003 JMPF R4 #000D - 0x88100102, // 0004 GETMBR R4 R0 K2 - 0x8C100903, // 0005 GETMET R4 R4 K3 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x00180606, // 0007 ADD R6 R3 R6 - 0x5C1C0200, // 0008 MOVE R7 R1 - 0x5C200400, // 0009 MOVE R8 R2 - 0x7C100800, // 000A CALL R4 4 - 0x000C0705, // 000B ADD R3 R3 K5 - 0x7001FFF3, // 000C JMP #0001 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: can_show -********************************************************************/ -be_local_closure(Leds_segment_can_show, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(can_show), - }), - &be_const_str_can_show, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_pixel_color -********************************************************************/ -be_local_closure(Leds_segment_set_pixel_color, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(set_pixel_color), - /* K2 */ be_nested_str(offset), - }), - &be_const_str_set_pixel_color, - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x88180102, // 0002 GETMBR R6 R0 K2 - 0x00180206, // 0003 ADD R6 R1 R6 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x5C200600, // 0005 MOVE R8 R3 - 0x7C100800, // 0006 CALL R4 4 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear -********************************************************************/ -be_local_closure(Leds_segment_clear, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(clear_to), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(show), - }), - &be_const_str_clear, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x7C040400, // 0002 CALL R1 2 - 0x8C040102, // 0003 GETMET R1 R0 K2 - 0x7C040200, // 0004 CALL R1 1 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: begin -********************************************************************/ -be_local_closure(Leds_segment_begin, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - &be_const_str_begin, - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pixel_count -********************************************************************/ -be_local_closure(Leds_segment_pixel_count, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(leds), - }), - &be_const_str_pixel_count, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Leds_segment_init, /* name */ - be_nested_proto( - 6, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(offset), - /* K2 */ be_nested_str(leds), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x60100009, // 0001 GETGBL R4 G9 - 0x5C140400, // 0002 MOVE R5 R2 - 0x7C100200, // 0003 CALL R4 1 - 0x90020204, // 0004 SETMBR R0 K1 R4 - 0x60100009, // 0005 GETGBL R4 G9 - 0x5C140600, // 0006 MOVE R5 R3 - 0x7C100200, // 0007 CALL R4 1 - 0x90020404, // 0008 SETMBR R0 K2 R4 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pixel_size -********************************************************************/ -be_local_closure(Leds_segment_pixel_size, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(pixel_size), - }), - &be_const_str_pixel_size, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: dirty -********************************************************************/ -be_local_closure(Leds_segment_dirty, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(dirty), - }), - &be_const_str_dirty, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: show -********************************************************************/ -be_local_closure(Leds_segment_show, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(offset), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(leds), - /* K3 */ be_nested_str(strip), - /* K4 */ be_nested_str(show), - }), - &be_const_str_show, - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x60080017, // 0000 GETGBL R2 G23 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0x7C080200, // 0002 CALL R2 1 - 0x740A0007, // 0003 JMPT R2 #000C - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x1C080501, // 0005 EQ R2 R2 K1 - 0x780A0007, // 0006 JMPF R2 #000F - 0x88080102, // 0007 GETMBR R2 R0 K2 - 0x880C0103, // 0008 GETMBR R3 R0 K3 - 0x880C0702, // 0009 GETMBR R3 R3 K2 - 0x1C080403, // 000A EQ R2 R2 R3 - 0x780A0002, // 000B JMPF R2 #000F - 0x88080103, // 000C GETMBR R2 R0 K3 - 0x8C080504, // 000D GETMET R2 R2 K4 - 0x7C080200, // 000E CALL R2 1 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_dirty -********************************************************************/ -be_local_closure(Leds_segment_is_dirty, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(strip), - /* K1 */ be_nested_str(is_dirty), - }), - &be_const_str_is_dirty, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pixels_buffer -********************************************************************/ -be_local_closure(Leds_segment_pixels_buffer, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - &be_const_str_pixels_buffer, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Leds_segment -********************************************************************/ -be_local_class(Leds_segment, - 3, - NULL, - be_nested_map(16, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(get_pixel_color, -1), be_const_closure(Leds_segment_get_pixel_color_closure) }, - { be_const_key(strip, -1), be_const_var(0) }, - { be_const_key(clear_to, 5), be_const_closure(Leds_segment_clear_to_closure) }, - { be_const_key(can_show, 13), be_const_closure(Leds_segment_can_show_closure) }, - { be_const_key(set_pixel_color, -1), be_const_closure(Leds_segment_set_pixel_color_closure) }, - { be_const_key(clear, -1), be_const_closure(Leds_segment_clear_closure) }, - { be_const_key(is_dirty, -1), be_const_closure(Leds_segment_is_dirty_closure) }, - { be_const_key(pixel_count, -1), be_const_closure(Leds_segment_pixel_count_closure) }, - { be_const_key(leds, -1), be_const_var(2) }, - { be_const_key(pixel_size, -1), be_const_closure(Leds_segment_pixel_size_closure) }, - { be_const_key(offset, -1), be_const_var(1) }, - { be_const_key(dirty, 8), be_const_closure(Leds_segment_dirty_closure) }, - { be_const_key(show, -1), be_const_closure(Leds_segment_show_closure) }, - { be_const_key(init, -1), be_const_closure(Leds_segment_init_closure) }, - { be_const_key(begin, 6), be_const_closure(Leds_segment_begin_closure) }, - { be_const_key(pixels_buffer, -1), be_const_closure(Leds_segment_pixels_buffer_closure) }, - })), - be_str_literal("Leds_segment") -); - -/******************************************************************** -** Solidified function: create_segment -********************************************************************/ -be_local_closure(Leds_create_segment, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(leds), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(value_error), - /* K3 */ be_nested_str(out_X20of_X20range), - /* K4 */ be_const_class(be_class_Leds_segment), - }), - &be_const_str_create_segment, - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x600C0009, // 0000 GETGBL R3 G9 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C0C0200, // 0002 CALL R3 1 - 0x60100009, // 0003 GETGBL R4 G9 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C100200, // 0005 CALL R4 1 - 0x000C0604, // 0006 ADD R3 R3 R4 - 0x88100100, // 0007 GETMBR R4 R0 K0 - 0x240C0604, // 0008 GT R3 R3 R4 - 0x740E0003, // 0009 JMPT R3 #000E - 0x140C0301, // 000A LT R3 R1 K1 - 0x740E0001, // 000B JMPT R3 #000E - 0x140C0501, // 000C LT R3 R2 K1 - 0x780E0000, // 000D JMPF R3 #000F - 0xB0060503, // 000E RAISE 1 K2 K3 - 0x580C0004, // 000F LDCONST R3 K4 - 0xB4000004, // 0010 CLASS K4 - 0x5C100600, // 0011 MOVE R4 R3 - 0x5C140000, // 0012 MOVE R5 R0 - 0x5C180200, // 0013 MOVE R6 R1 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x7C100600, // 0015 CALL R4 3 - 0x80040800, // 0016 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Leds -********************************************************************/ -extern const bclass be_class_Leds_ntv; -be_local_class(Leds, - 2, - &be_class_Leds_ntv, - be_nested_map(20, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(pixel_count, -1), be_const_closure(Leds_pixel_count_closure) }, - { be_const_key(dirty, 6), be_const_closure(Leds_dirty_closure) }, - { be_const_key(to_gamma, -1), be_const_closure(Leds_to_gamma_closure) }, - { be_const_key(create_matrix, 1), be_const_closure(Leds_create_matrix_closure) }, - { be_const_key(matrix, -1), be_const_static_closure(Leds_matrix_closure) }, - { be_const_key(pixel_size, -1), be_const_closure(Leds_pixel_size_closure) }, - { be_const_key(ctor, 0), be_const_closure(Leds_ctor_closure) }, - { be_const_key(pixels_buffer, 13), be_const_closure(Leds_pixels_buffer_closure) }, - { be_const_key(get_pixel_color, -1), be_const_closure(Leds_get_pixel_color_closure) }, - { be_const_key(show, -1), be_const_closure(Leds_show_closure) }, - { be_const_key(begin, 17), be_const_closure(Leds_begin_closure) }, - { be_const_key(leds, -1), be_const_var(1) }, - { be_const_key(clear, -1), be_const_closure(Leds_clear_closure) }, - { be_const_key(can_show, -1), be_const_closure(Leds_can_show_closure) }, - { be_const_key(gamma, 12), be_const_var(0) }, - { be_const_key(init, 11), be_const_closure(Leds_init_closure) }, - { be_const_key(set_pixel_color, 9), be_const_closure(Leds_set_pixel_color_closure) }, - { be_const_key(clear_to, 18), be_const_closure(Leds_clear_to_closure) }, - { be_const_key(is_dirty, -1), be_const_closure(Leds_is_dirty_closure) }, - { be_const_key(create_segment, -1), be_const_closure(Leds_create_segment_closure) }, - })), - be_str_literal("Leds") -); -/*******************************************************************/ - -void be_load_Leds_class(bvm *vm) { - be_pushntvclass(vm, &be_class_Leds); - be_setglobal(vm, "Leds"); - be_pop(vm, 1); -} - -#endif // USE_WS2812 diff --git a/lib/libesp32/berry/default/be_leds_ntv_lib.c b/lib/libesp32/berry/default/be_leds_ntv_lib.c deleted file mode 100644 index 4d5b07bb6..000000000 --- a/lib/libesp32/berry/default/be_leds_ntv_lib.c +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************** - * Berry class `neopixelbus_ntv` - * - *******************************************************************/ -/* - -class Leds_ntv - var _p # pointer to internal object of type `NeoPixelBus(uint16_t countPixels, uint8_t pin)` - var _t # type of led strip - static WS2812_GRB = 1 - static SK6812_GRBW = 2 - - # skeleton for native call - def call_native() end -end - -*/ -#include "be_constobj.h" - -#ifdef USE_WS2812 - -extern int be_neopixelbus_call_native(bvm *vm); - - -/******************************************************************** -** Solidified class: Leds_ntv -********************************************************************/ -be_local_class(Leds_ntv, - 2, - NULL, - be_nested_map(5, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(call_native, -1), be_const_func(be_neopixelbus_call_native) }, - { be_const_key(_t, -1), be_const_var(1) }, - { be_const_key(_p, 3), be_const_var(0) }, - { be_const_key(SK6812_GRBW, 4), be_const_int(2) }, - { be_const_key(WS2812_GRB, -1), be_const_int(1) }, - })), - be_str_literal("Leds_ntv") -); -/*******************************************************************/ - -void be_load_Leds_ntv_class(bvm *vm) { - be_pushntvclass(vm, &be_class_Leds_ntv); - be_setglobal(vm, "Leds_ntv"); - be_pop(vm, 1); -} - -// be_const_func(be_neopixelbus_call_native) -#endif // USE_WS2812 diff --git a/lib/libesp32/berry/default/be_light_lib.c b/lib/libesp32/berry/default/be_light_lib.c deleted file mode 100644 index 6d020eca8..000000000 --- a/lib/libesp32/berry/default/be_light_lib.c +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * To use: `import tasmota` - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_LIGHT -extern int l_getlight(bvm *vm); -extern int l_setlight(bvm *vm); - -extern int l_gamma8(bvm *vm); -extern int l_gamma10(bvm *vm); -extern int l_rev_gamma10(bvm *vm); - -/* @const_object_info_begin -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_light.h" - -#endif // USE_LIGHT \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_lvgl_clock_icon_lib.c b/lib/libesp32/berry/default/be_lvgl_clock_icon_lib.c deleted file mode 100644 index c9cf7f207..000000000 --- a/lib/libesp32/berry/default/be_lvgl_clock_icon_lib.c +++ /dev/null @@ -1,313 +0,0 @@ -/******************************************************************** - * Tasmota LVGL lv_signal_bars widget - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_LVGL - -#include "lvgl.h" - -/******************************************************************** -** Solidified function: set_time -********************************************************************/ -be_local_closure(lv_clock_icon_set_time, /* name */ - be_nested_proto( - 11, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(hour), - /* K2 */ be_nested_str(minute), - /* K3 */ be_nested_str(sec), - /* K4 */ be_nested_str(format), - /* K5 */ be_nested_str(_X2502d_X25s_X2502d), - /* K6 */ be_const_int(2), - /* K7 */ be_nested_str(_X3A), - /* K8 */ be_nested_str(_X20), - /* K9 */ be_nested_str(set_text), - }), - &be_const_str_set_time, - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x88140101, // 0001 GETMBR R5 R0 K1 - 0x20140205, // 0002 NE R5 R1 R5 - 0x74160005, // 0003 JMPT R5 #000A - 0x88140102, // 0004 GETMBR R5 R0 K2 - 0x20140405, // 0005 NE R5 R2 R5 - 0x74160002, // 0006 JMPT R5 #000A - 0x88140103, // 0007 GETMBR R5 R0 K3 - 0x20140605, // 0008 NE R5 R3 R5 - 0x7816000F, // 0009 JMPF R5 #001A - 0x8C140904, // 000A GETMET R5 R4 K4 - 0x581C0005, // 000B LDCONST R7 K5 - 0x5C200200, // 000C MOVE R8 R1 - 0x10240706, // 000D MOD R9 R3 K6 - 0x78260001, // 000E JMPF R9 #0011 - 0x58240007, // 000F LDCONST R9 K7 - 0x70020000, // 0010 JMP #0012 - 0x58240008, // 0011 LDCONST R9 K8 - 0x5C280400, // 0012 MOVE R10 R2 - 0x7C140A00, // 0013 CALL R5 5 - 0x90020201, // 0014 SETMBR R0 K1 R1 - 0x90020402, // 0015 SETMBR R0 K2 R2 - 0x90020603, // 0016 SETMBR R0 K3 R3 - 0x8C180109, // 0017 GETMET R6 R0 K9 - 0x5C200A00, // 0018 MOVE R8 R5 - 0x7C180400, // 0019 CALL R6 2 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -be_local_closure(lv_clock_icon_every_second, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(time_dump), - /* K2 */ be_nested_str(rtc), - /* K3 */ be_nested_str(local), - /* K4 */ be_nested_str(year), - /* K5 */ be_nested_str(set_time), - /* K6 */ be_nested_str(hour), - /* K7 */ be_nested_str(min), - /* K8 */ be_nested_str(sec), - }), - &be_const_str_every_second, - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0xB80E0000, // 0002 GETNGBL R3 K0 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x7C0C0200, // 0004 CALL R3 1 - 0x940C0703, // 0005 GETIDX R3 R3 K3 - 0x7C040400, // 0006 CALL R1 2 - 0x94080304, // 0007 GETIDX R2 R1 K4 - 0x540E07B1, // 0008 LDINT R3 1970 - 0x20080403, // 0009 NE R2 R2 R3 - 0x780A0004, // 000A JMPF R2 #0010 - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x94100306, // 000C GETIDX R4 R1 K6 - 0x94140307, // 000D GETIDX R5 R1 K7 - 0x94180308, // 000E GETIDX R6 R1 K8 - 0x7C080800, // 000F CALL R2 4 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(lv_clock_icon_init, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str(init), - /* K1 */ be_nested_str(lv), - /* K2 */ be_nested_str(seg7_font), - /* K3 */ be_nested_str(set_style_text_font), - /* K4 */ be_nested_str(PART_MAIN), - /* K5 */ be_nested_str(STATE_DEFAULT), - /* K6 */ be_nested_str(get_height), - /* K7 */ be_nested_str(set_text), - /* K8 */ be_nested_str(_X2D_X2D_X3A_X2D_X2D), - /* K9 */ be_nested_str(refr_size), - /* K10 */ be_nested_str(get_width), - /* K11 */ be_nested_str(set_y), - /* K12 */ be_const_int(2), - /* K13 */ be_nested_str(get_style_pad_right), - /* K14 */ be_nested_str(set_x), - /* K15 */ be_const_int(3), - /* K16 */ be_nested_str(set_style_pad_right), - /* K17 */ be_nested_str(set_style_bg_color), - /* K18 */ be_nested_str(color), - /* K19 */ be_nested_str(COLOR_BLACK), - /* K20 */ be_nested_str(tasmota), - /* K21 */ be_nested_str(add_driver), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[82]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0xB80A0200, // 0006 GETNGBL R2 K1 - 0x8C080502, // 0007 GETMET R2 R2 K2 - 0x5412000F, // 0008 LDINT R4 16 - 0x7C080400, // 0009 CALL R2 2 - 0x4C0C0000, // 000A LDNIL R3 - 0x200C0403, // 000B NE R3 R2 R3 - 0x780E0007, // 000C JMPF R3 #0015 - 0x8C0C0103, // 000D GETMET R3 R0 K3 - 0x5C140400, // 000E MOVE R5 R2 - 0xB81A0200, // 000F GETNGBL R6 K1 - 0x88180D04, // 0010 GETMBR R6 R6 K4 - 0xB81E0200, // 0011 GETNGBL R7 K1 - 0x881C0F05, // 0012 GETMBR R7 R7 K5 - 0x30180C07, // 0013 OR R6 R6 R7 - 0x7C0C0600, // 0014 CALL R3 3 - 0x4C0C0000, // 0015 LDNIL R3 - 0x200C0203, // 0016 NE R3 R1 R3 - 0x780E0034, // 0017 JMPF R3 #004D - 0x8C0C0306, // 0018 GETMET R3 R1 K6 - 0x7C0C0200, // 0019 CALL R3 1 - 0x8C100107, // 001A GETMET R4 R0 K7 - 0x58180008, // 001B LDCONST R6 K8 - 0x7C100400, // 001C CALL R4 2 - 0x8C100109, // 001D GETMET R4 R0 K9 - 0x7C100200, // 001E CALL R4 1 - 0x8C10010A, // 001F GETMET R4 R0 K10 - 0x7C100200, // 0020 CALL R4 1 - 0x8C14010B, // 0021 GETMET R5 R0 K11 - 0x8C1C0306, // 0022 GETMET R7 R1 K6 - 0x7C1C0200, // 0023 CALL R7 1 - 0x8C200106, // 0024 GETMET R8 R0 K6 - 0x7C200200, // 0025 CALL R8 1 - 0x041C0E08, // 0026 SUB R7 R7 R8 - 0x0C1C0F0C, // 0027 DIV R7 R7 K12 - 0x7C140400, // 0028 CALL R5 2 - 0x8C14030D, // 0029 GETMET R5 R1 K13 - 0xB81E0200, // 002A GETNGBL R7 K1 - 0x881C0F04, // 002B GETMBR R7 R7 K4 - 0xB8220200, // 002C GETNGBL R8 K1 - 0x88201105, // 002D GETMBR R8 R8 K5 - 0x301C0E08, // 002E OR R7 R7 R8 - 0x7C140400, // 002F CALL R5 2 - 0x8C18010E, // 0030 GETMET R6 R0 K14 - 0x8C20030A, // 0031 GETMET R8 R1 K10 - 0x7C200200, // 0032 CALL R8 1 - 0x04201004, // 0033 SUB R8 R8 R4 - 0x04201005, // 0034 SUB R8 R8 R5 - 0x0420110F, // 0035 SUB R8 R8 K15 - 0x7C180400, // 0036 CALL R6 2 - 0x8C180310, // 0037 GETMET R6 R1 K16 - 0x00200A04, // 0038 ADD R8 R5 R4 - 0x54260005, // 0039 LDINT R9 6 - 0x00201009, // 003A ADD R8 R8 R9 - 0xB8260200, // 003B GETNGBL R9 K1 - 0x88241304, // 003C GETMBR R9 R9 K4 - 0xB82A0200, // 003D GETNGBL R10 K1 - 0x88281505, // 003E GETMBR R10 R10 K5 - 0x3024120A, // 003F OR R9 R9 R10 - 0x7C180600, // 0040 CALL R6 3 - 0x8C180111, // 0041 GETMET R6 R0 K17 - 0xB8220200, // 0042 GETNGBL R8 K1 - 0x8C201112, // 0043 GETMET R8 R8 K18 - 0xB82A0200, // 0044 GETNGBL R10 K1 - 0x88281513, // 0045 GETMBR R10 R10 K19 - 0x7C200400, // 0046 CALL R8 2 - 0xB8260200, // 0047 GETNGBL R9 K1 - 0x88241304, // 0048 GETMBR R9 R9 K4 - 0xB82A0200, // 0049 GETNGBL R10 K1 - 0x88281505, // 004A GETMBR R10 R10 K5 - 0x3024120A, // 004B OR R9 R9 R10 - 0x7C180600, // 004C CALL R6 3 - 0xB80E2800, // 004D GETNGBL R3 K20 - 0x8C0C0715, // 004E GETMET R3 R3 K21 - 0x5C140000, // 004F MOVE R5 R0 - 0x7C0C0400, // 0050 CALL R3 2 - 0x80000000, // 0051 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: del -********************************************************************/ -be_local_closure(lv_clock_icon_del, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(del), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(remove_driver), - }), - &be_const_str_del, - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x60040003, // 0000 GETGBL R1 G3 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 - 0x7C040200, // 0004 CALL R1 1 - 0xB8060200, // 0005 GETNGBL R1 K1 - 0x8C040302, // 0006 GETMET R1 R1 K2 - 0x5C0C0000, // 0007 MOVE R3 R0 - 0x7C040400, // 0008 CALL R1 2 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: lv_clock_icon -********************************************************************/ -extern const bclass be_class_lv_label; -be_local_class(lv_clock_icon, - 3, - &be_class_lv_label, - be_nested_map(7, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(sec, -1), be_const_var(2) }, - { be_const_key(hour, -1), be_const_var(0) }, - { be_const_key(set_time, 6), be_const_closure(lv_clock_icon_set_time_closure) }, - { be_const_key(every_second, -1), be_const_closure(lv_clock_icon_every_second_closure) }, - { be_const_key(minute, -1), be_const_var(1) }, - { be_const_key(init, 2), be_const_closure(lv_clock_icon_init_closure) }, - { be_const_key(del, -1), be_const_closure(lv_clock_icon_del_closure) }, - })), - be_str_literal("lv_clock_icon") -); -/*******************************************************************/ - -void be_load_lv_clock_icon_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_clock_icon); - be_setglobal(vm, "lv_clock_icon"); - be_pop(vm, 1); -} - -#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_lvgl_ctypes_definitions.c b/lib/libesp32/berry/default/be_lvgl_ctypes_definitions.c deleted file mode 100644 index bb1ffb65c..000000000 --- a/lib/libesp32/berry/default/be_lvgl_ctypes_definitions.c +++ /dev/null @@ -1,531 +0,0 @@ -/******************************************************************** - * Tasmota LVGL ctypes mapping - *******************************************************************/ -#include "be_ctypes.h" - -#ifdef USE_LVGL - -#include "lvgl.h" -#include "be_lvgl.h" - -/******************************************************************** - * Generated code, don't edit - *******************************************************************/ - -static const char * be_ctypes_instance_mappings[]; /* forward definition */ - -const be_ctypes_structure_t be_lv_point = { - 4, /* size in bytes */ - 2, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[2]) { - { "x", 0, 0, 0, ctypes_i16, 0 }, - { "y", 2, 0, 0, ctypes_i16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_area = { - 8, /* size in bytes */ - 4, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[4]) { - { "x1", 0, 0, 0, ctypes_i16, 0 }, - { "x2", 4, 0, 0, ctypes_i16, 0 }, - { "y1", 2, 0, 0, ctypes_i16, 0 }, - { "y2", 6, 0, 0, ctypes_i16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_rect_dsc = { - 51, /* size in bytes */ - 29, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[29]) { - { "bg_color", 4, 0, 0, ctypes_u16, 1 }, - { "bg_grad_color", 6, 0, 0, ctypes_u16, 1 }, - { "bg_grad_color_stop", 9, 0, 0, ctypes_u8, 0 }, - { "bg_grad_dir", 11, 0, 3, ctypes_bf, 0 }, - { "bg_img_opa", 22, 0, 0, ctypes_u8, 0 }, - { "bg_img_recolor", 20, 0, 0, ctypes_u16, 1 }, - { "bg_img_recolor_opa", 23, 0, 0, ctypes_u8, 0 }, - { "bg_img_src", 12, 0, 0, ctypes_ptr32, 0 }, - { "bg_img_symbol_font", 16, 0, 0, ctypes_ptr32, 0 }, - { "bg_img_tiled", 24, 0, 0, ctypes_u8, 0 }, - { "bg_main_color_stop", 8, 0, 0, ctypes_u8, 0 }, - { "bg_opa", 10, 0, 0, ctypes_u8, 0 }, - { "blend_mode", 2, 0, 0, ctypes_u8, 0 }, - { "border_color", 26, 0, 0, ctypes_u16, 1 }, - { "border_opa", 30, 0, 0, ctypes_u8, 0 }, - { "border_post", 31, 0, 1, ctypes_bf, 0 }, - { "border_side", 31, 1, 5, ctypes_bf, 0 }, - { "border_width", 28, 0, 0, ctypes_i16, 0 }, - { "outline_color", 32, 0, 0, ctypes_u16, 1 }, - { "outline_opa", 38, 0, 0, ctypes_u8, 0 }, - { "outline_pad", 36, 0, 0, ctypes_i16, 0 }, - { "outline_width", 34, 0, 0, ctypes_i16, 0 }, - { "radius", 0, 0, 0, ctypes_i16, 0 }, - { "shadow_color", 40, 0, 0, ctypes_u16, 1 }, - { "shadow_ofs_x", 44, 0, 0, ctypes_i16, 0 }, - { "shadow_ofs_y", 46, 0, 0, ctypes_i16, 0 }, - { "shadow_opa", 50, 0, 0, ctypes_u8, 0 }, - { "shadow_spread", 48, 0, 0, ctypes_i16, 0 }, - { "shadow_width", 42, 0, 0, ctypes_i16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_line_dsc = { - 10, /* size in bytes */ - 9, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[9]) { - { "blend_mode", 9, 0, 2, ctypes_bf, 0 }, - { "color", 0, 0, 0, ctypes_u16, 1 }, - { "dash_gap", 6, 0, 0, ctypes_i16, 0 }, - { "dash_width", 4, 0, 0, ctypes_i16, 0 }, - { "opa", 8, 0, 0, ctypes_u8, 0 }, - { "raw_end", 9, 4, 1, ctypes_bf, 0 }, - { "round_end", 9, 3, 1, ctypes_bf, 0 }, - { "round_start", 9, 2, 1, ctypes_bf, 0 }, - { "width", 2, 0, 0, ctypes_i16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_img_dsc = { - 21, /* size in bytes */ - 10, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[10]) { - { "angle", 0, 0, 0, ctypes_u16, 0 }, - { "antialias", 20, 0, 1, ctypes_bf, 0 }, - { "blend_mode", 12, 0, 4, ctypes_bf, 0 }, - { "frame_id", 16, 0, 0, ctypes_i32, 0 }, - { "opa", 11, 0, 0, ctypes_u8, 0 }, - { "pivot_x", 4, 0, 0, ctypes_i16, 0 }, - { "pivot_y", 6, 0, 0, ctypes_i16, 0 }, - { "recolor", 8, 0, 0, ctypes_u16, 1 }, - { "recolor_opa", 10, 0, 0, ctypes_u8, 0 }, - { "zoom", 2, 0, 0, ctypes_u16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_mask_common_dsc = { - 5, /* size in bytes */ - 2, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[2]) { - { "cb", 0, 0, 0, ctypes_ptr32, 0 }, - { "type", 4, 0, 0, ctypes_u8, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_mask_line_param_cfg = { - 9, /* size in bytes */ - 5, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[5]) { - { "p1_x", 0, 0, 0, ctypes_i16, 0 }, - { "p1_y", 2, 0, 0, ctypes_i16, 0 }, - { "p2_x", 4, 0, 0, ctypes_i16, 0 }, - { "p2_y", 6, 0, 0, ctypes_i16, 0 }, - { "side", 8, 0, 2, ctypes_bf, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_mask_line_param = { - 41, /* size in bytes */ - 15, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[15]) { - { "cfg_p1_x", 8, 0, 0, ctypes_i16, 0 }, - { "cfg_p1_y", 10, 0, 0, ctypes_i16, 0 }, - { "cfg_p2_x", 12, 0, 0, ctypes_i16, 0 }, - { "cfg_p2_y", 14, 0, 0, ctypes_i16, 0 }, - { "cfg_side", 16, 0, 2, ctypes_bf, 0 }, - { "dsc_cb", 0, 0, 0, ctypes_ptr32, 0 }, - { "dsc_type", 4, 0, 0, ctypes_u8, 0 }, - { "flat", 40, 0, 1, ctypes_bf, 0 }, - { "inv", 40, 1, 1, ctypes_bf, 0 }, - { "origo_x", 20, 0, 0, ctypes_i16, 0 }, - { "origo_y", 22, 0, 0, ctypes_i16, 0 }, - { "spx", 36, 0, 0, ctypes_i32, 0 }, - { "steep", 32, 0, 0, ctypes_i32, 0 }, - { "xy_steep", 24, 0, 0, ctypes_i32, 0 }, - { "yx_steep", 28, 0, 0, ctypes_i32, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_mask_angle_param_cfg = { - 8, /* size in bytes */ - 4, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[4]) { - { "end_angle", 6, 0, 0, ctypes_i16, 0 }, - { "start_angle", 4, 0, 0, ctypes_i16, 0 }, - { "vertex_p_x", 0, 0, 0, ctypes_i16, 0 }, - { "vertex_p_y", 2, 0, 0, ctypes_i16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_mask_angle_param = { - 104, /* size in bytes */ - 37, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[37]) { - { "cfg_end_angle", 14, 0, 0, ctypes_i16, 0 }, - { "cfg_start_angle", 12, 0, 0, ctypes_i16, 0 }, - { "cfg_vertex_p_x", 8, 0, 0, ctypes_i16, 0 }, - { "cfg_vertex_p_y", 10, 0, 0, ctypes_i16, 0 }, - { "delta_deg", 102, 0, 0, ctypes_u16, 0 }, - { "dsc_cb", 0, 0, 0, ctypes_ptr32, 0 }, - { "dsc_type", 4, 0, 0, ctypes_u8, 0 }, - { "end_line_cfg_p1_x", 68, 0, 0, ctypes_i16, 0 }, - { "end_line_cfg_p1_y", 70, 0, 0, ctypes_i16, 0 }, - { "end_line_cfg_p2_x", 72, 0, 0, ctypes_i16, 0 }, - { "end_line_cfg_p2_y", 74, 0, 0, ctypes_i16, 0 }, - { "end_line_cfg_side", 76, 0, 2, ctypes_bf, 0 }, - { "end_line_dsc_cb", 60, 0, 0, ctypes_ptr32, 0 }, - { "end_line_dsc_type", 64, 0, 0, ctypes_u8, 0 }, - { "end_line_flat", 100, 0, 1, ctypes_bf, 0 }, - { "end_line_inv", 100, 1, 1, ctypes_bf, 0 }, - { "end_line_origo_x", 80, 0, 0, ctypes_i16, 0 }, - { "end_line_origo_y", 82, 0, 0, ctypes_i16, 0 }, - { "end_line_spx", 96, 0, 0, ctypes_i32, 0 }, - { "end_line_steep", 92, 0, 0, ctypes_i32, 0 }, - { "end_line_xy_steep", 84, 0, 0, ctypes_i32, 0 }, - { "end_line_yx_steep", 88, 0, 0, ctypes_i32, 0 }, - { "start_line_cfg_p1_x", 24, 0, 0, ctypes_i16, 0 }, - { "start_line_cfg_p1_y", 26, 0, 0, ctypes_i16, 0 }, - { "start_line_cfg_p2_x", 28, 0, 0, ctypes_i16, 0 }, - { "start_line_cfg_p2_y", 30, 0, 0, ctypes_i16, 0 }, - { "start_line_cfg_side", 32, 0, 2, ctypes_bf, 0 }, - { "start_line_dsc_cb", 16, 0, 0, ctypes_ptr32, 0 }, - { "start_line_dsc_type", 20, 0, 0, ctypes_u8, 0 }, - { "start_line_flat", 56, 0, 1, ctypes_bf, 0 }, - { "start_line_inv", 56, 1, 1, ctypes_bf, 0 }, - { "start_line_origo_x", 36, 0, 0, ctypes_i16, 0 }, - { "start_line_origo_y", 38, 0, 0, ctypes_i16, 0 }, - { "start_line_spx", 52, 0, 0, ctypes_i32, 0 }, - { "start_line_steep", 48, 0, 0, ctypes_i32, 0 }, - { "start_line_xy_steep", 40, 0, 0, ctypes_i32, 0 }, - { "start_line_yx_steep", 44, 0, 0, ctypes_i32, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_mask_radius_param_cfg = { - 11, /* size in bytes */ - 6, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[6]) { - { "outer", 10, 0, 1, ctypes_bf, 0 }, - { "radius", 8, 0, 0, ctypes_i16, 0 }, - { "rect_x1", 0, 0, 0, ctypes_i16, 0 }, - { "rect_x2", 4, 0, 0, ctypes_i16, 0 }, - { "rect_y1", 2, 0, 0, ctypes_i16, 0 }, - { "rect_y2", 6, 0, 0, ctypes_i16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_sqrt_res = { - 4, /* size in bytes */ - 2, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[2]) { - { "f", 2, 0, 0, ctypes_u16, 0 }, - { "i", 0, 0, 0, ctypes_u16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_mask_radius_param = { - 28, /* size in bytes */ - 11, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[11]) { - { "cfg_outer", 18, 0, 1, ctypes_bf, 0 }, - { "cfg_radius", 16, 0, 0, ctypes_i16, 0 }, - { "cfg_rect_x1", 8, 0, 0, ctypes_i16, 0 }, - { "cfg_rect_x2", 12, 0, 0, ctypes_i16, 0 }, - { "cfg_rect_y1", 10, 0, 0, ctypes_i16, 0 }, - { "cfg_rect_y2", 14, 0, 0, ctypes_i16, 0 }, - { "dsc_cb", 0, 0, 0, ctypes_ptr32, 0 }, - { "dsc_type", 4, 0, 0, ctypes_u8, 0 }, - { "y_prev", 20, 0, 0, ctypes_i32, 0 }, - { "y_prev_x_f", 26, 0, 0, ctypes_u16, 0 }, - { "y_prev_x_i", 24, 0, 0, ctypes_u16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_mask_fade_param_cfg = { - 14, /* size in bytes */ - 8, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[8]) { - { "coords_x1", 0, 0, 0, ctypes_i16, 0 }, - { "coords_x2", 4, 0, 0, ctypes_i16, 0 }, - { "coords_y1", 2, 0, 0, ctypes_i16, 0 }, - { "coords_y2", 6, 0, 0, ctypes_i16, 0 }, - { "opa_bottom", 13, 0, 0, ctypes_u8, 0 }, - { "opa_top", 12, 0, 0, ctypes_u8, 0 }, - { "y_bottom", 10, 0, 0, ctypes_i16, 0 }, - { "y_top", 8, 0, 0, ctypes_i16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_mask_fade_param = { - 22, /* size in bytes */ - 10, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[10]) { - { "cfg_coords_x1", 8, 0, 0, ctypes_i16, 0 }, - { "cfg_coords_x2", 12, 0, 0, ctypes_i16, 0 }, - { "cfg_coords_y1", 10, 0, 0, ctypes_i16, 0 }, - { "cfg_coords_y2", 14, 0, 0, ctypes_i16, 0 }, - { "cfg_opa_bottom", 21, 0, 0, ctypes_u8, 0 }, - { "cfg_opa_top", 20, 0, 0, ctypes_u8, 0 }, - { "cfg_y_bottom", 18, 0, 0, ctypes_i16, 0 }, - { "cfg_y_top", 16, 0, 0, ctypes_i16, 0 }, - { "dsc_cb", 0, 0, 0, ctypes_ptr32, 0 }, - { "dsc_type", 4, 0, 0, ctypes_u8, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_mask_map_param_cfg = { - 12, /* size in bytes */ - 5, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[5]) { - { "coords_x1", 0, 0, 0, ctypes_i16, 0 }, - { "coords_x2", 4, 0, 0, ctypes_i16, 0 }, - { "coords_y1", 2, 0, 0, ctypes_i16, 0 }, - { "coords_y2", 6, 0, 0, ctypes_i16, 0 }, - { "map", 8, 0, 0, ctypes_ptr32, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_mask_map_param = { - 20, /* size in bytes */ - 7, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[7]) { - { "cfg_coords_x1", 8, 0, 0, ctypes_i16, 0 }, - { "cfg_coords_x2", 12, 0, 0, ctypes_i16, 0 }, - { "cfg_coords_y1", 10, 0, 0, ctypes_i16, 0 }, - { "cfg_coords_y2", 14, 0, 0, ctypes_i16, 0 }, - { "cfg_map", 16, 0, 0, ctypes_ptr32, 0 }, - { "dsc_cb", 0, 0, 0, ctypes_ptr32, 0 }, - { "dsc_type", 4, 0, 0, ctypes_u8, 0 }, -}}; - -const be_ctypes_structure_t be_lv_draw_mask_saved = { - 8, /* size in bytes */ - 2, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[2]) { - { "custom_id", 4, 0, 0, ctypes_ptr32, 0 }, - { "param", 0, 0, 0, ctypes_ptr32, 0 }, -}}; - -const be_ctypes_structure_t be_lv_meter_scale = { - 34, /* size in bytes */ - 15, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[15]) { - { "angle_range", 30, 0, 0, ctypes_u16, 0 }, - { "label_color", 18, 0, 0, ctypes_i16, 0 }, - { "label_gap", 16, 0, 0, ctypes_i16, 0 }, - { "max", 24, 0, 0, ctypes_i32, 0 }, - { "min", 20, 0, 0, ctypes_i32, 0 }, - { "r_mod", 28, 0, 0, ctypes_i16, 0 }, - { "rotation", 32, 0, 0, ctypes_i16, 0 }, - { "tick_cnt", 2, 0, 0, ctypes_u16, 0 }, - { "tick_color", 0, 0, 0, ctypes_u16, 1 }, - { "tick_length", 4, 0, 0, ctypes_u16, 0 }, - { "tick_major_color", 8, 0, 0, ctypes_u16, 1 }, - { "tick_major_length", 12, 0, 0, ctypes_u16, 0 }, - { "tick_major_nth", 10, 0, 0, ctypes_u16, 0 }, - { "tick_major_width", 14, 0, 0, ctypes_u16, 0 }, - { "tick_width", 6, 0, 0, ctypes_u16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_meter_indicator = { - 16, /* size in bytes */ - 5, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[5]) { - { "end_value", 12, 0, 0, ctypes_i32, 0 }, - { "opa", 5, 0, 0, ctypes_u8, 0 }, - { "scale", 0, 0, 0, ctypes_ptr32, 0 }, - { "start_value", 8, 0, 0, ctypes_i32, 0 }, - { "type", 4, 0, 0, ctypes_u8, 0 }, -}}; - -const be_ctypes_structure_t be_lv_meter_indicator_needle_img = { - 24, /* size in bytes */ - 8, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[8]) { - { "end_value", 12, 0, 0, ctypes_i32, 0 }, - { "opa", 5, 0, 0, ctypes_u8, 0 }, - { "pivot_x", 20, 0, 0, ctypes_i16, 0 }, - { "pivot_y", 22, 0, 0, ctypes_i16, 0 }, - { "scale", 0, 0, 0, ctypes_ptr32, 0 }, - { "src", 16, 0, 0, ctypes_ptr32, 0 }, - { "start_value", 8, 0, 0, ctypes_i32, 0 }, - { "type", 4, 0, 0, ctypes_u8, 0 }, -}}; - -const be_ctypes_structure_t be_lv_meter_indicator_needle_line = { - 22, /* size in bytes */ - 8, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[8]) { - { "color", 20, 0, 0, ctypes_u16, 1 }, - { "end_value", 12, 0, 0, ctypes_i32, 0 }, - { "opa", 5, 0, 0, ctypes_u8, 0 }, - { "r_mod", 18, 0, 0, ctypes_i16, 0 }, - { "scale", 0, 0, 0, ctypes_ptr32, 0 }, - { "start_value", 8, 0, 0, ctypes_i32, 0 }, - { "type", 4, 0, 0, ctypes_u8, 0 }, - { "width", 16, 0, 0, ctypes_u16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_meter_indicator_arc = { - 28, /* size in bytes */ - 9, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[9]) { - { "color", 24, 0, 0, ctypes_u16, 1 }, - { "end_value", 12, 0, 0, ctypes_i32, 0 }, - { "opa", 5, 0, 0, ctypes_u8, 0 }, - { "r_mod", 26, 0, 0, ctypes_i16, 0 }, - { "scale", 0, 0, 0, ctypes_ptr32, 0 }, - { "src", 20, 0, 0, ctypes_ptr32, 0 }, - { "start_value", 8, 0, 0, ctypes_i32, 0 }, - { "type", 4, 0, 0, ctypes_u8, 0 }, - { "width", 16, 0, 0, ctypes_u16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_meter_indicator_scale_lines = { - 23, /* size in bytes */ - 9, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[9]) { - { "color_end", 20, 0, 0, ctypes_u16, 1 }, - { "color_start", 18, 0, 0, ctypes_u16, 1 }, - { "end_value", 12, 0, 0, ctypes_i32, 0 }, - { "local_grad", 22, 0, 1, ctypes_bf, 0 }, - { "opa", 5, 0, 0, ctypes_u8, 0 }, - { "scale", 0, 0, 0, ctypes_ptr32, 0 }, - { "start_value", 8, 0, 0, ctypes_i32, 0 }, - { "type", 4, 0, 0, ctypes_u8, 0 }, - { "width_mod", 16, 0, 0, ctypes_i16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_obj_class = { - 27, /* size in bytes */ - 10, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[10]) { - { "base_class", 0, 0, 0, ctypes_ptr32, 0 }, - { "constructor_cb", 4, 0, 0, ctypes_ptr32, 0 }, - { "destructor_cb", 8, 0, 0, ctypes_ptr32, 0 }, - { "editable", 24, 0, 2, ctypes_bf, 0 }, - { "event_cb", 16, 0, 0, ctypes_ptr32, 0 }, - { "group_def", 24, 2, 2, ctypes_bf, 0 }, - { "height_def", 22, 0, 0, ctypes_i16, 0 }, - { "instance_size", 24, 4, 16, ctypes_bf, 0 }, - { "user_data", 12, 0, 0, ctypes_ptr32, 0 }, - { "width_def", 20, 0, 0, ctypes_i16, 0 }, -}}; - -const be_ctypes_structure_t be_lv_event = { - 25, /* size in bytes */ - 7, /* number of elements */ - be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[7]) { - { "code", 8, 0, 0, ctypes_i32, 0 }, - { "current_target", 4, 0, 0, ctypes_ptr32, 0 }, - { "deleted", 24, 0, 1, ctypes_bf, 0 }, - { "param", 16, 0, 0, ctypes_ptr32, 0 }, - { "prev", 20, 0, 0, ctypes_ptr32, 0 }, - { "target", 0, 0, 0, ctypes_ptr32, 0 }, - { "user_data", 12, 0, 0, ctypes_ptr32, 0 }, -}}; - -static const char * be_ctypes_instance_mappings[] = { - "lv_color", - NULL -}; - -static be_define_ctypes_class(lv_area, &be_lv_area, &be_class_ctypes, "lv_area"); -static be_define_ctypes_class(lv_draw_img_dsc, &be_lv_draw_img_dsc, &be_class_ctypes, "lv_draw_img_dsc"); -static be_define_ctypes_class(lv_draw_line_dsc, &be_lv_draw_line_dsc, &be_class_ctypes, "lv_draw_line_dsc"); -static be_define_ctypes_class(lv_draw_mask_angle_param, &be_lv_draw_mask_angle_param, &be_class_ctypes, "lv_draw_mask_angle_param"); -static be_define_ctypes_class(lv_draw_mask_angle_param_cfg, &be_lv_draw_mask_angle_param_cfg, &be_class_ctypes, "lv_draw_mask_angle_param_cfg"); -static be_define_ctypes_class(lv_draw_mask_common_dsc, &be_lv_draw_mask_common_dsc, &be_class_ctypes, "lv_draw_mask_common_dsc"); -static be_define_ctypes_class(lv_draw_mask_fade_param, &be_lv_draw_mask_fade_param, &be_class_ctypes, "lv_draw_mask_fade_param"); -static be_define_ctypes_class(lv_draw_mask_fade_param_cfg, &be_lv_draw_mask_fade_param_cfg, &be_class_ctypes, "lv_draw_mask_fade_param_cfg"); -static be_define_ctypes_class(lv_draw_mask_line_param, &be_lv_draw_mask_line_param, &be_class_ctypes, "lv_draw_mask_line_param"); -static be_define_ctypes_class(lv_draw_mask_line_param_cfg, &be_lv_draw_mask_line_param_cfg, &be_class_ctypes, "lv_draw_mask_line_param_cfg"); -static be_define_ctypes_class(lv_draw_mask_map_param, &be_lv_draw_mask_map_param, &be_class_ctypes, "lv_draw_mask_map_param"); -static be_define_ctypes_class(lv_draw_mask_map_param_cfg, &be_lv_draw_mask_map_param_cfg, &be_class_ctypes, "lv_draw_mask_map_param_cfg"); -static be_define_ctypes_class(lv_draw_mask_radius_param, &be_lv_draw_mask_radius_param, &be_class_ctypes, "lv_draw_mask_radius_param"); -static be_define_ctypes_class(lv_draw_mask_radius_param_cfg, &be_lv_draw_mask_radius_param_cfg, &be_class_ctypes, "lv_draw_mask_radius_param_cfg"); -static be_define_ctypes_class(lv_draw_mask_saved, &be_lv_draw_mask_saved, &be_class_ctypes, "lv_draw_mask_saved"); -static be_define_ctypes_class(lv_draw_rect_dsc, &be_lv_draw_rect_dsc, &be_class_ctypes, "lv_draw_rect_dsc"); -static be_define_ctypes_class(lv_event, &be_lv_event, &be_class_ctypes, "lv_event"); -static be_define_ctypes_class(lv_meter_indicator, &be_lv_meter_indicator, &be_class_ctypes, "lv_meter_indicator"); -static be_define_ctypes_class(lv_meter_indicator_arc, &be_lv_meter_indicator_arc, &be_class_ctypes, "lv_meter_indicator_arc"); -static be_define_ctypes_class(lv_meter_indicator_needle_img, &be_lv_meter_indicator_needle_img, &be_class_ctypes, "lv_meter_indicator_needle_img"); -static be_define_ctypes_class(lv_meter_indicator_needle_line, &be_lv_meter_indicator_needle_line, &be_class_ctypes, "lv_meter_indicator_needle_line"); -static be_define_ctypes_class(lv_meter_indicator_scale_lines, &be_lv_meter_indicator_scale_lines, &be_class_ctypes, "lv_meter_indicator_scale_lines"); -static be_define_ctypes_class(lv_meter_scale, &be_lv_meter_scale, &be_class_ctypes, "lv_meter_scale"); -static be_define_ctypes_class(lv_obj_class, &be_lv_obj_class, &be_class_ctypes, "lv_obj_class"); -static be_define_ctypes_class(lv_point, &be_lv_point, &be_class_ctypes, "lv_point"); -static be_define_ctypes_class(lv_sqrt_res, &be_lv_sqrt_res, &be_class_ctypes, "lv_sqrt_res"); - -void be_load_ctypes_lvgl_definitions_lib(bvm *vm) { - ctypes_register_class(vm, &be_class_lv_area, &be_lv_area); - ctypes_register_class(vm, &be_class_lv_draw_img_dsc, &be_lv_draw_img_dsc); - ctypes_register_class(vm, &be_class_lv_draw_line_dsc, &be_lv_draw_line_dsc); - ctypes_register_class(vm, &be_class_lv_draw_mask_angle_param, &be_lv_draw_mask_angle_param); - ctypes_register_class(vm, &be_class_lv_draw_mask_angle_param_cfg, &be_lv_draw_mask_angle_param_cfg); - ctypes_register_class(vm, &be_class_lv_draw_mask_common_dsc, &be_lv_draw_mask_common_dsc); - ctypes_register_class(vm, &be_class_lv_draw_mask_fade_param, &be_lv_draw_mask_fade_param); - ctypes_register_class(vm, &be_class_lv_draw_mask_fade_param_cfg, &be_lv_draw_mask_fade_param_cfg); - ctypes_register_class(vm, &be_class_lv_draw_mask_line_param, &be_lv_draw_mask_line_param); - ctypes_register_class(vm, &be_class_lv_draw_mask_line_param_cfg, &be_lv_draw_mask_line_param_cfg); - ctypes_register_class(vm, &be_class_lv_draw_mask_map_param, &be_lv_draw_mask_map_param); - ctypes_register_class(vm, &be_class_lv_draw_mask_map_param_cfg, &be_lv_draw_mask_map_param_cfg); - ctypes_register_class(vm, &be_class_lv_draw_mask_radius_param, &be_lv_draw_mask_radius_param); - ctypes_register_class(vm, &be_class_lv_draw_mask_radius_param_cfg, &be_lv_draw_mask_radius_param_cfg); - ctypes_register_class(vm, &be_class_lv_draw_mask_saved, &be_lv_draw_mask_saved); - ctypes_register_class(vm, &be_class_lv_draw_rect_dsc, &be_lv_draw_rect_dsc); - ctypes_register_class(vm, &be_class_lv_event, &be_lv_event); - ctypes_register_class(vm, &be_class_lv_meter_indicator, &be_lv_meter_indicator); - ctypes_register_class(vm, &be_class_lv_meter_indicator_arc, &be_lv_meter_indicator_arc); - ctypes_register_class(vm, &be_class_lv_meter_indicator_needle_img, &be_lv_meter_indicator_needle_img); - ctypes_register_class(vm, &be_class_lv_meter_indicator_needle_line, &be_lv_meter_indicator_needle_line); - ctypes_register_class(vm, &be_class_lv_meter_indicator_scale_lines, &be_lv_meter_indicator_scale_lines); - ctypes_register_class(vm, &be_class_lv_meter_scale, &be_lv_meter_scale); - ctypes_register_class(vm, &be_class_lv_obj_class, &be_lv_obj_class); - ctypes_register_class(vm, &be_class_lv_point, &be_lv_point); - ctypes_register_class(vm, &be_class_lv_sqrt_res, &be_lv_sqrt_res); -} - -be_ctypes_class_by_name_t be_ctypes_lvgl_classes[] = { - { "lv_area", &be_class_lv_area }, - { "lv_draw_img_dsc", &be_class_lv_draw_img_dsc }, - { "lv_draw_line_dsc", &be_class_lv_draw_line_dsc }, - { "lv_draw_mask_angle_param", &be_class_lv_draw_mask_angle_param }, - { "lv_draw_mask_angle_param_cfg", &be_class_lv_draw_mask_angle_param_cfg }, - { "lv_draw_mask_common_dsc", &be_class_lv_draw_mask_common_dsc }, - { "lv_draw_mask_fade_param", &be_class_lv_draw_mask_fade_param }, - { "lv_draw_mask_fade_param_cfg", &be_class_lv_draw_mask_fade_param_cfg }, - { "lv_draw_mask_line_param", &be_class_lv_draw_mask_line_param }, - { "lv_draw_mask_line_param_cfg", &be_class_lv_draw_mask_line_param_cfg }, - { "lv_draw_mask_map_param", &be_class_lv_draw_mask_map_param }, - { "lv_draw_mask_map_param_cfg", &be_class_lv_draw_mask_map_param_cfg }, - { "lv_draw_mask_radius_param", &be_class_lv_draw_mask_radius_param }, - { "lv_draw_mask_radius_param_cfg", &be_class_lv_draw_mask_radius_param_cfg }, - { "lv_draw_mask_saved", &be_class_lv_draw_mask_saved }, - { "lv_draw_rect_dsc", &be_class_lv_draw_rect_dsc }, - { "lv_event", &be_class_lv_event }, - { "lv_meter_indicator", &be_class_lv_meter_indicator }, - { "lv_meter_indicator_arc", &be_class_lv_meter_indicator_arc }, - { "lv_meter_indicator_needle_img", &be_class_lv_meter_indicator_needle_img }, - { "lv_meter_indicator_needle_line", &be_class_lv_meter_indicator_needle_line }, - { "lv_meter_indicator_scale_lines", &be_class_lv_meter_indicator_scale_lines }, - { "lv_meter_scale", &be_class_lv_meter_scale }, - { "lv_obj_class", &be_class_lv_obj_class }, - { "lv_point", &be_class_lv_point }, - { "lv_sqrt_res", &be_class_lv_sqrt_res }, -}; -const size_t be_ctypes_lvgl_classes_size = sizeof(be_ctypes_lvgl_classes)/sizeof(be_ctypes_lvgl_classes[0]); - -/********************************************************************/ - -#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_lvgl_glob_lib.c b/lib/libesp32/berry/default/be_lvgl_glob_lib.c deleted file mode 100644 index 06827fc0e..000000000 --- a/lib/libesp32/berry/default/be_lvgl_glob_lib.c +++ /dev/null @@ -1,826 +0,0 @@ -/******************************************************************** - * Tasmota LVGL lv_signal_bars widget - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_LVGL - -#include "lvgl.h" - -/******************************************************************** -** Solidified function: get_object_from_ptr -********************************************************************/ -be_local_closure(LVGL_glob_get_object_from_ptr, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(cb_obj), - /* K1 */ be_nested_str(find), - }), - &be_const_str_get_object_from_ptr, - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x20080403, // 0002 NE R2 R2 R3 - 0x780A0004, // 0003 JMPF R2 #0009 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x8C080501, // 0005 GETMET R2 R2 K1 - 0x5C100200, // 0006 MOVE R4 R1 - 0x7C080400, // 0007 CALL R2 2 - 0x80040400, // 0008 RET 1 R2 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: widget_event_impl -********************************************************************/ -be_local_closure(LVGL_glob_widget_event_impl, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(introspect), - /* K1 */ be_nested_str(lv), - /* K2 */ be_nested_str(lv_obj_class), - /* K3 */ be_nested_str(lv_event), - /* K4 */ be_nested_str(target), - /* K5 */ be_nested_str(get_object_from_ptr), - /* K6 */ be_nested_str(instance), - /* K7 */ be_nested_str(get), - /* K8 */ be_nested_str(widget_event), - }), - &be_const_str_widget_event_impl, - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x5C180200, // 0003 MOVE R6 R1 - 0x7C100400, // 0004 CALL R4 2 - 0xB8160200, // 0005 GETNGBL R5 K1 - 0x8C140B03, // 0006 GETMET R5 R5 K3 - 0x5C1C0400, // 0007 MOVE R7 R2 - 0x7C140400, // 0008 CALL R5 2 - 0x88180B04, // 0009 GETMBR R6 R5 K4 - 0x8C1C0105, // 000A GETMET R7 R0 K5 - 0x5C240C00, // 000B MOVE R9 R6 - 0x7C1C0400, // 000C CALL R7 2 - 0x60200004, // 000D GETGBL R8 G4 - 0x5C240E00, // 000E MOVE R9 R7 - 0x7C200200, // 000F CALL R8 1 - 0x1C201106, // 0010 EQ R8 R8 K6 - 0x78220008, // 0011 JMPF R8 #001B - 0x8C200707, // 0012 GETMET R8 R3 K7 - 0x5C280E00, // 0013 MOVE R10 R7 - 0x582C0008, // 0014 LDCONST R11 K8 - 0x7C200600, // 0015 CALL R8 3 - 0x78220003, // 0016 JMPF R8 #001B - 0x8C200F08, // 0017 GETMET R8 R7 K8 - 0x5C280800, // 0018 MOVE R10 R4 - 0x5C2C0A00, // 0019 MOVE R11 R5 - 0x7C200600, // 001A CALL R8 3 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: lvgl_event_dispatch -********************************************************************/ -be_local_closure(LVGL_glob_lvgl_event_dispatch, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(introspect), - /* K1 */ be_nested_str(lv), - /* K2 */ be_nested_str(lv_event), - /* K3 */ be_nested_str(toptr), - /* K4 */ be_nested_str(target), - /* K5 */ be_nested_str(cb_event_closure), - /* K6 */ be_nested_str(get_object_from_ptr), - }), - &be_const_str_lvgl_event_dispatch, - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xB80E0200, // 0001 GETNGBL R3 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x8C140503, // 0003 GETMET R5 R2 K3 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x7C140400, // 0005 CALL R5 2 - 0x7C0C0400, // 0006 CALL R3 2 - 0x88100704, // 0007 GETMBR R4 R3 K4 - 0x88140105, // 0008 GETMBR R5 R0 K5 - 0x94140A04, // 0009 GETIDX R5 R5 R4 - 0x8C180106, // 000A GETMET R6 R0 K6 - 0x5C200800, // 000B MOVE R8 R4 - 0x7C180400, // 000C CALL R6 2 - 0x5C1C0A00, // 000D MOVE R7 R5 - 0x5C200C00, // 000E MOVE R8 R6 - 0x5C240600, // 000F MOVE R9 R3 - 0x7C1C0400, // 0010 CALL R7 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: widget_dtor_impl -********************************************************************/ -be_local_closure(LVGL_glob_widget_dtor_impl, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(introspect), - /* K1 */ be_nested_str(lv), - /* K2 */ be_nested_str(lv_obj_class), - /* K3 */ be_nested_str(get_object_from_ptr), - /* K4 */ be_nested_str(instance), - /* K5 */ be_nested_str(get), - /* K6 */ be_nested_str(widget_destructor), - }), - &be_const_str_widget_dtor_impl, - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x5C180200, // 0003 MOVE R6 R1 - 0x7C100400, // 0004 CALL R4 2 - 0x8C140103, // 0005 GETMET R5 R0 K3 - 0x5C1C0400, // 0006 MOVE R7 R2 - 0x7C140400, // 0007 CALL R5 2 - 0x60180004, // 0008 GETGBL R6 G4 - 0x5C1C0A00, // 0009 MOVE R7 R5 - 0x7C180200, // 000A CALL R6 1 - 0x1C180D04, // 000B EQ R6 R6 K4 - 0x781A0007, // 000C JMPF R6 #0015 - 0x8C180705, // 000D GETMET R6 R3 K5 - 0x5C200A00, // 000E MOVE R8 R5 - 0x58240006, // 000F LDCONST R9 K6 - 0x7C180600, // 0010 CALL R6 3 - 0x781A0002, // 0011 JMPF R6 #0015 - 0x8C180B06, // 0012 GETMET R6 R5 K6 - 0x5C200800, // 0013 MOVE R8 R4 - 0x7C180400, // 0014 CALL R6 2 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_obj -********************************************************************/ -be_local_closure(LVGL_glob_register_obj, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(cb_obj), - /* K1 */ be_nested_str(_p), - }), - &be_const_str_register_obj, - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x1C080403, // 0002 EQ R2 R2 R3 - 0x780A0002, // 0003 JMPF R2 #0007 - 0x60080013, // 0004 GETGBL R2 G19 - 0x7C080000, // 0005 CALL R2 0 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88080301, // 0007 GETMBR R2 R1 K1 - 0x880C0100, // 0008 GETMBR R3 R0 K0 - 0x980C0401, // 0009 SETIDX R3 R2 R1 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: gen_cb -********************************************************************/ -be_local_closure(LVGL_glob_gen_cb, /* name */ - be_nested_proto( - 8, /* nstack */ - 5, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(lvgl_event_dispatch), - }), - &be_const_str__X3Clambda_X3E, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68040000, // 0000 GETUPV R1 U0 - 0x8C040300, // 0001 GETMET R1 R1 K0 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x80040200, // 0004 RET 1 R1 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(lv_event_cb), - /* K1 */ be_nested_str(cb_event_closure), - /* K2 */ be_nested_str(event_cb), - /* K3 */ be_nested_str(tasmota), - /* K4 */ be_nested_str(gen_cb), - /* K5 */ be_nested_str(register_obj), - /* K6 */ be_nested_str(null_cb), - /* K7 */ be_nested_str(cb_do_nothing), - }), - &be_const_str_gen_cb, - &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ - 0x1C140300, // 0000 EQ R5 R1 K0 - 0x78160018, // 0001 JMPF R5 #001B - 0x88140101, // 0002 GETMBR R5 R0 K1 - 0x4C180000, // 0003 LDNIL R6 - 0x1C140A06, // 0004 EQ R5 R5 R6 - 0x78160002, // 0005 JMPF R5 #0009 - 0x60140013, // 0006 GETGBL R5 G19 - 0x7C140000, // 0007 CALL R5 0 - 0x90020205, // 0008 SETMBR R0 K1 R5 - 0x88140102, // 0009 GETMBR R5 R0 K2 - 0x4C180000, // 000A LDNIL R6 - 0x1C140A06, // 000B EQ R5 R5 R6 - 0x78160004, // 000C JMPF R5 #0012 - 0xB8160600, // 000D GETNGBL R5 K3 - 0x8C140B04, // 000E GETMET R5 R5 K4 - 0x841C0000, // 000F CLOSURE R7 P0 - 0x7C140400, // 0010 CALL R5 2 - 0x90020405, // 0011 SETMBR R0 K2 R5 - 0x8C140105, // 0012 GETMET R5 R0 K5 - 0x5C1C0600, // 0013 MOVE R7 R3 - 0x7C140400, // 0014 CALL R5 2 - 0x88140101, // 0015 GETMBR R5 R0 K1 - 0x98140802, // 0016 SETIDX R5 R4 R2 - 0x88140102, // 0017 GETMBR R5 R0 K2 - 0xA0000000, // 0018 CLOSE R0 - 0x80040A00, // 0019 RET 1 R5 - 0x7002000B, // 001A JMP #0027 - 0x88140106, // 001B GETMBR R5 R0 K6 - 0x4C180000, // 001C LDNIL R6 - 0x1C140A06, // 001D EQ R5 R5 R6 - 0x78160004, // 001E JMPF R5 #0024 - 0xB8160600, // 001F GETNGBL R5 K3 - 0x8C140B04, // 0020 GETMET R5 R5 K4 - 0x881C0107, // 0021 GETMBR R7 R0 K7 - 0x7C140400, // 0022 CALL R5 2 - 0x90020C05, // 0023 SETMBR R0 K6 R5 - 0x88140106, // 0024 GETMBR R5 R0 K6 - 0xA0000000, // 0025 CLOSE R0 - 0x80040A00, // 0026 RET 1 R5 - 0xA0000000, // 0027 CLOSE R0 - 0x80000000, // 0028 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: deregister_obj -********************************************************************/ -be_local_closure(LVGL_glob_deregister_obj, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(cb_obj), - /* K1 */ be_nested_str(remove), - /* K2 */ be_nested_str(cb_event_closure), - }), - &be_const_str_deregister_obj, - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x20080403, // 0002 NE R2 R2 R3 - 0x780A0003, // 0003 JMPF R2 #0008 - 0x88080100, // 0004 GETMBR R2 R0 K0 - 0x8C080501, // 0005 GETMET R2 R2 K1 - 0x5C100200, // 0006 MOVE R4 R1 - 0x7C080400, // 0007 CALL R2 2 - 0x88080102, // 0008 GETMBR R2 R0 K2 - 0x4C0C0000, // 0009 LDNIL R3 - 0x20080403, // 000A NE R2 R2 R3 - 0x780A0003, // 000B JMPF R2 #0010 - 0x88080102, // 000C GETMBR R2 R0 K2 - 0x8C080501, // 000D GETMET R2 R2 K1 - 0x5C100200, // 000E MOVE R4 R1 - 0x7C080400, // 000F CALL R2 2 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: widget_cb -********************************************************************/ -be_local_closure(LVGL_glob_widget_cb, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 3]) { - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(widget_ctor_impl), - }), - &be_const_str__X3Clambda_X3E, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x68080000, // 0000 GETUPV R2 U0 - 0x8C080500, // 0001 GETMET R2 R2 K0 - 0x5C100000, // 0002 MOVE R4 R0 - 0x5C140200, // 0003 MOVE R5 R1 - 0x7C080600, // 0004 CALL R2 3 - 0x80040400, // 0005 RET 1 R2 - }) - ), - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(widget_dtor_impl), - }), - &be_const_str__X3Clambda_X3E, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x68080000, // 0000 GETUPV R2 U0 - 0x8C080500, // 0001 GETMET R2 R2 K0 - 0x5C100000, // 0002 MOVE R4 R0 - 0x5C140200, // 0003 MOVE R5 R1 - 0x7C080600, // 0004 CALL R2 3 - 0x80040400, // 0005 RET 1 R2 - }) - ), - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(widget_event_impl), - }), - &be_const_str__X3Clambda_X3E, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x68080000, // 0000 GETUPV R2 U0 - 0x8C080500, // 0001 GETMET R2 R2 K0 - 0x5C100000, // 0002 MOVE R4 R0 - 0x5C140200, // 0003 MOVE R5 R1 - 0x7C080600, // 0004 CALL R2 3 - 0x80040400, // 0005 RET 1 R2 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str(widget_ctor_cb), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(gen_cb), - /* K3 */ be_nested_str(widget_dtor_cb), - /* K4 */ be_nested_str(widget_event_cb), - /* K5 */ be_nested_str(widget_struct_default), - /* K6 */ be_nested_str(lv), - /* K7 */ be_nested_str(lv_obj_class), - /* K8 */ be_nested_str(lv_obj), - /* K9 */ be_nested_str(_class), - /* K10 */ be_nested_str(copy), - /* K11 */ be_nested_str(base_class), - /* K12 */ be_nested_str(constructor_cb), - /* K13 */ be_nested_str(destructor_cb), - /* K14 */ be_nested_str(event_cb), - }), - &be_const_str_widget_cb, - &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x78060004, // 0003 JMPF R1 #0009 - 0xB8060200, // 0004 GETNGBL R1 K1 - 0x8C040302, // 0005 GETMET R1 R1 K2 - 0x840C0000, // 0006 CLOSURE R3 P0 - 0x7C040400, // 0007 CALL R1 2 - 0x90020001, // 0008 SETMBR R0 K0 R1 - 0x88040103, // 0009 GETMBR R1 R0 K3 - 0x4C080000, // 000A LDNIL R2 - 0x1C040202, // 000B EQ R1 R1 R2 - 0x78060004, // 000C JMPF R1 #0012 - 0xB8060200, // 000D GETNGBL R1 K1 - 0x8C040302, // 000E GETMET R1 R1 K2 - 0x840C0001, // 000F CLOSURE R3 P1 - 0x7C040400, // 0010 CALL R1 2 - 0x90020601, // 0011 SETMBR R0 K3 R1 - 0x88040104, // 0012 GETMBR R1 R0 K4 - 0x4C080000, // 0013 LDNIL R2 - 0x1C040202, // 0014 EQ R1 R1 R2 - 0x78060004, // 0015 JMPF R1 #001B - 0xB8060200, // 0016 GETNGBL R1 K1 - 0x8C040302, // 0017 GETMET R1 R1 K2 - 0x840C0002, // 0018 CLOSURE R3 P2 - 0x7C040400, // 0019 CALL R1 2 - 0x90020801, // 001A SETMBR R0 K4 R1 - 0x88040105, // 001B GETMBR R1 R0 K5 - 0x4C080000, // 001C LDNIL R2 - 0x1C040202, // 001D EQ R1 R1 R2 - 0x78060016, // 001E JMPF R1 #0036 - 0xB8060C00, // 001F GETNGBL R1 K6 - 0x8C040307, // 0020 GETMET R1 R1 K7 - 0xB80E0C00, // 0021 GETNGBL R3 K6 - 0x880C0708, // 0022 GETMBR R3 R3 K8 - 0x880C0709, // 0023 GETMBR R3 R3 K9 - 0x7C040400, // 0024 CALL R1 2 - 0x8C04030A, // 0025 GETMET R1 R1 K10 - 0x7C040200, // 0026 CALL R1 1 - 0x90020A01, // 0027 SETMBR R0 K5 R1 - 0x88040105, // 0028 GETMBR R1 R0 K5 - 0xB80A0C00, // 0029 GETNGBL R2 K6 - 0x88080508, // 002A GETMBR R2 R2 K8 - 0x88080509, // 002B GETMBR R2 R2 K9 - 0x90061602, // 002C SETMBR R1 K11 R2 - 0x88040105, // 002D GETMBR R1 R0 K5 - 0x88080100, // 002E GETMBR R2 R0 K0 - 0x90061802, // 002F SETMBR R1 K12 R2 - 0x88040105, // 0030 GETMBR R1 R0 K5 - 0x88080103, // 0031 GETMBR R2 R0 K3 - 0x90061A02, // 0032 SETMBR R1 K13 R2 - 0x88040105, // 0033 GETMBR R1 R0 K5 - 0x88080104, // 0034 GETMBR R2 R0 K4 - 0x90061C02, // 0035 SETMBR R1 K14 R2 - 0xA0000000, // 0036 CLOSE R0 - 0x80000000, // 0037 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _anonymous_ -********************************************************************/ -be_local_closure(LVGL_glob__anonymous_, /* name */ - be_nested_proto( - 2, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(LVG_X3A_X20call_X20to_X20unsupported_X20callback), - }), - &be_const_str__anonymous_, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60000001, // 0000 GETGBL R0 G1 - 0x58040000, // 0001 LDCONST R1 K0 - 0x7C000200, // 0002 CALL R0 1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: create_custom_widget -********************************************************************/ -be_local_closure(LVGL_glob_create_custom_widget, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str(introspect), - /* K1 */ be_nested_str(lv), - /* K2 */ be_nested_str(lv_obj), - /* K3 */ be_nested_str(value_error), - /* K4 */ be_nested_str(arg_X20must_X20be_X20a_X20subclass_X20of_X20lv_obj), - /* K5 */ be_nested_str(widget_struct_by_class), - /* K6 */ be_nested_str(find), - /* K7 */ be_nested_str(widget_cb), - /* K8 */ be_nested_str(widget_struct_default), - /* K9 */ be_nested_str(copy), - /* K10 */ be_nested_str(base_class), - /* K11 */ be_nested_str(_class), - /* K12 */ be_nested_str(get), - /* K13 */ be_nested_str(widget_width_def), - /* K14 */ be_nested_str(width_def), - /* K15 */ be_nested_str(widget_height_def), - /* K16 */ be_nested_str(height_def), - /* K17 */ be_nested_str(widget_editable), - /* K18 */ be_nested_str(editable), - /* K19 */ be_nested_str(widget_group_def), - /* K20 */ be_nested_str(group_def), - /* K21 */ be_nested_str(widget_instance_size), - /* K22 */ be_nested_str(instance_size), - /* K23 */ be_nested_str(obj_class_create_obj), - /* K24 */ be_nested_str(_p), - /* K25 */ be_nested_str(register_obj), - /* K26 */ be_nested_str(class_init_obj), - }), - &be_const_str_create_custom_widget, - &be_const_str_solidified, - ( &(const binstruction[86]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x6010000F, // 0001 GETGBL R4 G15 - 0x5C140200, // 0002 MOVE R5 R1 - 0xB81A0200, // 0003 GETNGBL R6 K1 - 0x88180D02, // 0004 GETMBR R6 R6 K2 - 0x7C100400, // 0005 CALL R4 2 - 0x74120000, // 0006 JMPT R4 #0008 - 0xB0060704, // 0007 RAISE 1 K3 K4 - 0x88100105, // 0008 GETMBR R4 R0 K5 - 0x4C140000, // 0009 LDNIL R5 - 0x1C100805, // 000A EQ R4 R4 R5 - 0x78120002, // 000B JMPF R4 #000F - 0x60100013, // 000C GETGBL R4 G19 - 0x7C100000, // 000D CALL R4 0 - 0x90020A04, // 000E SETMBR R0 K5 R4 - 0x60100005, // 000F GETGBL R4 G5 - 0x5C140200, // 0010 MOVE R5 R1 - 0x7C100200, // 0011 CALL R4 1 - 0x88140105, // 0012 GETMBR R5 R0 K5 - 0x8C140B06, // 0013 GETMET R5 R5 K6 - 0x5C1C0800, // 0014 MOVE R7 R4 - 0x7C140400, // 0015 CALL R5 2 - 0x4C180000, // 0016 LDNIL R6 - 0x1C180A06, // 0017 EQ R6 R5 R6 - 0x781A002F, // 0018 JMPF R6 #0049 - 0x8C180107, // 0019 GETMET R6 R0 K7 - 0x7C180200, // 001A CALL R6 1 - 0x88180108, // 001B GETMBR R6 R0 K8 - 0x8C180D09, // 001C GETMET R6 R6 K9 - 0x7C180200, // 001D CALL R6 1 - 0x5C140C00, // 001E MOVE R5 R6 - 0x60180003, // 001F GETGBL R6 G3 - 0x5C1C0200, // 0020 MOVE R7 R1 - 0x7C180200, // 0021 CALL R6 1 - 0x88180D0B, // 0022 GETMBR R6 R6 K11 - 0x90161406, // 0023 SETMBR R5 K10 R6 - 0x8C18070C, // 0024 GETMET R6 R3 K12 - 0x5C200200, // 0025 MOVE R8 R1 - 0x5824000D, // 0026 LDCONST R9 K13 - 0x7C180600, // 0027 CALL R6 3 - 0x781A0001, // 0028 JMPF R6 #002B - 0x8818030D, // 0029 GETMBR R6 R1 K13 - 0x90161C06, // 002A SETMBR R5 K14 R6 - 0x8C18070C, // 002B GETMET R6 R3 K12 - 0x5C200200, // 002C MOVE R8 R1 - 0x5824000F, // 002D LDCONST R9 K15 - 0x7C180600, // 002E CALL R6 3 - 0x781A0001, // 002F JMPF R6 #0032 - 0x8818030F, // 0030 GETMBR R6 R1 K15 - 0x90162006, // 0031 SETMBR R5 K16 R6 - 0x8C18070C, // 0032 GETMET R6 R3 K12 - 0x5C200200, // 0033 MOVE R8 R1 - 0x58240011, // 0034 LDCONST R9 K17 - 0x7C180600, // 0035 CALL R6 3 - 0x781A0001, // 0036 JMPF R6 #0039 - 0x88180311, // 0037 GETMBR R6 R1 K17 - 0x90162406, // 0038 SETMBR R5 K18 R6 - 0x8C18070C, // 0039 GETMET R6 R3 K12 - 0x5C200200, // 003A MOVE R8 R1 - 0x58240013, // 003B LDCONST R9 K19 - 0x7C180600, // 003C CALL R6 3 - 0x781A0001, // 003D JMPF R6 #0040 - 0x88180313, // 003E GETMBR R6 R1 K19 - 0x90162806, // 003F SETMBR R5 K20 R6 - 0x8C18070C, // 0040 GETMET R6 R3 K12 - 0x5C200200, // 0041 MOVE R8 R1 - 0x58240015, // 0042 LDCONST R9 K21 - 0x7C180600, // 0043 CALL R6 3 - 0x781A0001, // 0044 JMPF R6 #0047 - 0x88180315, // 0045 GETMBR R6 R1 K21 - 0x90162C06, // 0046 SETMBR R5 K22 R6 - 0x88180105, // 0047 GETMBR R6 R0 K5 - 0x98180805, // 0048 SETIDX R6 R4 R5 - 0xB81A0200, // 0049 GETNGBL R6 K1 - 0x8C180D17, // 004A GETMET R6 R6 K23 - 0x5C200A00, // 004B MOVE R8 R5 - 0x5C240400, // 004C MOVE R9 R2 - 0x7C180600, // 004D CALL R6 3 - 0x881C0D18, // 004E GETMBR R7 R6 K24 - 0x90063007, // 004F SETMBR R1 K24 R7 - 0x8C1C0119, // 0050 GETMET R7 R0 K25 - 0x5C240200, // 0051 MOVE R9 R1 - 0x7C1C0400, // 0052 CALL R7 2 - 0x8C1C031A, // 0053 GETMET R7 R1 K26 - 0x7C1C0200, // 0054 CALL R7 1 - 0x80000000, // 0055 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: widget_ctor_impl -********************************************************************/ -be_local_closure(LVGL_glob_widget_ctor_impl, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str(introspect), - /* K1 */ be_nested_str(lv), - /* K2 */ be_nested_str(lv_obj_class), - /* K3 */ be_nested_str(get_object_from_ptr), - /* K4 */ be_nested_str(cb_obj), - /* K5 */ be_nested_str(find), - /* K6 */ be_nested_str(instance), - /* K7 */ be_nested_str(get), - /* K8 */ be_nested_str(widget_constructor), - }), - &be_const_str_widget_ctor_impl, - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0xB8120200, // 0001 GETNGBL R4 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x5C180200, // 0003 MOVE R6 R1 - 0x7C100400, // 0004 CALL R4 2 - 0x8C140103, // 0005 GETMET R5 R0 K3 - 0x5C1C0400, // 0006 MOVE R7 R2 - 0x7C140400, // 0007 CALL R5 2 - 0x88180104, // 0008 GETMBR R6 R0 K4 - 0x8C180D05, // 0009 GETMET R6 R6 K5 - 0x5C200A00, // 000A MOVE R8 R5 - 0x7C180400, // 000B CALL R6 2 - 0x781A0001, // 000C JMPF R6 #000F - 0x88180104, // 000D GETMBR R6 R0 K4 - 0x94140C05, // 000E GETIDX R5 R6 R5 - 0x60180004, // 000F GETGBL R6 G4 - 0x5C1C0A00, // 0010 MOVE R7 R5 - 0x7C180200, // 0011 CALL R6 1 - 0x1C180D06, // 0012 EQ R6 R6 K6 - 0x781A0007, // 0013 JMPF R6 #001C - 0x8C180707, // 0014 GETMET R6 R3 K7 - 0x5C200A00, // 0015 MOVE R8 R5 - 0x58240008, // 0016 LDCONST R9 K8 - 0x7C180600, // 0017 CALL R6 3 - 0x781A0002, // 0018 JMPF R6 #001C - 0x8C180B08, // 0019 GETMET R6 R5 K8 - 0x5C200800, // 001A MOVE R8 R4 - 0x7C180400, // 001B CALL R6 2 - 0x80000000, // 001C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: LVGL_glob -********************************************************************/ -be_local_class(LVGL_glob, - 9, - NULL, - be_nested_map(20, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(widget_ctor_cb, 8), be_const_var(4) }, - { be_const_key(get_object_from_ptr, 4), be_const_closure(LVGL_glob_get_object_from_ptr_closure) }, - { be_const_key(cb_obj, 7), be_const_var(0) }, - { be_const_key(widget_struct_by_class, -1), be_const_var(8) }, - { be_const_key(widget_event_impl, -1), be_const_closure(LVGL_glob_widget_event_impl_closure) }, - { be_const_key(widget_dtor_cb, 6), be_const_var(5) }, - { be_const_key(cb_event_closure, -1), be_const_var(1) }, - { be_const_key(cb_do_nothing, 16), be_const_static_closure(LVGL_glob__anonymous__closure) }, - { be_const_key(null_cb, -1), be_const_var(3) }, - { be_const_key(register_obj, -1), be_const_closure(LVGL_glob_register_obj_closure) }, - { be_const_key(widget_dtor_impl, 9), be_const_closure(LVGL_glob_widget_dtor_impl_closure) }, - { be_const_key(gen_cb, -1), be_const_closure(LVGL_glob_gen_cb_closure) }, - { be_const_key(deregister_obj, -1), be_const_closure(LVGL_glob_deregister_obj_closure) }, - { be_const_key(widget_struct_default, 12), be_const_var(7) }, - { be_const_key(widget_event_cb, -1), be_const_var(6) }, - { be_const_key(widget_cb, -1), be_const_closure(LVGL_glob_widget_cb_closure) }, - { be_const_key(lvgl_event_dispatch, 3), be_const_closure(LVGL_glob_lvgl_event_dispatch_closure) }, - { be_const_key(event_cb, -1), be_const_var(2) }, - { be_const_key(create_custom_widget, -1), be_const_closure(LVGL_glob_create_custom_widget_closure) }, - { be_const_key(widget_ctor_impl, -1), be_const_closure(LVGL_glob_widget_ctor_impl_closure) }, - })), - be_str_literal("LVGL_glob") -); -/*******************************************************************/ - -void be_load_LVGL_glob_class(bvm *vm) { - be_pushntvclass(vm, &be_class_LVGL_glob); - be_setglobal(vm, "LVGL_glob"); - be_pop(vm, 1); -} - -#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_lvgl_module.c b/lib/libesp32/berry/default/be_lvgl_module.c deleted file mode 100644 index 890efd2ff..000000000 --- a/lib/libesp32/berry/default/be_lvgl_module.c +++ /dev/null @@ -1,692 +0,0 @@ -/******************************************************************** - * Generated code, don't edit - *******************************************************************/ -/******************************************************************** - * LVGL Module - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_LVGL - -#include "lvgl.h" -#include "be_lvgl.h" -#include "lv_theme_openhasp.h" - -extern int lv0_member(bvm *vm); // resolve virtual members - -extern int lv0_start(bvm *vm); - -extern int lv0_register_button_encoder(bvm *vm); // add buttons with encoder logic - -extern int lv0_load_montserrat_font(bvm *vm); -extern int lv0_load_seg7_font(bvm *vm); -extern int lv0_load_robotocondensed_latin1_font(bvm *vm); -extern int lv0_load_font(bvm *vm); -extern int lv0_load_freetype_font(bvm *vm); - -extern int lv0_screenshot(bvm *vm); - -static int lv_get_hor_res(void) { - return lv_disp_get_hor_res(lv_disp_get_default()); -} -static int lv_get_ver_res(void) { - return lv_disp_get_ver_res(lv_disp_get_default()); -} - -/* `lv` methods */ -const lvbe_call_c_t lv_func[] = { - - { "clamp_height", (void*) &lv_clamp_height, "i", "iiii" }, - { "clamp_width", (void*) &lv_clamp_width, "i", "iiii" }, - { "color_mix", (void*) &lv_color_mix, "lv.lv_color", "(lv.lv_color)(lv.lv_color)i" }, - { "dpx", (void*) &lv_dpx, "i", "i" }, - { "draw_arc", (void*) &lv_draw_arc, "", "iiiii(lv.lv_area)(lv.lv_draw_arc_dsc)" }, - { "draw_arc_dsc_init", (void*) &lv_draw_arc_dsc_init, "", "(lv.lv_draw_arc_dsc)" }, - { "draw_arc_get_area", (void*) &lv_draw_arc_get_area, "", "iiiiiib(lv.lv_area)" }, - { "draw_img", (void*) &lv_draw_img, "", "(lv.lv_area)(lv.lv_area).(lv.lv_draw_img_dsc)" }, - { "draw_img_dsc_init", (void*) &lv_draw_img_dsc_init, "", "(lv.lv_draw_img_dsc)" }, - { "draw_label", (void*) &lv_draw_label, "", "(lv.lv_area)(lv.lv_area)(lv.lv_draw_label_dsc)s(lv.lv_draw_label_hint)" }, - { "draw_label_dsc_init", (void*) &lv_draw_label_dsc_init, "", "(lv.lv_draw_label_dsc)" }, - { "draw_letter", (void*) &lv_draw_letter, "", "(lv.lv_point)(lv.lv_area)(lv.lv_font)i(lv.lv_color)ii" }, - { "draw_line", (void*) &lv_draw_line, "", "(lv.lv_point)(lv.lv_point)(lv.lv_area)(lv.lv_draw_line_dsc)" }, - { "draw_line_dsc_init", (void*) &lv_draw_line_dsc_init, "", "(lv.lv_draw_line_dsc)" }, - { "draw_mask_add", (void*) &lv_draw_mask_add, "i", ".." }, - { "draw_mask_angle_init", (void*) &lv_draw_mask_angle_init, "", "(lv.lv_draw_mask_angle_param)iiii" }, - { "draw_mask_fade_init", (void*) &lv_draw_mask_fade_init, "", "(lv.lv_draw_mask_fade_param)(lv.lv_area)iiii" }, - { "draw_mask_get_cnt", (void*) &lv_draw_mask_get_cnt, "i", "" }, - { "draw_mask_line_angle_init", (void*) &lv_draw_mask_line_angle_init, "", "(lv.lv_draw_mask_line_param)iiii" }, - { "draw_mask_line_points_init", (void*) &lv_draw_mask_line_points_init, "", "(lv.lv_draw_mask_line_param)iiiii" }, - { "draw_mask_map_init", (void*) &lv_draw_mask_map_init, "", "(lv.lv_draw_mask_map_param)(lv.lv_area)(lv.lv_opa)" }, - { "draw_mask_radius_init", (void*) &lv_draw_mask_radius_init, "", "(lv.lv_draw_mask_radius_param)(lv.lv_area)ib" }, - { "draw_mask_remove_custom", (void*) &lv_draw_mask_remove_custom, ".", "." }, - { "draw_mask_remove_id", (void*) &lv_draw_mask_remove_id, ".", "i" }, - { "draw_polygon", (void*) &lv_draw_polygon, "", "ii(lv.lv_area)(lv.lv_draw_rect_dsc)" }, - { "draw_rect", (void*) &lv_draw_rect, "", "(lv.lv_area)(lv.lv_area)(lv.lv_draw_rect_dsc)" }, - { "draw_rect_dsc_init", (void*) &lv_draw_rect_dsc_init, "", "(lv.lv_draw_rect_dsc)" }, - { "draw_triangle", (void*) &lv_draw_triangle, "", "i(lv.lv_area)(lv.lv_draw_rect_dsc)" }, - { "event_register_id", (void*) &lv_event_register_id, "i", "" }, - { "event_send", (void*) &lv_event_send, "i", "(lv.lv_obj)i." }, - { "event_set_cover_res", (void*) &lv_event_set_cover_res, "", "(lv.lv_event)(lv.lv_cover_res)" }, - { "event_set_ext_draw_size", (void*) &lv_event_set_ext_draw_size, "", "(lv.lv_event)i" }, - { "get_hor_res", (void*) &lv_get_hor_res, "i", "" }, - { "get_ver_res", (void*) &lv_get_ver_res, "i", "" }, - { "group_get_default", (void*) &lv_group_get_default, "lv.lv_group", "" }, - { "img_src_get_type", (void*) &lv_img_src_get_type, "i", "." }, - { "indev_get_act", (void*) &lv_indev_get_act, "lv.lv_indev", "" }, - { "indev_get_obj_act", (void*) &lv_indev_get_obj_act, "lv.lv_obj", "" }, - { "indev_read_timer_cb", (void*) &lv_indev_read_timer_cb, "", "(lv.lv_timer)" }, - { "layer_sys", (void*) &lv_layer_sys, "lv.lv_obj", "" }, - { "layer_top", (void*) &lv_layer_top, "lv.lv_obj", "" }, - { "layout_register", (void*) &lv_layout_register, "i", "^lv_layout_update_cb^." }, - { "obj_class_create_obj", (void*) &lv_obj_class_create_obj, "lv.lv_obj", "(lv._lv_obj_class)(lv.lv_obj)" }, - { "obj_del_anim_ready_cb", (void*) &lv_obj_del_anim_ready_cb, "", "(lv.lv_anim)" }, - { "obj_draw_dsc_init", (void*) &lv_obj_draw_dsc_init, "", "(lv.lv_obj_draw_part_dsc)(lv.lv_area)" }, - { "obj_enable_style_refresh", (void*) &lv_obj_enable_style_refresh, "", "b" }, - { "obj_event_base", (void*) &lv_obj_event_base, "i", "(lv.lv_obj_class)(lv.lv_event)" }, - { "obj_report_style_change", (void*) &lv_obj_report_style_change, "", "(lv.lv_style)" }, - { "obj_style_get_selector_part", (void*) &lv_obj_style_get_selector_part, "i", "i" }, - { "obj_style_get_selector_state", (void*) &lv_obj_style_get_selector_state, "i", "i" }, - { "refr_now", (void*) &lv_refr_now, "", "(lv.lv_disp)" }, - { "scr_act", (void*) &lv_scr_act, "lv.lv_obj", "" }, - { "scr_load", (void*) &lv_scr_load, "", "(lv.lv_obj)" }, - { "scr_load_anim", (void*) &lv_scr_load_anim, "", "(lv.lv_obj)iiib" }, - { "theme_apply", (void*) &lv_theme_apply, "", "(lv.lv_obj)" }, - { "theme_default_init", (void*) &lv_theme_default_init, "lv.lv_theme", "(lv.lv_disp)(lv.lv_color)(lv.lv_color)b(lv.lv_font)" }, - { "theme_default_is_inited", (void*) &lv_theme_default_is_inited, "b", "" }, - { "theme_get_color_primary", (void*) &lv_theme_get_color_primary, "lv.lv_color", "(lv.lv_obj)" }, - { "theme_get_color_secondary", (void*) &lv_theme_get_color_secondary, "lv.lv_color", "(lv.lv_obj)" }, - { "theme_get_font_large", (void*) &lv_theme_get_font_large, "lv.lv_font", "(lv.lv_obj)" }, - { "theme_get_font_normal", (void*) &lv_theme_get_font_normal, "lv.lv_font", "(lv.lv_obj)" }, - { "theme_get_font_small", (void*) &lv_theme_get_font_small, "lv.lv_font", "(lv.lv_obj)" }, - { "theme_get_from_obj", (void*) &lv_theme_get_from_obj, "lv.lv_theme", "(lv.lv_obj)" }, - { "theme_mono_init", (void*) &lv_theme_mono_init, "lv.lv_theme", "(lv.lv_disp)b(lv.lv_font)" }, - { "theme_openhasp_init", (void*) &lv_theme_openhasp_init, "lv.lv_theme", "(lv.lv_disp)(lv.lv_color)(lv.lv_color)b(lv.lv_font)" }, - { "theme_openhasp_is_inited", (void*) &lv_theme_openhasp_is_inited, "b", "" }, - { "theme_set_apply_cb", (void*) &lv_theme_set_apply_cb, "", "(lv.lv_theme)^lv_theme_apply_cb^" }, - { "theme_set_parent", (void*) &lv_theme_set_parent, "", "(lv.lv_theme)(lv.lv_theme)" }, - -}; -const size_t lv_func_size = sizeof(lv_func) / sizeof(lv_func[0]); - - - - -typedef struct be_constint_t { - const char * name; - int32_t value; -} be_constint_t; - -const be_constint_t lv0_constants[] = { - - { "ALIGN_BOTTOM_LEFT", LV_ALIGN_BOTTOM_LEFT }, - { "ALIGN_BOTTOM_MID", LV_ALIGN_BOTTOM_MID }, - { "ALIGN_BOTTOM_RIGHT", LV_ALIGN_BOTTOM_RIGHT }, - { "ALIGN_CENTER", LV_ALIGN_CENTER }, - { "ALIGN_DEFAULT", LV_ALIGN_DEFAULT }, - { "ALIGN_LEFT_MID", LV_ALIGN_LEFT_MID }, - { "ALIGN_OUT_BOTTOM_LEFT", LV_ALIGN_OUT_BOTTOM_LEFT }, - { "ALIGN_OUT_BOTTOM_MID", LV_ALIGN_OUT_BOTTOM_MID }, - { "ALIGN_OUT_BOTTOM_RIGHT", LV_ALIGN_OUT_BOTTOM_RIGHT }, - { "ALIGN_OUT_LEFT_BOTTOM", LV_ALIGN_OUT_LEFT_BOTTOM }, - { "ALIGN_OUT_LEFT_MID", LV_ALIGN_OUT_LEFT_MID }, - { "ALIGN_OUT_LEFT_TOP", LV_ALIGN_OUT_LEFT_TOP }, - { "ALIGN_OUT_RIGHT_BOTTOM", LV_ALIGN_OUT_RIGHT_BOTTOM }, - { "ALIGN_OUT_RIGHT_MID", LV_ALIGN_OUT_RIGHT_MID }, - { "ALIGN_OUT_RIGHT_TOP", LV_ALIGN_OUT_RIGHT_TOP }, - { "ALIGN_OUT_TOP_LEFT", LV_ALIGN_OUT_TOP_LEFT }, - { "ALIGN_OUT_TOP_MID", LV_ALIGN_OUT_TOP_MID }, - { "ALIGN_OUT_TOP_RIGHT", LV_ALIGN_OUT_TOP_RIGHT }, - { "ALIGN_RIGHT_MID", LV_ALIGN_RIGHT_MID }, - { "ALIGN_TOP_LEFT", LV_ALIGN_TOP_LEFT }, - { "ALIGN_TOP_MID", LV_ALIGN_TOP_MID }, - { "ALIGN_TOP_RIGHT", LV_ALIGN_TOP_RIGHT }, - { "ANIM_IMG_PART_MAIN", LV_ANIM_IMG_PART_MAIN }, - { "ANIM_OFF", LV_ANIM_OFF }, - { "ANIM_ON", LV_ANIM_ON }, - { "ARC_MODE_NORMAL", LV_ARC_MODE_NORMAL }, - { "ARC_MODE_REVERSE", LV_ARC_MODE_REVERSE }, - { "ARC_MODE_SYMMETRICAL", LV_ARC_MODE_SYMMETRICAL }, - { "BAR_MODE_NORMAL", LV_BAR_MODE_NORMAL }, - { "BAR_MODE_RANGE", LV_BAR_MODE_RANGE }, - { "BAR_MODE_SYMMETRICAL", LV_BAR_MODE_SYMMETRICAL }, - { "BASE_DIR_AUTO", LV_BASE_DIR_AUTO }, - { "BASE_DIR_LTR", LV_BASE_DIR_LTR }, - { "BASE_DIR_NEUTRAL", LV_BASE_DIR_NEUTRAL }, - { "BASE_DIR_RTL", LV_BASE_DIR_RTL }, - { "BASE_DIR_WEAK", LV_BASE_DIR_WEAK }, - { "BLEND_MODE_ADDITIVE", LV_BLEND_MODE_ADDITIVE }, - { "BLEND_MODE_NORMAL", LV_BLEND_MODE_NORMAL }, - { "BLEND_MODE_SUBTRACTIVE", LV_BLEND_MODE_SUBTRACTIVE }, - { "BORDER_SIDE_BOTTOM", LV_BORDER_SIDE_BOTTOM }, - { "BORDER_SIDE_FULL", LV_BORDER_SIDE_FULL }, - { "BORDER_SIDE_INTERNAL", LV_BORDER_SIDE_INTERNAL }, - { "BORDER_SIDE_LEFT", LV_BORDER_SIDE_LEFT }, - { "BORDER_SIDE_NONE", LV_BORDER_SIDE_NONE }, - { "BORDER_SIDE_RIGHT", LV_BORDER_SIDE_RIGHT }, - { "BORDER_SIDE_TOP", LV_BORDER_SIDE_TOP }, - { "BTNMATRIX_CTRL_CHECKABLE", LV_BTNMATRIX_CTRL_CHECKABLE }, - { "BTNMATRIX_CTRL_CHECKED", LV_BTNMATRIX_CTRL_CHECKED }, - { "BTNMATRIX_CTRL_CLICK_TRIG", LV_BTNMATRIX_CTRL_CLICK_TRIG }, - { "BTNMATRIX_CTRL_CUSTOM_1", LV_BTNMATRIX_CTRL_CUSTOM_1 }, - { "BTNMATRIX_CTRL_CUSTOM_2", LV_BTNMATRIX_CTRL_CUSTOM_2 }, - { "BTNMATRIX_CTRL_DISABLED", LV_BTNMATRIX_CTRL_DISABLED }, - { "BTNMATRIX_CTRL_HIDDEN", LV_BTNMATRIX_CTRL_HIDDEN }, - { "BTNMATRIX_CTRL_NO_REPEAT", LV_BTNMATRIX_CTRL_NO_REPEAT }, - { "BTNMATRIX_CTRL_RECOLOR", LV_BTNMATRIX_CTRL_RECOLOR }, - { "CHART_AXIS_PRIMARY_X", LV_CHART_AXIS_PRIMARY_X }, - { "CHART_AXIS_PRIMARY_Y", LV_CHART_AXIS_PRIMARY_Y }, - { "CHART_AXIS_SECONDARY_X", LV_CHART_AXIS_SECONDARY_X }, - { "CHART_AXIS_SECONDARY_Y", LV_CHART_AXIS_SECONDARY_Y }, - { "CHART_TYPE_BAR", LV_CHART_TYPE_BAR }, - { "CHART_TYPE_LINE", LV_CHART_TYPE_LINE }, - { "CHART_TYPE_NONE", LV_CHART_TYPE_NONE }, - { "CHART_TYPE_SCATTER", LV_CHART_TYPE_SCATTER }, - { "CHART_UPDATE_MODE_CIRCULAR", LV_CHART_UPDATE_MODE_CIRCULAR }, - { "CHART_UPDATE_MODE_SHIFT", LV_CHART_UPDATE_MODE_SHIFT }, - { "COLORWHEEL_MODE_HUE", LV_COLORWHEEL_MODE_HUE }, - { "COLORWHEEL_MODE_SATURATION", LV_COLORWHEEL_MODE_SATURATION }, - { "COLORWHEEL_MODE_VALUE", LV_COLORWHEEL_MODE_VALUE }, - { "COLOR_AQUA", (int32_t) 0x00FFFF }, - { "COLOR_BLACK", (int32_t) 0x000000 }, - { "COLOR_BLUE", (int32_t) 0x0000FF }, - { "COLOR_CYAN", (int32_t) 0x00FFFF }, - { "COLOR_GRAY", (int32_t) 0x808080 }, - { "COLOR_GREEN", (int32_t) 0x008000 }, - { "COLOR_LIME", (int32_t) 0x00FF00 }, - { "COLOR_MAGENTA", (int32_t) 0xFF00FF }, - { "COLOR_MAROON", (int32_t) 0x800000 }, - { "COLOR_NAVY", (int32_t) 0x000080 }, - { "COLOR_OLIVE", (int32_t) 0x808000 }, - { "COLOR_PURPLE", (int32_t) 0x800080 }, - { "COLOR_RED", (int32_t) 0xFF0000 }, - { "COLOR_SILVER", (int32_t) 0xC0C0C0 }, - { "COLOR_TEAL", (int32_t) 0x008080 }, - { "COLOR_WHITE", (int32_t) 0xFFFFFF }, - { "COLOR_YELLOW", (int32_t) 0xFFFF00 }, - { "COVER_RES_COVER", LV_COVER_RES_COVER }, - { "COVER_RES_MASKED", LV_COVER_RES_MASKED }, - { "COVER_RES_NOT_COVER", LV_COVER_RES_NOT_COVER }, - { "DIR_ALL", LV_DIR_ALL }, - { "DIR_BOTTOM", LV_DIR_BOTTOM }, - { "DIR_HOR", LV_DIR_HOR }, - { "DIR_LEFT", LV_DIR_LEFT }, - { "DIR_NONE", LV_DIR_NONE }, - { "DIR_RIGHT", LV_DIR_RIGHT }, - { "DIR_TOP", LV_DIR_TOP }, - { "DIR_VER", LV_DIR_VER }, - { "DISP_ROT_180", LV_DISP_ROT_180 }, - { "DISP_ROT_270", LV_DISP_ROT_270 }, - { "DISP_ROT_90", LV_DISP_ROT_90 }, - { "DISP_ROT_NONE", LV_DISP_ROT_NONE }, - { "DRAW_MASK_LINE_SIDE_BOTTOM", LV_DRAW_MASK_LINE_SIDE_BOTTOM }, - { "DRAW_MASK_LINE_SIDE_LEFT", LV_DRAW_MASK_LINE_SIDE_LEFT }, - { "DRAW_MASK_LINE_SIDE_RIGHT", LV_DRAW_MASK_LINE_SIDE_RIGHT }, - { "DRAW_MASK_LINE_SIDE_TOP", LV_DRAW_MASK_LINE_SIDE_TOP }, - { "DRAW_MASK_RES_CHANGED", LV_DRAW_MASK_RES_CHANGED }, - { "DRAW_MASK_RES_FULL_COVER", LV_DRAW_MASK_RES_FULL_COVER }, - { "DRAW_MASK_RES_TRANSP", LV_DRAW_MASK_RES_TRANSP }, - { "DRAW_MASK_RES_UNKNOWN", LV_DRAW_MASK_RES_UNKNOWN }, - { "DRAW_MASK_TYPE_ANGLE", LV_DRAW_MASK_TYPE_ANGLE }, - { "DRAW_MASK_TYPE_FADE", LV_DRAW_MASK_TYPE_FADE }, - { "DRAW_MASK_TYPE_LINE", LV_DRAW_MASK_TYPE_LINE }, - { "DRAW_MASK_TYPE_MAP", LV_DRAW_MASK_TYPE_MAP }, - { "DRAW_MASK_TYPE_RADIUS", LV_DRAW_MASK_TYPE_RADIUS }, - { "EVENT_ALL", LV_EVENT_ALL }, - { "EVENT_CANCEL", LV_EVENT_CANCEL }, - { "EVENT_CHILD_CHANGED", LV_EVENT_CHILD_CHANGED }, - { "EVENT_CLICKED", LV_EVENT_CLICKED }, - { "EVENT_COVER_CHECK", LV_EVENT_COVER_CHECK }, - { "EVENT_DEFOCUSED", LV_EVENT_DEFOCUSED }, - { "EVENT_DELETE", LV_EVENT_DELETE }, - { "EVENT_DRAW_MAIN", LV_EVENT_DRAW_MAIN }, - { "EVENT_DRAW_MAIN_BEGIN", LV_EVENT_DRAW_MAIN_BEGIN }, - { "EVENT_DRAW_MAIN_END", LV_EVENT_DRAW_MAIN_END }, - { "EVENT_DRAW_PART_BEGIN", LV_EVENT_DRAW_PART_BEGIN }, - { "EVENT_DRAW_PART_END", LV_EVENT_DRAW_PART_END }, - { "EVENT_DRAW_POST", LV_EVENT_DRAW_POST }, - { "EVENT_DRAW_POST_BEGIN", LV_EVENT_DRAW_POST_BEGIN }, - { "EVENT_DRAW_POST_END", LV_EVENT_DRAW_POST_END }, - { "EVENT_FOCUSED", LV_EVENT_FOCUSED }, - { "EVENT_GESTURE", LV_EVENT_GESTURE }, - { "EVENT_GET_SELF_SIZE", LV_EVENT_GET_SELF_SIZE }, - { "EVENT_HIT_TEST", LV_EVENT_HIT_TEST }, - { "EVENT_INSERT", LV_EVENT_INSERT }, - { "EVENT_KEY", LV_EVENT_KEY }, - { "EVENT_LAYOUT_CHANGED", LV_EVENT_LAYOUT_CHANGED }, - { "EVENT_LEAVE", LV_EVENT_LEAVE }, - { "EVENT_LONG_PRESSED", LV_EVENT_LONG_PRESSED }, - { "EVENT_LONG_PRESSED_REPEAT", LV_EVENT_LONG_PRESSED_REPEAT }, - { "EVENT_PRESSED", LV_EVENT_PRESSED }, - { "EVENT_PRESSING", LV_EVENT_PRESSING }, - { "EVENT_PRESS_LOST", LV_EVENT_PRESS_LOST }, - { "EVENT_READY", LV_EVENT_READY }, - { "EVENT_REFRESH", LV_EVENT_REFRESH }, - { "EVENT_REFR_EXT_DRAW_SIZE", LV_EVENT_REFR_EXT_DRAW_SIZE }, - { "EVENT_RELEASED", LV_EVENT_RELEASED }, - { "EVENT_SCROLL", LV_EVENT_SCROLL }, - { "EVENT_SCROLL_BEGIN", LV_EVENT_SCROLL_BEGIN }, - { "EVENT_SCROLL_END", LV_EVENT_SCROLL_END }, - { "EVENT_SHORT_CLICKED", LV_EVENT_SHORT_CLICKED }, - { "EVENT_SIZE_CHANGED", LV_EVENT_SIZE_CHANGED }, - { "EVENT_STYLE_CHANGED", LV_EVENT_STYLE_CHANGED }, - { "EVENT_VALUE_CHANGED", LV_EVENT_VALUE_CHANGED }, - { "FLEX_ALIGN_CENTER", LV_FLEX_ALIGN_CENTER }, - { "FLEX_ALIGN_END", LV_FLEX_ALIGN_END }, - { "FLEX_ALIGN_SPACE_AROUND", LV_FLEX_ALIGN_SPACE_AROUND }, - { "FLEX_ALIGN_SPACE_BETWEEN", LV_FLEX_ALIGN_SPACE_BETWEEN }, - { "FLEX_ALIGN_SPACE_EVENLY", LV_FLEX_ALIGN_SPACE_EVENLY }, - { "FLEX_ALIGN_START", LV_FLEX_ALIGN_START }, - { "FLEX_FLOW_COLUMN", LV_FLEX_FLOW_COLUMN }, - { "FLEX_FLOW_COLUMN_REVERSE", LV_FLEX_FLOW_COLUMN_REVERSE }, - { "FLEX_FLOW_COLUMN_WRAP", LV_FLEX_FLOW_COLUMN_WRAP }, - { "FLEX_FLOW_COLUMN_WRAP_REVERSE", LV_FLEX_FLOW_COLUMN_WRAP_REVERSE }, - { "FLEX_FLOW_ROW", LV_FLEX_FLOW_ROW }, - { "FLEX_FLOW_ROW_REVERSE", LV_FLEX_FLOW_ROW_REVERSE }, - { "FLEX_FLOW_ROW_WRAP", LV_FLEX_FLOW_ROW_WRAP }, - { "FLEX_FLOW_ROW_WRAP_REVERSE", LV_FLEX_FLOW_ROW_WRAP_REVERSE }, - { "FS_MODE_RD", LV_FS_MODE_RD }, - { "FS_MODE_WR", LV_FS_MODE_WR }, - { "FS_RES_BUSY", LV_FS_RES_BUSY }, - { "FS_RES_DENIED", LV_FS_RES_DENIED }, - { "FS_RES_FS_ERR", LV_FS_RES_FS_ERR }, - { "FS_RES_FULL", LV_FS_RES_FULL }, - { "FS_RES_HW_ERR", LV_FS_RES_HW_ERR }, - { "FS_RES_INV_PARAM", LV_FS_RES_INV_PARAM }, - { "FS_RES_LOCKED", LV_FS_RES_LOCKED }, - { "FS_RES_NOT_EX", LV_FS_RES_NOT_EX }, - { "FS_RES_NOT_IMP", LV_FS_RES_NOT_IMP }, - { "FS_RES_OK", LV_FS_RES_OK }, - { "FS_RES_OUT_OF_MEM", LV_FS_RES_OUT_OF_MEM }, - { "FS_RES_TOUT", LV_FS_RES_TOUT }, - { "FS_RES_UNKNOWN", LV_FS_RES_UNKNOWN }, - { "FS_SEEK_CUR", LV_FS_SEEK_CUR }, - { "FS_SEEK_END", LV_FS_SEEK_END }, - { "FS_SEEK_SET", LV_FS_SEEK_SET }, - { "GRAD_DIR_HOR", LV_GRAD_DIR_HOR }, - { "GRAD_DIR_NONE", LV_GRAD_DIR_NONE }, - { "GRAD_DIR_VER", LV_GRAD_DIR_VER }, - { "GRID_ALIGN_CENTER", LV_GRID_ALIGN_CENTER }, - { "GRID_ALIGN_END", LV_GRID_ALIGN_END }, - { "GRID_ALIGN_SPACE_AROUND", LV_GRID_ALIGN_SPACE_AROUND }, - { "GRID_ALIGN_SPACE_BETWEEN", LV_GRID_ALIGN_SPACE_BETWEEN }, - { "GRID_ALIGN_SPACE_EVENLY", LV_GRID_ALIGN_SPACE_EVENLY }, - { "GRID_ALIGN_START", LV_GRID_ALIGN_START }, - { "GRID_ALIGN_STRETCH", LV_GRID_ALIGN_STRETCH }, - { "GROUP_REFOCUS_POLICY_NEXT", LV_GROUP_REFOCUS_POLICY_NEXT }, - { "GROUP_REFOCUS_POLICY_PREV", LV_GROUP_REFOCUS_POLICY_PREV }, - { "IMGBTN_STATE_CHECKED_DISABLED", LV_IMGBTN_STATE_CHECKED_DISABLED }, - { "IMGBTN_STATE_CHECKED_PRESSED", LV_IMGBTN_STATE_CHECKED_PRESSED }, - { "IMGBTN_STATE_CHECKED_RELEASED", LV_IMGBTN_STATE_CHECKED_RELEASED }, - { "IMGBTN_STATE_DISABLED", LV_IMGBTN_STATE_DISABLED }, - { "IMGBTN_STATE_PRESSED", LV_IMGBTN_STATE_PRESSED }, - { "IMGBTN_STATE_RELEASED", LV_IMGBTN_STATE_RELEASED }, - { "IMG_CF_ALPHA_1BIT", LV_IMG_CF_ALPHA_1BIT }, - { "IMG_CF_ALPHA_2BIT", LV_IMG_CF_ALPHA_2BIT }, - { "IMG_CF_ALPHA_4BIT", LV_IMG_CF_ALPHA_4BIT }, - { "IMG_CF_ALPHA_8BIT", LV_IMG_CF_ALPHA_8BIT }, - { "IMG_CF_INDEXED_1BIT", LV_IMG_CF_INDEXED_1BIT }, - { "IMG_CF_INDEXED_2BIT", LV_IMG_CF_INDEXED_2BIT }, - { "IMG_CF_INDEXED_4BIT", LV_IMG_CF_INDEXED_4BIT }, - { "IMG_CF_INDEXED_8BIT", LV_IMG_CF_INDEXED_8BIT }, - { "IMG_CF_RAW", LV_IMG_CF_RAW }, - { "IMG_CF_RAW_ALPHA", LV_IMG_CF_RAW_ALPHA }, - { "IMG_CF_RAW_CHROMA_KEYED", LV_IMG_CF_RAW_CHROMA_KEYED }, - { "IMG_CF_TRUE_COLOR", LV_IMG_CF_TRUE_COLOR }, - { "IMG_CF_TRUE_COLOR_ALPHA", LV_IMG_CF_TRUE_COLOR_ALPHA }, - { "IMG_CF_TRUE_COLOR_CHROMA_KEYED", LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED }, - { "IMG_CF_UNKNOWN", LV_IMG_CF_UNKNOWN }, - { "IMG_SRC_FILE", LV_IMG_SRC_FILE }, - { "IMG_SRC_SYMBOL", LV_IMG_SRC_SYMBOL }, - { "IMG_SRC_UNKNOWN", LV_IMG_SRC_UNKNOWN }, - { "IMG_SRC_VARIABLE", LV_IMG_SRC_VARIABLE }, - { "INDEV_STATE_PRESSED", LV_INDEV_STATE_PRESSED }, - { "INDEV_STATE_RELEASED", LV_INDEV_STATE_RELEASED }, - { "INDEV_TYPE_BUTTON", LV_INDEV_TYPE_BUTTON }, - { "INDEV_TYPE_ENCODER", LV_INDEV_TYPE_ENCODER }, - { "INDEV_TYPE_KEYPAD", LV_INDEV_TYPE_KEYPAD }, - { "INDEV_TYPE_NONE", LV_INDEV_TYPE_NONE }, - { "INDEV_TYPE_POINTER", LV_INDEV_TYPE_POINTER }, - { "KEY_BACKSPACE", LV_KEY_BACKSPACE }, - { "KEY_DEL", LV_KEY_DEL }, - { "KEY_DOWN", LV_KEY_DOWN }, - { "KEY_END", LV_KEY_END }, - { "KEY_ENTER", LV_KEY_ENTER }, - { "KEY_ESC", LV_KEY_ESC }, - { "KEY_HOME", LV_KEY_HOME }, - { "KEY_LEFT", LV_KEY_LEFT }, - { "KEY_NEXT", LV_KEY_NEXT }, - { "KEY_PREV", LV_KEY_PREV }, - { "KEY_RIGHT", LV_KEY_RIGHT }, - { "KEY_UP", LV_KEY_UP }, - { "LABEL_LONG_CLIP", LV_LABEL_LONG_CLIP }, - { "LABEL_LONG_DOT", LV_LABEL_LONG_DOT }, - { "LABEL_LONG_SCROLL", LV_LABEL_LONG_SCROLL }, - { "LABEL_LONG_SCROLL_CIRCULAR", LV_LABEL_LONG_SCROLL_CIRCULAR }, - { "LABEL_LONG_WRAP", LV_LABEL_LONG_WRAP }, - { "METER_INDICATOR_TYPE_ARC", LV_METER_INDICATOR_TYPE_ARC }, - { "METER_INDICATOR_TYPE_NEEDLE_IMG", LV_METER_INDICATOR_TYPE_NEEDLE_IMG }, - { "METER_INDICATOR_TYPE_NEEDLE_LINE", LV_METER_INDICATOR_TYPE_NEEDLE_LINE }, - { "METER_INDICATOR_TYPE_SCALE_LINES", LV_METER_INDICATOR_TYPE_SCALE_LINES }, - { "OBJ_CLASS_EDITABLE_FALSE", LV_OBJ_CLASS_EDITABLE_FALSE }, - { "OBJ_CLASS_EDITABLE_INHERIT", LV_OBJ_CLASS_EDITABLE_INHERIT }, - { "OBJ_CLASS_EDITABLE_TRUE", LV_OBJ_CLASS_EDITABLE_TRUE }, - { "OBJ_CLASS_GROUP_DEF_FALSE", LV_OBJ_CLASS_GROUP_DEF_FALSE }, - { "OBJ_CLASS_GROUP_DEF_INHERIT", LV_OBJ_CLASS_GROUP_DEF_INHERIT }, - { "OBJ_CLASS_GROUP_DEF_TRUE", LV_OBJ_CLASS_GROUP_DEF_TRUE }, - { "OBJ_FLAG_ADV_HITTEST", LV_OBJ_FLAG_ADV_HITTEST }, - { "OBJ_FLAG_CHECKABLE", LV_OBJ_FLAG_CHECKABLE }, - { "OBJ_FLAG_CLICKABLE", LV_OBJ_FLAG_CLICKABLE }, - { "OBJ_FLAG_CLICK_FOCUSABLE", LV_OBJ_FLAG_CLICK_FOCUSABLE }, - { "OBJ_FLAG_EVENT_BUBBLE", LV_OBJ_FLAG_EVENT_BUBBLE }, - { "OBJ_FLAG_FLOATING", LV_OBJ_FLAG_FLOATING }, - { "OBJ_FLAG_GESTURE_BUBBLE", LV_OBJ_FLAG_GESTURE_BUBBLE }, - { "OBJ_FLAG_HIDDEN", LV_OBJ_FLAG_HIDDEN }, - { "OBJ_FLAG_IGNORE_LAYOUT", LV_OBJ_FLAG_IGNORE_LAYOUT }, - { "OBJ_FLAG_LAYOUT_1", LV_OBJ_FLAG_LAYOUT_1 }, - { "OBJ_FLAG_LAYOUT_2", LV_OBJ_FLAG_LAYOUT_2 }, - { "OBJ_FLAG_PRESS_LOCK", LV_OBJ_FLAG_PRESS_LOCK }, - { "OBJ_FLAG_SCROLLABLE", LV_OBJ_FLAG_SCROLLABLE }, - { "OBJ_FLAG_SCROLL_CHAIN", LV_OBJ_FLAG_SCROLL_CHAIN }, - { "OBJ_FLAG_SCROLL_ELASTIC", LV_OBJ_FLAG_SCROLL_ELASTIC }, - { "OBJ_FLAG_SCROLL_MOMENTUM", LV_OBJ_FLAG_SCROLL_MOMENTUM }, - { "OBJ_FLAG_SCROLL_ONE", LV_OBJ_FLAG_SCROLL_ONE }, - { "OBJ_FLAG_SCROLL_ON_FOCUS", LV_OBJ_FLAG_SCROLL_ON_FOCUS }, - { "OBJ_FLAG_SNAPABLE", LV_OBJ_FLAG_SNAPABLE }, - { "OBJ_FLAG_USER_1", LV_OBJ_FLAG_USER_1 }, - { "OBJ_FLAG_USER_2", LV_OBJ_FLAG_USER_2 }, - { "OBJ_FLAG_USER_3", LV_OBJ_FLAG_USER_3 }, - { "OBJ_FLAG_USER_4", LV_OBJ_FLAG_USER_4 }, - { "OBJ_FLAG_WIDGET_1", LV_OBJ_FLAG_WIDGET_1 }, - { "OBJ_FLAG_WIDGET_2", LV_OBJ_FLAG_WIDGET_2 }, - { "OBJ_TREE_WALK_END", LV_OBJ_TREE_WALK_END }, - { "OBJ_TREE_WALK_NEXT", LV_OBJ_TREE_WALK_NEXT }, - { "OBJ_TREE_WALK_SKIP_CHILDREN", LV_OBJ_TREE_WALK_SKIP_CHILDREN }, - { "OPA_0", LV_OPA_0 }, - { "OPA_10", LV_OPA_10 }, - { "OPA_100", LV_OPA_100 }, - { "OPA_20", LV_OPA_20 }, - { "OPA_30", LV_OPA_30 }, - { "OPA_40", LV_OPA_40 }, - { "OPA_50", LV_OPA_50 }, - { "OPA_60", LV_OPA_60 }, - { "OPA_70", LV_OPA_70 }, - { "OPA_80", LV_OPA_80 }, - { "OPA_90", LV_OPA_90 }, - { "OPA_COVER", LV_OPA_COVER }, - { "OPA_TRANSP", LV_OPA_TRANSP }, - { "PALETTE_AMBER", LV_PALETTE_AMBER }, - { "PALETTE_BLUE", LV_PALETTE_BLUE }, - { "PALETTE_BLUE_GREY", LV_PALETTE_BLUE_GREY }, - { "PALETTE_BROWN", LV_PALETTE_BROWN }, - { "PALETTE_CYAN", LV_PALETTE_CYAN }, - { "PALETTE_DEEP_ORANGE", LV_PALETTE_DEEP_ORANGE }, - { "PALETTE_DEEP_PURPLE", LV_PALETTE_DEEP_PURPLE }, - { "PALETTE_GREEN", LV_PALETTE_GREEN }, - { "PALETTE_GREY", LV_PALETTE_GREY }, - { "PALETTE_INDIGO", LV_PALETTE_INDIGO }, - { "PALETTE_LIGHT_BLUE", LV_PALETTE_LIGHT_BLUE }, - { "PALETTE_LIGHT_GREEN", LV_PALETTE_LIGHT_GREEN }, - { "PALETTE_LIME", LV_PALETTE_LIME }, - { "PALETTE_NONE", LV_PALETTE_NONE }, - { "PALETTE_ORANGE", LV_PALETTE_ORANGE }, - { "PALETTE_PINK", LV_PALETTE_PINK }, - { "PALETTE_PURPLE", LV_PALETTE_PURPLE }, - { "PALETTE_RED", LV_PALETTE_RED }, - { "PALETTE_TEAL", LV_PALETTE_TEAL }, - { "PALETTE_YELLOW", LV_PALETTE_YELLOW }, - { "PART_ANY", LV_PART_ANY }, - { "PART_CURSOR", LV_PART_CURSOR }, - { "PART_CUSTOM_FIRST", LV_PART_CUSTOM_FIRST }, - { "PART_INDICATOR", LV_PART_INDICATOR }, - { "PART_ITEMS", LV_PART_ITEMS }, - { "PART_KNOB", LV_PART_KNOB }, - { "PART_MAIN", LV_PART_MAIN }, - { "PART_SCROLLBAR", LV_PART_SCROLLBAR }, - { "PART_SELECTED", LV_PART_SELECTED }, - { "PART_TEXTAREA_PLACEHOLDER", LV_PART_TEXTAREA_PLACEHOLDER }, - { "PART_TICKS", LV_PART_TICKS }, - { "RADIUS_CIRCLE", LV_RADIUS_CIRCLE }, - { "RES_INV", LV_RES_INV }, - { "RES_OK", LV_RES_OK }, - { "ROLLER_MODE_INFINITE", LV_ROLLER_MODE_INFINITE }, - { "ROLLER_MODE_NORMAL", LV_ROLLER_MODE_NORMAL }, - { "SCROLLBAR_MODE_ACTIVE", LV_SCROLLBAR_MODE_ACTIVE }, - { "SCROLLBAR_MODE_AUTO", LV_SCROLLBAR_MODE_AUTO }, - { "SCROLLBAR_MODE_OFF", LV_SCROLLBAR_MODE_OFF }, - { "SCROLLBAR_MODE_ON", LV_SCROLLBAR_MODE_ON }, - { "SCROLL_SNAP_CENTER", LV_SCROLL_SNAP_CENTER }, - { "SCROLL_SNAP_END", LV_SCROLL_SNAP_END }, - { "SCROLL_SNAP_NONE", LV_SCROLL_SNAP_NONE }, - { "SCROLL_SNAP_START", LV_SCROLL_SNAP_START }, - { "SCR_LOAD_ANIM_FADE_ON", LV_SCR_LOAD_ANIM_FADE_ON }, - { "SCR_LOAD_ANIM_MOVE_BOTTOM", LV_SCR_LOAD_ANIM_MOVE_BOTTOM }, - { "SCR_LOAD_ANIM_MOVE_LEFT", LV_SCR_LOAD_ANIM_MOVE_LEFT }, - { "SCR_LOAD_ANIM_MOVE_RIGHT", LV_SCR_LOAD_ANIM_MOVE_RIGHT }, - { "SCR_LOAD_ANIM_MOVE_TOP", LV_SCR_LOAD_ANIM_MOVE_TOP }, - { "SCR_LOAD_ANIM_NONE", LV_SCR_LOAD_ANIM_NONE }, - { "SCR_LOAD_ANIM_OVER_BOTTOM", LV_SCR_LOAD_ANIM_OVER_BOTTOM }, - { "SCR_LOAD_ANIM_OVER_LEFT", LV_SCR_LOAD_ANIM_OVER_LEFT }, - { "SCR_LOAD_ANIM_OVER_RIGHT", LV_SCR_LOAD_ANIM_OVER_RIGHT }, - { "SCR_LOAD_ANIM_OVER_TOP", LV_SCR_LOAD_ANIM_OVER_TOP }, - { "SIZE_CONTENT", LV_SIZE_CONTENT }, - { "SLIDER_MODE_NORMAL", LV_SLIDER_MODE_NORMAL }, - { "SLIDER_MODE_RANGE", LV_SLIDER_MODE_RANGE }, - { "SLIDER_MODE_SYMMETRICAL", LV_SLIDER_MODE_SYMMETRICAL }, - { "SPAN_MODE_BREAK", LV_SPAN_MODE_BREAK }, - { "SPAN_MODE_EXPAND", LV_SPAN_MODE_EXPAND }, - { "SPAN_MODE_FIXED", LV_SPAN_MODE_FIXED }, - { "SPAN_OVERFLOW_CLIP", LV_SPAN_OVERFLOW_CLIP }, - { "SPAN_OVERFLOW_ELLIPSIS", LV_SPAN_OVERFLOW_ELLIPSIS }, - { "STATE_ANY", LV_STATE_ANY }, - { "STATE_CHECKED", LV_STATE_CHECKED }, - { "STATE_DEFAULT", LV_STATE_DEFAULT }, - { "STATE_DISABLED", LV_STATE_DISABLED }, - { "STATE_EDITED", LV_STATE_EDITED }, - { "STATE_FOCUSED", LV_STATE_FOCUSED }, - { "STATE_FOCUS_KEY", LV_STATE_FOCUS_KEY }, - { "STATE_HOVERED", LV_STATE_HOVERED }, - { "STATE_PRESSED", LV_STATE_PRESSED }, - { "STATE_SCROLLED", LV_STATE_SCROLLED }, - { "STATE_USER_1", LV_STATE_USER_1 }, - { "STATE_USER_2", LV_STATE_USER_2 }, - { "STATE_USER_3", LV_STATE_USER_3 }, - { "STATE_USER_4", LV_STATE_USER_4 }, - { "STYLE_ALIGN", LV_STYLE_ALIGN }, - { "STYLE_ANIM_SPEED", LV_STYLE_ANIM_SPEED }, - { "STYLE_ANIM_TIME", LV_STYLE_ANIM_TIME }, - { "STYLE_ARC_COLOR", LV_STYLE_ARC_COLOR }, - { "STYLE_ARC_COLOR_FILTERED", LV_STYLE_ARC_COLOR_FILTERED }, - { "STYLE_ARC_IMG_SRC", LV_STYLE_ARC_IMG_SRC }, - { "STYLE_ARC_OPA", LV_STYLE_ARC_OPA }, - { "STYLE_ARC_ROUNDED", LV_STYLE_ARC_ROUNDED }, - { "STYLE_ARC_WIDTH", LV_STYLE_ARC_WIDTH }, - { "STYLE_BASE_DIR", LV_STYLE_BASE_DIR }, - { "STYLE_BG_COLOR", LV_STYLE_BG_COLOR }, - { "STYLE_BG_COLOR_FILTERED", LV_STYLE_BG_COLOR_FILTERED }, - { "STYLE_BG_GRAD_COLOR", LV_STYLE_BG_GRAD_COLOR }, - { "STYLE_BG_GRAD_COLOR_FILTERED", LV_STYLE_BG_GRAD_COLOR_FILTERED }, - { "STYLE_BG_GRAD_DIR", LV_STYLE_BG_GRAD_DIR }, - { "STYLE_BG_GRAD_STOP", LV_STYLE_BG_GRAD_STOP }, - { "STYLE_BG_IMG_OPA", LV_STYLE_BG_IMG_OPA }, - { "STYLE_BG_IMG_RECOLOR", LV_STYLE_BG_IMG_RECOLOR }, - { "STYLE_BG_IMG_RECOLOR_FILTERED", LV_STYLE_BG_IMG_RECOLOR_FILTERED }, - { "STYLE_BG_IMG_RECOLOR_OPA", LV_STYLE_BG_IMG_RECOLOR_OPA }, - { "STYLE_BG_IMG_SRC", LV_STYLE_BG_IMG_SRC }, - { "STYLE_BG_IMG_TILED", LV_STYLE_BG_IMG_TILED }, - { "STYLE_BG_MAIN_STOP", LV_STYLE_BG_MAIN_STOP }, - { "STYLE_BG_OPA", LV_STYLE_BG_OPA }, - { "STYLE_BLEND_MODE", LV_STYLE_BLEND_MODE }, - { "STYLE_BORDER_COLOR", LV_STYLE_BORDER_COLOR }, - { "STYLE_BORDER_COLOR_FILTERED", LV_STYLE_BORDER_COLOR_FILTERED }, - { "STYLE_BORDER_OPA", LV_STYLE_BORDER_OPA }, - { "STYLE_BORDER_POST", LV_STYLE_BORDER_POST }, - { "STYLE_BORDER_SIDE", LV_STYLE_BORDER_SIDE }, - { "STYLE_BORDER_WIDTH", LV_STYLE_BORDER_WIDTH }, - { "STYLE_CLIP_CORNER", LV_STYLE_CLIP_CORNER }, - { "STYLE_COLOR_FILTER_DSC", LV_STYLE_COLOR_FILTER_DSC }, - { "STYLE_COLOR_FILTER_OPA", LV_STYLE_COLOR_FILTER_OPA }, - { "STYLE_HEIGHT", LV_STYLE_HEIGHT }, - { "STYLE_IMG_OPA", LV_STYLE_IMG_OPA }, - { "STYLE_IMG_RECOLOR", LV_STYLE_IMG_RECOLOR }, - { "STYLE_IMG_RECOLOR_FILTERED", LV_STYLE_IMG_RECOLOR_FILTERED }, - { "STYLE_IMG_RECOLOR_OPA", LV_STYLE_IMG_RECOLOR_OPA }, - { "STYLE_LAYOUT", LV_STYLE_LAYOUT }, - { "STYLE_LINE_COLOR", LV_STYLE_LINE_COLOR }, - { "STYLE_LINE_COLOR_FILTERED", LV_STYLE_LINE_COLOR_FILTERED }, - { "STYLE_LINE_DASH_GAP", LV_STYLE_LINE_DASH_GAP }, - { "STYLE_LINE_DASH_WIDTH", LV_STYLE_LINE_DASH_WIDTH }, - { "STYLE_LINE_OPA", LV_STYLE_LINE_OPA }, - { "STYLE_LINE_ROUNDED", LV_STYLE_LINE_ROUNDED }, - { "STYLE_LINE_WIDTH", LV_STYLE_LINE_WIDTH }, - { "STYLE_MAX_HEIGHT", LV_STYLE_MAX_HEIGHT }, - { "STYLE_MAX_WIDTH", LV_STYLE_MAX_WIDTH }, - { "STYLE_MIN_HEIGHT", LV_STYLE_MIN_HEIGHT }, - { "STYLE_MIN_WIDTH", LV_STYLE_MIN_WIDTH }, - { "STYLE_OPA", LV_STYLE_OPA }, - { "STYLE_OUTLINE_COLOR", LV_STYLE_OUTLINE_COLOR }, - { "STYLE_OUTLINE_COLOR_FILTERED", LV_STYLE_OUTLINE_COLOR_FILTERED }, - { "STYLE_OUTLINE_OPA", LV_STYLE_OUTLINE_OPA }, - { "STYLE_OUTLINE_PAD", LV_STYLE_OUTLINE_PAD }, - { "STYLE_OUTLINE_WIDTH", LV_STYLE_OUTLINE_WIDTH }, - { "STYLE_PAD_BOTTOM", LV_STYLE_PAD_BOTTOM }, - { "STYLE_PAD_COLUMN", LV_STYLE_PAD_COLUMN }, - { "STYLE_PAD_LEFT", LV_STYLE_PAD_LEFT }, - { "STYLE_PAD_RIGHT", LV_STYLE_PAD_RIGHT }, - { "STYLE_PAD_ROW", LV_STYLE_PAD_ROW }, - { "STYLE_PAD_TOP", LV_STYLE_PAD_TOP }, - { "STYLE_PROP_ANY", LV_STYLE_PROP_ANY }, - { "STYLE_PROP_INV", LV_STYLE_PROP_INV }, - { "STYLE_RADIUS", LV_STYLE_RADIUS }, - { "STYLE_SHADOW_COLOR", LV_STYLE_SHADOW_COLOR }, - { "STYLE_SHADOW_COLOR_FILTERED", LV_STYLE_SHADOW_COLOR_FILTERED }, - { "STYLE_SHADOW_OFS_X", LV_STYLE_SHADOW_OFS_X }, - { "STYLE_SHADOW_OFS_Y", LV_STYLE_SHADOW_OFS_Y }, - { "STYLE_SHADOW_OPA", LV_STYLE_SHADOW_OPA }, - { "STYLE_SHADOW_SPREAD", LV_STYLE_SHADOW_SPREAD }, - { "STYLE_SHADOW_WIDTH", LV_STYLE_SHADOW_WIDTH }, - { "STYLE_TEXT_ALIGN", LV_STYLE_TEXT_ALIGN }, - { "STYLE_TEXT_COLOR", LV_STYLE_TEXT_COLOR }, - { "STYLE_TEXT_COLOR_FILTERED", LV_STYLE_TEXT_COLOR_FILTERED }, - { "STYLE_TEXT_DECOR", LV_STYLE_TEXT_DECOR }, - { "STYLE_TEXT_FONT", LV_STYLE_TEXT_FONT }, - { "STYLE_TEXT_LETTER_SPACE", LV_STYLE_TEXT_LETTER_SPACE }, - { "STYLE_TEXT_LINE_SPACE", LV_STYLE_TEXT_LINE_SPACE }, - { "STYLE_TEXT_OPA", LV_STYLE_TEXT_OPA }, - { "STYLE_TRANSFORM_ANGLE", LV_STYLE_TRANSFORM_ANGLE }, - { "STYLE_TRANSFORM_HEIGHT", LV_STYLE_TRANSFORM_HEIGHT }, - { "STYLE_TRANSFORM_WIDTH", LV_STYLE_TRANSFORM_WIDTH }, - { "STYLE_TRANSFORM_ZOOM", LV_STYLE_TRANSFORM_ZOOM }, - { "STYLE_TRANSITION", LV_STYLE_TRANSITION }, - { "STYLE_TRANSLATE_X", LV_STYLE_TRANSLATE_X }, - { "STYLE_TRANSLATE_Y", LV_STYLE_TRANSLATE_Y }, - { "STYLE_WIDTH", LV_STYLE_WIDTH }, - { "STYLE_X", LV_STYLE_X }, - { "STYLE_Y", LV_STYLE_Y }, - { "$SYMBOL_AUDIO", (int32_t) "\xef\x80\x81" }, - { "$SYMBOL_BACKSPACE", (int32_t) "\xef\x95\x9A" }, - { "$SYMBOL_BATTERY_1", (int32_t) "\xef\x89\x83" }, - { "$SYMBOL_BATTERY_2", (int32_t) "\xef\x89\x82" }, - { "$SYMBOL_BATTERY_3", (int32_t) "\xef\x89\x81" }, - { "$SYMBOL_BATTERY_EMPTY", (int32_t) "\xef\x89\x84" }, - { "$SYMBOL_BATTERY_FULL", (int32_t) "\xef\x89\x80" }, - { "$SYMBOL_BELL", (int32_t) "\xef\x83\xb3" }, - { "$SYMBOL_BLUETOOTH", (int32_t) "\xef\x8a\x93" }, - { "$SYMBOL_BULLET", (int32_t) "\xE2\x80\xA2" }, - { "$SYMBOL_CALL", (int32_t) "\xef\x82\x95" }, - { "$SYMBOL_CHARGE", (int32_t) "\xef\x83\xa7" }, - { "$SYMBOL_CLOSE", (int32_t) "\xef\x80\x8d" }, - { "$SYMBOL_COPY", (int32_t) "\xef\x83\x85" }, - { "$SYMBOL_CUT", (int32_t) "\xef\x83\x84" }, - { "$SYMBOL_DIRECTORY", (int32_t) "\xef\x81\xbb" }, - { "$SYMBOL_DOWN", (int32_t) "\xef\x81\xb8" }, - { "$SYMBOL_DOWNLOAD", (int32_t) "\xef\x80\x99" }, - { "$SYMBOL_DRIVE", (int32_t) "\xef\x80\x9c" }, - { "$SYMBOL_DUMMY", (int32_t) "\xEF\xA3\xBF" }, - { "$SYMBOL_EDIT", (int32_t) "\xef\x8C\x84" }, - { "$SYMBOL_EJECT", (int32_t) "\xef\x81\x92" }, - { "$SYMBOL_EYE_CLOSE", (int32_t) "\xef\x81\xb0" }, - { "$SYMBOL_EYE_OPEN", (int32_t) "\xef\x81\xae" }, - { "$SYMBOL_FILE", (int32_t) "\xef\x85\x9b" }, - { "$SYMBOL_GPS", (int32_t) "\xef\x84\xa4" }, - { "$SYMBOL_HOME", (int32_t) "\xef\x80\x95" }, - { "$SYMBOL_IMAGE", (int32_t) "\xef\x80\xbe" }, - { "$SYMBOL_KEYBOARD", (int32_t) "\xef\x84\x9c" }, - { "$SYMBOL_LEFT", (int32_t) "\xef\x81\x93" }, - { "$SYMBOL_LIST", (int32_t) "\xef\x80\x8b" }, - { "$SYMBOL_LOOP", (int32_t) "\xef\x81\xb9" }, - { "$SYMBOL_MINUS", (int32_t) "\xef\x81\xa8" }, - { "$SYMBOL_MUTE", (int32_t) "\xef\x80\xa6" }, - { "$SYMBOL_NEW_LINE", (int32_t) "\xef\xA2\xA2" }, - { "$SYMBOL_NEXT", (int32_t) "\xef\x81\x91" }, - { "$SYMBOL_OK", (int32_t) "\xef\x80\x8c" }, - { "$SYMBOL_PASTE", (int32_t) "\xef\x83\xAA" }, - { "$SYMBOL_PAUSE", (int32_t) "\xef\x81\x8c" }, - { "$SYMBOL_PLAY", (int32_t) "\xef\x81\x8b" }, - { "$SYMBOL_PLUS", (int32_t) "\xef\x81\xa7" }, - { "$SYMBOL_POWER", (int32_t) "\xef\x80\x91" }, - { "$SYMBOL_PREV", (int32_t) "\xef\x81\x88" }, - { "$SYMBOL_REFRESH", (int32_t) "\xef\x80\xa1" }, - { "$SYMBOL_RIGHT", (int32_t) "\xef\x81\x94" }, - { "$SYMBOL_SAVE", (int32_t) "\xef\x83\x87" }, - { "$SYMBOL_SD_CARD", (int32_t) "\xef\x9F\x82" }, - { "$SYMBOL_SETTINGS", (int32_t) "\xef\x80\x93" }, - { "$SYMBOL_SHUFFLE", (int32_t) "\xef\x81\xb4" }, - { "$SYMBOL_STOP", (int32_t) "\xef\x81\x8d" }, - { "$SYMBOL_TRASH", (int32_t) "\xef\x8B\xAD" }, - { "$SYMBOL_UP", (int32_t) "\xef\x81\xb7" }, - { "$SYMBOL_UPLOAD", (int32_t) "\xef\x82\x93" }, - { "$SYMBOL_USB", (int32_t) "\xef\x8a\x87" }, - { "$SYMBOL_VIDEO", (int32_t) "\xef\x80\x88" }, - { "$SYMBOL_VOLUME_MAX", (int32_t) "\xef\x80\xa8" }, - { "$SYMBOL_VOLUME_MID", (int32_t) "\xef\x80\xa7" }, - { "$SYMBOL_WARNING", (int32_t) "\xef\x81\xb1" }, - { "$SYMBOL_WIFI", (int32_t) "\xef\x87\xab" }, - { "TABLE_CELL_CTRL_CUSTOM_1", LV_TABLE_CELL_CTRL_CUSTOM_1 }, - { "TABLE_CELL_CTRL_CUSTOM_2", LV_TABLE_CELL_CTRL_CUSTOM_2 }, - { "TABLE_CELL_CTRL_CUSTOM_3", LV_TABLE_CELL_CTRL_CUSTOM_3 }, - { "TABLE_CELL_CTRL_CUSTOM_4", LV_TABLE_CELL_CTRL_CUSTOM_4 }, - { "TABLE_CELL_CTRL_MERGE_RIGHT", LV_TABLE_CELL_CTRL_MERGE_RIGHT }, - { "TABLE_CELL_CTRL_TEXT_CROP", LV_TABLE_CELL_CTRL_TEXT_CROP }, - { "TEXTAREA_CURSOR_LAST", LV_TEXTAREA_CURSOR_LAST }, - { "TEXT_ALIGN_AUTO", LV_TEXT_ALIGN_AUTO }, - { "TEXT_ALIGN_CENTER", LV_TEXT_ALIGN_CENTER }, - { "TEXT_ALIGN_LEFT", LV_TEXT_ALIGN_LEFT }, - { "TEXT_ALIGN_RIGHT", LV_TEXT_ALIGN_RIGHT }, - { "TEXT_CMD_STATE_IN", LV_TEXT_CMD_STATE_IN }, - { "TEXT_CMD_STATE_PAR", LV_TEXT_CMD_STATE_PAR }, - { "TEXT_CMD_STATE_WAIT", LV_TEXT_CMD_STATE_WAIT }, - { "TEXT_DECOR_NONE", LV_TEXT_DECOR_NONE }, - { "TEXT_DECOR_STRIKETHROUGH", LV_TEXT_DECOR_STRIKETHROUGH }, - { "TEXT_DECOR_UNDERLINE", LV_TEXT_DECOR_UNDERLINE }, - { "TEXT_FLAG_EXPAND", LV_TEXT_FLAG_EXPAND }, - { "TEXT_FLAG_FIT", LV_TEXT_FLAG_FIT }, - { "TEXT_FLAG_NONE", LV_TEXT_FLAG_NONE }, - { "TEXT_FLAG_RECOLOR", LV_TEXT_FLAG_RECOLOR }, - { "&font_montserrat", (int32_t) &lv0_load_montserrat_font }, - { "&font_robotocondensed_latin1", (int32_t) &lv0_load_robotocondensed_latin1_font }, - { "&font_seg7", (int32_t) &lv0_load_seg7_font }, - { "&load_font", (int32_t) &lv0_load_font }, - { "&load_freetype_font", (int32_t) &lv0_load_freetype_font }, - { "&montserrat_font", (int32_t) &lv0_load_montserrat_font }, - { "®ister_button_encoder", (int32_t) &lv0_register_button_encoder }, - { "&screenshot", (int32_t) &lv0_screenshot }, - { "&seg7_font", (int32_t) &lv0_load_seg7_font }, - -}; - -const size_t lv0_constants_size = sizeof(lv0_constants)/sizeof(lv0_constants[0]); - -/* generated */ -be_local_module(lv, - "lv", - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("member", 719708611, 6, -1), be_const_func(lv0_member) }, - { be_nested_key("start", 1697318111, 5, 0), be_const_func(lv0_start) }, - })) -); -BE_EXPORT_VARIABLE be_define_const_native_module(lv); - -#endif // USE_LVGL - -/********************************************************************/ diff --git a/lib/libesp32/berry/default/be_lvgl_signal_arcs_lib.c b/lib/libesp32/berry/default/be_lvgl_signal_arcs_lib.c deleted file mode 100644 index a127cddd9..000000000 --- a/lib/libesp32/berry/default/be_lvgl_signal_arcs_lib.c +++ /dev/null @@ -1,434 +0,0 @@ -/******************************************************************** - * Tasmota LVGL lv_signal_bars widget - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_LVGL - -#include "lvgl.h" - -/******************************************************************** -** Solidified function: set_percentage -********************************************************************/ -be_local_closure(lv_signal_arcs_set_percentage, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(percentage), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(invalidate), - }), - &be_const_str_set_percentage, - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x540E0018, // 0001 LDINT R3 25 - 0x0C080403, // 0002 DIV R2 R2 R3 - 0x540E0063, // 0003 LDINT R3 100 - 0x240C0203, // 0004 GT R3 R1 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x54060063, // 0006 LDINT R1 100 - 0x140C0301, // 0007 LT R3 R1 K1 - 0x780E0000, // 0008 JMPF R3 #000A - 0x58040001, // 0009 LDCONST R1 K1 - 0x90020001, // 000A SETMBR R0 K0 R1 - 0x540E0018, // 000B LDINT R3 25 - 0x0C0C0203, // 000C DIV R3 R1 R3 - 0x200C0403, // 000D NE R3 R2 R3 - 0x780E0001, // 000E JMPF R3 #0011 - 0x8C0C0102, // 000F GETMET R3 R0 K2 - 0x7C0C0200, // 0010 CALL R3 1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(lv_signal_arcs_init, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(_lvgl), - /* K1 */ be_nested_str(create_custom_widget), - /* K2 */ be_nested_str(percentage), - /* K3 */ be_nested_str(p1), - /* K4 */ be_nested_str(lv), - /* K5 */ be_nested_str(point), - /* K6 */ be_nested_str(p2), - /* K7 */ be_nested_str(area), - /* K8 */ be_nested_str(line_dsc), - /* K9 */ be_nested_str(draw_line_dsc), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100000, // 0002 MOVE R4 R0 - 0x5C140200, // 0003 MOVE R5 R1 - 0x7C080600, // 0004 CALL R2 3 - 0x540A0063, // 0005 LDINT R2 100 - 0x90020402, // 0006 SETMBR R0 K2 R2 - 0xB80A0800, // 0007 GETNGBL R2 K4 - 0x8C080505, // 0008 GETMET R2 R2 K5 - 0x7C080200, // 0009 CALL R2 1 - 0x90020602, // 000A SETMBR R0 K3 R2 - 0xB80A0800, // 000B GETNGBL R2 K4 - 0x8C080505, // 000C GETMET R2 R2 K5 - 0x7C080200, // 000D CALL R2 1 - 0x90020C02, // 000E SETMBR R0 K6 R2 - 0xB80A0800, // 000F GETNGBL R2 K4 - 0x8C080507, // 0010 GETMET R2 R2 K7 - 0x7C080200, // 0011 CALL R2 1 - 0x90020E02, // 0012 SETMBR R0 K7 R2 - 0xB80A0800, // 0013 GETNGBL R2 K4 - 0x8C080509, // 0014 GETMET R2 R2 K9 - 0x7C080200, // 0015 CALL R2 1 - 0x90021002, // 0016 SETMBR R0 K8 R2 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: widget_event -********************************************************************/ -be_local_closure(lv_signal_arcs_widget_event, /* name */ - be_nested_proto( - 28, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_const_int(1), - }), - &be_const_str_atleast1, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x28040100, // 0000 GE R1 R0 K0 - 0x78060001, // 0001 JMPF R1 #0004 - 0x80040000, // 0002 RET 1 R0 - 0x70020000, // 0003 JMP #0005 - 0x80060000, // 0004 RET 1 K0 - 0x80000000, // 0005 RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[35]) { /* constants */ - /* K0 */ be_nested_str(lv), - /* K1 */ be_nested_str(obj_event_base), - /* K2 */ be_nested_str(RES_OK), - /* K3 */ be_nested_str(code), - /* K4 */ be_nested_str(math), - /* K5 */ be_nested_str(get_height), - /* K6 */ be_nested_str(get_width), - /* K7 */ be_const_int(2), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str(EVENT_DRAW_MAIN), - /* K10 */ be_nested_str(area), - /* K11 */ be_nested_str(param), - /* K12 */ be_nested_str(get_coords), - /* K13 */ be_nested_str(x1), - /* K14 */ be_nested_str(y1), - /* K15 */ be_nested_str(draw_line_dsc_init), - /* K16 */ be_nested_str(line_dsc), - /* K17 */ be_nested_str(init_draw_line_dsc), - /* K18 */ be_nested_str(PART_MAIN), - /* K19 */ be_nested_str(round_start), - /* K20 */ be_const_int(1), - /* K21 */ be_nested_str(round_end), - /* K22 */ be_nested_str(width), - /* K23 */ be_nested_str(get_style_line_color), - /* K24 */ be_nested_str(STATE_DEFAULT), - /* K25 */ be_nested_str(get_style_bg_color), - /* K26 */ be_nested_str(deg), - /* K27 */ be_nested_str(acos), - /* K28 */ be_nested_str(p1), - /* K29 */ be_nested_str(x), - /* K30 */ be_nested_str(y), - /* K31 */ be_nested_str(color), - /* K32 */ be_nested_str(percentage), - /* K33 */ be_nested_str(draw_arc), - /* K34 */ be_const_int(0), - }), - &be_const_str_widget_event, - &be_const_str_solidified, - ( &(const binstruction[182]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x5C180400, // 0003 MOVE R6 R2 - 0x7C0C0600, // 0004 CALL R3 3 - 0xB8120000, // 0005 GETNGBL R4 K0 - 0x88100902, // 0006 GETMBR R4 R4 K2 - 0x200C0604, // 0007 NE R3 R3 R4 - 0x780E0000, // 0008 JMPF R3 #000A - 0x80000600, // 0009 RET 0 - 0x880C0503, // 000A GETMBR R3 R2 K3 - 0xA4120800, // 000B IMPORT R4 K4 - 0x84140000, // 000C CLOSURE R5 P0 - 0x8C180105, // 000D GETMET R6 R0 K5 - 0x7C180200, // 000E CALL R6 1 - 0x8C1C0106, // 000F GETMET R7 R0 K6 - 0x7C1C0200, // 0010 CALL R7 1 - 0x5C200A00, // 0011 MOVE R8 R5 - 0x54260007, // 0012 LDINT R9 8 - 0x0C240C09, // 0013 DIV R9 R6 R9 - 0x7C200200, // 0014 CALL R8 1 - 0x5C240A00, // 0015 MOVE R9 R5 - 0x08281107, // 0016 MUL R10 R8 K7 - 0x04280C0A, // 0017 SUB R10 R6 R10 - 0x0C281508, // 0018 DIV R10 R10 K8 - 0x7C240200, // 0019 CALL R9 1 - 0x0C281307, // 001A DIV R10 R9 K7 - 0xB82E0000, // 001B GETNGBL R11 K0 - 0x882C1709, // 001C GETMBR R11 R11 K9 - 0x1C2C060B, // 001D EQ R11 R3 R11 - 0x782E0095, // 001E JMPF R11 #00B5 - 0xB82E0000, // 001F GETNGBL R11 K0 - 0x8C2C170A, // 0020 GETMET R11 R11 K10 - 0x8834050B, // 0021 GETMBR R13 R2 K11 - 0x7C2C0400, // 0022 CALL R11 2 - 0x8C30010C, // 0023 GETMET R12 R0 K12 - 0x8838010A, // 0024 GETMBR R14 R0 K10 - 0x7C300400, // 0025 CALL R12 2 - 0x8830010A, // 0026 GETMBR R12 R0 K10 - 0x8830190D, // 0027 GETMBR R12 R12 K13 - 0x8834010A, // 0028 GETMBR R13 R0 K10 - 0x88341B0E, // 0029 GETMBR R13 R13 K14 - 0xB83A0000, // 002A GETNGBL R14 K0 - 0x8C381D0F, // 002B GETMET R14 R14 K15 - 0x88400110, // 002C GETMBR R16 R0 K16 - 0x7C380400, // 002D CALL R14 2 - 0x8C380111, // 002E GETMET R14 R0 K17 - 0xB8420000, // 002F GETNGBL R16 K0 - 0x88402112, // 0030 GETMBR R16 R16 K18 - 0x88440110, // 0031 GETMBR R17 R0 K16 - 0x7C380600, // 0032 CALL R14 3 - 0x88380110, // 0033 GETMBR R14 R0 K16 - 0x903A2714, // 0034 SETMBR R14 K19 K20 - 0x88380110, // 0035 GETMBR R14 R0 K16 - 0x903A2B14, // 0036 SETMBR R14 K21 K20 - 0x88380110, // 0037 GETMBR R14 R0 K16 - 0x083C1308, // 0038 MUL R15 R9 K8 - 0x003C1F14, // 0039 ADD R15 R15 K20 - 0x54420003, // 003A LDINT R16 4 - 0x0C3C1E10, // 003B DIV R15 R15 R16 - 0x903A2C0F, // 003C SETMBR R14 K22 R15 - 0x8C380117, // 003D GETMET R14 R0 K23 - 0xB8420000, // 003E GETNGBL R16 K0 - 0x88402112, // 003F GETMBR R16 R16 K18 - 0xB8460000, // 0040 GETNGBL R17 K0 - 0x88442318, // 0041 GETMBR R17 R17 K24 - 0x30402011, // 0042 OR R16 R16 R17 - 0x7C380400, // 0043 CALL R14 2 - 0x8C3C0119, // 0044 GETMET R15 R0 K25 - 0xB8460000, // 0045 GETNGBL R17 K0 - 0x88442312, // 0046 GETMBR R17 R17 K18 - 0xB84A0000, // 0047 GETNGBL R18 K0 - 0x88482518, // 0048 GETMBR R18 R18 K24 - 0x30442212, // 0049 OR R17 R17 R18 - 0x7C3C0400, // 004A CALL R15 2 - 0x04400C09, // 004B SUB R16 R6 R9 - 0x0C440F07, // 004C DIV R17 R7 K7 - 0x0444220A, // 004D SUB R17 R17 R10 - 0x60480009, // 004E GETGBL R18 G9 - 0x544E0059, // 004F LDINT R19 90 - 0x8C50091A, // 0050 GETMET R20 R4 K26 - 0x8C58091B, // 0051 GETMET R22 R4 K27 - 0x6060000A, // 0052 GETGBL R24 G10 - 0x5C642200, // 0053 MOVE R25 R17 - 0x7C600200, // 0054 CALL R24 1 - 0x6064000A, // 0055 GETGBL R25 G10 - 0x5C682000, // 0056 MOVE R26 R16 - 0x7C640200, // 0057 CALL R25 1 - 0x0C603019, // 0058 DIV R24 R24 R25 - 0x7C580400, // 0059 CALL R22 2 - 0x7C500400, // 005A CALL R20 2 - 0x044C2614, // 005B SUB R19 R19 R20 - 0x7C480200, // 005C CALL R18 1 - 0x544E002C, // 005D LDINT R19 45 - 0x244C2413, // 005E GT R19 R18 R19 - 0x784E0000, // 005F JMPF R19 #0061 - 0x544A002C, // 0060 LDINT R18 45 - 0x884C011C, // 0061 GETMBR R19 R0 K28 - 0x0C500F07, // 0062 DIV R20 R7 K7 - 0x00501814, // 0063 ADD R20 R12 R20 - 0x904E3A14, // 0064 SETMBR R19 K29 R20 - 0x884C011C, // 0065 GETMBR R19 R0 K28 - 0x00501A06, // 0066 ADD R20 R13 R6 - 0x04502914, // 0067 SUB R20 R20 K20 - 0x0450280A, // 0068 SUB R20 R20 R10 - 0x904E3C14, // 0069 SETMBR R19 K30 R20 - 0x884C0110, // 006A GETMBR R19 R0 K16 - 0x88500120, // 006B GETMBR R20 R0 K32 - 0x54560018, // 006C LDINT R21 25 - 0x28502815, // 006D GE R20 R20 R21 - 0x78520001, // 006E JMPF R20 #0071 - 0x5C501C00, // 006F MOVE R20 R14 - 0x70020000, // 0070 JMP #0072 - 0x5C501E00, // 0071 MOVE R20 R15 - 0x904E3E14, // 0072 SETMBR R19 K31 R20 - 0xB84E0000, // 0073 GETNGBL R19 K0 - 0x8C4C2721, // 0074 GETMET R19 R19 K33 - 0x8854011C, // 0075 GETMBR R21 R0 K28 - 0x88542B1D, // 0076 GETMBR R21 R21 K29 - 0x8858011C, // 0077 GETMBR R22 R0 K28 - 0x88582D1E, // 0078 GETMBR R22 R22 K30 - 0x005C1208, // 0079 ADD R23 R9 R8 - 0x085E4417, // 007A MUL R23 K34 R23 - 0x005C2E0A, // 007B ADD R23 R23 R10 - 0x58600022, // 007C LDCONST R24 K34 - 0x54660167, // 007D LDINT R25 360 - 0x5C681600, // 007E MOVE R26 R11 - 0x886C0110, // 007F GETMBR R27 R0 K16 - 0x7C4C1000, // 0080 CALL R19 8 - 0x884C0110, // 0081 GETMBR R19 R0 K16 - 0x88500120, // 0082 GETMBR R20 R0 K32 - 0x54560031, // 0083 LDINT R21 50 - 0x28502815, // 0084 GE R20 R20 R21 - 0x78520001, // 0085 JMPF R20 #0088 - 0x5C501C00, // 0086 MOVE R20 R14 - 0x70020000, // 0087 JMP #0089 - 0x5C501E00, // 0088 MOVE R20 R15 - 0x904E3E14, // 0089 SETMBR R19 K31 R20 - 0xB84E0000, // 008A GETNGBL R19 K0 - 0x8C4C2721, // 008B GETMET R19 R19 K33 - 0x8854011C, // 008C GETMBR R21 R0 K28 - 0x88542B1D, // 008D GETMBR R21 R21 K29 - 0x8858011C, // 008E GETMBR R22 R0 K28 - 0x88582D1E, // 008F GETMBR R22 R22 K30 - 0x005C1208, // 0090 ADD R23 R9 R8 - 0x085E2817, // 0091 MUL R23 K20 R23 - 0x005C2E0A, // 0092 ADD R23 R23 R10 - 0x045C2F14, // 0093 SUB R23 R23 K20 - 0x5462010D, // 0094 LDINT R24 270 - 0x04603012, // 0095 SUB R24 R24 R18 - 0x5466010D, // 0096 LDINT R25 270 - 0x00643212, // 0097 ADD R25 R25 R18 - 0x5C681600, // 0098 MOVE R26 R11 - 0x886C0110, // 0099 GETMBR R27 R0 K16 - 0x7C4C1000, // 009A CALL R19 8 - 0x884C0110, // 009B GETMBR R19 R0 K16 - 0x88500120, // 009C GETMBR R20 R0 K32 - 0x5456004A, // 009D LDINT R21 75 - 0x28502815, // 009E GE R20 R20 R21 - 0x78520001, // 009F JMPF R20 #00A2 - 0x5C501C00, // 00A0 MOVE R20 R14 - 0x70020000, // 00A1 JMP #00A3 - 0x5C501E00, // 00A2 MOVE R20 R15 - 0x904E3E14, // 00A3 SETMBR R19 K31 R20 - 0xB84E0000, // 00A4 GETNGBL R19 K0 - 0x8C4C2721, // 00A5 GETMET R19 R19 K33 - 0x8854011C, // 00A6 GETMBR R21 R0 K28 - 0x88542B1D, // 00A7 GETMBR R21 R21 K29 - 0x8858011C, // 00A8 GETMBR R22 R0 K28 - 0x88582D1E, // 00A9 GETMBR R22 R22 K30 - 0x005C1208, // 00AA ADD R23 R9 R8 - 0x085E0E17, // 00AB MUL R23 K7 R23 - 0x005C2E0A, // 00AC ADD R23 R23 R10 - 0x045C2F07, // 00AD SUB R23 R23 K7 - 0x5462010D, // 00AE LDINT R24 270 - 0x04603012, // 00AF SUB R24 R24 R18 - 0x5466010D, // 00B0 LDINT R25 270 - 0x00643212, // 00B1 ADD R25 R25 R18 - 0x5C681600, // 00B2 MOVE R26 R11 - 0x886C0110, // 00B3 GETMBR R27 R0 K16 - 0x7C4C1000, // 00B4 CALL R19 8 - 0x80000000, // 00B5 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_percentage -********************************************************************/ -be_local_closure(lv_signal_arcs_get_percentage, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(percentage), - }), - &be_const_str_get_percentage, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: lv_signal_arcs -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_signal_arcs, - 5, - &be_class_lv_obj, - be_nested_map(9, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(percentage, 4), be_const_var(0) }, - { be_const_key(p1, 3), be_const_var(1) }, - { be_const_key(p2, -1), be_const_var(2) }, - { be_const_key(area, -1), be_const_var(3) }, - { be_const_key(line_dsc, -1), be_const_var(4) }, - { be_const_key(set_percentage, -1), be_const_closure(lv_signal_arcs_set_percentage_closure) }, - { be_const_key(init, -1), be_const_closure(lv_signal_arcs_init_closure) }, - { be_const_key(widget_event, -1), be_const_closure(lv_signal_arcs_widget_event_closure) }, - { be_const_key(get_percentage, 5), be_const_closure(lv_signal_arcs_get_percentage_closure) }, - })), - be_str_literal("lv_signal_arcs") -); -/*******************************************************************/ - -void be_load_lv_signal_arcs_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_signal_arcs); - be_setglobal(vm, "lv_signal_arcs"); - be_pop(vm, 1); -} - -#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_lvgl_signal_bars_lib.c b/lib/libesp32/berry/default/be_lvgl_signal_bars_lib.c deleted file mode 100644 index 18452ae34..000000000 --- a/lib/libesp32/berry/default/be_lvgl_signal_bars_lib.c +++ /dev/null @@ -1,392 +0,0 @@ -/******************************************************************** - * Tasmota LVGL lv_signal_bars widget - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_LVGL - -#include "lvgl.h" - -/******************************************************************** -** Solidified function: set_percentage -********************************************************************/ -be_local_closure(lv_signal_bars_set_percentage, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(percentage), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(invalidate), - }), - &be_const_str_set_percentage, - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x540E0013, // 0001 LDINT R3 20 - 0x0C080403, // 0002 DIV R2 R2 R3 - 0x540E0063, // 0003 LDINT R3 100 - 0x240C0203, // 0004 GT R3 R1 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x54060063, // 0006 LDINT R1 100 - 0x140C0301, // 0007 LT R3 R1 K1 - 0x780E0000, // 0008 JMPF R3 #000A - 0x58040001, // 0009 LDCONST R1 K1 - 0x90020001, // 000A SETMBR R0 K0 R1 - 0x540E0013, // 000B LDINT R3 20 - 0x0C0C0203, // 000C DIV R3 R1 R3 - 0x200C0403, // 000D NE R3 R2 R3 - 0x780E0001, // 000E JMPF R3 #0011 - 0x8C0C0102, // 000F GETMET R3 R0 K2 - 0x7C0C0200, // 0010 CALL R3 1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(lv_signal_bars_init, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(_lvgl), - /* K1 */ be_nested_str(create_custom_widget), - /* K2 */ be_nested_str(percentage), - /* K3 */ be_nested_str(p1), - /* K4 */ be_nested_str(lv), - /* K5 */ be_nested_str(point), - /* K6 */ be_nested_str(p2), - /* K7 */ be_nested_str(area), - /* K8 */ be_nested_str(line_dsc), - /* K9 */ be_nested_str(draw_line_dsc), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100000, // 0002 MOVE R4 R0 - 0x5C140200, // 0003 MOVE R5 R1 - 0x7C080600, // 0004 CALL R2 3 - 0x540A0063, // 0005 LDINT R2 100 - 0x90020402, // 0006 SETMBR R0 K2 R2 - 0xB80A0800, // 0007 GETNGBL R2 K4 - 0x8C080505, // 0008 GETMET R2 R2 K5 - 0x7C080200, // 0009 CALL R2 1 - 0x90020602, // 000A SETMBR R0 K3 R2 - 0xB80A0800, // 000B GETNGBL R2 K4 - 0x8C080505, // 000C GETMET R2 R2 K5 - 0x7C080200, // 000D CALL R2 1 - 0x90020C02, // 000E SETMBR R0 K6 R2 - 0xB80A0800, // 000F GETNGBL R2 K4 - 0x8C080507, // 0010 GETMET R2 R2 K7 - 0x7C080200, // 0011 CALL R2 1 - 0x90020E02, // 0012 SETMBR R0 K7 R2 - 0xB80A0800, // 0013 GETNGBL R2 K4 - 0x8C080509, // 0014 GETMET R2 R2 K9 - 0x7C080200, // 0015 CALL R2 1 - 0x90021002, // 0016 SETMBR R0 K8 R2 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: widget_event -********************************************************************/ -be_local_closure(lv_signal_bars_widget_event, /* name */ - be_nested_proto( - 23, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_const_int(1), - }), - &be_const_str_atleast1, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x28040100, // 0000 GE R1 R0 K0 - 0x78060001, // 0001 JMPF R1 #0004 - 0x80040000, // 0002 RET 1 R0 - 0x70020000, // 0003 JMP #0005 - 0x80060000, // 0004 RET 1 K0 - 0x80000000, // 0005 RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[37]) { /* constants */ - /* K0 */ be_nested_str(lv), - /* K1 */ be_nested_str(obj_event_base), - /* K2 */ be_nested_str(RES_OK), - /* K3 */ be_nested_str(code), - /* K4 */ be_nested_str(get_height), - /* K5 */ be_nested_str(get_width), - /* K6 */ be_const_int(3), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str(EVENT_DRAW_MAIN), - /* K9 */ be_nested_str(area), - /* K10 */ be_nested_str(param), - /* K11 */ be_nested_str(get_coords), - /* K12 */ be_nested_str(x1), - /* K13 */ be_nested_str(y1), - /* K14 */ be_nested_str(draw_line_dsc_init), - /* K15 */ be_nested_str(line_dsc), - /* K16 */ be_nested_str(init_draw_line_dsc), - /* K17 */ be_nested_str(PART_MAIN), - /* K18 */ be_nested_str(round_start), - /* K19 */ be_const_int(1), - /* K20 */ be_nested_str(round_end), - /* K21 */ be_nested_str(width), - /* K22 */ be_nested_str(get_style_line_color), - /* K23 */ be_nested_str(STATE_DEFAULT), - /* K24 */ be_nested_str(get_style_bg_color), - /* K25 */ be_nested_str(event_send), - /* K26 */ be_nested_str(EVENT_DRAW_PART_BEGIN), - /* K27 */ be_const_int(0), - /* K28 */ be_nested_str(color), - /* K29 */ be_nested_str(percentage), - /* K30 */ be_nested_str(p1), - /* K31 */ be_nested_str(y), - /* K32 */ be_nested_str(x), - /* K33 */ be_nested_str(p2), - /* K34 */ be_nested_str(draw_line), - /* K35 */ be_nested_str(stop_iteration), - /* K36 */ be_nested_str(EVENT_DRAW_PART_END), - }), - &be_const_str_widget_event, - &be_const_str_solidified, - ( &(const binstruction[138]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x5C180400, // 0003 MOVE R6 R2 - 0x7C0C0600, // 0004 CALL R3 3 - 0xB8120000, // 0005 GETNGBL R4 K0 - 0x88100902, // 0006 GETMBR R4 R4 K2 - 0x200C0604, // 0007 NE R3 R3 R4 - 0x780E0000, // 0008 JMPF R3 #000A - 0x80000600, // 0009 RET 0 - 0x880C0503, // 000A GETMBR R3 R2 K3 - 0x84100000, // 000B CLOSURE R4 P0 - 0x8C140104, // 000C GETMET R5 R0 K4 - 0x7C140200, // 000D CALL R5 1 - 0x8C180105, // 000E GETMET R6 R0 K5 - 0x7C180200, // 000F CALL R6 1 - 0x5C1C0800, // 0010 MOVE R7 R4 - 0x5422000E, // 0011 LDINT R8 15 - 0x0C200C08, // 0012 DIV R8 R6 R8 - 0x7C1C0200, // 0013 CALL R7 1 - 0x5C200800, // 0014 MOVE R8 R4 - 0x08240F06, // 0015 MUL R9 R7 K6 - 0x04240C09, // 0016 SUB R9 R6 R9 - 0x542A0003, // 0017 LDINT R10 4 - 0x0C24120A, // 0018 DIV R9 R9 R10 - 0x7C200200, // 0019 CALL R8 1 - 0x0C241107, // 001A DIV R9 R8 K7 - 0xB82A0000, // 001B GETNGBL R10 K0 - 0x88281508, // 001C GETMBR R10 R10 K8 - 0x1C28060A, // 001D EQ R10 R3 R10 - 0x782A0069, // 001E JMPF R10 #0089 - 0xB82A0000, // 001F GETNGBL R10 K0 - 0x8C281509, // 0020 GETMET R10 R10 K9 - 0x8830050A, // 0021 GETMBR R12 R2 K10 - 0x7C280400, // 0022 CALL R10 2 - 0x8C2C010B, // 0023 GETMET R11 R0 K11 - 0x88340109, // 0024 GETMBR R13 R0 K9 - 0x7C2C0400, // 0025 CALL R11 2 - 0x882C0109, // 0026 GETMBR R11 R0 K9 - 0x882C170C, // 0027 GETMBR R11 R11 K12 - 0x88300109, // 0028 GETMBR R12 R0 K9 - 0x8830190D, // 0029 GETMBR R12 R12 K13 - 0xB8360000, // 002A GETNGBL R13 K0 - 0x8C341B0E, // 002B GETMET R13 R13 K14 - 0x883C010F, // 002C GETMBR R15 R0 K15 - 0x7C340400, // 002D CALL R13 2 - 0x8C340110, // 002E GETMET R13 R0 K16 - 0xB83E0000, // 002F GETNGBL R15 K0 - 0x883C1F11, // 0030 GETMBR R15 R15 K17 - 0x8840010F, // 0031 GETMBR R16 R0 K15 - 0x7C340600, // 0032 CALL R13 3 - 0x8834010F, // 0033 GETMBR R13 R0 K15 - 0x90362513, // 0034 SETMBR R13 K18 K19 - 0x8834010F, // 0035 GETMBR R13 R0 K15 - 0x90362913, // 0036 SETMBR R13 K20 K19 - 0x8834010F, // 0037 GETMBR R13 R0 K15 - 0x90362A08, // 0038 SETMBR R13 K21 R8 - 0x8C340116, // 0039 GETMET R13 R0 K22 - 0xB83E0000, // 003A GETNGBL R15 K0 - 0x883C1F11, // 003B GETMBR R15 R15 K17 - 0xB8420000, // 003C GETNGBL R16 K0 - 0x88402117, // 003D GETMBR R16 R16 K23 - 0x303C1E10, // 003E OR R15 R15 R16 - 0x7C340400, // 003F CALL R13 2 - 0x8C380118, // 0040 GETMET R14 R0 K24 - 0xB8420000, // 0041 GETNGBL R16 K0 - 0x88402111, // 0042 GETMBR R16 R16 K17 - 0xB8460000, // 0043 GETNGBL R17 K0 - 0x88442317, // 0044 GETMBR R17 R17 K23 - 0x30402011, // 0045 OR R16 R16 R17 - 0x7C380400, // 0046 CALL R14 2 - 0xB83E0000, // 0047 GETNGBL R15 K0 - 0x8C3C1F19, // 0048 GETMET R15 R15 K25 - 0x5C440000, // 0049 MOVE R17 R0 - 0xB84A0000, // 004A GETNGBL R18 K0 - 0x8848251A, // 004B GETMBR R18 R18 K26 - 0x884C010F, // 004C GETMBR R19 R0 K15 - 0x7C3C0800, // 004D CALL R15 4 - 0x603C0010, // 004E GETGBL R15 G16 - 0x40423706, // 004F CONNECT R16 K27 K6 - 0x7C3C0200, // 0050 CALL R15 1 - 0xA802002C, // 0051 EXBLK 0 #007F - 0x5C401E00, // 0052 MOVE R16 R15 - 0x7C400000, // 0053 CALL R16 0 - 0x8844010F, // 0054 GETMBR R17 R0 K15 - 0x8848011D, // 0055 GETMBR R18 R0 K29 - 0x004C2113, // 0056 ADD R19 R16 K19 - 0x54520013, // 0057 LDINT R20 20 - 0x084C2614, // 0058 MUL R19 R19 R20 - 0x28482413, // 0059 GE R18 R18 R19 - 0x784A0001, // 005A JMPF R18 #005D - 0x5C481A00, // 005B MOVE R18 R13 - 0x70020000, // 005C JMP #005E - 0x5C481C00, // 005D MOVE R18 R14 - 0x90463812, // 005E SETMBR R17 K28 R18 - 0x8844011E, // 005F GETMBR R17 R0 K30 - 0x00481805, // 0060 ADD R18 R12 R5 - 0x04482513, // 0061 SUB R18 R18 K19 - 0x04482409, // 0062 SUB R18 R18 R9 - 0x90463E12, // 0063 SETMBR R17 K31 R18 - 0x8844011E, // 0064 GETMBR R17 R0 K30 - 0x00481007, // 0065 ADD R18 R8 R7 - 0x08482012, // 0066 MUL R18 R16 R18 - 0x00481612, // 0067 ADD R18 R11 R18 - 0x00482409, // 0068 ADD R18 R18 R9 - 0x90464012, // 0069 SETMBR R17 K32 R18 - 0x88440121, // 006A GETMBR R17 R0 K33 - 0x044A0C10, // 006B SUB R18 K6 R16 - 0x044C0A08, // 006C SUB R19 R5 R8 - 0x08482413, // 006D MUL R18 R18 R19 - 0x544E0003, // 006E LDINT R19 4 - 0x0C482413, // 006F DIV R18 R18 R19 - 0x00481812, // 0070 ADD R18 R12 R18 - 0x00482409, // 0071 ADD R18 R18 R9 - 0x90463E12, // 0072 SETMBR R17 K31 R18 - 0x88440121, // 0073 GETMBR R17 R0 K33 - 0x8848011E, // 0074 GETMBR R18 R0 K30 - 0x88482520, // 0075 GETMBR R18 R18 K32 - 0x90464012, // 0076 SETMBR R17 K32 R18 - 0xB8460000, // 0077 GETNGBL R17 K0 - 0x8C442322, // 0078 GETMET R17 R17 K34 - 0x884C011E, // 0079 GETMBR R19 R0 K30 - 0x88500121, // 007A GETMBR R20 R0 K33 - 0x5C541400, // 007B MOVE R21 R10 - 0x8858010F, // 007C GETMBR R22 R0 K15 - 0x7C440A00, // 007D CALL R17 5 - 0x7001FFD2, // 007E JMP #0052 - 0x583C0023, // 007F LDCONST R15 K35 - 0xAC3C0200, // 0080 CATCH R15 1 0 - 0xB0080000, // 0081 RAISE 2 R0 R0 - 0xB83E0000, // 0082 GETNGBL R15 K0 - 0x8C3C1F19, // 0083 GETMET R15 R15 K25 - 0x5C440000, // 0084 MOVE R17 R0 - 0xB84A0000, // 0085 GETNGBL R18 K0 - 0x88482524, // 0086 GETMBR R18 R18 K36 - 0x884C010F, // 0087 GETMBR R19 R0 K15 - 0x7C3C0800, // 0088 CALL R15 4 - 0x80000000, // 0089 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_percentage -********************************************************************/ -be_local_closure(lv_signal_bars_get_percentage, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str(percentage), - }), - &be_const_str_get_percentage, - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: lv_signal_bars -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_signal_bars, - 5, - &be_class_lv_obj, - be_nested_map(9, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(percentage, 4), be_const_var(0) }, - { be_const_key(p1, 3), be_const_var(1) }, - { be_const_key(p2, -1), be_const_var(2) }, - { be_const_key(area, -1), be_const_var(3) }, - { be_const_key(line_dsc, -1), be_const_var(4) }, - { be_const_key(set_percentage, -1), be_const_closure(lv_signal_bars_set_percentage_closure) }, - { be_const_key(init, -1), be_const_closure(lv_signal_bars_init_closure) }, - { be_const_key(widget_event, -1), be_const_closure(lv_signal_bars_widget_event_closure) }, - { be_const_key(get_percentage, 5), be_const_closure(lv_signal_bars_get_percentage_closure) }, - })), - be_str_literal("lv_signal_bars") -); -/*******************************************************************/ - -void be_load_lv_signal_bars_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_signal_bars); - be_setglobal(vm, "lv_signal_bars"); - be_pop(vm, 1); -} - -#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_lvgl_widgets_lib.c b/lib/libesp32/berry/default/be_lvgl_widgets_lib.c deleted file mode 100644 index 68950d144..000000000 --- a/lib/libesp32/berry/default/be_lvgl_widgets_lib.c +++ /dev/null @@ -1,1564 +0,0 @@ - -/******************************************************************** - * Generated code, don't edit - *******************************************************************/ - - /******************************************************************** - * Tasmota LVGL classes for widgets - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_LVGL - -#include "lvgl.h" - -extern int lv0_init(bvm *vm); - -extern int lco_init(bvm *vm); // generic function -extern int lco_tostring(bvm *vm); // generic function -extern int lco_toint(bvm *vm); // generic function - -extern int lvx_member(bvm *vm); -extern int lvx_tostring(bvm *vm); // generic function - -extern int lvs_init(bvm *vm); -extern int lvs_tostring(bvm *vm); - -BE_EXPORT_VARIABLE extern const bclass be_class_lv_obj; - -extern int lvbe_font_create(bvm *vm); -extern int lvbe_theme_create(bvm *vm); - - -/* `lv_style` external functions definitions */ -extern int lvbe_style_set_width(bvm *vm); -extern int lvbe_style_set_min_width(bvm *vm); -extern int lvbe_style_set_max_width(bvm *vm); -extern int lvbe_style_set_height(bvm *vm); -extern int lvbe_style_set_min_height(bvm *vm); -extern int lvbe_style_set_max_height(bvm *vm); -extern int lvbe_style_set_x(bvm *vm); -extern int lvbe_style_set_y(bvm *vm); -extern int lvbe_style_set_align(bvm *vm); -extern int lvbe_style_set_transform_width(bvm *vm); -extern int lvbe_style_set_transform_height(bvm *vm); -extern int lvbe_style_set_translate_x(bvm *vm); -extern int lvbe_style_set_translate_y(bvm *vm); -extern int lvbe_style_set_transform_zoom(bvm *vm); -extern int lvbe_style_set_transform_angle(bvm *vm); -extern int lvbe_style_set_pad_top(bvm *vm); -extern int lvbe_style_set_pad_bottom(bvm *vm); -extern int lvbe_style_set_pad_left(bvm *vm); -extern int lvbe_style_set_pad_right(bvm *vm); -extern int lvbe_style_set_pad_row(bvm *vm); -extern int lvbe_style_set_pad_column(bvm *vm); -extern int lvbe_style_set_radius(bvm *vm); -extern int lvbe_style_set_clip_corner(bvm *vm); -extern int lvbe_style_set_opa(bvm *vm); -extern int lvbe_style_set_color_filter_dsc(bvm *vm); -extern int lvbe_style_set_color_filter_opa(bvm *vm); -extern int lvbe_style_set_anim_time(bvm *vm); -extern int lvbe_style_set_anim_speed(bvm *vm); -extern int lvbe_style_set_transition(bvm *vm); -extern int lvbe_style_set_blend_mode(bvm *vm); -extern int lvbe_style_set_layout(bvm *vm); -extern int lvbe_style_set_base_dir(bvm *vm); -extern int lvbe_style_set_bg_color(bvm *vm); -extern int lvbe_style_set_bg_color_filtered(bvm *vm); -extern int lvbe_style_set_bg_opa(bvm *vm); -extern int lvbe_style_set_bg_grad_color(bvm *vm); -extern int lvbe_style_set_bg_grad_color_filtered(bvm *vm); -extern int lvbe_style_set_bg_grad_dir(bvm *vm); -extern int lvbe_style_set_bg_main_stop(bvm *vm); -extern int lvbe_style_set_bg_grad_stop(bvm *vm); -extern int lvbe_style_set_bg_img_src(bvm *vm); -extern int lvbe_style_set_bg_img_opa(bvm *vm); -extern int lvbe_style_set_bg_img_recolor(bvm *vm); -extern int lvbe_style_set_bg_img_recolor_filtered(bvm *vm); -extern int lvbe_style_set_bg_img_recolor_opa(bvm *vm); -extern int lvbe_style_set_bg_img_tiled(bvm *vm); -extern int lvbe_style_set_border_color(bvm *vm); -extern int lvbe_style_set_border_color_filtered(bvm *vm); -extern int lvbe_style_set_border_opa(bvm *vm); -extern int lvbe_style_set_border_width(bvm *vm); -extern int lvbe_style_set_border_side(bvm *vm); -extern int lvbe_style_set_border_post(bvm *vm); -extern int lvbe_style_set_text_color(bvm *vm); -extern int lvbe_style_set_text_color_filtered(bvm *vm); -extern int lvbe_style_set_text_opa(bvm *vm); -extern int lvbe_style_set_text_font(bvm *vm); -extern int lvbe_style_set_text_letter_space(bvm *vm); -extern int lvbe_style_set_text_line_space(bvm *vm); -extern int lvbe_style_set_text_decor(bvm *vm); -extern int lvbe_style_set_text_align(bvm *vm); -extern int lvbe_style_set_img_opa(bvm *vm); -extern int lvbe_style_set_img_recolor(bvm *vm); -extern int lvbe_style_set_img_recolor_filtered(bvm *vm); -extern int lvbe_style_set_img_recolor_opa(bvm *vm); -extern int lvbe_style_set_outline_width(bvm *vm); -extern int lvbe_style_set_outline_color(bvm *vm); -extern int lvbe_style_set_outline_color_filtered(bvm *vm); -extern int lvbe_style_set_outline_opa(bvm *vm); -extern int lvbe_style_set_outline_pad(bvm *vm); -extern int lvbe_style_set_shadow_width(bvm *vm); -extern int lvbe_style_set_shadow_ofs_x(bvm *vm); -extern int lvbe_style_set_shadow_ofs_y(bvm *vm); -extern int lvbe_style_set_shadow_spread(bvm *vm); -extern int lvbe_style_set_shadow_color(bvm *vm); -extern int lvbe_style_set_shadow_color_filtered(bvm *vm); -extern int lvbe_style_set_shadow_opa(bvm *vm); -extern int lvbe_style_set_line_width(bvm *vm); -extern int lvbe_style_set_line_dash_width(bvm *vm); -extern int lvbe_style_set_line_dash_gap(bvm *vm); -extern int lvbe_style_set_line_rounded(bvm *vm); -extern int lvbe_style_set_line_color(bvm *vm); -extern int lvbe_style_set_line_color_filtered(bvm *vm); -extern int lvbe_style_set_line_opa(bvm *vm); -extern int lvbe_style_set_arc_width(bvm *vm); -extern int lvbe_style_set_arc_rounded(bvm *vm); -extern int lvbe_style_set_arc_color(bvm *vm); -extern int lvbe_style_set_arc_color_filtered(bvm *vm); -extern int lvbe_style_set_arc_opa(bvm *vm); -extern int lvbe_style_set_arc_img_src(bvm *vm); - -/* `lv_font` external functions definitions */ - -/* `lv_color` external functions definitions */ - -/* `lv_theme` external functions definitions */ - -/* `lv_img` external functions definitions */ -extern int lvbe_img_set_tasmota_logo(bvm *vm); -extern int lvbe_img_create(bvm *vm); -extern int lvbe_img_set_src(bvm *vm); -extern int lvbe_img_set_offset_x(bvm *vm); -extern int lvbe_img_set_offset_y(bvm *vm); -extern int lvbe_img_set_angle(bvm *vm); -extern int lvbe_img_set_pivot(bvm *vm); -extern int lvbe_img_set_zoom(bvm *vm); -extern int lvbe_img_set_antialias(bvm *vm); -extern int lvbe_img_get_src(bvm *vm); -extern int lvbe_img_get_offset_x(bvm *vm); -extern int lvbe_img_get_offset_y(bvm *vm); -extern int lvbe_img_get_angle(bvm *vm); -extern int lvbe_img_get_pivot(bvm *vm); -extern int lvbe_img_get_zoom(bvm *vm); -extern int lvbe_img_get_antialias(bvm *vm); - -/* `lv_disp` external functions definitions */ -extern int lvbe_disp_get_scr_act(bvm *vm); -extern int lvbe_disp_get_scr_prev(bvm *vm); -extern int lvbe_disp_load_scr(bvm *vm); -extern int lvbe_disp_get_layer_top(bvm *vm); -extern int lvbe_disp_get_layer_sys(bvm *vm); -extern int lvbe_disp_set_theme(bvm *vm); -extern int lvbe_disp_get_theme(bvm *vm); -extern int lvbe_disp_set_bg_color(bvm *vm); -extern int lvbe_disp_set_bg_image(bvm *vm); -extern int lvbe_disp_set_bg_opa(bvm *vm); -extern int lvbe_disp_get_inactive_time(bvm *vm); -extern int lvbe_disp_trig_activity(bvm *vm); -extern int lvbe_disp_clean_dcache(bvm *vm); -extern int lvbe_disp_dpx(bvm *vm); - -/* `lv_obj` external functions definitions */ -extern int lvbe_obj_add_event_cb(bvm *vm); -extern int lvbe_obj_remove_event_cb(bvm *vm); -extern int lvbe_obj_remove_event_dsc(bvm *vm); -extern int lvbe_obj_create(bvm *vm); -extern int lvbe_obj_add_flag(bvm *vm); -extern int lvbe_obj_clear_flag(bvm *vm); -extern int lvbe_obj_add_state(bvm *vm); -extern int lvbe_obj_clear_state(bvm *vm); -extern int lvbe_obj_set_user_data(bvm *vm); -extern int lvbe_obj_has_flag(bvm *vm); -extern int lvbe_obj_has_flag_any(bvm *vm); -extern int lvbe_obj_get_state(bvm *vm); -extern int lvbe_obj_has_state(bvm *vm); -extern int lvbe_obj_get_group(bvm *vm); -extern int lvbe_obj_get_user_data(bvm *vm); -extern int lvbe_obj_allocate_spec_attr(bvm *vm); -extern int lvbe_obj_check_type(bvm *vm); -extern int lvbe_obj_has_class(bvm *vm); -extern int lvbe_obj_get_class(bvm *vm); -extern int lvbe_obj_is_valid(bvm *vm); -extern int lvbe_obj_dpx(bvm *vm); -extern int lvbe_obj_class_init_obj(bvm *vm); -extern int lvbe_obj_is_editable(bvm *vm); -extern int lvbe_obj_is_group_def(bvm *vm); -extern int lvbe_obj_init_draw_rect_dsc(bvm *vm); -extern int lvbe_obj_init_draw_label_dsc(bvm *vm); -extern int lvbe_obj_init_draw_img_dsc(bvm *vm); -extern int lvbe_obj_init_draw_line_dsc(bvm *vm); -extern int lvbe_obj_init_draw_arc_dsc(bvm *vm); -extern int lvbe_obj_calculate_ext_draw_size(bvm *vm); -extern int lvbe_obj_refresh_ext_draw_size(bvm *vm); -extern int lvbe_obj_set_pos(bvm *vm); -extern int lvbe_obj_set_x(bvm *vm); -extern int lvbe_obj_set_y(bvm *vm); -extern int lvbe_obj_set_size(bvm *vm); -extern int lvbe_obj_refr_size(bvm *vm); -extern int lvbe_obj_set_width(bvm *vm); -extern int lvbe_obj_set_height(bvm *vm); -extern int lvbe_obj_set_content_width(bvm *vm); -extern int lvbe_obj_set_content_height(bvm *vm); -extern int lvbe_obj_set_layout(bvm *vm); -extern int lvbe_obj_is_layout_positioned(bvm *vm); -extern int lvbe_obj_mark_layout_as_dirty(bvm *vm); -extern int lvbe_obj_update_layout(bvm *vm); -extern int lvbe_obj_set_align(bvm *vm); -extern int lvbe_obj_align(bvm *vm); -extern int lvbe_obj_align_to(bvm *vm); -extern int lvbe_obj_center(bvm *vm); -extern int lvbe_obj_get_coords(bvm *vm); -extern int lvbe_obj_get_x(bvm *vm); -extern int lvbe_obj_get_x2(bvm *vm); -extern int lvbe_obj_get_y(bvm *vm); -extern int lvbe_obj_get_y2(bvm *vm); -extern int lvbe_obj_get_width(bvm *vm); -extern int lvbe_obj_get_height(bvm *vm); -extern int lvbe_obj_get_content_width(bvm *vm); -extern int lvbe_obj_get_content_height(bvm *vm); -extern int lvbe_obj_get_content_coords(bvm *vm); -extern int lvbe_obj_get_self_width(bvm *vm); -extern int lvbe_obj_get_self_height(bvm *vm); -extern int lvbe_obj_refresh_self_size(bvm *vm); -extern int lvbe_obj_refr_pos(bvm *vm); -extern int lvbe_obj_move_to(bvm *vm); -extern int lvbe_obj_move_children_by(bvm *vm); -extern int lvbe_obj_invalidate_area(bvm *vm); -extern int lvbe_obj_invalidate(bvm *vm); -extern int lvbe_obj_area_is_visible(bvm *vm); -extern int lvbe_obj_is_visible(bvm *vm); -extern int lvbe_obj_set_ext_click_area(bvm *vm); -extern int lvbe_obj_get_click_area(bvm *vm); -extern int lvbe_obj_hit_test(bvm *vm); -extern int lvbe_obj_set_scrollbar_mode(bvm *vm); -extern int lvbe_obj_set_scroll_dir(bvm *vm); -extern int lvbe_obj_set_scroll_snap_x(bvm *vm); -extern int lvbe_obj_set_scroll_snap_y(bvm *vm); -extern int lvbe_obj_get_scrollbar_mode(bvm *vm); -extern int lvbe_obj_get_scroll_dir(bvm *vm); -extern int lvbe_obj_get_scroll_snap_x(bvm *vm); -extern int lvbe_obj_get_scroll_snap_y(bvm *vm); -extern int lvbe_obj_get_scroll_x(bvm *vm); -extern int lvbe_obj_get_scroll_y(bvm *vm); -extern int lvbe_obj_get_scroll_top(bvm *vm); -extern int lvbe_obj_get_scroll_bottom(bvm *vm); -extern int lvbe_obj_get_scroll_left(bvm *vm); -extern int lvbe_obj_get_scroll_right(bvm *vm); -extern int lvbe_obj_get_scroll_end(bvm *vm); -extern int lvbe_obj_scroll_by(bvm *vm); -extern int lvbe_obj_scroll_to(bvm *vm); -extern int lvbe_obj_scroll_to_x(bvm *vm); -extern int lvbe_obj_scroll_to_y(bvm *vm); -extern int lvbe_obj_scroll_to_view(bvm *vm); -extern int lvbe_obj_scroll_to_view_recursive(bvm *vm); -extern int lvbe_obj_is_scrolling(bvm *vm); -extern int lvbe_obj_update_snap(bvm *vm); -extern int lvbe_obj_get_scrollbar_area(bvm *vm); -extern int lvbe_obj_scrollbar_invalidate(bvm *vm); -extern int lvbe_obj_readjust_scroll(bvm *vm); -extern int lvbe_obj_add_style(bvm *vm); -extern int lvbe_obj_remove_style(bvm *vm); -extern int lvbe_obj_remove_style_all(bvm *vm); -extern int lvbe_obj_refresh_style(bvm *vm); -extern int lvbe_obj_get_style_prop(bvm *vm); -extern int lvbe_obj_set_local_style_prop(bvm *vm); -extern int lvbe_obj_get_local_style_prop(bvm *vm); -extern int lvbe_obj_remove_local_style_prop(bvm *vm); -extern int lvbe_obj_fade_in(bvm *vm); -extern int lvbe_obj_fade_out(bvm *vm); -extern int lvbe_obj_set_style_pad_all(bvm *vm); -extern int lvbe_obj_set_style_pad_hor(bvm *vm); -extern int lvbe_obj_set_style_pad_ver(bvm *vm); -extern int lvbe_obj_set_style_pad_gap(bvm *vm); -extern int lvbe_obj_set_style_size(bvm *vm); -extern int lvbe_obj_get_style_width(bvm *vm); -extern int lvbe_obj_get_style_min_width(bvm *vm); -extern int lvbe_obj_get_style_max_width(bvm *vm); -extern int lvbe_obj_get_style_height(bvm *vm); -extern int lvbe_obj_get_style_min_height(bvm *vm); -extern int lvbe_obj_get_style_max_height(bvm *vm); -extern int lvbe_obj_get_style_x(bvm *vm); -extern int lvbe_obj_get_style_y(bvm *vm); -extern int lvbe_obj_get_style_align(bvm *vm); -extern int lvbe_obj_get_style_transform_width(bvm *vm); -extern int lvbe_obj_get_style_transform_height(bvm *vm); -extern int lvbe_obj_get_style_translate_x(bvm *vm); -extern int lvbe_obj_get_style_translate_y(bvm *vm); -extern int lvbe_obj_get_style_transform_zoom(bvm *vm); -extern int lvbe_obj_get_style_transform_angle(bvm *vm); -extern int lvbe_obj_get_style_pad_top(bvm *vm); -extern int lvbe_obj_get_style_pad_bottom(bvm *vm); -extern int lvbe_obj_get_style_pad_left(bvm *vm); -extern int lvbe_obj_get_style_pad_right(bvm *vm); -extern int lvbe_obj_get_style_pad_row(bvm *vm); -extern int lvbe_obj_get_style_pad_column(bvm *vm); -extern int lvbe_obj_get_style_radius(bvm *vm); -extern int lvbe_obj_get_style_clip_corner(bvm *vm); -extern int lvbe_obj_get_style_opa(bvm *vm); -extern int lvbe_obj_get_style_color_filter_opa(bvm *vm); -extern int lvbe_obj_get_style_anim_time(bvm *vm); -extern int lvbe_obj_get_style_anim_speed(bvm *vm); -extern int lvbe_obj_get_style_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_layout(bvm *vm); -extern int lvbe_obj_get_style_base_dir(bvm *vm); -extern int lvbe_obj_get_style_bg_color(bvm *vm); -extern int lvbe_obj_get_style_bg_color_filtered(bvm *vm); -extern int lvbe_obj_get_style_bg_opa(bvm *vm); -extern int lvbe_obj_get_style_bg_grad_color(bvm *vm); -extern int lvbe_obj_get_style_bg_grad_color_filtered(bvm *vm); -extern int lvbe_obj_get_style_bg_grad_dir(bvm *vm); -extern int lvbe_obj_get_style_bg_main_stop(bvm *vm); -extern int lvbe_obj_get_style_bg_grad_stop(bvm *vm); -extern int lvbe_obj_get_style_bg_img_src(bvm *vm); -extern int lvbe_obj_get_style_bg_img_opa(bvm *vm); -extern int lvbe_obj_get_style_bg_img_recolor(bvm *vm); -extern int lvbe_obj_get_style_bg_img_recolor_filtered(bvm *vm); -extern int lvbe_obj_get_style_bg_img_recolor_opa(bvm *vm); -extern int lvbe_obj_get_style_bg_img_tiled(bvm *vm); -extern int lvbe_obj_get_style_border_color(bvm *vm); -extern int lvbe_obj_get_style_border_color_filtered(bvm *vm); -extern int lvbe_obj_get_style_border_opa(bvm *vm); -extern int lvbe_obj_get_style_border_width(bvm *vm); -extern int lvbe_obj_get_style_border_side(bvm *vm); -extern int lvbe_obj_get_style_border_post(bvm *vm); -extern int lvbe_obj_get_style_text_color(bvm *vm); -extern int lvbe_obj_get_style_text_color_filtered(bvm *vm); -extern int lvbe_obj_get_style_text_opa(bvm *vm); -extern int lvbe_obj_get_style_text_font(bvm *vm); -extern int lvbe_obj_get_style_text_letter_space(bvm *vm); -extern int lvbe_obj_get_style_text_line_space(bvm *vm); -extern int lvbe_obj_get_style_text_decor(bvm *vm); -extern int lvbe_obj_get_style_text_align(bvm *vm); -extern int lvbe_obj_get_style_img_opa(bvm *vm); -extern int lvbe_obj_get_style_img_recolor(bvm *vm); -extern int lvbe_obj_get_style_img_recolor_filtered(bvm *vm); -extern int lvbe_obj_get_style_img_recolor_opa(bvm *vm); -extern int lvbe_obj_get_style_outline_width(bvm *vm); -extern int lvbe_obj_get_style_outline_color(bvm *vm); -extern int lvbe_obj_get_style_outline_color_filtered(bvm *vm); -extern int lvbe_obj_get_style_outline_opa(bvm *vm); -extern int lvbe_obj_get_style_outline_pad(bvm *vm); -extern int lvbe_obj_get_style_shadow_width(bvm *vm); -extern int lvbe_obj_get_style_shadow_ofs_x(bvm *vm); -extern int lvbe_obj_get_style_shadow_ofs_y(bvm *vm); -extern int lvbe_obj_get_style_shadow_spread(bvm *vm); -extern int lvbe_obj_get_style_shadow_color(bvm *vm); -extern int lvbe_obj_get_style_shadow_color_filtered(bvm *vm); -extern int lvbe_obj_get_style_shadow_opa(bvm *vm); -extern int lvbe_obj_get_style_line_width(bvm *vm); -extern int lvbe_obj_get_style_line_dash_width(bvm *vm); -extern int lvbe_obj_get_style_line_dash_gap(bvm *vm); -extern int lvbe_obj_get_style_line_rounded(bvm *vm); -extern int lvbe_obj_get_style_line_color(bvm *vm); -extern int lvbe_obj_get_style_line_color_filtered(bvm *vm); -extern int lvbe_obj_get_style_line_opa(bvm *vm); -extern int lvbe_obj_get_style_arc_width(bvm *vm); -extern int lvbe_obj_get_style_arc_rounded(bvm *vm); -extern int lvbe_obj_get_style_arc_color(bvm *vm); -extern int lvbe_obj_get_style_arc_color_filtered(bvm *vm); -extern int lvbe_obj_get_style_arc_opa(bvm *vm); -extern int lvbe_obj_get_style_arc_img_src(bvm *vm); -extern int lvbe_obj_set_style_width(bvm *vm); -extern int lvbe_obj_set_style_min_width(bvm *vm); -extern int lvbe_obj_set_style_max_width(bvm *vm); -extern int lvbe_obj_set_style_height(bvm *vm); -extern int lvbe_obj_set_style_min_height(bvm *vm); -extern int lvbe_obj_set_style_max_height(bvm *vm); -extern int lvbe_obj_set_style_x(bvm *vm); -extern int lvbe_obj_set_style_y(bvm *vm); -extern int lvbe_obj_set_style_align(bvm *vm); -extern int lvbe_obj_set_style_transform_width(bvm *vm); -extern int lvbe_obj_set_style_transform_height(bvm *vm); -extern int lvbe_obj_set_style_translate_x(bvm *vm); -extern int lvbe_obj_set_style_translate_y(bvm *vm); -extern int lvbe_obj_set_style_transform_zoom(bvm *vm); -extern int lvbe_obj_set_style_transform_angle(bvm *vm); -extern int lvbe_obj_set_style_pad_top(bvm *vm); -extern int lvbe_obj_set_style_pad_bottom(bvm *vm); -extern int lvbe_obj_set_style_pad_left(bvm *vm); -extern int lvbe_obj_set_style_pad_right(bvm *vm); -extern int lvbe_obj_set_style_pad_row(bvm *vm); -extern int lvbe_obj_set_style_pad_column(bvm *vm); -extern int lvbe_obj_set_style_radius(bvm *vm); -extern int lvbe_obj_set_style_clip_corner(bvm *vm); -extern int lvbe_obj_set_style_opa(bvm *vm); -extern int lvbe_obj_set_style_color_filter_dsc(bvm *vm); -extern int lvbe_obj_set_style_color_filter_opa(bvm *vm); -extern int lvbe_obj_set_style_anim_time(bvm *vm); -extern int lvbe_obj_set_style_anim_speed(bvm *vm); -extern int lvbe_obj_set_style_transition(bvm *vm); -extern int lvbe_obj_set_style_blend_mode(bvm *vm); -extern int lvbe_obj_set_style_layout(bvm *vm); -extern int lvbe_obj_set_style_base_dir(bvm *vm); -extern int lvbe_obj_set_style_bg_color(bvm *vm); -extern int lvbe_obj_set_style_bg_color_filtered(bvm *vm); -extern int lvbe_obj_set_style_bg_opa(bvm *vm); -extern int lvbe_obj_set_style_bg_grad_color(bvm *vm); -extern int lvbe_obj_set_style_bg_grad_color_filtered(bvm *vm); -extern int lvbe_obj_set_style_bg_grad_dir(bvm *vm); -extern int lvbe_obj_set_style_bg_main_stop(bvm *vm); -extern int lvbe_obj_set_style_bg_grad_stop(bvm *vm); -extern int lvbe_obj_set_style_bg_img_src(bvm *vm); -extern int lvbe_obj_set_style_bg_img_opa(bvm *vm); -extern int lvbe_obj_set_style_bg_img_recolor(bvm *vm); -extern int lvbe_obj_set_style_bg_img_recolor_filtered(bvm *vm); -extern int lvbe_obj_set_style_bg_img_recolor_opa(bvm *vm); -extern int lvbe_obj_set_style_bg_img_tiled(bvm *vm); -extern int lvbe_obj_set_style_border_color(bvm *vm); -extern int lvbe_obj_set_style_border_color_filtered(bvm *vm); -extern int lvbe_obj_set_style_border_opa(bvm *vm); -extern int lvbe_obj_set_style_border_width(bvm *vm); -extern int lvbe_obj_set_style_border_side(bvm *vm); -extern int lvbe_obj_set_style_border_post(bvm *vm); -extern int lvbe_obj_set_style_text_color(bvm *vm); -extern int lvbe_obj_set_style_text_color_filtered(bvm *vm); -extern int lvbe_obj_set_style_text_opa(bvm *vm); -extern int lvbe_obj_set_style_text_font(bvm *vm); -extern int lvbe_obj_set_style_text_letter_space(bvm *vm); -extern int lvbe_obj_set_style_text_line_space(bvm *vm); -extern int lvbe_obj_set_style_text_decor(bvm *vm); -extern int lvbe_obj_set_style_text_align(bvm *vm); -extern int lvbe_obj_set_style_img_opa(bvm *vm); -extern int lvbe_obj_set_style_img_recolor(bvm *vm); -extern int lvbe_obj_set_style_img_recolor_filtered(bvm *vm); -extern int lvbe_obj_set_style_img_recolor_opa(bvm *vm); -extern int lvbe_obj_set_style_outline_width(bvm *vm); -extern int lvbe_obj_set_style_outline_color(bvm *vm); -extern int lvbe_obj_set_style_outline_color_filtered(bvm *vm); -extern int lvbe_obj_set_style_outline_opa(bvm *vm); -extern int lvbe_obj_set_style_outline_pad(bvm *vm); -extern int lvbe_obj_set_style_shadow_width(bvm *vm); -extern int lvbe_obj_set_style_shadow_ofs_x(bvm *vm); -extern int lvbe_obj_set_style_shadow_ofs_y(bvm *vm); -extern int lvbe_obj_set_style_shadow_spread(bvm *vm); -extern int lvbe_obj_set_style_shadow_color(bvm *vm); -extern int lvbe_obj_set_style_shadow_color_filtered(bvm *vm); -extern int lvbe_obj_set_style_shadow_opa(bvm *vm); -extern int lvbe_obj_set_style_line_width(bvm *vm); -extern int lvbe_obj_set_style_line_dash_width(bvm *vm); -extern int lvbe_obj_set_style_line_dash_gap(bvm *vm); -extern int lvbe_obj_set_style_line_rounded(bvm *vm); -extern int lvbe_obj_set_style_line_color(bvm *vm); -extern int lvbe_obj_set_style_line_color_filtered(bvm *vm); -extern int lvbe_obj_set_style_line_opa(bvm *vm); -extern int lvbe_obj_set_style_arc_width(bvm *vm); -extern int lvbe_obj_set_style_arc_rounded(bvm *vm); -extern int lvbe_obj_set_style_arc_color(bvm *vm); -extern int lvbe_obj_set_style_arc_color_filtered(bvm *vm); -extern int lvbe_obj_set_style_arc_opa(bvm *vm); -extern int lvbe_obj_set_style_arc_img_src(bvm *vm); -extern int lvbe_obj_del(bvm *vm); -extern int lvbe_obj_clean(bvm *vm); -extern int lvbe_obj_del_async(bvm *vm); -extern int lvbe_obj_set_parent(bvm *vm); -extern int lvbe_obj_move_foreground(bvm *vm); -extern int lvbe_obj_move_background(bvm *vm); -extern int lvbe_obj_get_screen(bvm *vm); -extern int lvbe_obj_get_disp(bvm *vm); -extern int lvbe_obj_get_parent(bvm *vm); -extern int lvbe_obj_get_child(bvm *vm); -extern int lvbe_obj_get_child_cnt(bvm *vm); -extern int lvbe_obj_get_child_id(bvm *vm); -extern int lvbe_obj_tree_walk(bvm *vm); - -/* `lv_group` external functions definitions */ -extern int lvbe_group_create(bvm *vm); -extern int lvbe_group_del(bvm *vm); -extern int lvbe_group_set_default(bvm *vm); -extern int lvbe_group_add_obj(bvm *vm); -extern int lvbe_group_remove_obj(bvm *vm); -extern int lvbe_group_remove_all_objs(bvm *vm); -extern int lvbe_group_focus_obj(bvm *vm); -extern int lvbe_group_focus_next(bvm *vm); -extern int lvbe_group_focus_prev(bvm *vm); -extern int lvbe_group_focus_freeze(bvm *vm); -extern int lvbe_group_send_data(bvm *vm); -extern int lvbe_group_set_focus_cb(bvm *vm); -extern int lvbe_group_set_refocus_policy(bvm *vm); -extern int lvbe_group_set_editing(bvm *vm); -extern int lvbe_group_set_wrap(bvm *vm); -extern int lvbe_group_get_focused(bvm *vm); -extern int lvbe_group_get_focus_cb(bvm *vm); -extern int lvbe_group_get_editing(bvm *vm); -extern int lvbe_group_get_wrap(bvm *vm); -extern int lvbe_group_get_obj_count(bvm *vm); - -/* `lv_indev` external functions definitions */ -extern int lvbe_indev_enable(bvm *vm); -extern int lvbe_indev_get_type(bvm *vm); -extern int lvbe_indev_reset(bvm *vm); -extern int lvbe_indev_reset_long_press(bvm *vm); -extern int lvbe_indev_set_cursor(bvm *vm); -extern int lvbe_indev_set_group(bvm *vm); -extern int lvbe_indev_set_button_points(bvm *vm); -extern int lvbe_indev_get_point(bvm *vm); -extern int lvbe_indev_get_gesture_dir(bvm *vm); -extern int lvbe_indev_get_key(bvm *vm); -extern int lvbe_indev_get_scroll_dir(bvm *vm); -extern int lvbe_indev_get_scroll_obj(bvm *vm); -extern int lvbe_indev_get_vect(bvm *vm); -extern int lvbe_indev_wait_release(bvm *vm); -extern int lvbe_indev_search_obj(bvm *vm); - -/* `lv_chart` external functions definitions */ -extern int lvbe_chart_create(bvm *vm); -extern int lvbe_chart_set_type(bvm *vm); -extern int lvbe_chart_set_point_count(bvm *vm); -extern int lvbe_chart_set_range(bvm *vm); -extern int lvbe_chart_set_update_mode(bvm *vm); -extern int lvbe_chart_set_div_line_count(bvm *vm); -extern int lvbe_chart_set_zoom_x(bvm *vm); -extern int lvbe_chart_set_zoom_y(bvm *vm); -extern int lvbe_chart_get_zoom_x(bvm *vm); -extern int lvbe_chart_get_zoom_y(bvm *vm); -extern int lvbe_chart_set_axis_tick(bvm *vm); -extern int lvbe_chart_get_type(bvm *vm); -extern int lvbe_chart_get_point_count(bvm *vm); -extern int lvbe_chart_get_x_start_point(bvm *vm); -extern int lvbe_chart_get_point_pos_by_id(bvm *vm); -extern int lvbe_chart_refresh(bvm *vm); -extern int lvbe_chart_remove_series(bvm *vm); -extern int lvbe_chart_hide_series(bvm *vm); -extern int lvbe_chart_set_series_color(bvm *vm); -extern int lvbe_chart_set_x_start_point(bvm *vm); -extern int lvbe_chart_set_cursor_pos(bvm *vm); -extern int lvbe_chart_set_cursor_point(bvm *vm); -extern int lvbe_chart_get_cursor_point(bvm *vm); -extern int lvbe_chart_set_all_value(bvm *vm); -extern int lvbe_chart_set_next_value(bvm *vm); -extern int lvbe_chart_set_next_value2(bvm *vm); -extern int lvbe_chart_set_value_by_id(bvm *vm); -extern int lvbe_chart_set_value_by_id2(bvm *vm); -extern int lvbe_chart_set_ext_y_array(bvm *vm); -extern int lvbe_chart_set_ext_x_array(bvm *vm); -extern int lvbe_chart_get_pressed_point(bvm *vm); - -/* `lv_colorwheel` external functions definitions */ -extern int lvbe_colorwheel_create(bvm *vm); -extern int lvbe_colorwheel_set_hsv(bvm *vm); -extern int lvbe_colorwheel_set_rgb(bvm *vm); -extern int lvbe_colorwheel_set_mode(bvm *vm); -extern int lvbe_colorwheel_set_mode_fixed(bvm *vm); -extern int lvbe_colorwheel_get_hsv(bvm *vm); -extern int lvbe_colorwheel_get_rgb(bvm *vm); -extern int lvbe_colorwheel_get_color_mode(bvm *vm); -extern int lvbe_colorwheel_get_color_mode_fixed(bvm *vm); - -/* `lv_imgbtn` external functions definitions */ -extern int lvbe_imgbtn_create(bvm *vm); -extern int lvbe_imgbtn_set_src(bvm *vm); - -/* `lv_led` external functions definitions */ -extern int lvbe_led_create(bvm *vm); -extern int lvbe_led_set_color(bvm *vm); -extern int lvbe_led_set_brightness(bvm *vm); -extern int lvbe_led_on(bvm *vm); -extern int lvbe_led_off(bvm *vm); -extern int lvbe_led_toggle(bvm *vm); -extern int lvbe_led_get_brightness(bvm *vm); - -/* `lv_meter` external functions definitions */ -extern int lvbe_meter_create(bvm *vm); -extern int lvbe_meter_add_scale(bvm *vm); -extern int lvbe_meter_set_scale_ticks(bvm *vm); -extern int lvbe_meter_set_scale_major_ticks(bvm *vm); -extern int lvbe_meter_set_scale_range(bvm *vm); -extern int lvbe_meter_add_needle_line(bvm *vm); -extern int lvbe_meter_add_needle_img(bvm *vm); -extern int lvbe_meter_add_arc(bvm *vm); -extern int lvbe_meter_add_scale_lines(bvm *vm); -extern int lvbe_meter_set_indicator_value(bvm *vm); -extern int lvbe_meter_set_indicator_start_value(bvm *vm); -extern int lvbe_meter_set_indicator_end_value(bvm *vm); - -/* `lv_msgbox` external functions definitions */ -extern int lvbe_msgbox_create(bvm *vm); -extern int lvbe_msgbox_get_title(bvm *vm); -extern int lvbe_msgbox_get_close_btn(bvm *vm); -extern int lvbe_msgbox_get_text(bvm *vm); -extern int lvbe_msgbox_get_btns(bvm *vm); -extern int lvbe_msgbox_get_active_btn_text(bvm *vm); -extern int lvbe_msgbox_close(bvm *vm); - -/* `lv_spinbox` external functions definitions */ -extern int lvbe_spinbox_create(bvm *vm); -extern int lvbe_spinbox_set_value(bvm *vm); -extern int lvbe_spinbox_set_rollover(bvm *vm); -extern int lvbe_spinbox_set_digit_format(bvm *vm); -extern int lvbe_spinbox_set_step(bvm *vm); -extern int lvbe_spinbox_set_range(bvm *vm); -extern int lvbe_spinbox_get_rollover(bvm *vm); -extern int lvbe_spinbox_get_value(bvm *vm); -extern int lvbe_spinbox_get_step(bvm *vm); -extern int lvbe_spinbox_step_next(bvm *vm); -extern int lvbe_spinbox_step_prev(bvm *vm); -extern int lvbe_spinbox_increment(bvm *vm); -extern int lvbe_spinbox_decrement(bvm *vm); - -/* `lv_spinner` external functions definitions */ -extern int lvbe_spinner_create(bvm *vm); - -/* `lv_arc` external functions definitions */ -extern int lvbe_arc_create(bvm *vm); -extern int lvbe_arc_set_start_angle(bvm *vm); -extern int lvbe_arc_set_end_angle(bvm *vm); -extern int lvbe_arc_set_angles(bvm *vm); -extern int lvbe_arc_set_bg_start_angle(bvm *vm); -extern int lvbe_arc_set_bg_end_angle(bvm *vm); -extern int lvbe_arc_set_bg_angles(bvm *vm); -extern int lvbe_arc_set_rotation(bvm *vm); -extern int lvbe_arc_set_mode(bvm *vm); -extern int lvbe_arc_set_value(bvm *vm); -extern int lvbe_arc_set_range(bvm *vm); -extern int lvbe_arc_set_change_rate(bvm *vm); -extern int lvbe_arc_get_angle_start(bvm *vm); -extern int lvbe_arc_get_angle_end(bvm *vm); -extern int lvbe_arc_get_bg_angle_start(bvm *vm); -extern int lvbe_arc_get_bg_angle_end(bvm *vm); -extern int lvbe_arc_get_value(bvm *vm); -extern int lvbe_arc_get_min_value(bvm *vm); -extern int lvbe_arc_get_max_value(bvm *vm); -extern int lvbe_arc_get_mode(bvm *vm); - -/* `lv_bar` external functions definitions */ -extern int lvbe_bar_create(bvm *vm); -extern int lvbe_bar_set_value(bvm *vm); -extern int lvbe_bar_set_start_value(bvm *vm); -extern int lvbe_bar_set_range(bvm *vm); -extern int lvbe_bar_set_mode(bvm *vm); -extern int lvbe_bar_get_value(bvm *vm); -extern int lvbe_bar_get_start_value(bvm *vm); -extern int lvbe_bar_get_min_value(bvm *vm); -extern int lvbe_bar_get_max_value(bvm *vm); -extern int lvbe_bar_get_mode(bvm *vm); - -/* `lv_btn` external functions definitions */ -extern int lvbe_btn_create(bvm *vm); - -/* `lv_btnmatrix` external functions definitions */ -extern int lvbe_btnmatrix_create(bvm *vm); -extern int lvbe_btnmatrix_set_map(bvm *vm); -extern int lvbe_btnmatrix_set_ctrl_map(bvm *vm); -extern int lvbe_btnmatrix_set_selected_btn(bvm *vm); -extern int lvbe_btnmatrix_set_btn_ctrl(bvm *vm); -extern int lvbe_btnmatrix_clear_btn_ctrl(bvm *vm); -extern int lvbe_btnmatrix_set_btn_ctrl_all(bvm *vm); -extern int lvbe_btnmatrix_clear_btn_ctrl_all(bvm *vm); -extern int lvbe_btnmatrix_set_btn_width(bvm *vm); -extern int lvbe_btnmatrix_set_one_checked(bvm *vm); -extern int lvbe_btnmatrix_get_selected_btn(bvm *vm); -extern int lvbe_btnmatrix_get_btn_text(bvm *vm); -extern int lvbe_btnmatrix_has_btn_ctrl(bvm *vm); -extern int lvbe_btnmatrix_get_one_checked(bvm *vm); - -/* `lv_canvas` external functions definitions */ -extern int lvbe_canvas_create(bvm *vm); -extern int lvbe_canvas_set_buffer(bvm *vm); -extern int lvbe_canvas_set_px(bvm *vm); -extern int lvbe_canvas_set_palette(bvm *vm); -extern int lvbe_canvas_get_px(bvm *vm); -extern int lvbe_canvas_copy_buf(bvm *vm); -extern int lvbe_canvas_transform(bvm *vm); -extern int lvbe_canvas_blur_hor(bvm *vm); -extern int lvbe_canvas_blur_ver(bvm *vm); -extern int lvbe_canvas_fill_bg(bvm *vm); -extern int lvbe_canvas_draw_rect(bvm *vm); -extern int lvbe_canvas_draw_text(bvm *vm); -extern int lvbe_canvas_draw_img(bvm *vm); -extern int lvbe_canvas_draw_line(bvm *vm); -extern int lvbe_canvas_draw_polygon(bvm *vm); -extern int lvbe_canvas_draw_arc(bvm *vm); - -/* `lv_checkbox` external functions definitions */ -extern int lvbe_checkbox_create(bvm *vm); -extern int lvbe_checkbox_set_text(bvm *vm); -extern int lvbe_checkbox_set_text_static(bvm *vm); -extern int lvbe_checkbox_get_text(bvm *vm); - -/* `lv_dropdown` external functions definitions */ -extern int lvbe_dropdown_create(bvm *vm); -extern int lvbe_dropdown_set_text(bvm *vm); -extern int lvbe_dropdown_set_options(bvm *vm); -extern int lvbe_dropdown_set_options_static(bvm *vm); -extern int lvbe_dropdown_add_option(bvm *vm); -extern int lvbe_dropdown_clear_options(bvm *vm); -extern int lvbe_dropdown_set_selected(bvm *vm); -extern int lvbe_dropdown_set_dir(bvm *vm); -extern int lvbe_dropdown_set_symbol(bvm *vm); -extern int lvbe_dropdown_set_selected_highlight(bvm *vm); -extern int lvbe_dropdown_get_list(bvm *vm); -extern int lvbe_dropdown_get_text(bvm *vm); -extern int lvbe_dropdown_get_options(bvm *vm); -extern int lvbe_dropdown_get_selected(bvm *vm); -extern int lvbe_dropdown_get_option_cnt(bvm *vm); -extern int lvbe_dropdown_get_selected_str(bvm *vm); -extern int lvbe_dropdown_get_symbol(bvm *vm); -extern int lvbe_dropdown_get_selected_highlight(bvm *vm); -extern int lvbe_dropdown_get_dir(bvm *vm); -extern int lvbe_dropdown_open(bvm *vm); -extern int lvbe_dropdown_close(bvm *vm); - -/* `lv_label` external functions definitions */ -extern int lvbe_label_create(bvm *vm); -extern int lvbe_label_set_text(bvm *vm); -extern int lvbe_label_set_text_fmt(bvm *vm); -extern int lvbe_label_set_text_static(bvm *vm); -extern int lvbe_label_set_long_mode(bvm *vm); -extern int lvbe_label_set_recolor(bvm *vm); -extern int lvbe_label_set_text_sel_start(bvm *vm); -extern int lvbe_label_set_text_sel_end(bvm *vm); -extern int lvbe_label_get_text(bvm *vm); -extern int lvbe_label_get_long_mode(bvm *vm); -extern int lvbe_label_get_recolor(bvm *vm); -extern int lvbe_label_get_letter_pos(bvm *vm); -extern int lvbe_label_get_letter_on(bvm *vm); -extern int lvbe_label_is_char_under_pos(bvm *vm); -extern int lvbe_label_get_text_selection_start(bvm *vm); -extern int lvbe_label_get_text_selection_end(bvm *vm); -extern int lvbe_label_ins_text(bvm *vm); -extern int lvbe_label_cut_text(bvm *vm); - -/* `lv_line` external functions definitions */ -extern int lvbe_line_create(bvm *vm); -extern int lvbe_line_set_points(bvm *vm); -extern int lvbe_line_set_y_invert(bvm *vm); -extern int lvbe_line_get_y_invert(bvm *vm); - -/* `lv_roller` external functions definitions */ -extern int lvbe_roller_create(bvm *vm); -extern int lvbe_roller_set_options(bvm *vm); -extern int lvbe_roller_set_selected(bvm *vm); -extern int lvbe_roller_set_visible_row_count(bvm *vm); -extern int lvbe_roller_get_selected(bvm *vm); -extern int lvbe_roller_get_selected_str(bvm *vm); -extern int lvbe_roller_get_options(bvm *vm); -extern int lvbe_roller_get_option_cnt(bvm *vm); - -/* `lv_slider` external functions definitions */ -extern int lvbe_slider_create(bvm *vm); -extern int lvbe_slider_set_value(bvm *vm); -extern int lvbe_slider_set_left_value(bvm *vm); -extern int lvbe_slider_set_range(bvm *vm); -extern int lvbe_slider_set_mode(bvm *vm); -extern int lvbe_slider_get_value(bvm *vm); -extern int lvbe_slider_get_left_value(bvm *vm); -extern int lvbe_slider_get_min_value(bvm *vm); -extern int lvbe_slider_get_max_value(bvm *vm); -extern int lvbe_slider_is_dragged(bvm *vm); -extern int lvbe_slider_get_mode(bvm *vm); - -/* `lv_switch` external functions definitions */ -extern int lvbe_switch_create(bvm *vm); - -/* `lv_table` external functions definitions */ -extern int lvbe_table_create(bvm *vm); -extern int lvbe_table_set_cell_value(bvm *vm); -extern int lvbe_table_set_cell_value_fmt(bvm *vm); -extern int lvbe_table_set_row_cnt(bvm *vm); -extern int lvbe_table_set_col_cnt(bvm *vm); -extern int lvbe_table_set_col_width(bvm *vm); -extern int lvbe_table_add_cell_ctrl(bvm *vm); -extern int lvbe_table_clear_cell_ctrl(bvm *vm); -extern int lvbe_table_get_cell_value(bvm *vm); -extern int lvbe_table_get_row_cnt(bvm *vm); -extern int lvbe_table_get_col_cnt(bvm *vm); -extern int lvbe_table_get_col_width(bvm *vm); -extern int lvbe_table_has_cell_ctrl(bvm *vm); -extern int lvbe_table_get_selected_cell(bvm *vm); - -/* `lv_textarea` external functions definitions */ -extern int lvbe_textarea_create(bvm *vm); -extern int lvbe_textarea_add_char(bvm *vm); -extern int lvbe_textarea_add_text(bvm *vm); -extern int lvbe_textarea_del_char(bvm *vm); -extern int lvbe_textarea_del_char_forward(bvm *vm); -extern int lvbe_textarea_set_text(bvm *vm); -extern int lvbe_textarea_set_placeholder_text(bvm *vm); -extern int lvbe_textarea_set_cursor_pos(bvm *vm); -extern int lvbe_textarea_set_cursor_click_pos(bvm *vm); -extern int lvbe_textarea_set_password_mode(bvm *vm); -extern int lvbe_textarea_set_one_line(bvm *vm); -extern int lvbe_textarea_set_accepted_chars(bvm *vm); -extern int lvbe_textarea_set_max_length(bvm *vm); -extern int lvbe_textarea_set_insert_replace(bvm *vm); -extern int lvbe_textarea_set_text_selection(bvm *vm); -extern int lvbe_textarea_set_password_show_time(bvm *vm); -extern int lvbe_textarea_set_align(bvm *vm); -extern int lvbe_textarea_get_text(bvm *vm); -extern int lvbe_textarea_get_placeholder_text(bvm *vm); -extern int lvbe_textarea_get_label(bvm *vm); -extern int lvbe_textarea_get_cursor_pos(bvm *vm); -extern int lvbe_textarea_get_cursor_click_pos(bvm *vm); -extern int lvbe_textarea_get_password_mode(bvm *vm); -extern int lvbe_textarea_get_one_line(bvm *vm); -extern int lvbe_textarea_get_accepted_chars(bvm *vm); -extern int lvbe_textarea_get_max_length(bvm *vm); -extern int lvbe_textarea_text_is_selected(bvm *vm); -extern int lvbe_textarea_get_text_selection(bvm *vm); -extern int lvbe_textarea_get_password_show_time(bvm *vm); -extern int lvbe_textarea_clear_selection(bvm *vm); -extern int lvbe_textarea_cursor_right(bvm *vm); -extern int lvbe_textarea_cursor_left(bvm *vm); -extern int lvbe_textarea_cursor_down(bvm *vm); -extern int lvbe_textarea_cursor_up(bvm *vm); - -extern int be_ntv_lv_style_init(bvm *vm); -extern int be_ntv_lv_font_init(bvm *vm); -extern int be_ntv_lv_color_init(bvm *vm); -extern int be_ntv_lv_theme_init(bvm *vm); -extern int be_ntv_lv_img_init(bvm *vm); -extern int be_ntv_lv_disp_init(bvm *vm); -extern int be_ntv_lv_obj_init(bvm *vm); -extern int be_ntv_lv_group_init(bvm *vm); -extern int be_ntv_lv_indev_init(bvm *vm); -extern int be_ntv_lv_chart_init(bvm *vm); -extern int be_ntv_lv_colorwheel_init(bvm *vm); -extern int be_ntv_lv_imgbtn_init(bvm *vm); -extern int be_ntv_lv_led_init(bvm *vm); -extern int be_ntv_lv_meter_init(bvm *vm); -extern int be_ntv_lv_msgbox_init(bvm *vm); -extern int be_ntv_lv_spinbox_init(bvm *vm); -extern int be_ntv_lv_spinner_init(bvm *vm); -extern int be_ntv_lv_arc_init(bvm *vm); -extern int be_ntv_lv_bar_init(bvm *vm); -extern int be_ntv_lv_btn_init(bvm *vm); -extern int be_ntv_lv_btnmatrix_init(bvm *vm); -extern int be_ntv_lv_canvas_init(bvm *vm); -extern int be_ntv_lv_checkbox_init(bvm *vm); -extern int be_ntv_lv_dropdown_init(bvm *vm); -extern int be_ntv_lv_label_init(bvm *vm); -extern int be_ntv_lv_line_init(bvm *vm); -extern int be_ntv_lv_roller_init(bvm *vm); -extern int be_ntv_lv_slider_init(bvm *vm); -extern int be_ntv_lv_switch_init(bvm *vm); -extern int be_ntv_lv_table_init(bvm *vm); -extern int be_ntv_lv_textarea_init(bvm *vm); - -extern const bclass be_class_lv_arc; -extern const bclass be_class_lv_bar; -extern const bclass be_class_lv_btn; -extern const bclass be_class_lv_btnmatrix; -extern const bclass be_class_lv_canvas; -extern const bclass be_class_lv_chart; -extern const bclass be_class_lv_checkbox; -extern const bclass be_class_lv_color; -extern const bclass be_class_lv_colorwheel; -extern const bclass be_class_lv_disp; -extern const bclass be_class_lv_dropdown; -extern const bclass be_class_lv_font; -extern const bclass be_class_lv_group; -extern const bclass be_class_lv_img; -extern const bclass be_class_lv_imgbtn; -extern const bclass be_class_lv_indev; -extern const bclass be_class_lv_label; -extern const bclass be_class_lv_led; -extern const bclass be_class_lv_line; -extern const bclass be_class_lv_meter; -extern const bclass be_class_lv_msgbox; -extern const bclass be_class_lv_obj; -extern const bclass be_class_lv_roller; -extern const bclass be_class_lv_slider; -extern const bclass be_class_lv_spinbox; -extern const bclass be_class_lv_spinner; -extern const bclass be_class_lv_style; -extern const bclass be_class_lv_switch; -extern const bclass be_class_lv_table; -extern const bclass be_class_lv_textarea; -extern const bclass be_class_lv_theme; - - -/******************************************************************** -** Solidified class: lv_style -********************************************************************/ -be_local_class(lv_style, - 1, - NULL, - be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("init", 380752755, 4, -1), be_const_func(lvs_init) }, - { be_nested_key("tostring", -1995258651, 8, -1), be_const_func(lvs_tostring) }, - { be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) }, - { be_nested_key("member", 719708611, 6, 0), be_const_func(lvx_member) }, - })), - (be_nested_const_str("lv_style", -143355747, 8)) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified class: lv_obj -********************************************************************/ -be_local_class(lv_obj, - 1, - NULL, - be_nested_map(5, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("tostring", -1995258651, 8, 3), be_const_func(lvx_tostring) }, - { be_nested_key("member", 719708611, 6, -1), be_const_func(lvx_member) }, - { be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) }, - { be_nested_key("init", 380752755, 4, 4), be_const_func(be_ntv_lv_obj_init) }, - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_obj_class) }, - })), - (be_nested_const_str("lv_obj", -37134147, 6)) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified class: lv_group -********************************************************************/ -be_local_class(lv_group, - 1, - NULL, - be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_group_init) }, - { be_nested_key("tostring", -1995258651, 8, -1), be_const_func(lvx_tostring) }, - { be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) }, - { be_nested_key("member", 719708611, 6, 0), be_const_func(lvx_member) }, - })), - (be_nested_const_str("lv_group", -442928277, 8)) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified class: lv_indev -********************************************************************/ -be_local_class(lv_indev, - 1, - NULL, - be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("init", 380752755, 4, -1), be_const_func(lv0_init) }, - { be_nested_key("tostring", -1995258651, 8, -1), be_const_func(lvx_tostring) }, - { be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) }, - { be_nested_key("member", 719708611, 6, 0), be_const_func(lvx_member) }, - })), - (be_nested_const_str("lv_indev", 225602374, 8)) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified class: lv_disp -********************************************************************/ -be_local_class(lv_disp, - 1, - NULL, - be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("init", 380752755, 4, -1), be_const_func(lv0_init) }, - { be_nested_key("tostring", -1995258651, 8, -1), be_const_func(lvx_tostring) }, - { be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) }, - { be_nested_key("member", 719708611, 6, 0), be_const_func(lvx_member) }, - })), - (be_nested_const_str("lv_disp", 609712084, 8)) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified class: lv_font -********************************************************************/ -be_local_class(lv_font, - 1, - NULL, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("init", 380752755, 4, -1), be_const_func(lvbe_font_create) }, - { be_nested_key("tostring", -1995258651, 8, -1), be_const_func(lvx_tostring) }, - { be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) }, - })), - (be_nested_const_str("lv_font", 1550958453, 7)) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified class: lv_theme -********************************************************************/ -be_local_class(lv_theme, - 1, - NULL, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("init", 380752755, 4, -1), be_const_func(lvbe_theme_create) }, - { be_nested_key("tostring", -1995258651, 8, -1), be_const_func(lvx_tostring) }, - { be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) }, - })), - (be_nested_const_str("lv_theme", 1550958453, 7)) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified class: lv_color -********************************************************************/ -be_local_class(lv_color, - 1, - NULL, - be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("toint", -681784387, 5, -1), be_const_func(lco_toint) }, - { be_nested_key("tostring", -1995258651, 8, 0), be_const_func(lco_tostring) }, - { be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(lco_init) }, - })), - (be_nested_const_str("lv_color", 1419148319, 8)) -); -/*******************************************************************/ - -void be_load_lv_style_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_style); - be_setglobal(vm, "lv_style"); - be_pop(vm, 1); -} - -void be_load_lv_font_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_font); - be_setglobal(vm, "lv_font"); - be_pop(vm, 1); -} - -void be_load_lv_color_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_color); - be_setglobal(vm, "lv_color"); - be_pop(vm, 1); -} - -void be_load_lv_theme_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_theme); - be_setglobal(vm, "lv_theme"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_img -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_img, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_img_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_img_init) }, - })), - (be_nested_const_str("lv_img", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_img_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_img); - be_setglobal(vm, "lv_img"); - be_pop(vm, 1); -} - -void be_load_lv_disp_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_disp); - be_setglobal(vm, "lv_disp"); - be_pop(vm, 1); -} - -void be_load_lv_obj_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_obj); - be_setglobal(vm, "lv_obj"); - be_pop(vm, 1); -} - -void be_load_lv_group_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_group); - be_setglobal(vm, "lv_group"); - be_pop(vm, 1); -} - -void be_load_lv_indev_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_indev); - be_setglobal(vm, "lv_indev"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_chart -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_chart, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_chart_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_chart_init) }, - })), - (be_nested_const_str("lv_chart", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_chart_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_chart); - be_setglobal(vm, "lv_chart"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_colorwheel -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_colorwheel, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_colorwheel_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_colorwheel_init) }, - })), - (be_nested_const_str("lv_colorwheel", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_colorwheel_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_colorwheel); - be_setglobal(vm, "lv_colorwheel"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_imgbtn -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_imgbtn, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_imgbtn_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_imgbtn_init) }, - })), - (be_nested_const_str("lv_imgbtn", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_imgbtn_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_imgbtn); - be_setglobal(vm, "lv_imgbtn"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_led -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_led, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_led_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_led_init) }, - })), - (be_nested_const_str("lv_led", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_led_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_led); - be_setglobal(vm, "lv_led"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_meter -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_meter, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_meter_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_meter_init) }, - })), - (be_nested_const_str("lv_meter", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_meter_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_meter); - be_setglobal(vm, "lv_meter"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_msgbox -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_msgbox, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_msgbox_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_msgbox_init) }, - })), - (be_nested_const_str("lv_msgbox", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_msgbox_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_msgbox); - be_setglobal(vm, "lv_msgbox"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_spinbox -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_spinbox, - 0, - &be_class_lv_textarea, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_spinbox_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_spinbox_init) }, - })), - (be_nested_const_str("lv_spinbox", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_spinbox_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_spinbox); - be_setglobal(vm, "lv_spinbox"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_spinner -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_spinner, - 0, - &be_class_lv_arc, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_spinner_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_spinner_init) }, - })), - (be_nested_const_str("lv_spinner", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_spinner_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_spinner); - be_setglobal(vm, "lv_spinner"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_arc -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_arc, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_arc_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_arc_init) }, - })), - (be_nested_const_str("lv_arc", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_arc_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_arc); - be_setglobal(vm, "lv_arc"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_bar -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_bar, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_bar_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_bar_init) }, - })), - (be_nested_const_str("lv_bar", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_bar_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_bar); - be_setglobal(vm, "lv_bar"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_btn -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_btn, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_btn_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_btn_init) }, - })), - (be_nested_const_str("lv_btn", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_btn_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_btn); - be_setglobal(vm, "lv_btn"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_btnmatrix -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_btnmatrix, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_btnmatrix_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_btnmatrix_init) }, - })), - (be_nested_const_str("lv_btnmatrix", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_btnmatrix_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_btnmatrix); - be_setglobal(vm, "lv_btnmatrix"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_canvas -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_canvas, - 0, - &be_class_lv_img, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_canvas_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_canvas_init) }, - })), - (be_nested_const_str("lv_canvas", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_canvas_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_canvas); - be_setglobal(vm, "lv_canvas"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_checkbox -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_checkbox, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_checkbox_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_checkbox_init) }, - })), - (be_nested_const_str("lv_checkbox", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_checkbox_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_checkbox); - be_setglobal(vm, "lv_checkbox"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_dropdown -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_dropdown, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_dropdown_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_dropdown_init) }, - })), - (be_nested_const_str("lv_dropdown", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_dropdown_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_dropdown); - be_setglobal(vm, "lv_dropdown"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_label -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_label, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_label_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_label_init) }, - })), - (be_nested_const_str("lv_label", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_label_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_label); - be_setglobal(vm, "lv_label"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_line -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_line, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_line_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_line_init) }, - })), - (be_nested_const_str("lv_line", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_line_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_line); - be_setglobal(vm, "lv_line"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_roller -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_roller, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_roller_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_roller_init) }, - })), - (be_nested_const_str("lv_roller", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_roller_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_roller); - be_setglobal(vm, "lv_roller"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_slider -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_slider, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_slider_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_slider_init) }, - })), - (be_nested_const_str("lv_slider", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_slider_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_slider); - be_setglobal(vm, "lv_slider"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_switch -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_switch, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_switch_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_switch_init) }, - })), - (be_nested_const_str("lv_switch", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_switch_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_switch); - be_setglobal(vm, "lv_switch"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_table -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_table, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_table_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_table_init) }, - })), - (be_nested_const_str("lv_table", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_table_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_table); - be_setglobal(vm, "lv_table"); - be_pop(vm, 1); -} - -/******************************************************************** -** Solidified class: lv_textarea -********************************************************************/ -extern const bclass be_class_lv_obj; -be_local_class(lv_textarea, - 0, - &be_class_lv_obj, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_class", -1562820946, 6, -1), be_const_comptr(&lv_textarea_class) }, - { be_nested_key("init", 380752755, 4, -1), be_const_func(be_ntv_lv_textarea_init) }, - })), - (be_nested_const_str("lv_textarea", 1612829968, 6)) -); -/*******************************************************************/ - -void be_load_lv_textarea_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_textarea); - be_setglobal(vm, "lv_textarea"); - be_pop(vm, 1); -} - - -#endif // USE_LVGL - diff --git a/lib/libesp32/berry/default/be_lvgl_wifi_arcs_icon_lib.c b/lib/libesp32/berry/default/be_lvgl_wifi_arcs_icon_lib.c deleted file mode 100644 index d8fe9ce08..000000000 --- a/lib/libesp32/berry/default/be_lvgl_wifi_arcs_icon_lib.c +++ /dev/null @@ -1,140 +0,0 @@ -/******************************************************************** - * Tasmota LVGL lv_signal_bars widget - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_LVGL - -#include "lvgl.h" - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(lv_wifi_arcs_icon_init, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str(init), - /* K1 */ be_nested_str(set_style_line_color), - /* K2 */ be_nested_str(lv), - /* K3 */ be_nested_str(color), - /* K4 */ be_nested_str(COLOR_WHITE), - /* K5 */ be_nested_str(PART_MAIN), - /* K6 */ be_nested_str(STATE_DEFAULT), - /* K7 */ be_nested_str(set_style_bg_color), - /* K8 */ be_nested_str(COLOR_BLACK), - /* K9 */ be_nested_str(get_height), - /* K10 */ be_nested_str(get_style_pad_right), - /* K11 */ be_nested_str(set_height), - /* K12 */ be_const_int(3), - /* K13 */ be_nested_str(set_width), - /* K14 */ be_nested_str(set_x), - /* K15 */ be_nested_str(get_width), - /* K16 */ be_nested_str(set_style_pad_right), - /* K17 */ be_const_int(1), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[67]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x8C080101, // 0006 GETMET R2 R0 K1 - 0xB8120400, // 0007 GETNGBL R4 K2 - 0x8C100903, // 0008 GETMET R4 R4 K3 - 0xB81A0400, // 0009 GETNGBL R6 K2 - 0x88180D04, // 000A GETMBR R6 R6 K4 - 0x7C100400, // 000B CALL R4 2 - 0xB8160400, // 000C GETNGBL R5 K2 - 0x88140B05, // 000D GETMBR R5 R5 K5 - 0xB81A0400, // 000E GETNGBL R6 K2 - 0x88180D06, // 000F GETMBR R6 R6 K6 - 0x30140A06, // 0010 OR R5 R5 R6 - 0x7C080600, // 0011 CALL R2 3 - 0x8C080107, // 0012 GETMET R2 R0 K7 - 0xB8120400, // 0013 GETNGBL R4 K2 - 0x8C100903, // 0014 GETMET R4 R4 K3 - 0xB81A0400, // 0015 GETNGBL R6 K2 - 0x88180D08, // 0016 GETMBR R6 R6 K8 - 0x7C100400, // 0017 CALL R4 2 - 0xB8160400, // 0018 GETNGBL R5 K2 - 0x88140B05, // 0019 GETMBR R5 R5 K5 - 0xB81A0400, // 001A GETNGBL R6 K2 - 0x88180D06, // 001B GETMBR R6 R6 K6 - 0x30140A06, // 001C OR R5 R5 R6 - 0x7C080600, // 001D CALL R2 3 - 0x4C080000, // 001E LDNIL R2 - 0x20080202, // 001F NE R2 R1 R2 - 0x780A0020, // 0020 JMPF R2 #0042 - 0x8C080309, // 0021 GETMET R2 R1 K9 - 0x7C080200, // 0022 CALL R2 1 - 0x8C0C030A, // 0023 GETMET R3 R1 K10 - 0xB8160400, // 0024 GETNGBL R5 K2 - 0x88140B05, // 0025 GETMBR R5 R5 K5 - 0xB81A0400, // 0026 GETNGBL R6 K2 - 0x88180D06, // 0027 GETMBR R6 R6 K6 - 0x30140A06, // 0028 OR R5 R5 R6 - 0x7C0C0400, // 0029 CALL R3 2 - 0x8C10010B, // 002A GETMET R4 R0 K11 - 0x5C180400, // 002B MOVE R6 R2 - 0x7C100400, // 002C CALL R4 2 - 0x54120003, // 002D LDINT R4 4 - 0x08100404, // 002E MUL R4 R2 R4 - 0x0C10090C, // 002F DIV R4 R4 K12 - 0x8C14010D, // 0030 GETMET R5 R0 K13 - 0x5C1C0800, // 0031 MOVE R7 R4 - 0x7C140400, // 0032 CALL R5 2 - 0x8C14010E, // 0033 GETMET R5 R0 K14 - 0x8C1C030F, // 0034 GETMET R7 R1 K15 - 0x7C1C0200, // 0035 CALL R7 1 - 0x041C0E04, // 0036 SUB R7 R7 R4 - 0x041C0E03, // 0037 SUB R7 R7 R3 - 0x7C140400, // 0038 CALL R5 2 - 0x8C140310, // 0039 GETMET R5 R1 K16 - 0x001C0604, // 003A ADD R7 R3 R4 - 0x001C0F11, // 003B ADD R7 R7 K17 - 0xB8220400, // 003C GETNGBL R8 K2 - 0x88201105, // 003D GETMBR R8 R8 K5 - 0xB8260400, // 003E GETNGBL R9 K2 - 0x88241306, // 003F GETMBR R9 R9 K6 - 0x30201009, // 0040 OR R8 R8 R9 - 0x7C140600, // 0041 CALL R5 3 - 0x80000000, // 0042 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: lv_wifi_arcs_icon -********************************************************************/ -extern const bclass be_class_lv_wifi_arcs; -be_local_class(lv_wifi_arcs_icon, - 0, - &be_class_lv_wifi_arcs, - be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(init, -1), be_const_closure(lv_wifi_arcs_icon_init_closure) }, - })), - be_str_literal("lv_wifi_arcs_icon") -); -/*******************************************************************/ - -void be_load_lv_wifi_arcs_icon_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_wifi_arcs_icon); - be_setglobal(vm, "lv_wifi_arcs_icon"); - be_pop(vm, 1); -} - -#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_lvgl_wifi_arcs_lib.c b/lib/libesp32/berry/default/be_lvgl_wifi_arcs_lib.c deleted file mode 100644 index 57cbf18a9..000000000 --- a/lib/libesp32/berry/default/be_lvgl_wifi_arcs_lib.c +++ /dev/null @@ -1,167 +0,0 @@ -/******************************************************************** - * Tasmota LVGL lv_signal_bars widget - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_LVGL - -#include "lvgl.h" - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -be_local_closure(lv_wifi_arcs_every_second, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(wifi), - /* K2 */ be_nested_str(find), - /* K3 */ be_nested_str(quality), - /* K4 */ be_nested_str(ip), - /* K5 */ be_nested_str(set_percentage), - /* K6 */ be_const_int(0), - }), - &be_const_str_every_second, - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x58100003, // 0004 LDCONST R4 K3 - 0x7C080400, // 0005 CALL R2 2 - 0x8C0C0302, // 0006 GETMET R3 R1 K2 - 0x58140004, // 0007 LDCONST R5 K4 - 0x7C0C0400, // 0008 CALL R3 2 - 0x4C100000, // 0009 LDNIL R4 - 0x1C100604, // 000A EQ R4 R3 R4 - 0x78120003, // 000B JMPF R4 #0010 - 0x8C100105, // 000C GETMET R4 R0 K5 - 0x58180006, // 000D LDCONST R6 K6 - 0x7C100400, // 000E CALL R4 2 - 0x70020005, // 000F JMP #0016 - 0x4C100000, // 0010 LDNIL R4 - 0x20100404, // 0011 NE R4 R2 R4 - 0x78120002, // 0012 JMPF R4 #0016 - 0x8C100105, // 0013 GETMET R4 R0 K5 - 0x5C180400, // 0014 MOVE R6 R2 - 0x7C100400, // 0015 CALL R4 2 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(lv_wifi_arcs_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(init), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(add_driver), - /* K3 */ be_nested_str(set_percentage), - /* K4 */ be_const_int(0), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0xB80A0200, // 0006 GETNGBL R2 K1 - 0x8C080502, // 0007 GETMET R2 R2 K2 - 0x5C100000, // 0008 MOVE R4 R0 - 0x7C080400, // 0009 CALL R2 2 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x58100004, // 000B LDCONST R4 K4 - 0x7C080400, // 000C CALL R2 2 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: del -********************************************************************/ -be_local_closure(lv_wifi_arcs_del, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(del), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(remove_driver), - }), - &be_const_str_del, - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x60040003, // 0000 GETGBL R1 G3 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 - 0x7C040200, // 0004 CALL R1 1 - 0xB8060200, // 0005 GETNGBL R1 K1 - 0x8C040302, // 0006 GETMET R1 R1 K2 - 0x5C0C0000, // 0007 MOVE R3 R0 - 0x7C040400, // 0008 CALL R1 2 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: lv_wifi_arcs -********************************************************************/ -extern const bclass be_class_lv_signal_arcs; -be_local_class(lv_wifi_arcs, - 0, - &be_class_lv_signal_arcs, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(every_second, 1), be_const_closure(lv_wifi_arcs_every_second_closure) }, - { be_const_key(init, -1), be_const_closure(lv_wifi_arcs_init_closure) }, - { be_const_key(del, -1), be_const_closure(lv_wifi_arcs_del_closure) }, - })), - be_str_literal("lv_wifi_arcs") -); -/*******************************************************************/ - -void be_load_lv_wifi_arcs_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_wifi_arcs); - be_setglobal(vm, "lv_wifi_arcs"); - be_pop(vm, 1); -} - -#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_lvgl_wifi_bars_icon_lib.c b/lib/libesp32/berry/default/be_lvgl_wifi_bars_icon_lib.c deleted file mode 100644 index a1cf693e5..000000000 --- a/lib/libesp32/berry/default/be_lvgl_wifi_bars_icon_lib.c +++ /dev/null @@ -1,136 +0,0 @@ -/******************************************************************** - * Tasmota LVGL lv_signal_bars widget - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_LVGL - -#include "lvgl.h" - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(lv_wifi_bars_icon_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str(init), - /* K1 */ be_nested_str(set_style_line_color), - /* K2 */ be_nested_str(lv), - /* K3 */ be_nested_str(color), - /* K4 */ be_nested_str(COLOR_WHITE), - /* K5 */ be_nested_str(PART_MAIN), - /* K6 */ be_nested_str(STATE_DEFAULT), - /* K7 */ be_nested_str(set_style_bg_color), - /* K8 */ be_nested_str(COLOR_BLACK), - /* K9 */ be_nested_str(get_height), - /* K10 */ be_nested_str(get_style_pad_right), - /* K11 */ be_nested_str(set_height), - /* K12 */ be_nested_str(set_width), - /* K13 */ be_nested_str(set_x), - /* K14 */ be_nested_str(get_width), - /* K15 */ be_nested_str(set_style_pad_right), - /* K16 */ be_const_int(1), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[64]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x8C080101, // 0006 GETMET R2 R0 K1 - 0xB8120400, // 0007 GETNGBL R4 K2 - 0x8C100903, // 0008 GETMET R4 R4 K3 - 0xB81A0400, // 0009 GETNGBL R6 K2 - 0x88180D04, // 000A GETMBR R6 R6 K4 - 0x7C100400, // 000B CALL R4 2 - 0xB8160400, // 000C GETNGBL R5 K2 - 0x88140B05, // 000D GETMBR R5 R5 K5 - 0xB81A0400, // 000E GETNGBL R6 K2 - 0x88180D06, // 000F GETMBR R6 R6 K6 - 0x30140A06, // 0010 OR R5 R5 R6 - 0x7C080600, // 0011 CALL R2 3 - 0x8C080107, // 0012 GETMET R2 R0 K7 - 0xB8120400, // 0013 GETNGBL R4 K2 - 0x8C100903, // 0014 GETMET R4 R4 K3 - 0xB81A0400, // 0015 GETNGBL R6 K2 - 0x88180D08, // 0016 GETMBR R6 R6 K8 - 0x7C100400, // 0017 CALL R4 2 - 0xB8160400, // 0018 GETNGBL R5 K2 - 0x88140B05, // 0019 GETMBR R5 R5 K5 - 0xB81A0400, // 001A GETNGBL R6 K2 - 0x88180D06, // 001B GETMBR R6 R6 K6 - 0x30140A06, // 001C OR R5 R5 R6 - 0x7C080600, // 001D CALL R2 3 - 0x4C080000, // 001E LDNIL R2 - 0x20080202, // 001F NE R2 R1 R2 - 0x780A001D, // 0020 JMPF R2 #003F - 0x8C080309, // 0021 GETMET R2 R1 K9 - 0x7C080200, // 0022 CALL R2 1 - 0x8C0C030A, // 0023 GETMET R3 R1 K10 - 0xB8160400, // 0024 GETNGBL R5 K2 - 0x88140B05, // 0025 GETMBR R5 R5 K5 - 0xB81A0400, // 0026 GETNGBL R6 K2 - 0x88180D06, // 0027 GETMBR R6 R6 K6 - 0x30140A06, // 0028 OR R5 R5 R6 - 0x7C0C0400, // 0029 CALL R3 2 - 0x8C10010B, // 002A GETMET R4 R0 K11 - 0x5C180400, // 002B MOVE R6 R2 - 0x7C100400, // 002C CALL R4 2 - 0x8C10010C, // 002D GETMET R4 R0 K12 - 0x5C180400, // 002E MOVE R6 R2 - 0x7C100400, // 002F CALL R4 2 - 0x8C10010D, // 0030 GETMET R4 R0 K13 - 0x8C18030E, // 0031 GETMET R6 R1 K14 - 0x7C180200, // 0032 CALL R6 1 - 0x04180C02, // 0033 SUB R6 R6 R2 - 0x04180C03, // 0034 SUB R6 R6 R3 - 0x7C100400, // 0035 CALL R4 2 - 0x8C10030F, // 0036 GETMET R4 R1 K15 - 0x00180602, // 0037 ADD R6 R3 R2 - 0x00180D10, // 0038 ADD R6 R6 K16 - 0xB81E0400, // 0039 GETNGBL R7 K2 - 0x881C0F05, // 003A GETMBR R7 R7 K5 - 0xB8220400, // 003B GETNGBL R8 K2 - 0x88201106, // 003C GETMBR R8 R8 K6 - 0x301C0E08, // 003D OR R7 R7 R8 - 0x7C100600, // 003E CALL R4 3 - 0x80000000, // 003F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: lv_wifi_bars_icon -********************************************************************/ -extern const bclass be_class_lv_wifi_bars; -be_local_class(lv_wifi_bars_icon, - 0, - &be_class_lv_wifi_bars, - be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(init, -1), be_const_closure(lv_wifi_bars_icon_init_closure) }, - })), - be_str_literal("lv_wifi_bars_icon") -); -/*******************************************************************/ - -void be_load_lv_wifi_bars_icon_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_wifi_bars_icon); - be_setglobal(vm, "lv_wifi_bars_icon"); - be_pop(vm, 1); -} - -#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_lvgl_wifi_bars_lib.c b/lib/libesp32/berry/default/be_lvgl_wifi_bars_lib.c deleted file mode 100644 index c61cb2bb3..000000000 --- a/lib/libesp32/berry/default/be_lvgl_wifi_bars_lib.c +++ /dev/null @@ -1,167 +0,0 @@ -/******************************************************************** - * Tasmota LVGL lv_signal_bars widget - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_LVGL - -#include "lvgl.h" - -/******************************************************************** -** Solidified function: every_second -********************************************************************/ -be_local_closure(lv_wifi_bars_every_second, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(wifi), - /* K2 */ be_nested_str(find), - /* K3 */ be_nested_str(quality), - /* K4 */ be_nested_str(ip), - /* K5 */ be_nested_str(set_percentage), - /* K6 */ be_const_int(0), - }), - &be_const_str_every_second, - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x58100003, // 0004 LDCONST R4 K3 - 0x7C080400, // 0005 CALL R2 2 - 0x8C0C0302, // 0006 GETMET R3 R1 K2 - 0x58140004, // 0007 LDCONST R5 K4 - 0x7C0C0400, // 0008 CALL R3 2 - 0x4C100000, // 0009 LDNIL R4 - 0x1C100604, // 000A EQ R4 R3 R4 - 0x78120003, // 000B JMPF R4 #0010 - 0x8C100105, // 000C GETMET R4 R0 K5 - 0x58180006, // 000D LDCONST R6 K6 - 0x7C100400, // 000E CALL R4 2 - 0x70020005, // 000F JMP #0016 - 0x4C100000, // 0010 LDNIL R4 - 0x20100404, // 0011 NE R4 R2 R4 - 0x78120002, // 0012 JMPF R4 #0016 - 0x8C100105, // 0013 GETMET R4 R0 K5 - 0x5C180400, // 0014 MOVE R6 R2 - 0x7C100400, // 0015 CALL R4 2 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(lv_wifi_bars_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(init), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(add_driver), - /* K3 */ be_nested_str(set_percentage), - /* K4 */ be_const_int(0), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0xB80A0200, // 0006 GETNGBL R2 K1 - 0x8C080502, // 0007 GETMET R2 R2 K2 - 0x5C100000, // 0008 MOVE R4 R0 - 0x7C080400, // 0009 CALL R2 2 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x58100004, // 000B LDCONST R4 K4 - 0x7C080400, // 000C CALL R2 2 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: del -********************************************************************/ -be_local_closure(lv_wifi_bars_del, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(del), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(remove_driver), - }), - &be_const_str_del, - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x60040003, // 0000 GETGBL R1 G3 - 0x5C080000, // 0001 MOVE R2 R0 - 0x7C040200, // 0002 CALL R1 1 - 0x8C040300, // 0003 GETMET R1 R1 K0 - 0x7C040200, // 0004 CALL R1 1 - 0xB8060200, // 0005 GETNGBL R1 K1 - 0x8C040302, // 0006 GETMET R1 R1 K2 - 0x5C0C0000, // 0007 MOVE R3 R0 - 0x7C040400, // 0008 CALL R1 2 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: lv_wifi_bars -********************************************************************/ -extern const bclass be_class_lv_signal_bars; -be_local_class(lv_wifi_bars, - 0, - &be_class_lv_signal_bars, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(every_second, 1), be_const_closure(lv_wifi_bars_every_second_closure) }, - { be_const_key(init, -1), be_const_closure(lv_wifi_bars_init_closure) }, - { be_const_key(del, -1), be_const_closure(lv_wifi_bars_del_closure) }, - })), - be_str_literal("lv_wifi_bars") -); -/*******************************************************************/ - -void be_load_lv_wifi_bars_class(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_wifi_bars); - be_setglobal(vm, "lv_wifi_bars"); - be_pop(vm, 1); -} - -#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/berry/default/be_md5_lib.c b/lib/libesp32/berry/default/be_md5_lib.c deleted file mode 100644 index 2c8dfd77b..000000000 --- a/lib/libesp32/berry/default/be_md5_lib.c +++ /dev/null @@ -1,30 +0,0 @@ -/******************************************************************** - * Berry module `webserver` - * - * To use: `import webserver` - * - * Allows to respond to HTTP request - *******************************************************************/ -#include "be_constobj.h" - -extern int m_md5_init(bvm *vm); -extern int m_md5_update(bvm *vm); -extern int m_md5_finish(bvm *vm); - -#include "../generate/be_fixed_be_class_md5.h" - -void be_load_md5_lib(bvm *vm) { - be_pushntvclass(vm, &be_class_md5); - be_setglobal(vm, "MD5"); - be_pop(vm, 1); -} -/* @const_object_info_begin - -class be_class_md5 (scope: global, name: MD5) { - .p, var - - init, func(m_md5_init) - update, func(m_md5_update) - finish, func(m_md5_finish) -} -@const_object_info_end */ diff --git a/lib/libesp32/berry/default/be_modtab.c b/lib/libesp32/berry/default/be_modtab.c deleted file mode 100644 index 934400bbb..000000000 --- a/lib/libesp32/berry/default/be_modtab.c +++ /dev/null @@ -1,230 +0,0 @@ -/******************************************************************** -** Copyright (c) 2018-2020 Guan Wenliang -** This file is part of the Berry default interpreter. -** skiars@qq.com, https://github.com/Skiars/berry -** See Copyright Notice in the LICENSE file or at -** https://github.com/Skiars/berry/blob/master/LICENSE -********************************************************************/ -#include "berry.h" - -/* this file contains the declaration of the module table. */ - -/* default modules declare */ -be_extern_native_module(string); -be_extern_native_module(json); -be_extern_native_module(math); -be_extern_native_module(time); -be_extern_native_module(os); -be_extern_native_module(global); -be_extern_native_module(sys); -be_extern_native_module(debug); -be_extern_native_module(gc); -be_extern_native_module(solidify); -be_extern_native_module(introspect); -be_extern_native_module(strict); - -/* Berry extensions */ -#include "be_mapping.h" -be_extern_native_module(cb); - -/* Tasmota specific */ -be_extern_native_module(python_compat); -be_extern_native_module(re); -be_extern_native_module(persist); -be_extern_native_module(autoconf); -be_extern_native_module(tapp); -be_extern_native_module(light); -be_extern_native_module(gpio); -be_extern_native_module(display); -be_extern_native_module(energy); -be_extern_native_module(webserver); -be_extern_native_module(flash); -be_extern_native_module(path); -be_extern_native_module(unishox); -be_extern_native_module(animate); -#ifdef USE_LVGL -be_extern_native_module(lv); -#endif // USE_LVGL - -/* user-defined modules declare start */ - -/* user-defined modules declare end */ - -/* module list declaration */ -BERRY_LOCAL const bntvmodule* const be_module_table[] = { -/* default modules register */ -#if BE_USE_STRING_MODULE - &be_native_module(string), -#endif -#if BE_USE_JSON_MODULE - &be_native_module(json), -#endif -#if BE_USE_MATH_MODULE - &be_native_module(math), -#endif -#if BE_USE_TIME_MODULE - &be_native_module(time), -#endif -#if BE_USE_OS_MODULE - &be_native_module(os), -#endif -#if BE_USE_GLOBAL_MODULE - &be_native_module(global), -#endif -#if BE_USE_SYS_MODULE - &be_native_module(sys), -#endif -#if BE_USE_DEBUG_MODULE - &be_native_module(debug), -#endif -#if BE_USE_GC_MODULE - &be_native_module(gc), -#endif -#if BE_USE_SOLIDIFY_MODULE - &be_native_module(solidify), -#endif -#if BE_USE_INTROSPECT_MODULE - &be_native_module(introspect), -#endif -#if BE_USE_STRICT_MODULE - &be_native_module(strict), -#endif - - /* Berry extensions */ - &be_native_module(cb), - - /* user-defined modules register start */ - - &be_native_module(python_compat), - &be_native_module(re), - &be_native_module(path), - &be_native_module(persist), -#ifdef USE_AUTOCONF - &be_native_module(autoconf), -#endif // USE_AUTOCONF - &be_native_module(tapp), - &be_native_module(gpio), -#ifdef USE_DISPLAY - &be_native_module(display), -#endif // USE_DISPLAY -#ifdef USE_LIGHT - &be_native_module(light), -#endif - -#ifdef USE_UNISHOX_COMPRESSION - &be_native_module(unishox), -#endif // USE_UNISHOX_COMPRESSION - &be_native_module(animate), - -#ifdef USE_LVGL - &be_native_module(lv), -#endif // USE_LVGL -#ifdef USE_ENERGY_SENSOR - &be_native_module(energy), -#endif // USE_ENERGY_SENSOR -#ifdef USE_WEBSERVER - &be_native_module(webserver), -#endif // USE_WEBSERVER - &be_native_module(flash), - - - /* user-defined modules register end */ - NULL /* do not remove */ -}; - -#ifdef ESP32 -extern void be_load_tasmota_ntvlib(bvm *vm); -extern void be_load_wirelib(bvm *vm); -extern void be_load_onewirelib(bvm *vm); -extern void be_load_serial_lib(bvm *vm); -extern void be_load_Driver_class(bvm *vm); -extern void be_load_Timer_class(bvm *vm); -extern void be_load_I2C_Driver_class(bvm *vm); -extern void be_load_AXP192_class(bvm *vm); -extern void be_load_md5_lib(bvm *vm); -extern void be_load_webclient_lib(bvm *vm); -extern void be_load_tcpclient_lib(bvm *vm); -extern void be_load_crypto_lib(bvm *vm); -extern void be_load_Leds_ntv_class(bvm *vm); -extern void be_load_Leds_class(bvm *vm); -extern void be_load_Leds_animator_class(bvm *vm); - -extern void be_load_ctypes_lib(bvm *vm); -extern void be_load_ctypes_energy_definitions_lib(bvm *vm); - -#ifdef USE_I2S_AUDIO_BERRY -extern void be_load_driver_audio_lib(bvm *vm); -#endif - -#ifdef USE_LVGL -extern void be_load_lv_color_class(bvm *vm); -extern void be_load_lv_font_class(bvm *vm); -extern void be_load_LVGL_glob_class(bvm *vm); -// custom widgets -extern void be_load_lv_signal_bars_class(bvm *vm); -extern void be_load_lv_wifi_bars_class(bvm *vm); -extern void be_load_lv_wifi_bars_icon_class(bvm *vm); -extern void be_load_lv_signal_arcs_class(bvm *vm); -extern void be_load_lv_wifi_arcs_class(bvm *vm); -extern void be_load_lv_wifi_arcs_icon_class(bvm *vm); -extern void be_load_lv_clock_icon_class(bvm *vm); -#endif// USE_LVGL - -/* this code loads the native class definitions */ -BERRY_API void be_load_custom_libs(bvm *vm) -{ - (void)vm; /* prevent a compiler warning */ - - /* add here custom libs */ -#if !BE_USE_PRECOMPILED_OBJECT - /* be_load_xxxlib(vm); */ -#endif - be_load_Timer_class(vm); - be_load_tasmota_ntvlib(vm); - be_load_Driver_class(vm); - be_load_md5_lib(vm); - be_load_serial_lib(vm); - be_load_ctypes_lib(vm); -#ifdef USE_ALEXA_AVS - be_load_crypto_lib(vm); -#endif -#ifdef USE_I2C - be_load_wirelib(vm); - be_load_I2C_Driver_class(vm); - be_load_AXP192_class(vm); -#endif // USE_I2C -#ifdef USE_ENERGY_SENSOR - be_load_ctypes_energy_definitions_lib(vm); -#endif // USE_ENERGY_SENSOR -#ifdef USE_WEBCLIENT - be_load_webclient_lib(vm); - be_load_tcpclient_lib(vm); -#endif // USE_WEBCLIENT -#if defined(USE_ONEWIRE) || defined(USE_DS18x20) - be_load_onewirelib(vm); -#endif -#ifdef USE_WS2812 - be_load_Leds_ntv_class(vm); - be_load_Leds_class(vm); - be_load_Leds_animator_class(vm); -#endif // USE_WS2812 -#ifdef USE_I2S_AUDIO_BERRY - be_load_driver_audio_lib(vm); -#endif -#ifdef USE_LVGL - // LVGL - be_load_lv_color_class(vm); - be_load_lv_font_class(vm); - - be_load_LVGL_glob_class(vm); - // custom widgets - be_load_lv_signal_bars_class(vm); - be_load_lv_wifi_bars_class(vm); - be_load_lv_wifi_bars_icon_class(vm); - be_load_lv_signal_arcs_class(vm); - be_load_lv_wifi_arcs_class(vm); - be_load_lv_wifi_arcs_icon_class(vm); - be_load_lv_clock_icon_class(vm); -#endif // USE_LVGL -} -#endif diff --git a/lib/libesp32/berry/default/be_onewire_lib.c b/lib/libesp32/berry/default/be_onewire_lib.c deleted file mode 100644 index 838e6ccf9..000000000 --- a/lib/libesp32/berry/default/be_onewire_lib.c +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * To use: `import wire` - * - * 2 wire communication - I2C - *******************************************************************/ -#include "be_constobj.h" - -#if defined(USE_ONEWIRE) || defined(USE_DS18x20) - -extern int b_onewire_init(bvm *vm); -extern int b_onewire_deinit(bvm *vm); - -extern int b_onewire_reset(bvm *vm); -extern int b_onewire_select(bvm *vm); -extern int b_onewire_skip(bvm *vm); -extern int b_onewire_depower(bvm *vm); - -extern int b_onewire_write(bvm *vm); -extern int b_onewire_read(bvm *vm); - -extern int b_onewire_reset_search(bvm *vm); -extern int b_onewire_target_search(bvm *vm); -extern int b_onewire_search(bvm *vm); - -#include "../generate/be_fixed_be_class_tasmota_onewire.h" - -void be_load_onewirelib(bvm *vm) { - be_pushntvclass(vm, &be_class_tasmota_onewire); - be_setglobal(vm, "OneWire"); - be_pop(vm, 1); -} - -/* @const_object_info_begin - -class be_class_tasmota_onewire (scope: global, name: OneWire) { - .p, var - - init, func(b_onewire_init) - deinit, func(b_onewire_deinit) - - reset, func(b_onewire_reset) - select, func(b_onewire_select) - skip, func(b_onewire_skip) - depower, func(b_onewire_depower) - - write, func(b_onewire_write) - read, func(b_onewire_read) - - reset_search, func(b_onewire_reset_search) - target_search, func(b_onewire_target_search) - search, func(b_onewire_search) -} -@const_object_info_end */ - -#endif // defined(USE_ONEWIRE) || defined(USE_DS18x20) diff --git a/lib/libesp32/berry/default/be_path_tasmota_lib.c b/lib/libesp32/berry/default/be_path_tasmota_lib.c deleted file mode 100644 index 81711a053..000000000 --- a/lib/libesp32/berry/default/be_path_tasmota_lib.c +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************** -** Copyright (c) 2018-2020 Guan Wenliang -** This file is part of the Berry default interpreter. -** skiars@qq.com, https://github.com/Skiars/berry -** See Copyright Notice in the LICENSE file or at -** https://github.com/Skiars/berry/blob/master/LICENSE -********************************************************************/ - -/******************************************************************** - * Berry module `path` - * - * Minimal version of `import path` - * - *******************************************************************/ -#include "be_object.h" -#include "be_strlib.h" -#include "be_mem.h" -#include "be_sys.h" -#include - -extern int m_path_listdir(bvm *vm); - -static int m_path_exists(bvm *vm) -{ - const char *path = NULL; - if (be_top(vm) >= 1 && be_isstring(vm, 1)) { - path = be_tostring(vm, 1); - be_pushbool(vm, be_isexist(path)); - } else { - be_pushbool(vm, bfalse); - } - be_return(vm); -} -extern time_t be_last_modified(void *hfile); - -static int m_path_last_modified(bvm *vm) -{ - if (be_top(vm) >= 1 && be_isstring(vm, 1)) { - const char *path = be_tostring(vm, 1); - void * f = be_fopen(path, "r"); - if (f) { - be_pushint(vm, be_last_modified(f)); - be_fclose(f); - be_return(vm); - } - } - be_return_nil(vm); -} - -static int m_path_remove(bvm *vm) -{ - const char *path = NULL; - if (be_top(vm) >= 1 && be_isstring(vm, 1)) { - path = be_tostring(vm, 1); - be_pushbool(vm, be_unlink(path)); - } else { - be_pushbool(vm, bfalse); - } - be_return(vm); -} - -/* @const_object_info_begin -module path (scope: global, file: tasmota_path) { - exists, func(m_path_exists) - last_modified, func(m_path_last_modified) - listdir, func(m_path_listdir) - remove, func(m_path_remove) -} -@const_object_info_end */ -#include "../generate/be_fixed_tasmota_path.h" diff --git a/lib/libesp32/berry/default/be_persist_lib.c b/lib/libesp32/berry/default/be_persist_lib.c deleted file mode 100644 index 0581081c7..000000000 --- a/lib/libesp32/berry/default/be_persist_lib.c +++ /dev/null @@ -1,703 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * To use: `import power` - * - * read power values - *******************************************************************/ -#include "be_constobj.h" - -/******************************************************************** -** Solidified function: json_fdump_map -********************************************************************/ -be_local_closure(Persist_json_fdump_map, /* name */ - be_nested_proto( - 13, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(write), - /* K2 */ be_nested_str(_X7B), - /* K3 */ be_nested_str(keys), - /* K4 */ be_nested_str(dump), - /* K5 */ be_nested_str(_X3A), - /* K6 */ be_nested_str(json_fdump_any), - /* K7 */ be_nested_str(_X2C), - /* K8 */ be_nested_str(stop_iteration), - /* K9 */ be_nested_str(_X7D), - }), - &be_const_str_json_fdump_map, - &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x8C100301, // 0001 GETMET R4 R1 K1 - 0x58180002, // 0002 LDCONST R6 K2 - 0x7C100400, // 0003 CALL R4 2 - 0x4C100000, // 0004 LDNIL R4 - 0x60140010, // 0005 GETGBL R5 G16 - 0x8C180503, // 0006 GETMET R6 R2 K3 - 0x7C180200, // 0007 CALL R6 1 - 0x7C140200, // 0008 CALL R5 1 - 0xA8020017, // 0009 EXBLK 0 #0022 - 0x5C180A00, // 000A MOVE R6 R5 - 0x7C180000, // 000B CALL R6 0 - 0x4C1C0000, // 000C LDNIL R7 - 0x201C0807, // 000D NE R7 R4 R7 - 0x781E0002, // 000E JMPF R7 #0012 - 0x8C1C0301, // 000F GETMET R7 R1 K1 - 0x5C240800, // 0010 MOVE R9 R4 - 0x7C1C0400, // 0011 CALL R7 2 - 0x8C1C0301, // 0012 GETMET R7 R1 K1 - 0x8C240704, // 0013 GETMET R9 R3 K4 - 0x602C0008, // 0014 GETGBL R11 G8 - 0x5C300C00, // 0015 MOVE R12 R6 - 0x7C2C0200, // 0016 CALL R11 1 - 0x7C240400, // 0017 CALL R9 2 - 0x7C1C0400, // 0018 CALL R7 2 - 0x8C1C0301, // 0019 GETMET R7 R1 K1 - 0x58240005, // 001A LDCONST R9 K5 - 0x7C1C0400, // 001B CALL R7 2 - 0x8C1C0106, // 001C GETMET R7 R0 K6 - 0x5C240200, // 001D MOVE R9 R1 - 0x94280406, // 001E GETIDX R10 R2 R6 - 0x7C1C0600, // 001F CALL R7 3 - 0x58100007, // 0020 LDCONST R4 K7 - 0x7001FFE7, // 0021 JMP #000A - 0x58140008, // 0022 LDCONST R5 K8 - 0xAC140200, // 0023 CATCH R5 1 0 - 0xB0080000, // 0024 RAISE 2 R0 R0 - 0x8C140301, // 0025 GETMET R5 R1 K1 - 0x581C0009, // 0026 LDCONST R7 K9 - 0x7C140400, // 0027 CALL R5 2 - 0x80000000, // 0028 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: setmember -********************************************************************/ -be_local_closure(Persist_setmember, /* name */ - be_nested_proto( - 4, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(_dirty), - }), - &be_const_str_setmember, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x980C0202, // 0001 SETIDX R3 R1 R2 - 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x90020203, // 0003 SETMBR R0 K1 R3 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: zero -********************************************************************/ -be_local_closure(Persist_zero, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(_dirty), - }), - &be_const_str_zero, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x60040013, // 0000 GETGBL R1 G19 - 0x7C040000, // 0001 CALL R1 0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x50040200, // 0003 LDBOOL R1 1 0 - 0x90020201, // 0004 SETMBR R0 K1 R1 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: member -********************************************************************/ -be_local_closure(Persist_member, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(find), - }), - &be_const_str_member, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: json_fdump -********************************************************************/ -be_local_closure(Persist_json_fdump, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(_p), - /* K2 */ be_nested_str(json_fdump_map), - /* K3 */ be_nested_str(internal_error), - /* K4 */ be_nested_str(persist_X2E_p_X20is_X20not_X20a_X20map), - }), - &be_const_str_json_fdump, - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x600C000F, // 0001 GETGBL R3 G15 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x60140013, // 0003 GETGBL R5 G19 - 0x7C0C0400, // 0004 CALL R3 2 - 0x780E0004, // 0005 JMPF R3 #000B - 0x8C0C0102, // 0006 GETMET R3 R0 K2 - 0x5C140200, // 0007 MOVE R5 R1 - 0x88180101, // 0008 GETMBR R6 R0 K1 - 0x7C0C0600, // 0009 CALL R3 3 - 0x70020000, // 000A JMP #000C - 0xB0060704, // 000B RAISE 1 K3 K4 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove -********************************************************************/ -be_local_closure(Persist_remove, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(remove), - /* K2 */ be_nested_str(_dirty), - }), - &be_const_str_remove, - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x50080200, // 0004 LDBOOL R2 1 0 - 0x90020402, // 0005 SETMBR R0 K2 R2 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: json_fdump_any -********************************************************************/ -be_local_closure(Persist_json_fdump_any, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(json_fdump_map), - /* K2 */ be_nested_str(json_fdump_list), - /* K3 */ be_nested_str(write), - /* K4 */ be_nested_str(dump), - }), - &be_const_str_json_fdump_any, - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x6010000F, // 0001 GETGBL R4 G15 - 0x5C140400, // 0002 MOVE R5 R2 - 0x60180013, // 0003 GETGBL R6 G19 - 0x7C100400, // 0004 CALL R4 2 - 0x78120004, // 0005 JMPF R4 #000B - 0x8C100101, // 0006 GETMET R4 R0 K1 - 0x5C180200, // 0007 MOVE R6 R1 - 0x5C1C0400, // 0008 MOVE R7 R2 - 0x7C100600, // 0009 CALL R4 3 - 0x7002000E, // 000A JMP #001A - 0x6010000F, // 000B GETGBL R4 G15 - 0x5C140400, // 000C MOVE R5 R2 - 0x60180012, // 000D GETGBL R6 G18 - 0x7C100400, // 000E CALL R4 2 - 0x78120004, // 000F JMPF R4 #0015 - 0x8C100102, // 0010 GETMET R4 R0 K2 - 0x5C180200, // 0011 MOVE R6 R1 - 0x5C1C0400, // 0012 MOVE R7 R2 - 0x7C100600, // 0013 CALL R4 3 - 0x70020004, // 0014 JMP #001A - 0x8C100303, // 0015 GETMET R4 R1 K3 - 0x8C180704, // 0016 GETMET R6 R3 K4 - 0x5C200400, // 0017 MOVE R8 R2 - 0x7C180400, // 0018 CALL R6 2 - 0x7C100400, // 0019 CALL R4 2 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: save -********************************************************************/ -be_local_closure(Persist_save, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(_filename), - /* K1 */ be_nested_str(w), - /* K2 */ be_nested_str(json_fdump), - /* K3 */ be_nested_str(close), - /* K4 */ be_nested_str(write), - /* K5 */ be_nested_str(_X7B_X7D), - /* K6 */ be_nested_str(_dirty), - }), - &be_const_str_save, - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0xA802000B, // 0001 EXBLK 0 #000E - 0x60080011, // 0002 GETGBL R2 G17 - 0x880C0100, // 0003 GETMBR R3 R0 K0 - 0x58100001, // 0004 LDCONST R4 K1 - 0x7C080400, // 0005 CALL R2 2 - 0x5C040400, // 0006 MOVE R1 R2 - 0x8C080102, // 0007 GETMET R2 R0 K2 - 0x5C100200, // 0008 MOVE R4 R1 - 0x7C080400, // 0009 CALL R2 2 - 0x8C080303, // 000A GETMET R2 R1 K3 - 0x7C080200, // 000B CALL R2 1 - 0xA8040001, // 000C EXBLK 1 1 - 0x70020013, // 000D JMP #0022 - 0xAC080002, // 000E CATCH R2 0 2 - 0x70020010, // 000F JMP #0021 - 0x4C100000, // 0010 LDNIL R4 - 0x20100204, // 0011 NE R4 R1 R4 - 0x78120001, // 0012 JMPF R4 #0015 - 0x8C100303, // 0013 GETMET R4 R1 K3 - 0x7C100200, // 0014 CALL R4 1 - 0x60100011, // 0015 GETGBL R4 G17 - 0x88140100, // 0016 GETMBR R5 R0 K0 - 0x58180001, // 0017 LDCONST R6 K1 - 0x7C100400, // 0018 CALL R4 2 - 0x5C040800, // 0019 MOVE R1 R4 - 0x8C100304, // 001A GETMET R4 R1 K4 - 0x58180005, // 001B LDCONST R6 K5 - 0x7C100400, // 001C CALL R4 2 - 0x8C100303, // 001D GETMET R4 R1 K3 - 0x7C100200, // 001E CALL R4 1 - 0xB0040403, // 001F RAISE 1 R2 R3 - 0x70020000, // 0020 JMP #0022 - 0xB0080000, // 0021 RAISE 2 R0 R0 - 0x50080000, // 0022 LDBOOL R2 0 0 - 0x90020C02, // 0023 SETMBR R0 K6 R2 - 0x80000000, // 0024 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: load -********************************************************************/ -be_local_closure(Persist_load, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(path), - /* K2 */ be_nested_str(exists), - /* K3 */ be_nested_str(_filename), - /* K4 */ be_nested_str(r), - /* K5 */ be_nested_str(load), - /* K6 */ be_nested_str(read), - /* K7 */ be_nested_str(close), - /* K8 */ be_nested_str(_p), - /* K9 */ be_nested_str(BRY_X3A_X20failed_X20to_X20load_X20_persist_X2Ejson), - /* K10 */ be_nested_str(_dirty), - /* K11 */ be_nested_str(save), - }), - &be_const_str_load, - &be_const_str_solidified, - ( &(const binstruction[49]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x4C100000, // 0003 LDNIL R4 - 0x8C140502, // 0004 GETMET R5 R2 K2 - 0x881C0103, // 0005 GETMBR R7 R0 K3 - 0x7C140400, // 0006 CALL R5 2 - 0x78160025, // 0007 JMPF R5 #002E - 0xA802000D, // 0008 EXBLK 0 #0017 - 0x60140011, // 0009 GETGBL R5 G17 - 0x88180103, // 000A GETMBR R6 R0 K3 - 0x581C0004, // 000B LDCONST R7 K4 - 0x7C140400, // 000C CALL R5 2 - 0x5C0C0A00, // 000D MOVE R3 R5 - 0x8C140305, // 000E GETMET R5 R1 K5 - 0x8C1C0706, // 000F GETMET R7 R3 K6 - 0x7C1C0200, // 0010 CALL R7 1 - 0x7C140400, // 0011 CALL R5 2 - 0x5C100A00, // 0012 MOVE R4 R5 - 0x8C140707, // 0013 GETMET R5 R3 K7 - 0x7C140200, // 0014 CALL R5 1 - 0xA8040001, // 0015 EXBLK 1 1 - 0x70020009, // 0016 JMP #0021 - 0xAC140002, // 0017 CATCH R5 0 2 - 0x70020006, // 0018 JMP #0020 - 0x4C1C0000, // 0019 LDNIL R7 - 0x201C0607, // 001A NE R7 R3 R7 - 0x781E0001, // 001B JMPF R7 #001E - 0x8C1C0707, // 001C GETMET R7 R3 K7 - 0x7C1C0200, // 001D CALL R7 1 - 0xB0040A06, // 001E RAISE 1 R5 R6 - 0x70020000, // 001F JMP #0021 - 0xB0080000, // 0020 RAISE 2 R0 R0 - 0x6014000F, // 0021 GETGBL R5 G15 - 0x5C180800, // 0022 MOVE R6 R4 - 0x601C0013, // 0023 GETGBL R7 G19 - 0x7C140400, // 0024 CALL R5 2 - 0x78160001, // 0025 JMPF R5 #0028 - 0x90021004, // 0026 SETMBR R0 K8 R4 - 0x70020002, // 0027 JMP #002B - 0x60140001, // 0028 GETGBL R5 G1 - 0x58180009, // 0029 LDCONST R6 K9 - 0x7C140200, // 002A CALL R5 1 - 0x50140000, // 002B LDBOOL R5 0 0 - 0x90021405, // 002C SETMBR R0 K10 R5 - 0x70020001, // 002D JMP #0030 - 0x8C14010B, // 002E GETMET R5 R0 K11 - 0x7C140200, // 002F CALL R5 1 - 0x80000000, // 0030 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find -********************************************************************/ -be_local_closure(Persist_find, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(find), - }), - &be_const_str_find, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x5C180400, // 0003 MOVE R6 R2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x80040600, // 0005 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Persist_init, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(_filename), - /* K1 */ be_nested_str(_persist_X2Ejson), - /* K2 */ be_nested_str(_p), - /* K3 */ be_nested_str(copy), - /* K4 */ be_nested_str(load), - /* K5 */ be_nested_str(_dirty), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x90020101, // 0000 SETMBR R0 K0 K1 - 0x6008000F, // 0001 GETGBL R2 G15 - 0x5C0C0200, // 0002 MOVE R3 R1 - 0x60100013, // 0003 GETGBL R4 G19 - 0x7C080400, // 0004 CALL R2 2 - 0x780A0003, // 0005 JMPF R2 #000A - 0x8C080303, // 0006 GETMET R2 R1 K3 - 0x7C080200, // 0007 CALL R2 1 - 0x90020402, // 0008 SETMBR R0 K2 R2 - 0x70020002, // 0009 JMP #000D - 0x60080013, // 000A GETGBL R2 G19 - 0x7C080000, // 000B CALL R2 0 - 0x90020402, // 000C SETMBR R0 K2 R2 - 0x8C080104, // 000D GETMET R2 R0 K4 - 0x88100102, // 000E GETMBR R4 R0 K2 - 0x88140100, // 000F GETMBR R5 R0 K0 - 0x7C080600, // 0010 CALL R2 3 - 0x50080000, // 0011 LDBOOL R2 0 0 - 0x90020A02, // 0012 SETMBR R0 K5 R2 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: json_fdump_list -********************************************************************/ -be_local_closure(Persist_json_fdump_list, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(json), - /* K1 */ be_nested_str(write), - /* K2 */ be_nested_str(_X5B), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str(_X2C), - /* K5 */ be_nested_str(json_fdump_any), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str(_X5D), - }), - &be_const_str_json_fdump_list, - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x8C100301, // 0001 GETMET R4 R1 K1 - 0x58180002, // 0002 LDCONST R6 K2 - 0x7C100400, // 0003 CALL R4 2 - 0x58100003, // 0004 LDCONST R4 K3 - 0x6014000C, // 0005 GETGBL R5 G12 - 0x5C180400, // 0006 MOVE R6 R2 - 0x7C140200, // 0007 CALL R5 1 - 0x14140805, // 0008 LT R5 R4 R5 - 0x7816000A, // 0009 JMPF R5 #0015 - 0x24140903, // 000A GT R5 R4 K3 - 0x78160002, // 000B JMPF R5 #000F - 0x8C140301, // 000C GETMET R5 R1 K1 - 0x581C0004, // 000D LDCONST R7 K4 - 0x7C140400, // 000E CALL R5 2 - 0x8C140105, // 000F GETMET R5 R0 K5 - 0x5C1C0200, // 0010 MOVE R7 R1 - 0x94200404, // 0011 GETIDX R8 R2 R4 - 0x7C140600, // 0012 CALL R5 3 - 0x00100906, // 0013 ADD R4 R4 K6 - 0x7001FFEF, // 0014 JMP #0005 - 0x8C140301, // 0015 GETMET R5 R1 K1 - 0x581C0007, // 0016 LDCONST R7 K7 - 0x7C140400, // 0017 CALL R5 2 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: has -********************************************************************/ -be_local_closure(Persist_has, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_p), - /* K1 */ be_nested_str(has), - }), - &be_const_str_has, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Persist -********************************************************************/ -be_local_class(Persist, - 3, - NULL, - be_nested_map(16, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(has, 6), be_const_closure(Persist_has_closure) }, - { be_const_key(setmember, -1), be_const_closure(Persist_setmember_closure) }, - { be_const_key(remove, -1), be_const_closure(Persist_remove_closure) }, - { be_const_key(zero, 0), be_const_closure(Persist_zero_closure) }, - { be_const_key(json_fdump, -1), be_const_closure(Persist_json_fdump_closure) }, - { be_const_key(json_fdump_list, 2), be_const_closure(Persist_json_fdump_list_closure) }, - { be_const_key(init, 15), be_const_closure(Persist_init_closure) }, - { be_const_key(find, -1), be_const_closure(Persist_find_closure) }, - { be_const_key(save, -1), be_const_closure(Persist_save_closure) }, - { be_const_key(json_fdump_any, 12), be_const_closure(Persist_json_fdump_any_closure) }, - { be_const_key(_p, 7), be_const_var(1) }, - { be_const_key(_filename, -1), be_const_var(0) }, - { be_const_key(load, -1), be_const_closure(Persist_load_closure) }, - { be_const_key(json_fdump_map, 5), be_const_closure(Persist_json_fdump_map_closure) }, - { be_const_key(_dirty, -1), be_const_var(2) }, - { be_const_key(member, -1), be_const_closure(Persist_member_closure) }, - })), - be_str_literal("Persist") -); - -/******************************************************************** -** Solidified function: _anonymous_ -********************************************************************/ -be_local_closure(persist__anonymous_, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_const_class(be_class_Persist), - }), - &be_const_str__anonymous_, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0xB4000000, // 0001 CLASS K0 - 0x5C080200, // 0002 MOVE R2 R1 - 0x7C080000, // 0003 CALL R2 0 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified module: persist -********************************************************************/ -be_local_module(persist, - "persist", - be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(init, -1), be_const_closure(persist__anonymous__closure) }, - })) -); -BE_EXPORT_VARIABLE be_define_const_native_module(persist); -/********************************************************************/ diff --git a/lib/libesp32/berry/default/be_port.cpp b/lib/libesp32/berry/default/be_port.cpp deleted file mode 100644 index 5da10f47e..000000000 --- a/lib/libesp32/berry/default/be_port.cpp +++ /dev/null @@ -1,574 +0,0 @@ -/******************************************************************** -** Copyright (c) 2018-2020 Guan Wenliang -** This file is part of the Berry default interpreter. -** skiars@qq.com, https://github.com/Skiars/berry -** See Copyright Notice in the LICENSE file or at -** https://github.com/Skiars/berry/blob/master/LICENSE -********************************************************************/ -#include "berry.h" -#include "be_mem.h" -#include "be_sys.h" -// #include -#include -#include - -// from https://github.com/eyalroz/cpp-static-block -#include "static_block.hpp" - -// Local pointer for file managment -#ifdef USE_UFILESYS - #include - #include "ZipReadFS.h" - extern FS *ffsp; - FS zip_ufsp(ZipReadFSImplPtr(new ZipReadFSImpl(&ffsp))); -#endif // USE_UFILESYS - -/* this file contains configuration for the file system. */ - -/* standard input and output */ -extern "C" { - int strncmp_PP(const char * str1P, const char * str2P, size_t size) - { - int result = 0; - - while (size > 0) - { - char ch1 = pgm_read_byte(str1P++); - char ch2 = pgm_read_byte(str2P++); - result = ch1 - ch2; - if (result != 0 || ch2 == '\0') - { - break; - } - - size--; - } - - return result; - } - - // - char * strchr_P(const char *s, int c) { - do { - if (pgm_read_byte(s) == c) { - return (char*)s; - } - } while (pgm_read_byte(s++)); - return (0); - } -} - -// We need to create a local buffer, since we might mess up mqtt_data -#ifndef BERRY_LOGSZ -#define BERRY_LOGSZ 700 -#endif - -static char * log_berry_buffer = nullptr; -static_block { - log_berry_buffer = (char*) malloc(BERRY_LOGSZ); - if (log_berry_buffer) log_berry_buffer[0] = 0; -} -extern void berry_log(const char * berry_buf); - -BERRY_API void be_writebuffer(const char *buffer, size_t length) -{ - if (!log_berry_buffer) return; - if (buffer == nullptr || length == 0) { return; } - uint32_t idx = 0; - while (idx < length) { - int32_t cr_pos = -1; - // find next occurence of '\n' or '\r' - for (uint32_t i = idx; i < length; i++) { - if ((pgm_read_byte(&buffer[i]) == '\n') || (pgm_read_byte(&buffer[i]) == '\r')) { - cr_pos = i; - break; - } - } - uint32_t chars_to_append = (cr_pos >= 0) ? cr_pos - idx : length - idx; // note cr_pos < length - snprintf(log_berry_buffer, BERRY_LOGSZ, "%s%.*s", log_berry_buffer, chars_to_append, &buffer[idx]); // append at most `length` chars - if (cr_pos >= 0) { - // flush - berry_log(log_berry_buffer); - log_berry_buffer[0] = 0; // clear string - } - idx += chars_to_append + 1; // skip '\n' - } - // Serial.write(buffer, length); - // be_fwrite(stdout, buffer, length); -} - - -extern "C" { - int m_path_listdir(bvm *vm) - { - if (be_top(vm) >= 1 && be_isstring(vm, 1)) { - const char *path = be_tostring(vm, 1); - be_newobject(vm, "list"); - - File dir = ffsp->open(path, "r"); - if (dir) { - dir.rewindDirectory(); - while (1) { - File entry = dir.openNextFile(); - if (!entry) { - break; - } - const char * fn = entry.name(); - if (strcmp(fn, ".") && strcmp(fn, "..")) { - be_pushstring(vm, fn); - be_data_push(vm, -2); - be_pop(vm, 1); - } - - } - } - be_pop(vm, 1); - be_return(vm); - - } - be_return_nil(vm); - } -} - -BERRY_API char* be_readstring(char *buffer, size_t size) -{ - return be_fgets(stdin, buffer, (int)size); -} - -/* use the standard library implementation file API. */ - -void* be_fopen(const char *filename, const char *modes) -{ -#ifdef USE_UFILESYS - if (filename != nullptr && modes != nullptr) { - char fname2[strlen(filename) + 2]; - if (filename[0] == '/') { - strcpy(fname2, filename); // copy unchanged - } else { - fname2[0] = '/'; - strcpy(fname2 + 1, filename); // prepend with '/' - } - // Serial.printf("be_fopen filename=%s, modes=%s\n", filename, modes); - File f = zip_ufsp.open(fname2, modes); // returns an object, not a pointer - if (f) { - File * f_ptr = new File(f); // copy to dynamic object - *f_ptr = f; // TODO is this necessary? - return f_ptr; - } - } -#endif // USE_UFILESYS - return nullptr; - // return fopen(filename, modes); -} - -// Tasmota specific, get the underlying Arduino File -File * be_get_arduino_file(void *hfile) -{ -#ifdef USE_UFILESYS - if (hfile != nullptr) { - File * f_ptr = (File*) hfile; - return f_ptr; - } -#endif // USE_UFILESYS - return nullptr; - // return fopen(filename, modes); -} - -int be_fclose(void *hfile) -{ -#ifdef USE_UFILESYS - // Serial.printf("be_fclose\n"); - if (hfile != nullptr) { - File * f_ptr = (File*) hfile; - f_ptr->close(); - delete f_ptr; - return 0; - } -#endif // USE_UFILESYS - return -1; - // return fclose(hfile); -} - -size_t be_fwrite(void *hfile, const void *buffer, size_t length) -{ -#ifdef USE_UFILESYS - // Serial.printf("be_fwrite %d\n", length); - if (hfile != nullptr && buffer != nullptr) { - File * f_ptr = (File*) hfile; - return f_ptr->write((const uint8_t*) buffer, length); - } -#endif // USE_UFILESYS - return 0; - // return fwrite(buffer, 1, length, hfile); -} - -size_t be_fread(void *hfile, void *buffer, size_t length) -{ -#ifdef USE_UFILESYS - // Serial.printf("be_fread %d\n", length); - if (hfile != nullptr && buffer != nullptr) { - File * f_ptr = (File*) hfile; - int32_t ret = f_ptr->read((uint8_t*) buffer, length); - if (ret >= 0) { - // Serial.printf("be_fread ret = %d\n", ret); - return ret; - } - } -#endif // USE_UFILESYS - return 0; - // return fread(buffer, 1, length, hfile); -} - -char* be_fgets(void *hfile, void *buffer, int size) -{ -#ifdef USE_UFILESYS - if (size <= 2) { return nullptr; } // can't work if size is 2 or less - // Serial.printf("be_fgets size=%d hfile=%p buf=%p\n", size, hfile, buffer); - uint8_t * buf = (uint8_t*) buffer; - if (hfile != nullptr && buffer != nullptr && size > 0) { - File * f_ptr = (File*) hfile; - int ret = f_ptr->readBytesUntil('\n', buf, size - 2); - // Serial.printf("be_fgets ret=%d\n", ret); - if (ret >= 0) { - buf[ret] = 0; // add string terminator - if (ret > 0 && ret < size - 2) { - buf[ret] = '\n'; - buf[ret+1] = 0; - } - return (char*) buffer; - } - } -#endif // USE_UFILESYS - return nullptr; - // return fgets(buffer, size, hfile); -} - -int be_fseek(void *hfile, long offset) -{ -#ifdef USE_UFILESYS - // Serial.printf("be_fseek %d\n", offset); - if (hfile != nullptr) { - File * f_ptr = (File*) hfile; - if (f_ptr->seek(offset)) { - return 0; // success - } - } -#endif // USE_UFILESYS - return -1; - // return fseek(hfile, offset, SEEK_SET); -} - -long int be_ftell(void *hfile) -{ -#ifdef USE_UFILESYS - // Serial.printf("be_ftell\n"); - if (hfile != nullptr) { - File * f_ptr = (File*) hfile; - return f_ptr->position(); - } -#endif // USE_UFILESYS - return 0; - // return ftell(hfile); -} - -long int be_fflush(void *hfile) -{ -#ifdef USE_UFILESYS - // Serial.printf("be_fflush\n"); - if (hfile != nullptr) { - File * f_ptr = (File*) hfile; - f_ptr->flush(); - } -#endif // USE_UFILESYS - return 0; - // return fflush(hfile); -} - -size_t be_fsize(void *hfile) -{ -#ifdef USE_UFILESYS - // Serial.printf("be_fsize\n"); - if (hfile != nullptr) { - File * f_ptr = (File*) hfile; - return f_ptr->size(); - } - // long int size, offset = be_ftell(hfile); - // fseek(hfile, 0L, SEEK_END); - // size = ftell(hfile); - // fseek(hfile, offset, SEEK_SET); - // return size; -#endif // USE_UFILESYS - return 0; -} - -extern "C" time_t be_last_modified(void *hfile) -{ -#ifdef USE_UFILESYS - if (hfile != nullptr) { - File * f_ptr = (File*) hfile; - return f_ptr->getLastWrite(); - } -#endif // USE_UFILESYS - return 0; -} - -int be_isexist(const char *filename) -{ -#ifdef USE_UFILESYS - char fname2[strlen(filename) + 2]; - if (filename[0] == '/') { - strcpy(fname2, filename); // copy unchanged - } else { - fname2[0] = '/'; - strcpy(fname2 + 1, filename); // prepend with '/' - } - return zip_ufsp.exists(fname2); -#endif // USE_UFILESYS - return 0; -} - -int be_unlink(const char *filename) -{ -#ifdef USE_UFILESYS - char fname2[strlen(filename) + 2]; - if (filename[0] == '/') { - strcpy(fname2, filename); // copy unchanged - } else { - fname2[0] = '/'; - strcpy(fname2 + 1, filename); // prepend with '/' - } - return zip_ufsp.remove(fname2); -#endif // USE_UFILESYS - return 0; -} - -#if BE_USE_FILE_SYSTEM -#if defined(USE_FATFS) /* FatFs */ - -int be_isdir(const char *path) -{ - FILINFO fno; - FRESULT fr = f_stat(path, &fno); - return fr == FR_OK && fno.fattrib & AM_DIR; -} - -int be_isfile(const char *path) -{ - FILINFO fno; - FRESULT fr = f_stat(path, &fno); - return fr == FR_OK && !(fno.fattrib & AM_DIR); -} - -int be_isexist(const char *path) -{ - FILINFO fno; - return f_stat(path, &fno) == FR_OK; -} - -char* be_getcwd(char *buf, size_t size) -{ - FRESULT fr = f_getcwd(buf, (UINT)size); - return fr == FR_OK ? buf : NULL; -} - -int be_chdir(const char *path) -{ - return f_chdir(path); -} - -int be_mkdir(const char *path) -{ - return f_mkdir(path); -} - -int be_unlink(const char *filename) -{ - return f_unlink(filename); -} - -int be_dirfirst(bdirinfo *info, const char *path) -{ - info->dir = be_os_malloc(sizeof(DIR)); - info->file = be_os_malloc(sizeof(FILINFO)); - if (info->dir && info->file) { - FRESULT fr = f_opendir(info->dir, path); - return fr == FR_OK ? be_dirnext(info) : 1; - } - be_os_free(info->dir); - be_os_free(info->file); - info->dir = NULL; - info->file = NULL; - return 1; -} - -int be_dirnext(bdirinfo *info) -{ - FRESULT fr = f_readdir(info->dir, info->file); - info->name = ((FILINFO *)info->file)->fname; - return fr != FR_OK || *info->name == '\0'; -} - -int be_dirclose(bdirinfo *info) -{ - if (info->dir) { - int res = f_closedir(info->dir) != FR_OK; - be_os_free(info->dir); - be_os_free(info->file); - return res; - } - return 1; -} - -#elif defined(_MSC_VER) /* MSVC*/ - -#include -#include -#include - -int be_isdir(const char *path) -{ - DWORD type = GetFileAttributes(path); - return type != INVALID_FILE_ATTRIBUTES - && (type & FILE_ATTRIBUTE_DIRECTORY) != 0; -} - -int be_isfile(const char *path) -{ - DWORD type = GetFileAttributes(path); - return type != INVALID_FILE_ATTRIBUTES - && (type & FILE_ATTRIBUTE_DIRECTORY) == 0; -} - -int be_isexist(const char *path) -{ - return GetFileAttributes(path) != INVALID_FILE_ATTRIBUTES; -} - -char* be_getcwd(char *buf, size_t size) -{ - return _getcwd(buf, (int)size); -} - -int be_chdir(const char *path) -{ - return _chdir(path); -} - -int be_mkdir(const char *path) -{ - return _mkdir(path); -} - -int be_unlink(const char *filename) -{ - return remove(filename); -} - -int be_dirfirst(bdirinfo *info, const char *path) -{ - char *buf = be_os_malloc(strlen(path) + 3); - info->file = be_os_malloc(sizeof(struct _finddata_t)); - info->dir = NULL; - if (buf && info->file) { - struct _finddata_t *cfile = info->file; - strcat(strcpy(buf, path), "/*"); - info->dir = (void *)_findfirst(buf, cfile); - info->name = cfile->name; - be_os_free(buf); - return (intptr_t)info->dir == -1; - } - be_os_free(buf); - return 1; -} - -int be_dirnext(bdirinfo *info) -{ - struct _finddata_t *cfile = info->file; - int res = _findnext((intptr_t)info->dir, cfile) != 0; - info->name = cfile->name; - return res; -} - -int be_dirclose(bdirinfo *info) -{ - be_os_free(info->file); - return _findclose((intptr_t)info->dir) != 0; -} - -#else /* must be POSIX */ - -#include -#include -#include - -int be_isdir(const char *path) -{ - struct stat path_stat; - int res = stat(path, &path_stat); - return res == 0 && S_ISDIR(path_stat.st_mode); -} - -int be_isfile(const char *path) -{ - struct stat path_stat; - int res = stat(path, &path_stat); - return res == 0 && !S_ISDIR(path_stat.st_mode); -} - -int be_isexist(const char *path) -{ - struct stat path_stat; - return stat(path, &path_stat) == 0; -} - -char* be_getcwd(char *buf, size_t size) -{ - return getcwd(buf, size); -} - -int be_chdir(const char *path) -{ - return chdir(path); -} - -int be_mkdir(const char *path) -{ -#ifdef _WIN32 - return mkdir(path); -#else - return mkdir(path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); -#endif -} - -int be_unlink(const char *filename) -{ - return remove(filename); -} - -int be_dirfirst(bdirinfo *info, const char *path) -{ - info->dir = opendir(path); - if (info->dir) { - return be_dirnext(info); - } - return 1; -} - -int be_dirnext(bdirinfo *info) -{ - struct dirent *file; - info->file = file = readdir(info->dir); - if (file) { - info->name = file->d_name; - return 0; - } - return 1; -} - -int be_dirclose(bdirinfo *info) -{ - return closedir(info->dir) != 0; -} - -#endif /* POSIX */ -#endif /* BE_USE_OS_MODULE || BE_USE_FILE_SYSTEM */ diff --git a/lib/libesp32/berry/default/be_python_compat.c b/lib/libesp32/berry/default/be_python_compat.c deleted file mode 100644 index 5b3ec64d0..000000000 --- a/lib/libesp32/berry/default/be_python_compat.c +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************** - * Berry python compatibility module - * - * `import python_compat` - *******************************************************************/ -#include "be_constobj.h" - -/******************************************************************** -** Solidified function: _anonymous_ -********************************************************************/ -be_local_closure(python_compat__anonymous_, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(global), - /* K1 */ be_nested_str(True), - /* K2 */ be_nested_str(False), - /* K3 */ be_nested_str(None), - /* K4 */ be_nested_str(b), - }), - &be_const_str__anonymous_, - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x50080200, // 0001 LDBOOL R2 1 0 - 0x90060202, // 0002 SETMBR R1 K1 R2 - 0x50080000, // 0003 LDBOOL R2 0 0 - 0x90060402, // 0004 SETMBR R1 K2 R2 - 0x4C080000, // 0005 LDNIL R2 - 0x90060602, // 0006 SETMBR R1 K3 R2 - 0x60080015, // 0007 GETGBL R2 G21 - 0x90060802, // 0008 SETMBR R1 K4 R2 - 0x80040000, // 0009 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified module: python_compat -********************************************************************/ -be_local_module(python_compat, - "python_compat", - be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(init, -1), be_const_closure(python_compat__anonymous__closure) }, - })) -); -BE_EXPORT_VARIABLE be_define_const_native_module(python_compat); -/********************************************************************/ diff --git a/lib/libesp32/berry/default/be_re_lib.c b/lib/libesp32/berry/default/be_re_lib.c deleted file mode 100644 index bc28c0e67..000000000 --- a/lib/libesp32/berry/default/be_re_lib.c +++ /dev/null @@ -1,254 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * To use: `import re` - * - * Regex using re1.5 - *******************************************************************/ -#include "be_constobj.h" -#include "be_mem.h" -#include "re1.5.h" - -/******************************************************************** -# Berry skeleton for `re` module -# - -class re_pattern - var _p # comobj containing the compiled bytecode for the pattern - - def search() end - def match() end - def split() end -end - -re = module("re") - -re.compile = def (regex_str) end # native -re.match = def (regex_str, str) end # native -re.search = def (regex_str, str) end # native -re.split = def (regex_str, str) end # native - - -*******************************************************************/ - -extern const bclass be_class_re_pattern; - -int be_free_comobj(bvm* vm) { - int argc = be_top(vm); - if (argc > 0) { - void * obj = be_tocomptr(vm, 1); - if (obj != NULL) { be_os_free(obj); } - } - be_return_nil(vm); -} - -// Native functions be_const_func() -// Berry: `re.compile(pattern:string) -> instance(be_pattern)` -int be_re_compile(bvm *vm) { - int32_t argc = be_top(vm); // Get the number of arguments - if (argc >= 1 && be_isstring(vm, 1)) { - const char * regex_str = be_tostring(vm, 1); - int sz = re1_5_sizecode(regex_str); - if (sz < 0) { - be_raise(vm, "internal_error", "error in regex"); - } - - ByteProg *code = be_os_malloc(sizeof(ByteProg) + sz); - int ret = re1_5_compilecode(code, regex_str); - if (ret != 0) { - be_raise(vm, "internal_error", "error in regex"); - } - be_pushntvclass(vm, &be_class_re_pattern); - be_call(vm, 0); - be_newcomobj(vm, code, &be_free_comobj); - be_setmember(vm, -2, "_p"); - be_pop(vm, 1); - be_return(vm); - } - be_raise(vm, "type_error", NULL); -} - - -int be_re_match_search_run(bvm *vm, ByteProg *code, const char *hay, bbool is_anchored) { - Subject subj = {hay, hay + strlen(hay)}; - - int sub_els = (code->sub + 1) * 2; - const char *sub[sub_els]; - - if (!re1_5_recursiveloopprog(code, &subj, sub, sub_els, is_anchored)) { - be_return_nil(vm); // no match - } - - be_newobject(vm, "list"); - int k; - for(k = sub_els; k > 0; k--) - if(sub[k-1]) - break; - for (int i = 0; i < k; i += 2) { - be_pushnstring(vm, sub[i], sub[i+1] - sub[i]); - be_data_push(vm, -2); - be_pop(vm, 1); - } - be_pop(vm, 1); // remove list - be_return(vm); // return list object -} - -int be_re_match_search(bvm *vm, bbool is_anchored) { - int32_t argc = be_top(vm); // Get the number of arguments - if (argc >= 2 && be_isstring(vm, 1) && be_isstring(vm, 2)) { - const char * regex_str = be_tostring(vm, 1); - const char * hay = be_tostring(vm, 2); - int sz = re1_5_sizecode(regex_str); - if (sz < 0) { - be_raise(vm, "internal_error", "error in regex"); - } - - ByteProg *code = be_os_malloc(sizeof(ByteProg) + sz); - int ret = re1_5_compilecode(code, regex_str); - if (ret != 0) { - be_raise(vm, "internal_error", "error in regex"); - } - return be_re_match_search_run(vm, code, hay, is_anchored); - } - be_raise(vm, "type_error", NULL); -} - -// Berry: `re.match(value:int | s:string) -> nil` -int be_re_match(bvm *vm) { - return be_re_match_search(vm, btrue); -} -// Berry: `re.search(value:int | s:string) -> nil` -int be_re_search(bvm *vm) { - return be_re_match_search(vm, bfalse); -} - -// Berry: `re_pattern.search(s:string) -> list(string)` -int re_pattern_search(bvm *vm) { - int32_t argc = be_top(vm); // Get the number of arguments - if (argc >= 2 && be_isstring(vm, 2)) { - const char * hay = be_tostring(vm, 2); - be_getmember(vm, 1, "_p"); - ByteProg * code = (ByteProg*) be_tocomptr(vm, -1); - return be_re_match_search_run(vm, code, hay, bfalse); - } - be_raise(vm, "type_error", NULL); -} - -// Berry: `re_pattern.match(s:string) -> list(string)` -int re_pattern_match(bvm *vm) { - int32_t argc = be_top(vm); // Get the number of arguments - if (argc >= 2 && be_isstring(vm, 2)) { - const char * hay = be_tostring(vm, 2); - be_getmember(vm, 1, "_p"); - ByteProg * code = (ByteProg*) be_tocomptr(vm, -1); - return be_re_match_search_run(vm, code, hay, btrue); - } - be_raise(vm, "type_error", NULL); -} - - -int re_pattern_split_run(bvm *vm, ByteProg *code, const char *hay, int split_limit) { - Subject subj = {hay, hay + strlen(hay)}; - - int sub_els = (code->sub + 1) * 2; - const char *sub[sub_els]; - - be_newobject(vm, "list"); - while (1) { - if (split_limit == 0 || !re1_5_recursiveloopprog(code, &subj, sub, sub_els, bfalse)) { - be_pushnstring(vm, subj.begin, subj.end - subj.begin); - be_data_push(vm, -2); - be_pop(vm, 1); - break; - } - - if (sub[0] == NULL || sub[1] == NULL || sub[0] == sub[1]) { - be_raise(vm, "internal_error", "can't match"); - } - be_pushnstring(vm, subj.begin, sub[0] - subj.begin); - be_data_push(vm, -2); - be_pop(vm, 1); - subj.begin = sub[1]; - split_limit--; - } - be_pop(vm, 1); // remove list - be_return(vm); // return list object -} - -// Berry: `re_pattern.split(s:string [, split_limit:int]) -> list(string)` -int re_pattern_split(bvm *vm) { - int32_t argc = be_top(vm); // Get the number of arguments - if (argc >= 2 && be_isstring(vm, 2)) { - int split_limit = -1; - if (argc >= 3) { - split_limit = be_toint(vm, 3); - } - const char * hay = be_tostring(vm, 2); - be_getmember(vm, 1, "_p"); - ByteProg * code = (ByteProg*) be_tocomptr(vm, -1); - - return re_pattern_split_run(vm, code, hay, split_limit); - } - be_raise(vm, "type_error", NULL); -} - -// Berry: `re.split(pattern:string, s:string [, split_limit:int]) -> list(string)` -int be_re_split(bvm *vm) { - int32_t argc = be_top(vm); // Get the number of arguments - if (argc >= 2 && be_isstring(vm, 1) && be_isstring(vm, 2)) { - const char * regex_str = be_tostring(vm, 1); - const char * hay = be_tostring(vm, 2); - int split_limit = -1; - if (argc >= 3) { - split_limit = be_toint(vm, 3); - } - int sz = re1_5_sizecode(regex_str); - if (sz < 0) { - be_raise(vm, "internal_error", "error in regex"); - } - - ByteProg *code = be_os_malloc(sizeof(ByteProg) + sz); - int ret = re1_5_compilecode(code, regex_str); - if (ret != 0) { - be_raise(vm, "internal_error", "error in regex"); - } - return re_pattern_split_run(vm, code, hay, split_limit); - } - be_raise(vm, "type_error", NULL); -} - -/******************************************************************** -** Solidified module: re -********************************************************************/ -be_local_module(re, - "re", - be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("compile", 1000265118, 7, -1), be_const_func(be_re_compile) }, - { be_nested_key("search", -2144130903, 6, -1), be_const_func(be_re_search) }, - { be_nested_key("match", 2116038550, 5, 0), be_const_func(be_re_match) }, - { be_nested_key("split", -2017972765, 5, -1), be_const_func(be_re_split) }, - })) -); -BE_EXPORT_VARIABLE be_define_const_native_module(re); -/********************************************************************/ - -// =================================================================== - -/******************************************************************** -** Solidified class: re_pattern -********************************************************************/ -be_local_class(re_pattern, - 1, - NULL, - be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("_p", 1594591802, 2, -1), be_const_var(0) }, - { be_nested_key("search", -2144130903, 6, -1), be_const_func(re_pattern_search) }, - { be_nested_key("match", 2116038550, 5, 0), be_const_func(re_pattern_match) }, - { be_nested_key("split", -2017972765, 5, -1), be_const_func(re_pattern_split) }, - })), - (be_nested_const_str("re_pattern", 2041968961, 10)) -); -/*******************************************************************/ - diff --git a/lib/libesp32/berry/default/be_serial_lib.c b/lib/libesp32/berry/default/be_serial_lib.c deleted file mode 100644 index 4f1c4b577..000000000 --- a/lib/libesp32/berry/default/be_serial_lib.c +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * To use: `import wire` - * - * 2 wire communication - I2C - *******************************************************************/ -#include "be_constobj.h" - -#include "esp32-hal.h" - -extern int b_serial_init(bvm *vm); -extern int b_serial_deinit(bvm *vm); - -extern int b_serial_write(bvm *vm); -extern int b_serial_read(bvm *vm); -extern int b_serial_available(bvm *vm); -extern int b_serial_flush(bvm *vm); - -#include "../generate/be_fixed_be_class_tasmota_serial.h" - -void be_load_serial_lib(bvm *vm) { - be_pushntvclass(vm, &be_class_tasmota_serial); - be_setglobal(vm, "serial"); - be_pop(vm, 1); -} - -/* @const_object_info_begin - -class be_class_tasmota_serial (scope: global, name: serial) { - .p, var - - SERIAL_5N1, int(SERIAL_5N1) - SERIAL_6N1, int(SERIAL_6N1) - SERIAL_7N1, int(SERIAL_7N1) - SERIAL_8N1, int(SERIAL_8N1) - SERIAL_5N2, int(SERIAL_5N2) - SERIAL_6N2, int(SERIAL_6N2) - SERIAL_7N2, int(SERIAL_7N2) - SERIAL_8N2, int(SERIAL_8N2) - SERIAL_5E1, int(SERIAL_5E1) - SERIAL_6E1, int(SERIAL_6E1) - SERIAL_7E1, int(SERIAL_7E1) - SERIAL_8E1, int(SERIAL_8E1) - SERIAL_5E2, int(SERIAL_5E2) - SERIAL_6E2, int(SERIAL_6E2) - SERIAL_7E2, int(SERIAL_7E2) - SERIAL_8E2, int(SERIAL_8E2) - SERIAL_5O1, int(SERIAL_5O1) - SERIAL_6O1, int(SERIAL_6O1) - SERIAL_7O1, int(SERIAL_7O1) - SERIAL_8O1, int(SERIAL_8O1) - SERIAL_5O2, int(SERIAL_5O2) - SERIAL_6O2, int(SERIAL_6O2) - SERIAL_7O2, int(SERIAL_7O2) - SERIAL_8O2, int(SERIAL_8O2) - - init, func(b_serial_init) - deinit, func(b_serial_deinit) - - write, func(b_serial_write) - read, func(b_serial_read) - available, func(b_serial_available) - flush, func(b_serial_flush) -} -@const_object_info_end */ diff --git a/lib/libesp32/berry/default/be_tapp_lib.c b/lib/libesp32/berry/default/be_tapp_lib.c deleted file mode 100644 index 1a312d110..000000000 --- a/lib/libesp32/berry/default/be_tapp_lib.c +++ /dev/null @@ -1,168 +0,0 @@ -/******************************************************************** - * Tasmota App manager - * - * To use: `import tapp` - * - *******************************************************************/ -#include "be_constobj.h" - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Tapp_init, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(add_driver), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: autoexec -********************************************************************/ -be_local_closure(Tapp_autoexec, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str(path), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(listdir), - /* K3 */ be_nested_str(_X2F), - /* K4 */ be_nested_str(find), - /* K5 */ be_nested_str(_X2Etapp), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str(tasmota), - /* K8 */ be_nested_str(log), - /* K9 */ be_nested_str(format), - /* K10 */ be_nested_str(TAP_X3A_X20found_X20Tasmota_X20App_X20_X27_X25s_X27), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str(load), - /* K13 */ be_nested_str(_X23autoexec_X2Ebe), - /* K14 */ be_nested_str(stop_iteration), - }), - &be_const_str_autoexec, - &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0302, // 0002 GETMET R3 R1 K2 - 0x58140003, // 0003 LDCONST R5 K3 - 0x7C0C0400, // 0004 CALL R3 2 - 0x60100010, // 0005 GETGBL R4 G16 - 0x5C140600, // 0006 MOVE R5 R3 - 0x7C100200, // 0007 CALL R4 1 - 0xA8020014, // 0008 EXBLK 0 #001E - 0x5C140800, // 0009 MOVE R5 R4 - 0x7C140000, // 000A CALL R5 0 - 0x8C180504, // 000B GETMET R6 R2 K4 - 0x5C200A00, // 000C MOVE R8 R5 - 0x58240005, // 000D LDCONST R9 K5 - 0x7C180600, // 000E CALL R6 3 - 0x24180D06, // 000F GT R6 R6 K6 - 0x781A000B, // 0010 JMPF R6 #001D - 0xB81A0E00, // 0011 GETNGBL R6 K7 - 0x8C180D08, // 0012 GETMET R6 R6 K8 - 0x8C200509, // 0013 GETMET R8 R2 K9 - 0x5828000A, // 0014 LDCONST R10 K10 - 0x5C2C0A00, // 0015 MOVE R11 R5 - 0x7C200600, // 0016 CALL R8 3 - 0x5824000B, // 0017 LDCONST R9 K11 - 0x7C180600, // 0018 CALL R6 3 - 0xB81A0E00, // 0019 GETNGBL R6 K7 - 0x8C180D0C, // 001A GETMET R6 R6 K12 - 0x00200B0D, // 001B ADD R8 R5 K13 - 0x7C180400, // 001C CALL R6 2 - 0x7001FFEA, // 001D JMP #0009 - 0x5810000E, // 001E LDCONST R4 K14 - 0xAC100200, // 001F CATCH R4 1 0 - 0xB0080000, // 0020 RAISE 2 R0 R0 - 0x80000000, // 0021 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Tapp -********************************************************************/ -be_local_class(Tapp, - 0, - NULL, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(autoexec, -1), be_const_closure(Tapp_autoexec_closure) }, - { be_const_key(init, 0), be_const_closure(Tapp_init_closure) }, - })), - be_str_literal("Tapp") -); - -/******************************************************************** -** Solidified function: _anonymous_ -********************************************************************/ -be_local_closure(tapp__anonymous_, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_const_class(be_class_Tapp), - }), - &be_const_str__anonymous_, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0xB4000000, // 0001 CLASS K0 - 0x5C080200, // 0002 MOVE R2 R1 - 0x7C080000, // 0003 CALL R2 0 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified module: tapp -********************************************************************/ -be_local_module(tapp, - "tapp", - be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(init, -1), be_const_closure(tapp__anonymous__closure) }, - })) -); -BE_EXPORT_VARIABLE be_define_const_native_module(tapp); -/********************************************************************/ diff --git a/lib/libesp32/berry/default/be_tasmotalib.c b/lib/libesp32/berry/default/be_tasmotalib.c deleted file mode 100644 index 6539b0de3..000000000 --- a/lib/libesp32/berry/default/be_tasmotalib.c +++ /dev/null @@ -1,2079 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * To use: `import tasmota` - *******************************************************************/ -#include "be_constobj.h" - -struct dummy_struct {}; // we need a struct name but don't need any meaningful content, we just take the address -extern struct TasmotaGlobal_t TasmotaGlobal; -extern struct TSettings * Settings; -extern struct dummy_struct be_tasmota_global_struct; -extern struct dummy_struct be_tasmota_settings_struct; - -extern int l_getFreeHeap(bvm *vm); -extern int l_arch(bvm *vm); -extern int l_publish(bvm *vm); -extern int l_publish_result(bvm *vm); -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_strftime(bvm *vm); -extern int l_strptime(bvm *vm); -extern int l_memory(bvm *vm); -extern int l_wifi(bvm *vm); -extern int l_eth(bvm *vm); -extern int l_yield(bvm *vm); -extern int l_delay(bvm *vm); -extern int l_scaleuint(bvm *vm); -extern int l_logInfo(bvm *vm); -extern int l_save(bvm *vm); - -extern int l_read_sensors(bvm *vm); - -extern int l_respCmnd(bvm *vm); -extern int l_respCmndStr(bvm *vm); -extern int l_respCmndDone(bvm *vm); -extern int l_respCmndError(bvm *vm); -extern int l_respCmndFailed(bvm *vm); -extern int l_resolveCmnd(bvm *vm); - -extern int l_respAppend(bvm *vm); -extern int l_webSend(bvm *vm); -extern int l_webSendDecimal(bvm *vm); - -extern int l_getlight(bvm *vm); -extern int l_setlight(bvm *vm); -extern int l_getpower(bvm *vm); -extern int l_setpower(bvm *vm); -extern int l_getswitch(bvm *vm); - -extern int l_i2cenabled(bvm *vm); - - -/******************************************************************** -** Solidified function: add_driver -********************************************************************/ -be_local_closure(Tasmota_add_driver, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_drivers), - /* K1 */ be_nested_str(push), - }), - &be_const_str_add_driver, - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0004, // 0001 JMPF R2 #0007 - 0x88080100, // 0002 GETMBR R2 R0 K0 - 0x8C080501, // 0003 GETMET R2 R2 K1 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x70020003, // 0006 JMP #000B - 0x60080012, // 0007 GETGBL R2 G18 - 0x7C080000, // 0008 CALL R2 0 - 0x400C0401, // 0009 CONNECT R3 R2 R1 - 0x90020002, // 000A SETMBR R0 K0 R2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: gc -********************************************************************/ -be_local_closure(Tasmota_gc, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(gc), - /* K1 */ be_nested_str(collect), - /* K2 */ be_nested_str(allocated), - }), - &be_const_str_gc, - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_op -********************************************************************/ -be_local_closure(Tasmota_find_op, /* name */ - be_nested_proto( - 13, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(_X3D_X3C_X3E_X21), - /* K2 */ be_nested_str(chars_in_string), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str(split), - /* K5 */ be_const_int(1), - }), - &be_const_str_find_op, - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x8C100102, // 0002 GETMET R4 R0 K2 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0600, // 0004 MOVE R7 R3 - 0x7C100600, // 0005 CALL R4 3 - 0x28140903, // 0006 GE R5 R4 K3 - 0x78160019, // 0007 JMPF R5 #0022 - 0x8C140504, // 0008 GETMET R5 R2 K4 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x5C200800, // 000A MOVE R8 R4 - 0x7C140600, // 000B CALL R5 3 - 0x94180B03, // 000C GETIDX R6 R5 K3 - 0x941C0B05, // 000D GETIDX R7 R5 K5 - 0x8C200102, // 000E GETMET R8 R0 K2 - 0x5C280E00, // 000F MOVE R10 R7 - 0x5C2C0600, // 0010 MOVE R11 R3 - 0x50300200, // 0011 LDBOOL R12 1 0 - 0x7C200800, // 0012 CALL R8 4 - 0x5C101000, // 0013 MOVE R4 R8 - 0x28200903, // 0014 GE R8 R4 K3 - 0x7822000B, // 0015 JMPF R8 #0022 - 0x8C200504, // 0016 GETMET R8 R2 K4 - 0x5C280E00, // 0017 MOVE R10 R7 - 0x5C2C0800, // 0018 MOVE R11 R4 - 0x7C200600, // 0019 CALL R8 3 - 0x94241103, // 001A GETIDX R9 R8 K3 - 0x94281105, // 001B GETIDX R10 R8 K5 - 0x602C0012, // 001C GETGBL R11 G18 - 0x7C2C0000, // 001D CALL R11 0 - 0x40301606, // 001E CONNECT R12 R11 R6 - 0x40301609, // 001F CONNECT R12 R11 R9 - 0x4030160A, // 0020 CONNECT R12 R11 R10 - 0x80041600, // 0021 RET 1 R11 - 0x60140012, // 0022 GETGBL R5 G18 - 0x7C140000, // 0023 CALL R5 0 - 0x40180A01, // 0024 CONNECT R6 R5 R1 - 0x4C180000, // 0025 LDNIL R6 - 0x40180A06, // 0026 CONNECT R6 R5 R6 - 0x4C180000, // 0027 LDNIL R6 - 0x40180A06, // 0028 CONNECT R6 R5 R6 - 0x80040A00, // 0029 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: try_rule -********************************************************************/ -be_local_closure(Tasmota_try_rule, /* name */ - be_nested_proto( - 15, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(find_op), - /* K2 */ be_nested_str(split), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str(_X23), - /* K5 */ be_nested_str(find_key_i), - /* K6 */ be_const_int(1), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str(_X3D_X3D), - /* K9 */ be_nested_str(_X21_X3D_X3D), - /* K10 */ be_nested_str(_X3D), - /* K11 */ be_nested_str(_X21_X3D), - /* K12 */ be_nested_str(_X3E), - /* K13 */ be_nested_str(_X3E_X3D), - /* K14 */ be_nested_str(_X3C), - /* K15 */ be_nested_str(_X3C_X3D), - }), - &be_const_str_try_rule, - &be_const_str_solidified, - ( &(const binstruction[141]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x8C140101, // 0001 GETMET R5 R0 K1 - 0x5C1C0400, // 0002 MOVE R7 R2 - 0x7C140400, // 0003 CALL R5 2 - 0x5C180200, // 0004 MOVE R6 R1 - 0x8C1C0902, // 0005 GETMET R7 R4 K2 - 0x94240B03, // 0006 GETIDX R9 R5 K3 - 0x58280004, // 0007 LDCONST R10 K4 - 0x7C1C0600, // 0008 CALL R7 3 - 0x58200003, // 0009 LDCONST R8 K3 - 0x6024000C, // 000A GETGBL R9 G12 - 0x5C280E00, // 000B MOVE R10 R7 - 0x7C240200, // 000C CALL R9 1 - 0x14241009, // 000D LT R9 R8 R9 - 0x7826000C, // 000E JMPF R9 #001C - 0x94240E08, // 000F GETIDX R9 R7 R8 - 0x8C280105, // 0010 GETMET R10 R0 K5 - 0x5C300C00, // 0011 MOVE R12 R6 - 0x5C341200, // 0012 MOVE R13 R9 - 0x7C280600, // 0013 CALL R10 3 - 0x4C2C0000, // 0014 LDNIL R11 - 0x1C2C140B, // 0015 EQ R11 R10 R11 - 0x782E0001, // 0016 JMPF R11 #0019 - 0x502C0000, // 0017 LDBOOL R11 0 0 - 0x80041600, // 0018 RET 1 R11 - 0x94180C0A, // 0019 GETIDX R6 R6 R10 - 0x00201106, // 001A ADD R8 R8 K6 - 0x7001FFED, // 001B JMP #000A - 0x94240B06, // 001C GETIDX R9 R5 K6 - 0x94280B07, // 001D GETIDX R10 R5 K7 - 0x78260066, // 001E JMPF R9 #0086 - 0x1C2C1308, // 001F EQ R11 R9 K8 - 0x782E000A, // 0020 JMPF R11 #002C - 0x602C0008, // 0021 GETGBL R11 G8 - 0x5C300C00, // 0022 MOVE R12 R6 - 0x7C2C0200, // 0023 CALL R11 1 - 0x60300008, // 0024 GETGBL R12 G8 - 0x5C341400, // 0025 MOVE R13 R10 - 0x7C300200, // 0026 CALL R12 1 - 0x202C160C, // 0027 NE R11 R11 R12 - 0x782E0001, // 0028 JMPF R11 #002B - 0x502C0000, // 0029 LDBOOL R11 0 0 - 0x80041600, // 002A RET 1 R11 - 0x70020059, // 002B JMP #0086 - 0x1C2C1309, // 002C EQ R11 R9 K9 - 0x782E000A, // 002D JMPF R11 #0039 - 0x602C0008, // 002E GETGBL R11 G8 - 0x5C300C00, // 002F MOVE R12 R6 - 0x7C2C0200, // 0030 CALL R11 1 - 0x60300008, // 0031 GETGBL R12 G8 - 0x5C341400, // 0032 MOVE R13 R10 - 0x7C300200, // 0033 CALL R12 1 - 0x1C2C160C, // 0034 EQ R11 R11 R12 - 0x782E0001, // 0035 JMPF R11 #0038 - 0x502C0000, // 0036 LDBOOL R11 0 0 - 0x80041600, // 0037 RET 1 R11 - 0x7002004C, // 0038 JMP #0086 - 0x1C2C130A, // 0039 EQ R11 R9 K10 - 0x782E000A, // 003A JMPF R11 #0046 - 0x602C000A, // 003B GETGBL R11 G10 - 0x5C300C00, // 003C MOVE R12 R6 - 0x7C2C0200, // 003D CALL R11 1 - 0x6030000A, // 003E GETGBL R12 G10 - 0x5C341400, // 003F MOVE R13 R10 - 0x7C300200, // 0040 CALL R12 1 - 0x202C160C, // 0041 NE R11 R11 R12 - 0x782E0001, // 0042 JMPF R11 #0045 - 0x502C0000, // 0043 LDBOOL R11 0 0 - 0x80041600, // 0044 RET 1 R11 - 0x7002003F, // 0045 JMP #0086 - 0x1C2C130B, // 0046 EQ R11 R9 K11 - 0x782E000A, // 0047 JMPF R11 #0053 - 0x602C000A, // 0048 GETGBL R11 G10 - 0x5C300C00, // 0049 MOVE R12 R6 - 0x7C2C0200, // 004A CALL R11 1 - 0x6030000A, // 004B GETGBL R12 G10 - 0x5C341400, // 004C MOVE R13 R10 - 0x7C300200, // 004D CALL R12 1 - 0x1C2C160C, // 004E EQ R11 R11 R12 - 0x782E0001, // 004F JMPF R11 #0052 - 0x502C0000, // 0050 LDBOOL R11 0 0 - 0x80041600, // 0051 RET 1 R11 - 0x70020032, // 0052 JMP #0086 - 0x1C2C130C, // 0053 EQ R11 R9 K12 - 0x782E000A, // 0054 JMPF R11 #0060 - 0x602C000A, // 0055 GETGBL R11 G10 - 0x5C300C00, // 0056 MOVE R12 R6 - 0x7C2C0200, // 0057 CALL R11 1 - 0x6030000A, // 0058 GETGBL R12 G10 - 0x5C341400, // 0059 MOVE R13 R10 - 0x7C300200, // 005A CALL R12 1 - 0x182C160C, // 005B LE R11 R11 R12 - 0x782E0001, // 005C JMPF R11 #005F - 0x502C0000, // 005D LDBOOL R11 0 0 - 0x80041600, // 005E RET 1 R11 - 0x70020025, // 005F JMP #0086 - 0x1C2C130D, // 0060 EQ R11 R9 K13 - 0x782E000A, // 0061 JMPF R11 #006D - 0x602C000A, // 0062 GETGBL R11 G10 - 0x5C300C00, // 0063 MOVE R12 R6 - 0x7C2C0200, // 0064 CALL R11 1 - 0x6030000A, // 0065 GETGBL R12 G10 - 0x5C341400, // 0066 MOVE R13 R10 - 0x7C300200, // 0067 CALL R12 1 - 0x142C160C, // 0068 LT R11 R11 R12 - 0x782E0001, // 0069 JMPF R11 #006C - 0x502C0000, // 006A LDBOOL R11 0 0 - 0x80041600, // 006B RET 1 R11 - 0x70020018, // 006C JMP #0086 - 0x1C2C130E, // 006D EQ R11 R9 K14 - 0x782E000A, // 006E JMPF R11 #007A - 0x602C000A, // 006F GETGBL R11 G10 - 0x5C300C00, // 0070 MOVE R12 R6 - 0x7C2C0200, // 0071 CALL R11 1 - 0x6030000A, // 0072 GETGBL R12 G10 - 0x5C341400, // 0073 MOVE R13 R10 - 0x7C300200, // 0074 CALL R12 1 - 0x282C160C, // 0075 GE R11 R11 R12 - 0x782E0001, // 0076 JMPF R11 #0079 - 0x502C0000, // 0077 LDBOOL R11 0 0 - 0x80041600, // 0078 RET 1 R11 - 0x7002000B, // 0079 JMP #0086 - 0x1C2C130F, // 007A EQ R11 R9 K15 - 0x782E0009, // 007B JMPF R11 #0086 - 0x602C000A, // 007C GETGBL R11 G10 - 0x5C300C00, // 007D MOVE R12 R6 - 0x7C2C0200, // 007E CALL R11 1 - 0x6030000A, // 007F GETGBL R12 G10 - 0x5C341400, // 0080 MOVE R13 R10 - 0x7C300200, // 0081 CALL R12 1 - 0x242C160C, // 0082 GT R11 R11 R12 - 0x782E0001, // 0083 JMPF R11 #0086 - 0x502C0000, // 0084 LDBOOL R11 0 0 - 0x80041600, // 0085 RET 1 R11 - 0x5C2C0600, // 0086 MOVE R11 R3 - 0x5C300C00, // 0087 MOVE R12 R6 - 0x94340B03, // 0088 GETIDX R13 R5 K3 - 0x5C380200, // 0089 MOVE R14 R1 - 0x7C2C0600, // 008A CALL R11 3 - 0x502C0200, // 008B LDBOOL R11 1 0 - 0x80041600, // 008C RET 1 R11 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: gen_cb -********************************************************************/ -be_local_closure(Tasmota_gen_cb, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(cb), - /* K1 */ be_nested_str(gen_cb), - }), - &be_const_str_gen_cb, - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x80040600, // 0004 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_light -********************************************************************/ -be_local_closure(Tasmota_set_light, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(tasmota_X2Eset_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eset_X28_X29), - /* K1 */ be_nested_str(light), - /* K2 */ be_nested_str(set), - }), - &be_const_str_set_light, - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x600C0001, // 0000 GETGBL R3 G1 - 0x58100000, // 0001 LDCONST R4 K0 - 0x7C0C0200, // 0002 CALL R3 1 - 0xA40E0200, // 0003 IMPORT R3 K1 - 0x4C100000, // 0004 LDNIL R4 - 0x20100404, // 0005 NE R4 R2 R4 - 0x78120005, // 0006 JMPF R4 #000D - 0x8C100702, // 0007 GETMET R4 R3 K2 - 0x5C180200, // 0008 MOVE R6 R1 - 0x5C1C0400, // 0009 MOVE R7 R2 - 0x7C100600, // 000A CALL R4 3 - 0x80040800, // 000B RET 1 R4 - 0x70020003, // 000C JMP #0011 - 0x8C100702, // 000D GETMET R4 R3 K2 - 0x5C180200, // 000E MOVE R6 R1 - 0x7C100400, // 000F CALL R4 2 - 0x80040800, // 0010 RET 1 R4 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: exec_tele -********************************************************************/ -be_local_closure(Tasmota_exec_tele, /* name */ - be_nested_proto( - 12, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(_rules), - /* K1 */ be_nested_str(json), - /* K2 */ be_nested_str(load), - /* K3 */ be_nested_str(log), - /* K4 */ be_nested_str(BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str(Tele), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str(try_rule), - /* K9 */ be_nested_str(k), - /* K10 */ be_nested_str(v), - /* K11 */ be_const_int(1), - }), - &be_const_str_exec_tele, - &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0024, // 0001 JMPF R2 #0027 - 0xA40A0200, // 0002 IMPORT R2 K1 - 0x8C0C0502, // 0003 GETMET R3 R2 K2 - 0x5C140200, // 0004 MOVE R5 R1 - 0x7C0C0400, // 0005 CALL R3 2 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x4C140000, // 0007 LDNIL R5 - 0x1C140605, // 0008 EQ R5 R3 R5 - 0x78160004, // 0009 JMPF R5 #000F - 0x8C140103, // 000A GETMET R5 R0 K3 - 0x001E0801, // 000B ADD R7 K4 R1 - 0x58200005, // 000C LDCONST R8 K5 - 0x7C140600, // 000D CALL R5 3 - 0x5C0C0200, // 000E MOVE R3 R1 - 0x60140013, // 000F GETGBL R5 G19 - 0x7C140000, // 0010 CALL R5 0 - 0x98160C03, // 0011 SETIDX R5 K6 R3 - 0x5C0C0A00, // 0012 MOVE R3 R5 - 0x58140007, // 0013 LDCONST R5 K7 - 0x6018000C, // 0014 GETGBL R6 G12 - 0x881C0100, // 0015 GETMBR R7 R0 K0 - 0x7C180200, // 0016 CALL R6 1 - 0x14180A06, // 0017 LT R6 R5 R6 - 0x781A000C, // 0018 JMPF R6 #0026 - 0x88180100, // 0019 GETMBR R6 R0 K0 - 0x94180C05, // 001A GETIDX R6 R6 R5 - 0x8C1C0108, // 001B GETMET R7 R0 K8 - 0x5C240600, // 001C MOVE R9 R3 - 0x88280D09, // 001D GETMBR R10 R6 K9 - 0x882C0D0A, // 001E GETMBR R11 R6 K10 - 0x7C1C0800, // 001F CALL R7 4 - 0x741E0001, // 0020 JMPT R7 #0023 - 0x74120000, // 0021 JMPT R4 #0023 - 0x50100001, // 0022 LDBOOL R4 0 1 - 0x50100200, // 0023 LDBOOL R4 1 0 - 0x00140B0B, // 0024 ADD R5 R5 K11 - 0x7001FFED, // 0025 JMP #0014 - 0x80040800, // 0026 RET 1 R4 - 0x50080000, // 0027 LDBOOL R2 0 0 - 0x80040400, // 0028 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: run_deferred -********************************************************************/ -be_local_closure(Tasmota_run_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str(_timers), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(size), - /* K3 */ be_nested_str(time_reached), - /* K4 */ be_nested_str(due), - /* K5 */ be_nested_str(f), - /* K6 */ be_nested_str(remove), - /* K7 */ be_const_int(1), - }), - &be_const_str_run_deferred, - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060017, // 0001 JMPF R1 #001A - 0x58040001, // 0002 LDCONST R1 K1 - 0x88080100, // 0003 GETMBR R2 R0 K0 - 0x8C080502, // 0004 GETMET R2 R2 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x14080202, // 0006 LT R2 R1 R2 - 0x780A0011, // 0007 JMPF R2 #001A - 0x8C080103, // 0008 GETMET R2 R0 K3 - 0x88100100, // 0009 GETMBR R4 R0 K0 - 0x94100801, // 000A GETIDX R4 R4 R1 - 0x88100904, // 000B GETMBR R4 R4 K4 - 0x7C080400, // 000C CALL R2 2 - 0x780A0009, // 000D JMPF R2 #0018 - 0x88080100, // 000E GETMBR R2 R0 K0 - 0x94080401, // 000F GETIDX R2 R2 R1 - 0x88080505, // 0010 GETMBR R2 R2 K5 - 0x880C0100, // 0011 GETMBR R3 R0 K0 - 0x8C0C0706, // 0012 GETMET R3 R3 K6 - 0x5C140200, // 0013 MOVE R5 R1 - 0x7C0C0400, // 0014 CALL R3 2 - 0x5C0C0400, // 0015 MOVE R3 R2 - 0x7C0C0000, // 0016 CALL R3 0 - 0x70020000, // 0017 JMP #0019 - 0x00040307, // 0018 ADD R1 R1 K7 - 0x7001FFE8, // 0019 JMP #0003 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_driver -********************************************************************/ -be_local_closure(Tasmota_remove_driver, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_drivers), - /* K1 */ be_nested_str(find), - /* K2 */ be_nested_str(pop), - }), - &be_const_str_remove_driver, - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A000A, // 0001 JMPF R2 #000D - 0x88080100, // 0002 GETMBR R2 R0 K0 - 0x8C080501, // 0003 GETMET R2 R2 K1 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x4C0C0000, // 0006 LDNIL R3 - 0x200C0403, // 0007 NE R3 R2 R3 - 0x780E0003, // 0008 JMPF R3 #000D - 0x880C0100, // 0009 GETMBR R3 R0 K0 - 0x8C0C0702, // 000A GETMET R3 R3 K2 - 0x5C140400, // 000B MOVE R5 R2 - 0x7C0C0400, // 000C CALL R3 2 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: event -********************************************************************/ -be_local_closure(Tasmota_event, /* name */ - be_nested_proto( - 20, /* nstack */ - 6, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str(introspect), - /* K1 */ be_nested_str(string), - /* K2 */ be_nested_str(every_50ms), - /* K3 */ be_nested_str(run_deferred), - /* K4 */ be_nested_str(cmd), - /* K5 */ be_nested_str(exec_cmd), - /* K6 */ be_nested_str(tele), - /* K7 */ be_nested_str(exec_tele), - /* K8 */ be_nested_str(rule), - /* K9 */ be_nested_str(exec_rules), - /* K10 */ be_nested_str(gc), - /* K11 */ be_nested_str(_drivers), - /* K12 */ be_const_int(0), - /* K13 */ be_nested_str(get), - /* K14 */ be_nested_str(function), - /* K15 */ be_nested_str(format), - /* K16 */ be_nested_str(BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s), - /* K17 */ be_nested_str(debug), - /* K18 */ be_nested_str(traceback), - /* K19 */ be_const_int(1), - /* K20 */ be_nested_str(save_before_restart), - /* K21 */ be_nested_str(persist), - /* K22 */ be_nested_str(save), - }), - &be_const_str_event, - &be_const_str_solidified, - ( &(const binstruction[91]) { /* code */ - 0xA41A0000, // 0000 IMPORT R6 K0 - 0xA41E0200, // 0001 IMPORT R7 K1 - 0x1C200302, // 0002 EQ R8 R1 K2 - 0x78220001, // 0003 JMPF R8 #0006 - 0x8C200103, // 0004 GETMET R8 R0 K3 - 0x7C200200, // 0005 CALL R8 1 - 0x50200000, // 0006 LDBOOL R8 0 0 - 0x1C240304, // 0007 EQ R9 R1 K4 - 0x78260006, // 0008 JMPF R9 #0010 - 0x8C240105, // 0009 GETMET R9 R0 K5 - 0x5C2C0400, // 000A MOVE R11 R2 - 0x5C300600, // 000B MOVE R12 R3 - 0x5C340800, // 000C MOVE R13 R4 - 0x7C240800, // 000D CALL R9 4 - 0x80041200, // 000E RET 1 R9 - 0x70020044, // 000F JMP #0055 - 0x1C240306, // 0010 EQ R9 R1 K6 - 0x78260004, // 0011 JMPF R9 #0017 - 0x8C240107, // 0012 GETMET R9 R0 K7 - 0x5C2C0800, // 0013 MOVE R11 R4 - 0x7C240400, // 0014 CALL R9 2 - 0x80041200, // 0015 RET 1 R9 - 0x7002003D, // 0016 JMP #0055 - 0x1C240308, // 0017 EQ R9 R1 K8 - 0x78260004, // 0018 JMPF R9 #001E - 0x8C240109, // 0019 GETMET R9 R0 K9 - 0x5C2C0800, // 001A MOVE R11 R4 - 0x7C240400, // 001B CALL R9 2 - 0x80041200, // 001C RET 1 R9 - 0x70020036, // 001D JMP #0055 - 0x1C24030A, // 001E EQ R9 R1 K10 - 0x78260003, // 001F JMPF R9 #0024 - 0x8C24010A, // 0020 GETMET R9 R0 K10 - 0x7C240200, // 0021 CALL R9 1 - 0x80041200, // 0022 RET 1 R9 - 0x70020030, // 0023 JMP #0055 - 0x8824010B, // 0024 GETMBR R9 R0 K11 - 0x7826002E, // 0025 JMPF R9 #0055 - 0x5824000C, // 0026 LDCONST R9 K12 - 0x6028000C, // 0027 GETGBL R10 G12 - 0x882C010B, // 0028 GETMBR R11 R0 K11 - 0x7C280200, // 0029 CALL R10 1 - 0x1428120A, // 002A LT R10 R9 R10 - 0x782A0028, // 002B JMPF R10 #0055 - 0x8828010B, // 002C GETMBR R10 R0 K11 - 0x94281409, // 002D GETIDX R10 R10 R9 - 0x8C2C0D0D, // 002E GETMET R11 R6 K13 - 0x5C341400, // 002F MOVE R13 R10 - 0x5C380200, // 0030 MOVE R14 R1 - 0x7C2C0600, // 0031 CALL R11 3 - 0x60300004, // 0032 GETGBL R12 G4 - 0x5C341600, // 0033 MOVE R13 R11 - 0x7C300200, // 0034 CALL R12 1 - 0x1C30190E, // 0035 EQ R12 R12 K14 - 0x7832001B, // 0036 JMPF R12 #0053 - 0xA802000C, // 0037 EXBLK 0 #0045 - 0x5C301600, // 0038 MOVE R12 R11 - 0x5C341400, // 0039 MOVE R13 R10 - 0x5C380400, // 003A MOVE R14 R2 - 0x5C3C0600, // 003B MOVE R15 R3 - 0x5C400800, // 003C MOVE R16 R4 - 0x5C440A00, // 003D MOVE R17 R5 - 0x7C300A00, // 003E CALL R12 5 - 0x5C201800, // 003F MOVE R8 R12 - 0x78220001, // 0040 JMPF R8 #0043 - 0xA8040001, // 0041 EXBLK 1 1 - 0x70020011, // 0042 JMP #0055 - 0xA8040001, // 0043 EXBLK 1 1 - 0x7002000D, // 0044 JMP #0053 - 0xAC300002, // 0045 CATCH R12 0 2 - 0x7002000A, // 0046 JMP #0052 - 0x60380001, // 0047 GETGBL R14 G1 - 0x8C3C0F0F, // 0048 GETMET R15 R7 K15 - 0x58440010, // 0049 LDCONST R17 K16 - 0x5C481800, // 004A MOVE R18 R12 - 0x5C4C1A00, // 004B MOVE R19 R13 - 0x7C3C0800, // 004C CALL R15 4 - 0x7C380200, // 004D CALL R14 1 - 0xA43A2200, // 004E IMPORT R14 K17 - 0x8C3C1D12, // 004F GETMET R15 R14 K18 - 0x7C3C0200, // 0050 CALL R15 1 - 0x70020000, // 0051 JMP #0053 - 0xB0080000, // 0052 RAISE 2 R0 R0 - 0x00241313, // 0053 ADD R9 R9 K19 - 0x7001FFD1, // 0054 JMP #0027 - 0x1C240314, // 0055 EQ R9 R1 K20 - 0x78260002, // 0056 JMPF R9 #005A - 0xA4262A00, // 0057 IMPORT R9 K21 - 0x8C281316, // 0058 GETMET R10 R9 K22 - 0x7C280200, // 0059 CALL R10 1 - 0x80041000, // 005A RET 1 R8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_key_i -********************************************************************/ -be_local_closure(Tasmota_find_key_i, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(toupper), - /* K2 */ be_nested_str(keys), - /* K3 */ be_nested_str(_X3F), - /* K4 */ be_nested_str(stop_iteration), - }), - &be_const_str_find_key_i, - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x8C100701, // 0001 GETMET R4 R3 K1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C100400, // 0003 CALL R4 2 - 0x6014000F, // 0004 GETGBL R5 G15 - 0x5C180200, // 0005 MOVE R6 R1 - 0x601C0013, // 0006 GETGBL R7 G19 - 0x7C140400, // 0007 CALL R5 2 - 0x78160013, // 0008 JMPF R5 #001D - 0x60140010, // 0009 GETGBL R5 G16 - 0x8C180302, // 000A GETMET R6 R1 K2 - 0x7C180200, // 000B CALL R6 1 - 0x7C140200, // 000C CALL R5 1 - 0xA802000B, // 000D EXBLK 0 #001A - 0x5C180A00, // 000E MOVE R6 R5 - 0x7C180000, // 000F CALL R6 0 - 0x8C1C0701, // 0010 GETMET R7 R3 K1 - 0x5C240C00, // 0011 MOVE R9 R6 - 0x7C1C0400, // 0012 CALL R7 2 - 0x1C1C0E04, // 0013 EQ R7 R7 R4 - 0x741E0001, // 0014 JMPT R7 #0017 - 0x1C1C0503, // 0015 EQ R7 R2 K3 - 0x781E0001, // 0016 JMPF R7 #0019 - 0xA8040001, // 0017 EXBLK 1 1 - 0x80040C00, // 0018 RET 1 R6 - 0x7001FFF3, // 0019 JMP #000E - 0x58140004, // 001A LDCONST R5 K4 - 0xAC140200, // 001B CATCH R5 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x80000000, // 001D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: wire_scan -********************************************************************/ -be_local_closure(Tasmota_wire_scan, /* name */ - be_nested_proto( - 6, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(i2c_enabled), - /* K1 */ be_nested_str(wire1), - /* K2 */ be_nested_str(enabled), - /* K3 */ be_nested_str(detect), - /* K4 */ be_nested_str(wire2), - }), - &be_const_str_wire_scan, - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x200C0403, // 0001 NE R3 R2 R3 - 0x780E0005, // 0002 JMPF R3 #0009 - 0x8C0C0100, // 0003 GETMET R3 R0 K0 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x740E0001, // 0006 JMPT R3 #0009 - 0x4C0C0000, // 0007 LDNIL R3 - 0x80040600, // 0008 RET 1 R3 - 0x880C0101, // 0009 GETMBR R3 R0 K1 - 0x8C0C0702, // 000A GETMET R3 R3 K2 - 0x7C0C0200, // 000B CALL R3 1 - 0x780E0006, // 000C JMPF R3 #0014 - 0x880C0101, // 000D GETMBR R3 R0 K1 - 0x8C0C0703, // 000E GETMET R3 R3 K3 - 0x5C140200, // 000F MOVE R5 R1 - 0x7C0C0400, // 0010 CALL R3 2 - 0x780E0001, // 0011 JMPF R3 #0014 - 0x880C0101, // 0012 GETMBR R3 R0 K1 - 0x80040600, // 0013 RET 1 R3 - 0x880C0104, // 0014 GETMBR R3 R0 K4 - 0x8C0C0702, // 0015 GETMET R3 R3 K2 - 0x7C0C0200, // 0016 CALL R3 1 - 0x780E0006, // 0017 JMPF R3 #001F - 0x880C0104, // 0018 GETMBR R3 R0 K4 - 0x8C0C0703, // 0019 GETMET R3 R3 K3 - 0x5C140200, // 001A MOVE R5 R1 - 0x7C0C0400, // 001B CALL R3 2 - 0x780E0001, // 001C JMPF R3 #001F - 0x880C0104, // 001D GETMBR R3 R0 K4 - 0x80040600, // 001E RET 1 R3 - 0x4C0C0000, // 001F LDNIL R3 - 0x80040600, // 0020 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Tasmota_init, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str(global), - /* K1 */ be_nested_str(ctypes_bytes_dyn), - /* K2 */ be_nested_str(_global_addr), - /* K3 */ be_nested_str(_global_def), - /* K4 */ be_nested_str(introspect), - /* K5 */ be_nested_str(_settings_ptr), - /* K6 */ be_nested_str(get), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str(settings), - /* K9 */ be_nested_str(toptr), - /* K10 */ be_nested_str(_settings_def), - /* K11 */ be_nested_str(wd), - /* K12 */ be_nested_str(), - /* K13 */ be_nested_str(_debug_present), - /* K14 */ be_nested_str(debug), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[36]) { /* code */ - 0xB8060200, // 0000 GETNGBL R1 K1 - 0x88080102, // 0001 GETMBR R2 R0 K2 - 0x880C0103, // 0002 GETMBR R3 R0 K3 - 0x7C040400, // 0003 CALL R1 2 - 0x90020001, // 0004 SETMBR R0 K0 R1 - 0xA4060800, // 0005 IMPORT R1 K4 - 0x60080015, // 0006 GETGBL R2 G21 - 0x880C0105, // 0007 GETMBR R3 R0 K5 - 0x54120003, // 0008 LDINT R4 4 - 0x7C080400, // 0009 CALL R2 2 - 0x8C080506, // 000A GETMET R2 R2 K6 - 0x58100007, // 000B LDCONST R4 K7 - 0x54160003, // 000C LDINT R5 4 - 0x7C080600, // 000D CALL R2 3 - 0x780A0006, // 000E JMPF R2 #0016 - 0xB80E0200, // 000F GETNGBL R3 K1 - 0x8C100309, // 0010 GETMET R4 R1 K9 - 0x5C180400, // 0011 MOVE R6 R2 - 0x7C100400, // 0012 CALL R4 2 - 0x8814010A, // 0013 GETMBR R5 R0 K10 - 0x7C0C0400, // 0014 CALL R3 2 - 0x90021003, // 0015 SETMBR R0 K8 R3 - 0x9002170C, // 0016 SETMBR R0 K11 K12 - 0x500C0000, // 0017 LDBOOL R3 0 0 - 0x90021A03, // 0018 SETMBR R0 K13 R3 - 0xA8020004, // 0019 EXBLK 0 #001F - 0xA40E1C00, // 001A IMPORT R3 K14 - 0x50100200, // 001B LDBOOL R4 1 0 - 0x90021A04, // 001C SETMBR R0 K13 R4 - 0xA8040001, // 001D EXBLK 1 1 - 0x70020003, // 001E JMP #0023 - 0xAC0C0000, // 001F CATCH R3 0 0 - 0x70020000, // 0020 JMP #0022 - 0x70020000, // 0021 JMP #0023 - 0xB0080000, // 0022 RAISE 2 R0 R0 - 0x80000000, // 0023 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: time_str -********************************************************************/ -be_local_closure(Tasmota_time_str, /* name */ - be_nested_proto( - 13, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(time_dump), - /* K2 */ be_nested_str(format), - /* K3 */ be_nested_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d), - /* K4 */ be_nested_str(year), - /* K5 */ be_nested_str(month), - /* K6 */ be_nested_str(day), - /* K7 */ be_nested_str(hour), - /* K8 */ be_nested_str(min), - /* K9 */ be_nested_str(sec), - }), - &be_const_str_time_str, - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0101, // 0001 GETMET R3 R0 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x8C100502, // 0004 GETMET R4 R2 K2 - 0x58180003, // 0005 LDCONST R6 K3 - 0x941C0704, // 0006 GETIDX R7 R3 K4 - 0x94200705, // 0007 GETIDX R8 R3 K5 - 0x94240706, // 0008 GETIDX R9 R3 K6 - 0x94280707, // 0009 GETIDX R10 R3 K7 - 0x942C0708, // 000A GETIDX R11 R3 K8 - 0x94300709, // 000B GETIDX R12 R3 K9 - 0x7C101000, // 000C CALL R4 8 - 0x80040800, // 000D RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_rule -********************************************************************/ -be_local_closure(Tasmota_remove_rule, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(_rules), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str(k), - /* K3 */ be_nested_str(remove), - /* K4 */ be_const_int(1), - }), - &be_const_str_remove_rule, - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0011, // 0001 JMPF R2 #0014 - 0x58080001, // 0002 LDCONST R2 K1 - 0x600C000C, // 0003 GETGBL R3 G12 - 0x88100100, // 0004 GETMBR R4 R0 K0 - 0x7C0C0200, // 0005 CALL R3 1 - 0x140C0403, // 0006 LT R3 R2 R3 - 0x780E000B, // 0007 JMPF R3 #0014 - 0x880C0100, // 0008 GETMBR R3 R0 K0 - 0x940C0602, // 0009 GETIDX R3 R3 R2 - 0x880C0702, // 000A GETMBR R3 R3 K2 - 0x1C0C0601, // 000B EQ R3 R3 R1 - 0x780E0004, // 000C JMPF R3 #0012 - 0x880C0100, // 000D GETMBR R3 R0 K0 - 0x8C0C0703, // 000E GETMET R3 R3 K3 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x70020000, // 0011 JMP #0013 - 0x00080504, // 0012 ADD R2 R2 K4 - 0x7001FFEE, // 0013 JMP #0003 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: load -********************************************************************/ -be_local_closure(Tasmota_load, /* name */ - be_nested_proto( - 21, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(sys), - /* K1 */ be_nested_str(path), - /* K2 */ be_nested_str(find), - /* K3 */ be_nested_str(push), - }), - &be_const_str_push_path, - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C0C0502, // 0003 GETMET R3 R2 K2 - 0x5C140000, // 0004 MOVE R5 R0 - 0x7C0C0400, // 0005 CALL R3 2 - 0x4C100000, // 0006 LDNIL R4 - 0x1C0C0604, // 0007 EQ R3 R3 R4 - 0x780E0002, // 0008 JMPF R3 #000C - 0x8C0C0503, // 0009 GETMET R3 R2 K3 - 0x5C140000, // 000A MOVE R5 R0 - 0x7C0C0400, // 000B CALL R3 2 - 0x80000000, // 000C RET 0 - }) - ), - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(sys), - /* K1 */ be_nested_str(path), - /* K2 */ be_nested_str(find), - /* K3 */ be_nested_str(remove), - }), - &be_const_str_pop_path, - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x8C0C0502, // 0003 GETMET R3 R2 K2 - 0x5C140000, // 0004 MOVE R5 R0 - 0x7C0C0400, // 0005 CALL R3 2 - 0x4C100000, // 0006 LDNIL R4 - 0x20100604, // 0007 NE R4 R3 R4 - 0x78120002, // 0008 JMPF R4 #000C - 0x8C100503, // 0009 GETMET R4 R2 K3 - 0x5C180600, // 000A MOVE R6 R3 - 0x7C100400, // 000B CALL R4 2 - 0x80000000, // 000C RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(path), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str(_X2F), - /* K4 */ be_nested_str(split), - /* K5 */ be_nested_str(_X23), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str(find), - /* K8 */ be_nested_str(_X2E), - /* K9 */ be_nested_str(_X2Ebe), - /* K10 */ be_nested_str(_X2Ebec), - /* K11 */ be_nested_str(io_error), - /* K12 */ be_nested_str(file_X20extension_X20is_X20not_X20_X27_X2Ebe_X27_X20or_X20_X27_X2Ebec_X27), - /* K13 */ be_nested_str(last_modified), - /* K14 */ be_nested_str(c), - /* K15 */ be_nested_str(wd), - /* K16 */ be_nested_str(), - /* K17 */ be_nested_str(file), - /* K18 */ be_nested_str(save), - /* K19 */ be_nested_str(format), - /* K20 */ be_nested_str(BRY_X3A_X20could_X20not_X20save_X20compiled_X20file_X20_X25s_X20_X28_X25s_X29), - }), - &be_const_str_load, - &be_const_str_solidified, - ( &(const binstruction[121]) { /* code */ - 0x84080000, // 0000 CLOSURE R2 P0 - 0x840C0001, // 0001 CLOSURE R3 P1 - 0xA4120000, // 0002 IMPORT R4 K0 - 0xA4160200, // 0003 IMPORT R5 K1 - 0x6018000C, // 0004 GETGBL R6 G12 - 0x5C1C0200, // 0005 MOVE R7 R1 - 0x7C180200, // 0006 CALL R6 1 - 0x1C180D02, // 0007 EQ R6 R6 K2 - 0x781A0001, // 0008 JMPF R6 #000B - 0x50180000, // 0009 LDBOOL R6 0 0 - 0x80040C00, // 000A RET 1 R6 - 0x94180302, // 000B GETIDX R6 R1 K2 - 0x20180D03, // 000C NE R6 R6 K3 - 0x781A0000, // 000D JMPF R6 #000F - 0x00060601, // 000E ADD R1 K3 R1 - 0x8C180904, // 000F GETMET R6 R4 K4 - 0x5C200200, // 0010 MOVE R8 R1 - 0x58240005, // 0011 LDCONST R9 K5 - 0x7C180600, // 0012 CALL R6 3 - 0x941C0D02, // 0013 GETIDX R7 R6 K2 - 0x5421FFFE, // 0014 LDINT R8 -1 - 0x94200C08, // 0015 GETIDX R8 R6 R8 - 0x6024000C, // 0016 GETGBL R9 G12 - 0x5C280C00, // 0017 MOVE R10 R6 - 0x7C240200, // 0018 CALL R9 1 - 0x24241306, // 0019 GT R9 R9 K6 - 0x8C280907, // 001A GETMET R10 R4 K7 - 0x5C301000, // 001B MOVE R12 R8 - 0x58340008, // 001C LDCONST R13 K8 - 0x7C280600, // 001D CALL R10 3 - 0x14281502, // 001E LT R10 R10 K2 - 0x782A0001, // 001F JMPF R10 #0022 - 0x00040309, // 0020 ADD R1 R1 K9 - 0x00201109, // 0021 ADD R8 R8 K9 - 0x5429FFFC, // 0022 LDINT R10 -3 - 0x542DFFFE, // 0023 LDINT R11 -1 - 0x4028140B, // 0024 CONNECT R10 R10 R11 - 0x9428100A, // 0025 GETIDX R10 R8 R10 - 0x1C281509, // 0026 EQ R10 R10 K9 - 0x542DFFFB, // 0027 LDINT R11 -4 - 0x5431FFFE, // 0028 LDINT R12 -1 - 0x402C160C, // 0029 CONNECT R11 R11 R12 - 0x942C100B, // 002A GETIDX R11 R8 R11 - 0x1C2C170A, // 002B EQ R11 R11 K10 - 0x5C301400, // 002C MOVE R12 R10 - 0x74320002, // 002D JMPT R12 #0031 - 0x5C301600, // 002E MOVE R12 R11 - 0x74320000, // 002F JMPT R12 #0031 - 0xB006170C, // 0030 RAISE 1 K11 K12 - 0x8C300B0D, // 0031 GETMET R12 R5 K13 - 0x5C380E00, // 0032 MOVE R14 R7 - 0x7C300400, // 0033 CALL R12 2 - 0x782E0005, // 0034 JMPF R11 #003B - 0x4C340000, // 0035 LDNIL R13 - 0x1C34180D, // 0036 EQ R13 R12 R13 - 0x78360001, // 0037 JMPF R13 #003A - 0x50340000, // 0038 LDBOOL R13 0 0 - 0x80041A00, // 0039 RET 1 R13 - 0x70020013, // 003A JMP #004F - 0x8C340B0D, // 003B GETMET R13 R5 K13 - 0x003C030E, // 003C ADD R15 R1 K14 - 0x7C340400, // 003D CALL R13 2 - 0x4C380000, // 003E LDNIL R14 - 0x1C38180E, // 003F EQ R14 R12 R14 - 0x783A0004, // 0040 JMPF R14 #0046 - 0x4C380000, // 0041 LDNIL R14 - 0x1C381A0E, // 0042 EQ R14 R13 R14 - 0x783A0001, // 0043 JMPF R14 #0046 - 0x50380000, // 0044 LDBOOL R14 0 0 - 0x80041C00, // 0045 RET 1 R14 - 0x4C380000, // 0046 LDNIL R14 - 0x20381A0E, // 0047 NE R14 R13 R14 - 0x783A0005, // 0048 JMPF R14 #004F - 0x4C380000, // 0049 LDNIL R14 - 0x1C38180E, // 004A EQ R14 R12 R14 - 0x743A0001, // 004B JMPT R14 #004E - 0x28381A0C, // 004C GE R14 R13 R12 - 0x783A0000, // 004D JMPF R14 #004F - 0x502C0200, // 004E LDBOOL R11 1 0 - 0x78260005, // 004F JMPF R9 #0056 - 0x00340F05, // 0050 ADD R13 R7 K5 - 0x90021E0D, // 0051 SETMBR R0 K15 R13 - 0x5C340400, // 0052 MOVE R13 R2 - 0x8838010F, // 0053 GETMBR R14 R0 K15 - 0x7C340200, // 0054 CALL R13 1 - 0x70020000, // 0055 JMP #0057 - 0x90021F10, // 0056 SETMBR R0 K15 K16 - 0x6034000D, // 0057 GETGBL R13 G13 - 0x5C380200, // 0058 MOVE R14 R1 - 0x583C0011, // 0059 LDCONST R15 K17 - 0x7C340400, // 005A CALL R13 2 - 0x5C381600, // 005B MOVE R14 R11 - 0x743A0013, // 005C JMPT R14 #0071 - 0x5C381200, // 005D MOVE R14 R9 - 0x743A0011, // 005E JMPT R14 #0071 - 0xA8020005, // 005F EXBLK 0 #0066 - 0x8C380112, // 0060 GETMET R14 R0 K18 - 0x0040030E, // 0061 ADD R16 R1 K14 - 0x5C441A00, // 0062 MOVE R17 R13 - 0x7C380600, // 0063 CALL R14 3 - 0xA8040001, // 0064 EXBLK 1 1 - 0x7002000A, // 0065 JMP #0071 - 0xAC380001, // 0066 CATCH R14 0 1 - 0x70020007, // 0067 JMP #0070 - 0x603C0001, // 0068 GETGBL R15 G1 - 0x8C400913, // 0069 GETMET R16 R4 K19 - 0x58480014, // 006A LDCONST R18 K20 - 0x004C030E, // 006B ADD R19 R1 K14 - 0x5C501C00, // 006C MOVE R20 R14 - 0x7C400800, // 006D CALL R16 4 - 0x7C3C0200, // 006E CALL R15 1 - 0x70020000, // 006F JMP #0071 - 0xB0080000, // 0070 RAISE 2 R0 R0 - 0x5C381A00, // 0071 MOVE R14 R13 - 0x7C380000, // 0072 CALL R14 0 - 0x78260002, // 0073 JMPF R9 #0077 - 0x5C380600, // 0074 MOVE R14 R3 - 0x003C0F05, // 0075 ADD R15 R7 K5 - 0x7C380200, // 0076 CALL R14 1 - 0x50380200, // 0077 LDBOOL R14 1 0 - 0x80041C00, // 0078 RET 1 R14 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: chars_in_string -********************************************************************/ -be_local_closure(Tasmota_chars_in_string, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_const_int(1), - }), - &be_const_str_chars_in_string, - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x780E0001, // 0000 JMPF R3 #0003 - 0x50100200, // 0001 LDBOOL R4 1 0 - 0x70020000, // 0002 JMP #0004 - 0x50100000, // 0003 LDBOOL R4 0 0 - 0x58140000, // 0004 LDCONST R5 K0 - 0x6018000C, // 0005 GETGBL R6 G12 - 0x5C1C0200, // 0006 MOVE R7 R1 - 0x7C180200, // 0007 CALL R6 1 - 0x14180A06, // 0008 LT R6 R5 R6 - 0x781A0012, // 0009 JMPF R6 #001D - 0x50180000, // 000A LDBOOL R6 0 0 - 0x581C0000, // 000B LDCONST R7 K0 - 0x6020000C, // 000C GETGBL R8 G12 - 0x5C240400, // 000D MOVE R9 R2 - 0x7C200200, // 000E CALL R8 1 - 0x14200E08, // 000F LT R8 R7 R8 - 0x78220006, // 0010 JMPF R8 #0018 - 0x94200205, // 0011 GETIDX R8 R1 R5 - 0x94240407, // 0012 GETIDX R9 R2 R7 - 0x1C201009, // 0013 EQ R8 R8 R9 - 0x78220000, // 0014 JMPF R8 #0016 - 0x50180200, // 0015 LDBOOL R6 1 0 - 0x001C0F01, // 0016 ADD R7 R7 K1 - 0x7001FFF3, // 0017 JMP #000C - 0x20200806, // 0018 NE R8 R4 R6 - 0x78220000, // 0019 JMPF R8 #001B - 0x80040A00, // 001A RET 1 R5 - 0x00140B01, // 001B ADD R5 R5 K1 - 0x7001FFE7, // 001C JMP #0005 - 0x5419FFFE, // 001D LDINT R6 -1 - 0x80040C00, // 001E RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: cmd -********************************************************************/ -be_local_closure(Tasmota_cmd, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(cmd_res), - /* K1 */ be_nested_str(_cmd), - }), - &be_const_str_cmd, - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x50080200, // 0000 LDBOOL R2 1 0 - 0x90020002, // 0001 SETMBR R0 K0 R2 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x5C100200, // 0003 MOVE R4 R1 - 0x7C080400, // 0004 CALL R2 2 - 0x4C080000, // 0005 LDNIL R2 - 0x880C0100, // 0006 GETMBR R3 R0 K0 - 0x50100200, // 0007 LDBOOL R4 1 0 - 0x200C0604, // 0008 NE R3 R3 R4 - 0x780E0000, // 0009 JMPF R3 #000B - 0x88080100, // 000A GETMBR R2 R0 K0 - 0x4C0C0000, // 000B LDNIL R3 - 0x90020003, // 000C SETMBR R0 K0 R3 - 0x80040400, // 000D RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_cmd -********************************************************************/ -be_local_closure(Tasmota_add_cmd, /* name */ - be_nested_proto( - 5, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(_ccmd), - /* K1 */ be_nested_str(function), - /* K2 */ be_nested_str(value_error), - /* K3 */ be_nested_str(the_X20second_X20argument_X20is_X20not_X20a_X20function), - }), - &be_const_str_add_cmd, - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x740E0002, // 0001 JMPT R3 #0005 - 0x600C0013, // 0002 GETGBL R3 G19 - 0x7C0C0000, // 0003 CALL R3 0 - 0x90020003, // 0004 SETMBR R0 K0 R3 - 0x600C0004, // 0005 GETGBL R3 G4 - 0x5C100400, // 0006 MOVE R4 R2 - 0x7C0C0200, // 0007 CALL R3 1 - 0x1C0C0701, // 0008 EQ R3 R3 K1 - 0x780E0002, // 0009 JMPF R3 #000D - 0x880C0100, // 000A GETMBR R3 R0 K0 - 0x980C0202, // 000B SETIDX R3 R1 R2 - 0x70020000, // 000C JMP #000E - 0xB0060503, // 000D RAISE 1 K2 K3 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_rule -********************************************************************/ -be_local_closure(Tasmota_add_rule, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(_rules), - /* K1 */ be_nested_str(function), - /* K2 */ be_nested_str(push), - /* K3 */ be_nested_str(kv), - /* K4 */ be_nested_str(value_error), - /* K5 */ be_nested_str(the_X20second_X20argument_X20is_X20not_X20a_X20function), - }), - &be_const_str_add_rule, - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x740E0002, // 0001 JMPT R3 #0005 - 0x600C0012, // 0002 GETGBL R3 G18 - 0x7C0C0000, // 0003 CALL R3 0 - 0x90020003, // 0004 SETMBR R0 K0 R3 - 0x600C0004, // 0005 GETGBL R3 G4 - 0x5C100400, // 0006 MOVE R4 R2 - 0x7C0C0200, // 0007 CALL R3 1 - 0x1C0C0701, // 0008 EQ R3 R3 K1 - 0x780E0007, // 0009 JMPF R3 #0012 - 0x880C0100, // 000A GETMBR R3 R0 K0 - 0x8C0C0702, // 000B GETMET R3 R3 K2 - 0x8C140103, // 000C GETMET R5 R0 K3 - 0x5C1C0200, // 000D MOVE R7 R1 - 0x5C200400, // 000E MOVE R8 R2 - 0x7C140600, // 000F CALL R5 3 - 0x7C0C0400, // 0010 CALL R3 2 - 0x70020000, // 0011 JMP #0013 - 0xB0060905, // 0012 RAISE 1 K4 K5 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: exec_rules -********************************************************************/ -be_local_closure(Tasmota_exec_rules, /* name */ - be_nested_proto( - 12, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str(_rules), - /* K1 */ be_nested_str(cmd_res), - /* K2 */ be_nested_str(json), - /* K3 */ be_nested_str(load), - /* K4 */ be_nested_str(log), - /* K5 */ be_nested_str(BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20), - /* K6 */ be_const_int(3), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str(try_rule), - /* K9 */ be_nested_str(k), - /* K10 */ be_nested_str(v), - /* K11 */ be_const_int(1), - }), - &be_const_str_exec_rules, - &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0003, // 0001 JMPT R2 #0006 - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x4C0C0000, // 0003 LDNIL R3 - 0x20080403, // 0004 NE R2 R2 R3 - 0x780A0027, // 0005 JMPF R2 #002E - 0xA40A0400, // 0006 IMPORT R2 K2 - 0x8C0C0503, // 0007 GETMET R3 R2 K3 - 0x5C140200, // 0008 MOVE R5 R1 - 0x7C0C0400, // 0009 CALL R3 2 - 0x50100000, // 000A LDBOOL R4 0 0 - 0x4C140000, // 000B LDNIL R5 - 0x1C140605, // 000C EQ R5 R3 R5 - 0x78160004, // 000D JMPF R5 #0013 - 0x8C140104, // 000E GETMET R5 R0 K4 - 0x001E0A01, // 000F ADD R7 K5 R1 - 0x58200006, // 0010 LDCONST R8 K6 - 0x7C140600, // 0011 CALL R5 3 - 0x5C0C0200, // 0012 MOVE R3 R1 - 0x88140101, // 0013 GETMBR R5 R0 K1 - 0x4C180000, // 0014 LDNIL R6 - 0x20140A06, // 0015 NE R5 R5 R6 - 0x78160000, // 0016 JMPF R5 #0018 - 0x90020203, // 0017 SETMBR R0 K1 R3 - 0x88140100, // 0018 GETMBR R5 R0 K0 - 0x78160012, // 0019 JMPF R5 #002D - 0x58140007, // 001A LDCONST R5 K7 - 0x6018000C, // 001B GETGBL R6 G12 - 0x881C0100, // 001C GETMBR R7 R0 K0 - 0x7C180200, // 001D CALL R6 1 - 0x14180A06, // 001E LT R6 R5 R6 - 0x781A000C, // 001F JMPF R6 #002D - 0x88180100, // 0020 GETMBR R6 R0 K0 - 0x94180C05, // 0021 GETIDX R6 R6 R5 - 0x8C1C0108, // 0022 GETMET R7 R0 K8 - 0x5C240600, // 0023 MOVE R9 R3 - 0x88280D09, // 0024 GETMBR R10 R6 K9 - 0x882C0D0A, // 0025 GETMBR R11 R6 K10 - 0x7C1C0800, // 0026 CALL R7 4 - 0x741E0001, // 0027 JMPT R7 #002A - 0x74120000, // 0028 JMPT R4 #002A - 0x50100001, // 0029 LDBOOL R4 0 1 - 0x50100200, // 002A LDBOOL R4 1 0 - 0x00140B0B, // 002B ADD R5 R5 K11 - 0x7001FFED, // 002C JMP #001B - 0x80040800, // 002D RET 1 R4 - 0x50080000, // 002E LDBOOL R2 0 0 - 0x80040400, // 002F RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: hs2rgb -********************************************************************/ -be_local_closure(Tasmota_hs2rgb, /* name */ - be_nested_proto( - 17, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str(tasmota), - /* K2 */ be_nested_str(scale_uint), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(2), - /* K5 */ be_const_int(3), - }), - &be_const_str_hs2rgb, - &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x1C0C0403, // 0001 EQ R3 R2 R3 - 0x780E0000, // 0002 JMPF R3 #0004 - 0x540A00FE, // 0003 LDINT R2 255 - 0x540E00FE, // 0004 LDINT R3 255 - 0x541200FE, // 0005 LDINT R4 255 - 0x541600FE, // 0006 LDINT R5 255 - 0x541A0167, // 0007 LDINT R6 360 - 0x10040206, // 0008 MOD R1 R1 R6 - 0x24180500, // 0009 GT R6 R2 K0 - 0x781A0031, // 000A JMPF R6 #003D - 0x541A003B, // 000B LDINT R6 60 - 0x0C180206, // 000C DIV R6 R1 R6 - 0x541E003B, // 000D LDINT R7 60 - 0x101C0207, // 000E MOD R7 R1 R7 - 0x542200FE, // 000F LDINT R8 255 - 0x04201002, // 0010 SUB R8 R8 R2 - 0xB8260200, // 0011 GETNGBL R9 K1 - 0x8C241302, // 0012 GETMET R9 R9 K2 - 0x5C2C0E00, // 0013 MOVE R11 R7 - 0x58300000, // 0014 LDCONST R12 K0 - 0x5436003B, // 0015 LDINT R13 60 - 0x543A00FE, // 0016 LDINT R14 255 - 0x5C3C1000, // 0017 MOVE R15 R8 - 0x7C240C00, // 0018 CALL R9 6 - 0xB82A0200, // 0019 GETNGBL R10 K1 - 0x8C281502, // 001A GETMET R10 R10 K2 - 0x5C300E00, // 001B MOVE R12 R7 - 0x58340000, // 001C LDCONST R13 K0 - 0x543A003B, // 001D LDINT R14 60 - 0x5C3C1000, // 001E MOVE R15 R8 - 0x544200FE, // 001F LDINT R16 255 - 0x7C280C00, // 0020 CALL R10 6 - 0x1C2C0D00, // 0021 EQ R11 R6 K0 - 0x782E0002, // 0022 JMPF R11 #0026 - 0x5C141400, // 0023 MOVE R5 R10 - 0x5C101000, // 0024 MOVE R4 R8 - 0x70020016, // 0025 JMP #003D - 0x1C2C0D03, // 0026 EQ R11 R6 K3 - 0x782E0002, // 0027 JMPF R11 #002B - 0x5C0C1200, // 0028 MOVE R3 R9 - 0x5C101000, // 0029 MOVE R4 R8 - 0x70020011, // 002A JMP #003D - 0x1C2C0D04, // 002B EQ R11 R6 K4 - 0x782E0002, // 002C JMPF R11 #0030 - 0x5C0C1000, // 002D MOVE R3 R8 - 0x5C101400, // 002E MOVE R4 R10 - 0x7002000C, // 002F JMP #003D - 0x1C2C0D05, // 0030 EQ R11 R6 K5 - 0x782E0002, // 0031 JMPF R11 #0035 - 0x5C0C1000, // 0032 MOVE R3 R8 - 0x5C141200, // 0033 MOVE R5 R9 - 0x70020007, // 0034 JMP #003D - 0x542E0003, // 0035 LDINT R11 4 - 0x1C2C0C0B, // 0036 EQ R11 R6 R11 - 0x782E0002, // 0037 JMPF R11 #003B - 0x5C0C1400, // 0038 MOVE R3 R10 - 0x5C141000, // 0039 MOVE R5 R8 - 0x70020001, // 003A JMP #003D - 0x5C141000, // 003B MOVE R5 R8 - 0x5C101200, // 003C MOVE R4 R9 - 0x541A000F, // 003D LDINT R6 16 - 0x38180606, // 003E SHL R6 R3 R6 - 0x541E0007, // 003F LDINT R7 8 - 0x381C0A07, // 0040 SHL R7 R5 R7 - 0x30180C07, // 0041 OR R6 R6 R7 - 0x30180C04, // 0042 OR R6 R6 R4 - 0x80040C00, // 0043 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(KV_init, /* name */ - be_nested_proto( - 3, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(k), - /* K1 */ be_nested_str(v), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: KV -********************************************************************/ -be_local_class(KV, - 2, - NULL, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(k, 2), be_const_var(0) }, - { be_const_key(v, -1), be_const_var(1) }, - { be_const_key(init, -1), be_const_closure(KV_init_closure) }, - })), - be_str_literal("KV") -); - -/******************************************************************** -** Solidified function: kv -********************************************************************/ -be_local_closure(Tasmota_kv, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_const_class(be_class_KV), - }), - &be_const_str_kv, - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0xB4000000, // 0001 CLASS K0 - 0x5C100600, // 0002 MOVE R4 R3 - 0x5C140200, // 0003 MOVE R5 R1 - 0x5C180400, // 0004 MOVE R6 R2 - 0x7C100400, // 0005 CALL R4 2 - 0x80040800, // 0006 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_cmd -********************************************************************/ -be_local_closure(Tasmota_remove_cmd, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str(_ccmd), - /* K1 */ be_nested_str(remove), - }), - &be_const_str_remove_cmd, - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0003, // 0001 JMPF R2 #0006 - 0x88080100, // 0002 GETMBR R2 R0 K0 - 0x8C080501, // 0003 GETMET R2 R2 K1 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_timer -********************************************************************/ -be_local_closure(Tasmota_set_timer, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str(_timers), - /* K1 */ be_nested_str(push), - /* K2 */ be_nested_str(Timer), - /* K3 */ be_nested_str(millis), - }), - &be_const_str_set_timer, - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x74120002, // 0001 JMPT R4 #0005 - 0x60100012, // 0002 GETGBL R4 G18 - 0x7C100000, // 0003 CALL R4 0 - 0x90020004, // 0004 SETMBR R0 K0 R4 - 0x88100100, // 0005 GETMBR R4 R0 K0 - 0x8C100901, // 0006 GETMET R4 R4 K1 - 0xB81A0400, // 0007 GETNGBL R6 K2 - 0x8C1C0103, // 0008 GETMET R7 R0 K3 - 0x5C240200, // 0009 MOVE R9 R1 - 0x7C1C0400, // 000A CALL R7 2 - 0x5C200400, // 000B MOVE R8 R2 - 0x5C240600, // 000C MOVE R9 R3 - 0x7C180600, // 000D CALL R6 3 - 0x7C100400, // 000E CALL R4 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_timer -********************************************************************/ -be_local_closure(Tasmota_remove_timer, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str(tasmota), - /* K1 */ be_nested_str(_timers), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str(size), - /* K4 */ be_nested_str(id), - /* K5 */ be_nested_str(remove), - /* K6 */ be_const_int(1), - }), - &be_const_str_remove_timer, - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x780A0012, // 0002 JMPF R2 #0016 - 0x58080002, // 0003 LDCONST R2 K2 - 0xB80E0000, // 0004 GETNGBL R3 K0 - 0x880C0701, // 0005 GETMBR R3 R3 K1 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x7C0C0200, // 0007 CALL R3 1 - 0x140C0403, // 0008 LT R3 R2 R3 - 0x780E000B, // 0009 JMPF R3 #0016 - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x880C0704, // 000C GETMBR R3 R3 K4 - 0x1C0C0601, // 000D EQ R3 R3 R1 - 0x780E0004, // 000E JMPF R3 #0014 - 0x880C0101, // 000F GETMBR R3 R0 K1 - 0x8C0C0705, // 0010 GETMET R3 R3 K5 - 0x5C140400, // 0011 MOVE R5 R2 - 0x7C0C0400, // 0012 CALL R3 2 - 0x70020000, // 0013 JMP #0015 - 0x00080506, // 0014 ADD R2 R2 K6 - 0x7001FFED, // 0015 JMP #0004 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: exec_cmd -********************************************************************/ -be_local_closure(Tasmota_exec_cmd, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str(_ccmd), - /* K1 */ be_nested_str(json), - /* K2 */ be_nested_str(load), - /* K3 */ be_nested_str(find_key_i), - /* K4 */ be_nested_str(resolvecmnd), - }), - &be_const_str_exec_cmd, - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x78120016, // 0001 JMPF R4 #0019 - 0xA4120200, // 0002 IMPORT R4 K1 - 0x8C140902, // 0003 GETMET R5 R4 K2 - 0x5C1C0600, // 0004 MOVE R7 R3 - 0x7C140400, // 0005 CALL R5 2 - 0x8C180103, // 0006 GETMET R6 R0 K3 - 0x88200100, // 0007 GETMBR R8 R0 K0 - 0x5C240200, // 0008 MOVE R9 R1 - 0x7C180600, // 0009 CALL R6 3 - 0x4C1C0000, // 000A LDNIL R7 - 0x201C0C07, // 000B NE R7 R6 R7 - 0x781E000B, // 000C JMPF R7 #0019 - 0x8C1C0104, // 000D GETMET R7 R0 K4 - 0x5C240C00, // 000E MOVE R9 R6 - 0x7C1C0400, // 000F CALL R7 2 - 0x881C0100, // 0010 GETMBR R7 R0 K0 - 0x941C0E06, // 0011 GETIDX R7 R7 R6 - 0x5C200C00, // 0012 MOVE R8 R6 - 0x5C240400, // 0013 MOVE R9 R2 - 0x5C280600, // 0014 MOVE R10 R3 - 0x5C2C0A00, // 0015 MOVE R11 R5 - 0x7C1C0800, // 0016 CALL R7 4 - 0x501C0200, // 0017 LDBOOL R7 1 0 - 0x80040E00, // 0018 RET 1 R7 - 0x50100000, // 0019 LDBOOL R4 0 0 - 0x80040800, // 001A RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_light -********************************************************************/ -be_local_closure(Tasmota_get_light, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(tasmota_X2Eget_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eget_X28_X29), - /* K1 */ be_nested_str(light), - /* K2 */ be_nested_str(get), - }), - &be_const_str_get_light, - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x60080001, // 0000 GETGBL R2 G1 - 0x580C0000, // 0001 LDCONST R3 K0 - 0x7C080200, // 0002 CALL R2 1 - 0xA40A0200, // 0003 IMPORT R2 K1 - 0x4C0C0000, // 0004 LDNIL R3 - 0x200C0203, // 0005 NE R3 R1 R3 - 0x780E0004, // 0006 JMPF R3 #000C - 0x8C0C0502, // 0007 GETMET R3 R2 K2 - 0x5C140200, // 0008 MOVE R5 R1 - 0x7C0C0400, // 0009 CALL R3 2 - 0x80040600, // 000A RET 1 R3 - 0x70020002, // 000B JMP #000F - 0x8C0C0502, // 000C GETMET R3 R2 K2 - 0x7C0C0200, // 000D CALL R3 1 - 0x80040600, // 000E RET 1 R3 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - -#include "../generate/be_fixed_be_class_tasmota.h" - - -// Class definition -void be_load_tasmota_ntvlib(bvm *vm) -{ - be_pushntvclass(vm, &be_class_tasmota); - be_setglobal(vm, "Tasmota"); - be_pop(vm, 1); -} - -/* @const_object_info_begin -class be_class_tasmota (scope: global, name: Tasmota) { - _rules, var - _timers, var - _ccmd, var - _drivers, var - wire1, var - wire2, var - global, var - settings, var - cmd_res, var - wd, var - _debug_present, var - - _global_def, comptr(&be_tasmota_global_struct) - _settings_def, comptr(&be_tasmota_settings_struct) - _global_addr, comptr(&TasmotaGlobal) - _settings_ptr, comptr(&Settings) - - init, closure(Tasmota_init_closure) - kv, closure(Tasmota_kv_closure) - - get_free_heap, func(l_getFreeHeap) - arch, func(l_arch) - publish, func(l_publish) - publish_result, func(l_publish_result) - _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) - strftime, func(l_strftime) - strptime, func(l_strptime) - memory, func(l_memory) - wifi, func(l_wifi) - eth, func(l_eth) - yield, func(l_yield) - delay, func(l_delay) - scale_uint, func(l_scaleuint) - log, func(l_logInfo) - save, func(l_save) - - read_sensors, func(l_read_sensors) - - 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, func(l_webSend) - web_send_decimal, func(l_webSendDecimal) - - get_power, func(l_getpower) - set_power, func(l_setpower) - get_switch, func(l_getswitch) - - i2c_enabled, func(l_i2cenabled) - - cmd, closure(Tasmota_cmd_closure) - chars_in_string, closure(Tasmota_chars_in_string_closure) - find_key_i, closure(Tasmota_find_key_i_closure) - find_op, closure(Tasmota_find_op_closure) - add_rule, closure(Tasmota_add_rule_closure) - remove_rule, closure(Tasmota_remove_rule_closure) - try_rule, closure(Tasmota_try_rule_closure) - exec_rules, closure(Tasmota_exec_rules_closure) - exec_tele, closure(Tasmota_exec_tele_closure) - set_timer, closure(Tasmota_set_timer_closure) - run_deferred, closure(Tasmota_run_deferred_closure) - remove_timer, closure(Tasmota_remove_timer_closure) - add_cmd, closure(Tasmota_add_cmd_closure) - remove_cmd, closure(Tasmota_remove_cmd_closure) - exec_cmd, closure(Tasmota_exec_cmd_closure) - gc, closure(Tasmota_gc_closure) - event, closure(Tasmota_event_closure) - add_driver, closure(Tasmota_add_driver_closure) - remove_driver, closure(Tasmota_remove_driver_closure) - load, closure(Tasmota_load_closure) - wire_scan, closure(Tasmota_wire_scan_closure) - time_str, closure(Tasmota_time_str_closure) - - hs2rgb, closure(Tasmota_hs2rgb_closure) - - gen_cb, closure(Tasmota_gen_cb_closure) - - get_light, closure(Tasmota_get_light_closure) - set_light, closure(Tasmota_set_light_closure) -} -@const_object_info_end */ diff --git a/lib/libesp32/berry/default/be_tcpclient_lib.c b/lib/libesp32/berry/default/be_tcpclient_lib.c deleted file mode 100644 index b39db458e..000000000 --- a/lib/libesp32/berry/default/be_tcpclient_lib.c +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************** - * Webclient mapped to Arduino framework - * - * To use: `d = webclient()` - * - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_WEBCLIENT - -extern int wc_tcp_init(bvm *vm); -extern int wc_tcp_deinit(bvm *vm); - -extern int wc_tcp_connect(bvm *vm); -extern int wc_tcp_connected(bvm *vm); -extern int wc_tcp_close(bvm *vm); -extern int wc_tcp_available(bvm *vm); - -extern int wc_tcp_write(bvm *vm); -extern int wc_tcp_read(bvm *vm); -extern int wc_tcp_readbytes(bvm *vm); - -#include "../generate/be_fixed_be_class_tcpclient.h" - -void be_load_tcpclient_lib(bvm *vm) { - be_pushntvclass(vm, &be_class_tcpclient); - be_setglobal(vm, "tcpclient"); - be_pop(vm, 1); -} -/* @const_object_info_begin - -class be_class_tcpclient (scope: global, name: tcpclient) { - .w, var - init, func(wc_tcp_init) - deinit, func(wc_tcp_deinit) - - connect, func(wc_tcp_connect) - connected, func(wc_tcp_connected) - close, func(wc_tcp_close) - available, func(wc_tcp_available) - - write, func(wc_tcp_write) - read, func(wc_tcp_read) - readbytes, func(wc_tcp_readbytes) -} -@const_object_info_end */ - -#endif // USE_WEBCLIENT diff --git a/lib/libesp32/berry/default/be_timer_class.c b/lib/libesp32/berry/default/be_timer_class.c deleted file mode 100644 index 6664e408e..000000000 --- a/lib/libesp32/berry/default/be_timer_class.c +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * class Timer - *******************************************************************/ -#include "be_constobj.h" - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(Timer_tostring, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(string), - /* K1 */ be_nested_str(format), - /* K2 */ be_nested_str(_X3Cinstance_X3A_X20_X25s_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X29), - /* K3 */ be_nested_str(due), - /* K4 */ be_nested_str(f), - /* K5 */ be_nested_str(id), - }), - &be_const_str_tostring, - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x60140008, // 0003 GETGBL R5 G8 - 0x60180006, // 0004 GETGBL R6 G6 - 0x5C1C0000, // 0005 MOVE R7 R0 - 0x7C180200, // 0006 CALL R6 1 - 0x7C140200, // 0007 CALL R5 1 - 0x60180008, // 0008 GETGBL R6 G8 - 0x881C0103, // 0009 GETMBR R7 R0 K3 - 0x7C180200, // 000A CALL R6 1 - 0x601C0008, // 000B GETGBL R7 G8 - 0x88200104, // 000C GETMBR R8 R0 K4 - 0x7C1C0200, // 000D CALL R7 1 - 0x60200008, // 000E GETGBL R8 G8 - 0x88240105, // 000F GETMBR R9 R0 K5 - 0x7C200200, // 0010 CALL R8 1 - 0x7C080C00, // 0011 CALL R2 6 - 0x80040400, // 0012 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Timer_init, /* name */ - be_nested_proto( - 4, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(due), - /* K1 */ be_nested_str(f), - /* K2 */ be_nested_str(id), - }), - &be_const_str_init, - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Timer -********************************************************************/ -be_local_class(Timer, - 3, - NULL, - be_nested_map(5, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(tostring, 4), be_const_closure(Timer_tostring_closure) }, - { be_const_key(id, 2), be_const_var(2) }, - { be_const_key(f, -1), be_const_var(1) }, - { be_const_key(due, -1), be_const_var(0) }, - { be_const_key(init, -1), be_const_closure(Timer_init_closure) }, - })), - be_str_literal("Timer") -); -/*******************************************************************/ - -void be_load_Timer_class(bvm *vm) { - be_pushntvclass(vm, &be_class_Timer); - be_setglobal(vm, "Timer"); - be_pop(vm, 1); -} diff --git a/lib/libesp32/berry/default/be_unishox_lib.c b/lib/libesp32/berry/default/be_unishox_lib.c deleted file mode 100644 index 971f4c9e0..000000000 --- a/lib/libesp32/berry/default/be_unishox_lib.c +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************** - * Berry module `unishox` - * - * To use: `import unishox` - * - * Allows to respond to HTTP request - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_UNISHOX_COMPRESSION - -extern int be_ntv_unishox_decompress(bvm *vm); -extern int be_ntv_unishox_compress(bvm *vm); - -/******************************************************************** -** Solidified module: unishox -********************************************************************/ -be_local_module(unishox, - "unishox", - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key(decompress, -1), be_const_func(be_ntv_unishox_decompress) }, - { be_const_key(compress, -1), be_const_func(be_ntv_unishox_compress) }, - })) -); -BE_EXPORT_VARIABLE be_define_const_native_module(unishox); - -#endif // USE_UNISHOX_COMPRESSION diff --git a/lib/libesp32/berry/default/be_webclient_lib.c b/lib/libesp32/berry/default/be_webclient_lib.c deleted file mode 100644 index 0e4b66e90..000000000 --- a/lib/libesp32/berry/default/be_webclient_lib.c +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************** - * Webclient mapped to Arduino framework - * - * To use: `d = webclient()` - * - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_WEBCLIENT - -extern int wc_init(bvm *vm); -extern int wc_deinit(bvm *vm); -extern int wc_urlencode(bvm *vm); -extern int wc_begin(bvm *vm); -extern int wc_set_timeouts(bvm *vm); -extern int wc_set_useragent(bvm *vm); -extern int wc_set_auth(bvm *vm); -extern int wc_connected(bvm *vm); -extern int wc_close(bvm *vm); -extern int wc_addheader(bvm *vm); -extern int wc_GET(bvm *vm); -extern int wc_POST(bvm *vm); -extern int wc_getstring(bvm *vm); -extern int wc_writefile(bvm *vm); -extern int wc_getsize(bvm *vm); - -#include "../generate/be_fixed_be_class_webclient.h" - -void be_load_webclient_lib(bvm *vm) { - be_pushntvclass(vm, &be_class_webclient); - be_setglobal(vm, "webclient"); - be_pop(vm, 1); -} -/* @const_object_info_begin - -class be_class_webclient (scope: global, name: webclient) { - .p, var - .w, var - init, func(wc_init) - deinit, func(wc_deinit) - url_encode, func(wc_urlencode) - - begin, func(wc_begin) - set_timeouts, func(wc_set_timeouts) - set_useragent, func(wc_set_useragent) - set_auth, func(wc_set_auth) - close, func(wc_close) - add_header, func(wc_addheader) - GET, func(wc_GET) - POST, func(wc_POST) - get_string, func(wc_getstring) - write_file, func(wc_writefile) - get_size, func(wc_getsize) -} -@const_object_info_end */ - -#endif // USE_WEBCLIENT diff --git a/lib/libesp32/berry/default/be_webserver_lib.c b/lib/libesp32/berry/default/be_webserver_lib.c deleted file mode 100644 index 0f3e45d05..000000000 --- a/lib/libesp32/berry/default/be_webserver_lib.c +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************** - * Berry module `webserver` - * - * To use: `import webserver` - * - * Allows to respond to HTTP request - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_WEBSERVER - -extern int w_webserver_member(bvm *vm); -extern int w_webserver_on(bvm *vm); -extern int w_webserver_state(bvm *vm); - -extern int w_webserver_check_privileged_access(bvm *vm); -extern int w_webserver_redirect(bvm *vm); -extern int w_webserver_content_start(bvm *vm); -extern int w_webserver_content_send(bvm *vm); -extern int w_webserver_content_send_style(bvm *vm); -extern int w_webserver_content_flush(bvm *vm); -extern int w_webserver_content_stop(bvm *vm); -extern int w_webserver_content_button(bvm *vm); - -extern int w_webserver_argsize(bvm *vm); -extern int w_webserver_arg(bvm *vm); -extern int w_webserver_arg_name(bvm *vm); -extern int w_webserver_has_arg(bvm *vm); - - -/* @const_object_info_begin -module webserver (scope: global) { - member, func(w_webserver_member) - - on, func(w_webserver_on) - state, func(w_webserver_state) - - check_privileged_access, func(w_webserver_check_privileged_access) - redirect, func(w_webserver_redirect) - content_send, func(w_webserver_content_send) - content_send_style, func(w_webserver_content_send_style) - content_flush, func(w_webserver_content_flush) - content_start, func(w_webserver_content_start) - content_stop, func(w_webserver_content_stop) - content_button, func(w_webserver_content_button) - - arg_size, func(w_webserver_argsize) - arg, func(w_webserver_arg) - arg_name, func(w_webserver_arg_name) - has_arg, func(w_webserver_has_arg) -} -@const_object_info_end */ -#include "../generate/be_fixed_webserver.h" - -#endif // USE_WEBSERVER diff --git a/lib/libesp32/berry/default/be_wirelib.c b/lib/libesp32/berry/default/be_wirelib.c deleted file mode 100644 index 38f345553..000000000 --- a/lib/libesp32/berry/default/be_wirelib.c +++ /dev/null @@ -1,151 +0,0 @@ -/******************************************************************** - * Tasmota lib - * - * To use: `import wire` - * - * 2 wire communication - I2C - *******************************************************************/ -#include "be_constobj.h" - -#ifdef USE_I2C - -extern int b_wire_init(bvm *vm); - -extern int b_wire_begintransmission(bvm *vm); -extern int b_wire_endtransmission(bvm *vm); -extern int b_wire_requestfrom(bvm *vm); -extern int b_wire_available(bvm *vm); -extern int b_wire_write(bvm *vm); -extern int b_wire_read(bvm *vm); - -extern int b_wire_scan(bvm *vm); - -extern int b_wire_validwrite(bvm *vm); -extern int b_wire_validread(bvm *vm); -extern int b_wire_detect(bvm *vm); -extern int b_wire_enabled(bvm *vm); - -/******************************************************************** -** Solidified function: write_bytes -********************************************************************/ -be_local_closure(write_bytes, /* name */ - be_nested_proto( - 7, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str(_begin_transmission), - /* K1 */ be_nested_str(_write), - /* K2 */ be_nested_str(_end_transmission), - }), - &be_const_str_write_bytes, - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x5C180200, // 0001 MOVE R6 R1 - 0x7C100400, // 0002 CALL R4 2 - 0x8C100101, // 0003 GETMET R4 R0 K1 - 0x5C180400, // 0004 MOVE R6 R2 - 0x7C100400, // 0005 CALL R4 2 - 0x8C100101, // 0006 GETMET R4 R0 K1 - 0x5C180600, // 0007 MOVE R6 R3 - 0x7C100400, // 0008 CALL R4 2 - 0x8C100102, // 0009 GETMET R4 R0 K2 - 0x7C100200, // 000A CALL R4 1 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_bytes -********************************************************************/ -be_local_closure(read_bytes, /* name */ - be_nested_proto( - 8, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str(_begin_transmission), - /* K1 */ be_nested_str(_write), - /* K2 */ be_nested_str(_end_transmission), - /* K3 */ be_nested_str(_request_from), - /* K4 */ be_nested_str(_available), - /* K5 */ be_nested_str(_read), - }), - &be_const_str_read_bytes, - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x5C180200, // 0001 MOVE R6 R1 - 0x7C100400, // 0002 CALL R4 2 - 0x8C100101, // 0003 GETMET R4 R0 K1 - 0x5C180400, // 0004 MOVE R6 R2 - 0x7C100400, // 0005 CALL R4 2 - 0x8C100102, // 0006 GETMET R4 R0 K2 - 0x50180000, // 0007 LDBOOL R6 0 0 - 0x7C100400, // 0008 CALL R4 2 - 0x8C100103, // 0009 GETMET R4 R0 K3 - 0x5C180200, // 000A MOVE R6 R1 - 0x5C1C0600, // 000B MOVE R7 R3 - 0x7C100600, // 000C CALL R4 3 - 0x60100015, // 000D GETGBL R4 G21 - 0x5C140600, // 000E MOVE R5 R3 - 0x7C100200, // 000F CALL R4 1 - 0x8C140104, // 0010 GETMET R5 R0 K4 - 0x7C140200, // 0011 CALL R5 1 - 0x78160003, // 0012 JMPF R5 #0017 - 0x8C140105, // 0013 GETMET R5 R0 K5 - 0x7C140200, // 0014 CALL R5 1 - 0x40140805, // 0015 CONNECT R5 R4 R5 - 0x7001FFF8, // 0016 JMP #0010 - 0x80040800, // 0017 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -#include "../generate/be_fixed_be_class_tasmota_wire.h" - -void be_load_wirelib(bvm *vm) { - be_pushntvclass(vm, &be_class_tasmota_wire); - be_setglobal(vm, "Wire"); - be_pop(vm, 1); -} -/* @const_object_info_begin - -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) - enabled, func(b_wire_enabled) - - read_bytes, closure(read_bytes_closure) - write_bytes, closure(write_bytes_closure) -} -@const_object_info_end */ - -#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 deleted file mode 100644 index 607a9c612..000000000 --- a/lib/libesp32/berry/default/berry_conf.h +++ /dev/null @@ -1,247 +0,0 @@ -/******************************************************************** -** Copyright (c) 2018-2020 Guan Wenliang -** This file is part of the Berry default interpreter. -** skiars@qq.com, https://github.com/Skiars/berry -** See Copyright Notice in the LICENSE file or at -** https://github.com/Skiars/berry/blob/master/LICENSE -********************************************************************/ -#ifndef BERRY_CONF_H -#define BERRY_CONF_H - -#include - -#ifdef COMPILE_BERRY_LIB - #include "my_user_config.h" - #include "tasmota_configurations.h" -#endif - -/* Macro: BE_DEBUG - * Berry interpreter debug switch. - * Default: 0 - **/ -#ifndef BE_DEBUG -#define BE_DEBUG 0 -#endif - -/* Macro: BE_LONGLONG_INT - * Select integer length. - * If the value is 0, use an integer of type int, use a long - * integer type when the value is 1, and use a long long integer - * type when the value is 2. - * Default: 2 - */ -#define BE_INTGER_TYPE 1 // use long int = uint32_t - -/* Macro: BE_USE_SINGLE_FLOAT - * Select floating point precision. - * Use double-precision floating-point numbers when the value - * is 0 (default), otherwise use single-precision floating-point - * numbers. - * Default: 0 - **/ -#define BE_USE_SINGLE_FLOAT 1 // use `float` not `double` - -/* Macro: BE_USE_PRECOMPILED_OBJECT - * Use precompiled objects to avoid creating these objects at - * runtime. Enable this macro can greatly optimize RAM usage. - * Default: 1 - **/ -#define BE_USE_PRECOMPILED_OBJECT 1 - -/* Macro: BE_DEBUG_RUNTIME_INFO - * Set runtime error debugging information. - * 0: unable to output source file and line number at runtime. - * 1: output source file and line number information at runtime. - * 2: the information use uint16_t type (save space). - * Default: 1 - **/ -#define BE_DEBUG_RUNTIME_INFO 0 - -/* Macro: BE_DEBUG_VAR_INFO - * Set variable debugging tracking information. - * 0: disable variable debugging tracking information at runtime. - * 1: enable variable debugging tracking information at runtime. - * Default: 1 - **/ -#define BE_DEBUG_VAR_INFO 0 - -/* Macro: BE_USE_PERF_COUNTERS - * Use the obshook function to report low-level actions. - * Default: 0 - **/ -#define BE_USE_PERF_COUNTERS 1 - -/* Macro: BE_VM_OBSERVABILITY_SAMPLING - * If BE_USE_PERF_COUNTERS == 1 - * then the observability hook is called regularly in the VM loop - * allowing to stop infinite loops or too-long running code. - * The value is a power of 2. - * Default: 20 - which translates to 2^20 or ~1 million instructions - **/ -#define BE_VM_OBSERVABILITY_SAMPLING 20 - -/* Macro: BE_STACK_TOTAL_MAX - * Set the maximum total stack size. - * Default: 20000 - **/ -#define BE_STACK_TOTAL_MAX 8000 - -/* Macro: BE_STACK_FREE_MIN - * Set the minimum free count of the stack. The stack idles will - * be checked when a function is called, and the stack will be - * expanded if the number of free is less than BE_STACK_FREE_MIN. - * Default: 10 - **/ -#define BE_STACK_FREE_MIN 20 - -/* Macro: BE_STACK_START - * Set the starting size of the stack at VM creation. - * Default: 50 - **/ -#define BE_STACK_START 100 - -/* Macro: BE_CONST_SEARCH_SIZE - * Constants in function are limited to 255. However the compiler - * will look for a maximum of pre-existing constants to avoid - * performance degradation. This may cause the number of constants - * to be higher than required. - * Increase is you need to solidify functions. - * Default: 50 - **/ -#define BE_CONST_SEARCH_SIZE 150 - -/* Macro: BE_STACK_FREE_MIN - * The short string will hold the hash value when the value is - * true. It may be faster but requires more RAM. - * Default: 0 - **/ -#define BE_USE_STR_HASH_CACHE 0 - -/* Macro: BE_USE_FILE_SYSTEM - * The file system interface will be used when this macro is true - * or when using the OS module. Otherwise the file system interface - * will not be used. - * Default: 0 - **/ -#define BE_USE_FILE_SYSTEM 0 - -/* Macro: BE_USE_SCRIPT_COMPILER - * Enable compiler when BE_USE_SCRIPT_COMPILER is not 0, otherwise - * disable the compiler. - * Default: 1 - **/ -#define BE_USE_SCRIPT_COMPILER 1 - -/* Macro: BE_USE_BYTECODE_SAVER - * Enable save bytecode to file when BE_USE_BYTECODE_SAVER is not 0, - * otherwise disable the feature. - * Default: 1 - **/ -#define BE_USE_BYTECODE_SAVER 1 - -/* Macro: BE_USE_BYTECODE_LOADER - * Enable load bytecode from file when BE_USE_BYTECODE_LOADER is not 0, - * otherwise disable the feature. - * Default: 1 - **/ -#define BE_USE_BYTECODE_LOADER 1 - -/* Macro: BE_USE_SHARED_LIB - * Enable shared library when BE_USE_SHARED_LIB is not 0, - * otherwise disable the feature. - * Default: 1 - **/ -#define BE_USE_SHARED_LIB 0 - -/* Macro: BE_USE_OVERLOAD_HASH - * Allows instances to overload hash methods for use in the - * built-in Map class. Disable this feature to crop the code - * size. - * Default: 1 - **/ -#define BE_USE_OVERLOAD_HASH 1 - -/* Macro: BE_USE_DEBUG_HOOK - * Berry debug hook switch. - * Default: 0 - **/ -#define BE_USE_DEBUG_HOOK 0 - -/* Macro: BE_USE_DEBUG_GC - * Enable GC debug mode. This causes an actual gc after each - * allocation. It's much slower and should not be used - * in production code. - * Default: 0 - **/ -#define BE_USE_DEBUG_GC 0 - -/* Macro: BE_USE_XXX_MODULE - * These macros control whether the related module is compiled. - * When they are true, they will enable related modules. At this - * point you can use the import statement to import the module. - * They will not compile related modules when they are false. - **/ -#define BE_USE_STRING_MODULE 1 -#define BE_USE_JSON_MODULE 1 -#define BE_USE_MATH_MODULE 1 -#define BE_USE_TIME_MODULE 0 -#define BE_USE_OS_MODULE 0 -#define BE_USE_GLOBAL_MODULE 1 -#define BE_USE_SYS_MODULE 1 -#define BE_USE_DEBUG_MODULE 0 -#define BE_USE_GC_MODULE 1 -#define BE_USE_SOLIDIFY_MODULE 0 -#define BE_USE_INTROSPECT_MODULE 1 -#define BE_USE_STRICT_MODULE 1 - -#ifdef USE_BERRY_DEBUG - #undef BE_USE_DEBUG_MODULE - #undef BE_USE_SOLIDIFY_MODULE - #define BE_USE_DEBUG_MODULE 1 - #define BE_USE_SOLIDIFY_MODULE 1 -#endif // USE_BERRY_DEBUG - -/* Macro: BE_EXPLICIT_XXX - * If these macros are defined, the corresponding function will - * use the version defined by these macros. These macro definitions - * are not required. - * The default is to use the functions in the standard library. - **/ -#ifdef USE_BERRY_PSRAM -#ifdef __cplusplus -extern "C" { -#endif - extern void *berry_malloc(size_t size); - extern void berry_free(void *ptr); - extern void *berry_realloc(void *ptr, size_t size); -#ifdef __cplusplus -} -#endif - #define BE_EXPLICIT_MALLOC berry_malloc - #define BE_EXPLICIT_FREE berry_free - #define BE_EXPLICIT_REALLOC berry_realloc -#else - #define BE_EXPLICIT_MALLOC malloc - #define BE_EXPLICIT_FREE free - #define BE_EXPLICIT_REALLOC realloc -#endif // USE_BERRY_PSRAM - -#define BE_EXPLICIT_ABORT abort -#define BE_EXPLICIT_EXIT exit -// #define BE_EXPLICIT_MALLOC malloc -// #define BE_EXPLICIT_FREE free -// #define BE_EXPLICIT_REALLOC realloc - -/* Macro: be_assert - * Berry debug assertion. Only enabled when BE_DEBUG is active. - * Default: use the assert() function of the standard library. - **/ -#define be_assert(expr) assert(expr) - -/* Tasmota debug specific */ -#ifdef USE_BERRY_DEBUG - #undef BE_DEBUG_RUNTIME_INFO - #define BE_DEBUG_RUNTIME_INFO 2 /* record line information in 16 bits */ -#endif // USE_BERRY_DEBUG - -#endif diff --git a/lib/libesp32/berry/default/embedded/Animate.be b/lib/libesp32/berry/default/embedded/Animate.be deleted file mode 100644 index 279fd39ed..000000000 --- a/lib/libesp32/berry/default/embedded/Animate.be +++ /dev/null @@ -1,189 +0,0 @@ -# -# class Animate -# -# Animation framework -# - -animate = module("animate") - -# state-machine: from val a to b -class Animate_ins_ramp - var a # starting value - var b # end value - var duration # duration in milliseconds - - def init(a,b,duration) - self.a = a - self.b = b - self.duration = duration - end -end -animate.ins_ramp = Animate_ins_ramp - -# state-machine: pause and goto -class Animate_ins_goto - var pc_rel # relative PC, -1 previous instruction, 1 next instruction, 0 means see pc_abs - var pc_abs # absolute PC, only if pc_rel == 0, address if next instruction - var duration # pause in milliseconds before goto, -1 means infinite (state-machine can be changed externally) - - def init(pc_rel, pc_abs, duration) - self.pc_rel = pc_rel - self.pc_abs = pc_abs - self.duration = duration - end -end -animate.ins_goto = Animate_ins_goto - -class Animate_engine - var code # array of state-machine instructions - var closure # closure to call with the new value - var pc # program-counter - var ins_time # absolute time when the current instruction started - var running # is the animation running? allows fast return - var value # current value - - def init() - self.code = [] - self.pc = 0 # start at instruction 0 - self.ins_time = 0 - self.running = false # not running by default - # - end - - # run but needs external calls to `animate()` - # cur_time:int (opt) current timestamp in ms, defaults to `tasmota.millis()` - # val:int (opt) starting value, default to `nil` - def run(cur_time, val) - if cur_time == nil cur_time = tasmota.millis() end - if (val != nil) self.value = val end - self.ins_time = cur_time - - self.running = true - tasmota.add_driver(self) - end - - # runs autonomously in the Tasmota event loop - def autorun(cur_time, val) - self.run(cur_time, val) - tasmota.add_driver(self) - end - - def stop() - self.running = false - tasmota.remove_driver(self) - end - - def is_running() - return self.running - end - - def every_50ms() - self.animate() - end - - def animate(cur_time) # time in milliseconds, optional, defaults to `tasmota.millis()` - if !self.running return end - if cur_time == nil cur_time = tasmota.millis() end - # run through instructions - while true - var sub_index = cur_time - self.ins_time # time since the beginning of current instruction - # - # make sure PC is valid - if self.pc >= size(self.code) - self.running = false - break - end - # - if self.pc < 0 raise "internal_error", "Animate pc is out of range" end - var ins = self.code[self.pc] - - # Instruction Ramp - if isinstance(ins, animate.ins_ramp) - var f = self.closure # assign to a local variable to not call a method - if sub_index < ins.duration - # we're still in the ramp - self.value = tasmota.scale_uint(sub_index, 0, ins.duration, ins.a, ins.b) - # call closure - if f f(self.value) end # call closure, need try? TODO - break - else - self.value = ins.b - if f f(self.value) end # set to last value - self.pc += 1 # next instruction - self.ins_time = cur_time - (sub_index - ins.duration) - end - - # Instruction Goto - elif isinstance(ins, animate.ins_goto) - if sub_index < ins.duration - break - else - if ins.pc_rel != 0 - self.pc += ins.pc_rel - else - self.pc = ins.pc_abs - end - self.ins_time = cur_time - (sub_index - ins.duration) - end - - # Invalid - else - raise "internal_error", "unknown instruction" - end - end - return self.value - - end -end -animate.engine = Animate_engine - -class Animate_from_to : Animate_engine - - def init(closure, from, to, duration) - super(self).init() - self.closure = closure - self.code.push(animate.ins_ramp(from, to, duration)) - end - -end -animate.from_to = Animate_from_to - -#- -a=Animate_from_to(nil, 0, 100, 5000) -a.autorun() --# - -class Animate_rotate : Animate_engine - - def init(closure, from, to, duration) - super(self).init() - self.closure = closure - self.code.push(animate.ins_ramp(from, to, duration)) - self.code.push(animate.ins_goto(0, 0, 0)) # goto abs pc = 0 without any pause - end - -end -animate.rotate = Animate_rotate - -#- -a=Animate_rotate(nil, 0, 100, 5000) -a.autorun() --# - -class Animate_back_forth : Animate_engine - - def init(closure, from, to, duration) - super(self).init() - self.closure = closure - self.code.push(animate.ins_ramp(from, to, duration / 2)) - self.code.push(animate.ins_ramp(to, from, duration / 2)) - self.code.push(animate.ins_goto(0, 0, 0)) # goto abs pc = 0 without any pause - end - -end -animate.back_forth = Animate_back_forth - -#- -a=Animate_back_forth(nil, 0, 100, 5000) -a.autorun() --# diff --git a/lib/libesp32/berry/default/embedded/Driver.be b/lib/libesp32/berry/default/embedded/Driver.be deleted file mode 100644 index d0782f024..000000000 --- a/lib/libesp32/berry/default/embedded/Driver.be +++ /dev/null @@ -1,29 +0,0 @@ -#- Native code used for testing and code solidification -# -#- Do not use it -# - -class Driver - var every_second - var every_100ms - var web_add_handler - var web_add_button - var web_add_main_button - var web_add_management_button - var web_add_config_button - var web_add_console_button - var save_before_restart - var web_sensor - var json_append - var button_pressed - var display - - def init() - end - - def get_tasmota() - return tasmota - end - - def add_cmd(c, f) - tasmota.add_cmd(c, / cmd, idx, payload, payload_json -> f(self, cmd, idx, payload, payload_json)) - end -end diff --git a/lib/libesp32/berry/default/embedded/Tasmota.be b/lib/libesp32/berry/default/embedded/Tasmota.be deleted file mode 100644 index 22752a47d..000000000 --- a/lib/libesp32/berry/default/embedded/Tasmota.be +++ /dev/null @@ -1,577 +0,0 @@ -#- Native code used for testing and code solidification -# -#- Do not use it -# - -class Timer - var due, f, id - def init(due, f, id) - self.due = due - self.f = f - self.id = id - end - def tostring() - import string - return string.format(" closure - # Classs KV has two members k and v - def kv(k, v) - class KV - var k, v - def init(k,v) - self.k = k - self.v = v - end - end - - return KV(k, v) - end - - # add `chars_in_string(s:string,c:string) -> int`` - # looks for any char in c, and return the position of the first char - # or -1 if not found - # inv is optional and inverses the behavior, i.e. look for chars not in the list - def chars_in_string(s,c,inv) - var inverted = inv ? true : false - var i = 0 - while i < size(s) - # for i:0..size(s)-1 - var found = false - var j = 0 - while j < size(c) - # for j:0..size(c)-1 - if s[i] == c[j] found = true end - j += 1 - end - if inverted != found return i end - i += 1 - end - return -1 - end - - # find a key in map, case insensitive, return actual key or nil if not found - def find_key_i(m,keyi) - import string - var keyu = string.toupper(keyi) - if isinstance(m, map) - for k:m.keys() - if string.toupper(k)==keyu || keyi=='?' - return k - end - end - end - end - - - # split the item when there is an operator, returns a list of (left,op,right) - # ex: "Dimmer>50" -> ["Dimmer",tasmota_gt,"50"] - def find_op(item) - import string - var op_chars = '=<>!' - var pos = self.chars_in_string(item, op_chars) - if pos >= 0 - var op_split = string.split(item,pos) - var op_left = op_split[0] - var op_rest = op_split[1] - pos = self.chars_in_string(op_rest, op_chars, true) - if pos >= 0 - var op_split2 = string.split(op_rest,pos) - var op_middle = op_split2[0] - var op_right = op_split2[1] - return [op_left,op_middle,op_right] - end - end - return [item, nil, nil] - end - - # Rules - def add_rule(pat,f) - if !self._rules - self._rules=[] - end - if type(f) == 'function' - self._rules.push(self.kv(pat, f)) - else - raise 'value_error', 'the second argument is not a function' - end - end - - def remove_rule(pat) - if self._rules - var i = 0 - while i < size(self._rules) - if self._rules[i].k == pat - self._rules.remove(i) #- don't increment i since we removed the object -# - else - i += 1 - end - end - end - end - - # Rules trigger if match. return true if match, false if not - def try_rule(event, rule, f) - import string - var rl_list = self.find_op(rule) - var sub_event = event - var rl = string.split(rl_list[0],'#') - var i = 0 - while i < size(rl) - # for it:rl - var it = rl[i] - var found=self.find_key_i(sub_event,it) - if found == nil return false end - sub_event = sub_event[found] - i += 1 - end - var op=rl_list[1] - var op2=rl_list[2] - if op - if op=='==' - if str(sub_event) != str(op2) return false end - elif op=='!==' - if str(sub_event) == str(op2) return false end - elif op=='=' - if real(sub_event) != real(op2) return false end - elif op=='!=' - if real(sub_event) == real(op2) return false end - elif op=='>' - if real(sub_event) <= real(op2) return false end - elif op=='>=' - if real(sub_event) < real(op2) return false end - elif op=='<' - if real(sub_event) >= real(op2) return false end - elif op=='<=' - if real(sub_event) > real(op2) return false end - end - end - f(sub_event, rl_list[0], event) - return true - end - - # Run rules, i.e. check each individual rule - # Returns true if at least one rule matched, false if none - def exec_rules(ev_json) - if self._rules || self.cmd_res != nil # if there is a rule handler, or we record rule results - import json - var ev = json.load(ev_json) # returns nil if invalid JSON - var ret = false - if ev == nil - self.log('BRY: ERROR, bad json: '+ev_json, 3) - ev = ev_json # revert to string - end - # record the rule payload for tasmota.cmd() - if self.cmd_res != nil - self.cmd_res = ev - end - # try all rule handlers - if self._rules - var i = 0 - while i < size(self._rules) - var kv = self._rules[i] - ret = self.try_rule(ev,kv.k,kv.v) || ret #- call should be first to avoid evaluation shortcut if ret is already true -# - i += 1 - end - end - return ret - end - return false - end - - # Run tele rules - def exec_tele(ev_json) - if self._rules - import json - var ev = json.load(ev_json) # returns nil if invalid JSON - var ret = false - if ev == nil - self.log('BRY: ERROR, bad json: '+ev_json, 3) - ev = ev_json # revert to string - end - # insert tele prefix - ev = { "Tele": ev } - - var i = 0 - while i < size(self._rules) - var kv = self._rules[i] - ret = self.try_rule(ev,kv.k,kv.v) || ret #- call should be first to avoid evaluation shortcut -# - i += 1 - end - return ret - end - return false - end - - def set_timer(delay,f,id) - if !self._timers self._timers=[] end - self._timers.push(Timer(self.millis(delay),f,id)) - end - - # run every 50ms tick - def run_deferred() - if self._timers - var i=0 - while i wire1 or wire2 or nil - # scan for the first occurrence of the addr, starting with bus1 then bus2 - # optional: skip if index is disabled via I2CEnable - def wire_scan(addr,idx) - # skip if the I2C index is disabled - if idx != nil && !self.i2c_enabled(idx) return nil end - if self.wire1.enabled() && self.wire1.detect(addr) return self.wire1 end - if self.wire2.enabled() && self.wire2.detect(addr) return self.wire2 end - return nil - end - - 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 - - def load(f) - # embedded functions - # puth_path: adds the current archive to sys.path - def push_path(p) - import sys - var path = sys.path() - if path.find(p) == nil # append only if it's not already there - path.push(p) - end - end - # pop_path: removes the path - def pop_path(p) - import sys - var path = sys.path() - var idx = path.find(p) - if idx != nil - path.remove(idx) - end - end - - import string - import path - - # fail if empty string - if size(f) == 0 return false end - # Ex: f = 'app.zip#autoexec' - - # add leading '/' if absent - if f[0] != '/' f = '/' + f end - # Ex: f = '/app.zip#autoexec' - - var f_items = string.split(f, '#') - var f_prefix = f_items[0] - var f_suffix = f_items[-1] # last token - var f_archive = size(f_items) > 1 # is the file in an archive - - # if no dot, add the default '.be' extension - if string.find(f_suffix, '.') < 0 # does the final file has a '.' - f += ".be" - f_suffix += ".be" - end - # Ex: f = '/app.zip#autoexec.be' - - # if the filename has no '.' append '.be' - var suffix_be = f_suffix[-3..-1] == '.be' - var suffix_bec = f_suffix[-4..-1] == '.bec' - # Ex: f = '/app.zip#autoexec.be', f_suffix = 'autoexec.be', suffix_be = true, suffix_bec = false - - # check that the file ends with '.be' of '.bec' - if !suffix_be && !suffix_bec - raise "io_error", "file extension is not '.be' or '.bec'" - end - - var f_time = path.last_modified(f_prefix) - - if suffix_bec - if f_time == nil return false end # file does not exist - # f is the right file, continue - else - var f_time_bc = path.last_modified(f + "c") # timestamp for bytecode - if f_time == nil && f_time_bc == nil return false end - if f_time_bc != nil && (f_time == nil || f_time_bc >= f_time) - # bytecode exists and is more recent than berry source, use bytecode - ##### temporarily disable loading from bec file - # f = f + "c" # use bytecode name - suffix_bec = true - end - end - - # recall the working directory - if f_archive - self.wd = f_prefix + "#" - push_path(self.wd) - else - self.wd = "" - end - - var c = compile(f, 'file') - # save the compiled bytecode - if !suffix_bec && !f_archive - try - self.save(f + 'c', c) - except .. as e - print(string.format('BRY: could not save compiled file %s (%s)',f+'c',e)) - end - end - # call the compiled code - c() - # call successfuls - - # remove path prefix - if f_archive - pop_path(f_prefix + "#") - end - - return true - end - - def event(event_type, cmd, idx, payload, raw) - import introspect - import string - if event_type=='every_50ms' self.run_deferred() end #- first run deferred events -# - - var done = false - if event_type=='cmd' return self.exec_cmd(cmd, idx, payload) - elif event_type=='tele' return self.exec_tele(payload) - elif event_type=='rule' return self.exec_rules(payload) - elif event_type=='gc' return self.gc() - elif self._drivers - var i = 0 - while i < size(self._drivers) - #for d:self._drivers - var d = self._drivers[i] - var f = introspect.get(d, event_type) # try to match a function or method with the same name - if type(f) == 'function' - try - done = f(d, cmd, idx, payload, raw) - if done break end - except .. as e,m - print(string.format("BRY: Exception> '%s' - %s", e, m)) - if self._debug_present - import debug - debug.traceback() - end - end - end - i += 1 - end - end - - # save persist - if event_type=='save_before_restart' - import persist - persist.save() - end - - return done - end - - def add_driver(d) - if self._drivers - self._drivers.push(d) - else - self._drivers = [d] - end - end - - def remove_driver(d) - if self._drivers - var idx = self._drivers.find(d) - if idx != nil - self._drivers.pop(idx) - end - end - end - - # cmd high-level function - def cmd(command) - self.cmd_res = true # signal buffer capture - - self._cmd(command) - - var ret = nil - if self.cmd_res != true # unchanged - ret = self.cmd_res - end - self.cmd_res = nil # clear buffer - - return ret - end - - # set_light and get_light deprecetaion - def get_light(l) - print('tasmota.get_light() is deprecated, use light.get()') - import light - if l != nil - return light.get(l) - else - return light.get() - end - end - def set_light(v,l) - print('tasmota.set_light() is deprecated, use light.set()') - import light - if l != nil - return light.set(v,l) - else - return light.set(v) - end - end - - #- generate a new C callback and record the associated Berry closure -# - def gen_cb(f) - # DEPRECATED - import cb - return cb.gen_cb(f) - end - - #- convert hue/sat to rgb -# - #- hue:int in range 0..359 -# - #- sat:int (optional) in range 0..255 -# - #- returns int: 0xRRGGBB -# - def hs2rgb(hue,sat) - if sat == nil sat = 255 end - var r = 255 # default to white - var b = 255 - var g = 255 - # we take brightness at 100%, brightness should be set separately - hue = hue % 360 # normalize to 0..359 - - if sat > 0 - var i = hue / 60 # quadrant 0..5 - var f = hue % 60 # 0..59 - var p = 255 - sat - var q = tasmota.scale_uint(f, 0, 60, 255, p) # 0..59 - var t = tasmota.scale_uint(f, 0, 60, p, 255) - - if i == 0 - # r = 255 - g = t - b = p - elif i == 1 - r = q - # g = 255 - b = p - elif i == 2 - r = p - #g = 255 - b = t - elif i == 3 - r = p - g = q - #b = 255 - elif i == 4 - r = t - g = p - #b = 255 - else - #r = 255 - g = p - b = q - end - end - - return (r << 16) | (g << 8) | b - end -end diff --git a/lib/libesp32/berry/default/embedded/Wire.be b/lib/libesp32/berry/default/embedded/Wire.be deleted file mode 100644 index a5e28ddd8..000000000 --- a/lib/libesp32/berry/default/embedded/Wire.be +++ /dev/null @@ -1,25 +0,0 @@ -#- Native code used for testing and code solidification -# -#- Do not use it -# - -class Wire - var bus - - def read_bytes(addr,reg,size) - self._begin_transmission(addr) - self._write(reg) - self._end_transmission(false) - self._request_from(addr,size) - var ret=bytes(size) - while (self._available()) - ret..self._read() - end - return ret - end - - def write_bytes(addr,reg,b) - self._begin_transmission(addr) - self._write(reg) - self._write(b) - self._end_transmission() - end -end diff --git a/lib/libesp32/berry/default/embedded/autoconf.be b/lib/libesp32/berry/default/embedded/autoconf.be deleted file mode 100644 index 8489c7447..000000000 --- a/lib/libesp32/berry/default/embedded/autoconf.be +++ /dev/null @@ -1,389 +0,0 @@ -#- autocong module for Berry -# -#- -# -#- To solidify: -# -#- - # load only persis_module and persist_module.init - import autoconf - solidify.dump(autoconf_module) - # copy and paste into `be_autoconf_lib.c` --# -#- - -# For external compile: - -display = module("display") -self = nil -tasmota = nil -def load() end - --# - -var autoconf_module = module("autoconf") - -autoconf_module.init = def (m) - - class Autoconf - var _archive - var _error - - def init() - import path - import string - - var dir = path.listdir("/") - var entry - tasmota.add_driver(self) - - var i = 0 - while i < size(dir) - if string.find(dir[i], ".autoconf") > 0 # does the file contain '*.autoconf', >0 to skip `.autoconf` - if entry != nil - # we have multiple configuration files, not allowed - print(string.format("CFG: multiple autoconf files found, aborting ('%s' + '%s')", entry, dir[i])) - self._error = true - return nil - end - entry = dir[i] - end - i += 1 - end - - if entry == nil - tasmota.log("CFG: no '*.autoconf' file found", 2) - return nil - end - - self._archive = entry - end - - - # #################################################################################################### - # Manage first time marker - # #################################################################################################### - def is_first_time() - import path - return !path.exists("/.autoconf") - end - def set_first_time() - var f = open("/.autoconf", "w") - f.close() - end - def clear_first_time() - import path - path.remove("/.autoconf") - end - - # #################################################################################################### - # Delete all autoconfig files present - # #################################################################################################### - def delete_all_configs() - import path - import string - var dir = path.listdir("/") - - for d:dir - if string.find(d, ".autoconf") > 0 # does the file contain '*.autoconf' - path.remove(d) - end - end - end - - # #################################################################################################### - # Get current module - # contains the name of the archive without leading `/`, ex: `M5Stack_Fire.autoconf` - # or `nil` if none - # #################################################################################################### - def get_current_module_path() - return self._archive - end - def get_current_module_name() - return self._archive[0..-10] - end - - # #################################################################################################### - # Load templates from Github - # #################################################################################################### - def load_templates() - import string - import json - try - var url = string.format("https://raw.githubusercontent.com/tasmota/autoconf/main/%s_manifest.json", tasmota.arch()) - tasmota.log(string.format("CFG: loading '%s'", url), 3) - # load the template - var cl = webclient() - cl.begin(url) - var r = cl.GET() - if r != 200 - tasmota.log(string.format("CFG: return_code=%i", r), 2) - return nil - end - var s = cl.get_string() - cl.close() - # convert to json - var j = json.load(s) - tasmota.log(string.format("CFG: loaded '%s'", str(j)), 3) - - var t = j.find("files") - if isinstance(t, list) - return t - end - - return nil - except .. as e, m - tasmota.log(string.format("CFG: exception '%s' - '%s'", e, m), 2) - return nil - end - end - - # #################################################################################################### - # Init web handlers - # #################################################################################################### - # Displays a "Autocong" button on the configuration page - def web_add_config_button() - import webserver - webserver.content_send("

") - end - - - # This HTTP GET manager controls which web controls are displayed - def page_autoconf_mgr() - import webserver - import string - if !webserver.check_privileged_access() return nil end - - webserver.content_start('Auto-configuration') - webserver.content_send_style() - webserver.content_send("

 (This feature requires an internet connection)

") - - var cur_module = self.get_current_module_path() - var cur_module_display = cur_module ? string.tr(self.get_current_module_name(), "_", " ") : self._error ? "<Error: apply new or remove>" : "<None>" - - webserver.content_send("
") - webserver.content_send(string.format(" Current auto-configuration")) - webserver.content_send(string.format("

Current configuration:

%s

", cur_module_display)) - - if cur_module - # add button to reapply template - webserver.content_send("

") - webserver.content_send("") - webserver.content_send("

") - end - webserver.content_send("

") - - webserver.content_send("
") - webserver.content_send(string.format(" Select new auto-configuration")) - - webserver.content_send("

") - webserver.content_send("
") - webserver.content_send("

") - - webserver.content_send("") - # webserver.content_send(string.format("", ota_num)) - webserver.content_send("

") - - - webserver.content_send("

") - webserver.content_button(webserver.BUTTON_CONFIGURATION) - webserver.content_stop() - end - - # #################################################################################################### - # Web controller - # - # Applies the changes and restart - # #################################################################################################### - # This HTTP POST manager handles the submitted web form data - def page_autoconf_ctl() - import webserver - import string - import path - if !webserver.check_privileged_access() return nil end - - try - if webserver.has_arg("reapply") - tasmota.log("CFG: removing first time marker", 2); - # print("CFG: removing first time marker") - self.clear_first_time() - #- and force restart -# - webserver.redirect("/?rst=") - - elif webserver.has_arg("zip") - # remove any remaining autoconf file - tasmota.log("CFG: removing autoconf files", 2); - # print("CFG: removing autoconf files") - self.delete_all_configs() - - # get the name of the configuration file - var arch_name = webserver.arg("zip") - - if arch_name != "reset" - var url = string.format("https://raw.githubusercontent.com/tasmota/autoconf/main/%s/%s.autoconf", tasmota.arch(), arch_name) - tasmota.log(string.format("CFG: downloading '%s'", url), 2); - - var local_file = string.format("%s.autoconf", arch_name) - - # download file and write directly to file system - var cl = webclient() - cl.begin(url) - var r = cl.GET() - if r != 200 raise "connection_error", string.format("return code=%i", r) end - cl.write_file(local_file) - cl.close() - end - - # remove marker to reapply template - self.clear_first_time() - - #- and force restart -# - webserver.redirect("/?rst=") - else - raise "value_error", "Unknown command" - end - except .. as e, m - print(string.format("CFG: Exception> '%s' - %s", e, m)) - #- display error page -# - webserver.content_start("Parameter error") #- title of the web page -# - webserver.content_send_style() #- send standard Tasmota styles -# - - webserver.content_send(string.format("

Exception:
'%s'
%s

", e, m)) - - webserver.content_button(webserver.BUTTON_CONFIGURATION) #- button back to management page -# - webserver.content_stop() #- end of web page -# - end - end - - # Add HTTP POST and GET handlers - def web_add_handler() - import webserver - webserver.on('/ac', / -> self.page_autoconf_mgr(), webserver.HTTP_GET) - webserver.on('/ac', / -> self.page_autoconf_ctl(), webserver.HTTP_POST) - end - - - # reset the configuration information (but don't restart) - # i.e. remove any autoconf file - def reset() - import path - import string - - var dir = path.listdir("/") - var entry - - var i = 0 - while i < size(dir) - var fname = dir[i] - if string.find(fname, ".autoconf") > 0 # does the file contain '*.autoconf' - path.remove(fname) - print(string.format("CFG: removed file '%s'", fname)) - end - i += 1 - end - - self._archive = nil - self._error = nil - end - - # called by the synthetic event `preinit` - def preinit() - if self._archive == nil return end - # try to launch `preinit.be` - import path - - var fname = self._archive + '#preinit.be' - if path.exists(fname) - tasmota.log("CFG: loading "+fname, 3) - load(fname) - tasmota.log("CFG: loaded "+fname, 3) - end - end - - def run_bat(fname) # read a '*.bat' file and run each command - import string - var f - try - f = open(fname, "r") # open file in read-only mode, it is expected to exist - while true - var line = f.readline() # read each line, can contain a terminal '\n', empty if end of file - if size(line) == 0 break end # end of file - - if line[-1] == "\n" line = line[0..-2] end # remove any trailing '\n' - if size(line) > 0 - tasmota.cmd(line) # run the command - end - end - f.close() # close, we don't expect exception with read-only, could be added later though - except .. as e, m - print(string.format('CFG: could not run %s (%s - %s)', fname, e, m)) - f.close() - end - end - - # called by the synthetic event `autoexec` - def autoexec() - if self._archive == nil return end - # try to launch `preinit.be` - import path - - # Step 1. if first run, only apply `init.bat` - var fname = self._archive + '#init.bat' - if self.is_first_time() && path.exists(fname) - # create the '.autoconf' file to avoid running it again, even if it crashed - self.set_first_time() - - # if path.exists(fname) # we know it exists from initial test - self.run_bat(fname) - tasmota.log("CFG: 'init.bat' done, restarting", 2) - tasmota.cmd("Restart 1") - return # if init was run, force a restart anyways and don't run the remaining code - # end - end - - # Step 2. if 'display.ini' is present, launch Universal Display - fname = self._archive + '#display.ini' - if gpio.pin_used(gpio.OPTION_A, 2) && path.exists(fname) - if path.exists("display.ini") - tasmota.log("CFG: skipping 'display.ini' because already present in file-system", 2) - else - import display - var f = open(fname,"r") - var desc = f.read() - f.close() - display.start(desc) - end - end - - # Step 3. if 'autoexec.bat' is present, run it - fname = self._archive + '#autoexec.bat' - if path.exists(fname) - tasmota.log("CFG: running "+fname, 3) - self.run_bat(fname) - tasmota.log("CFG: ran "+fname, 3) - end - - # Step 4. if 'autoexec.be' is present, load it - fname = self._archive + '#autoexec.be' - if path.exists(fname) - tasmota.log("CFG: loading "+fname, 3) - load(fname) - tasmota.log("CFG: loaded "+fname, 3) - end - end - end - - return Autoconf() # return an instance of this class -end - -aa = autoconf_module.init(autoconf_module) -import webserver -webserver.on('/ac2', / -> aa.page_autoconf_mgr(), webserver.HTTP_GET) -return autoconf_module diff --git a/lib/libesp32/berry/default/embedded/i2c_axp192.be b/lib/libesp32/berry/default/embedded/i2c_axp192.be deleted file mode 100644 index 3d958334f..000000000 --- a/lib/libesp32/berry/default/embedded/i2c_axp192.be +++ /dev/null @@ -1,176 +0,0 @@ -#------------------------------------------------------------- - - Generic driver for AXP192 - solidified - -------------------------------------------------------------# -class AXP192 : I2C_Driver - def init() - super(self, I2C_Driver).init("AXP192", 0x34) - end - - # Return True = Battery Exist - def battery_present() - if self.wire.read(self.addr, 0x01, 1) & 0x20 return true - else return false - end - end - - # Input Power Status ??? - def get_input_power_status() - return self.wire.read(self.addr, 0x00, 1) - end - - # Battery Charging Status - def get_battery_chargin_status() - return self.wire.read(self.addr, 0x01, 1) - end - - # AXP chip temperature in °C - def get_temp() - return self.read12(0x5E) * 0.1 - 144.7 - end - - def get_bat_power() - return self.read24(0x70) * 0.00055 - end - - def get_bat_voltage() - return self.read12(0x78) * 0.0011 - end - def get_bat_current() - return (self.read13(0x7A) - self.read13(0x7C)) * 0.5 - end - def get_bat_charge_current() - return self.read13(0x7A) * 0.5 - end - def get_aps_voltage() - return self.read12(0x7E) * 0.0014 - end - def get_vbus_voltage() - return self.read12(0x5A) * 0.0017 - end - def get_vbus_current() - return self.read12(0x5C) * 0.375 - end - - # set LDO voltage - # ldo: 2/3 - # voltage: (mV) 1800mV - 3300mV in 100mV steps - def set_ldo_voltage(ldo, voltage) - if voltage > 3300 voltage = 15 - else voltage = (voltage / 100) - 18 - end - - if ldo == 2 - self.write8(0x28, self.read8(0x28) & 0x0F | ((voltage & 0x0F) << 4)) - end - if ldo == 3 - self.write8(0x28, self.read8(0x28) & 0xF0 | (voltage & 0x0F)) - end - end - - # set DCDC enable, 1/2/3 - def set_dcdc_enable(dcdc, state) - if dcdc == 1 self.write_bit(0x12, 0, state) end - if dcdc == 2 self.write_bit(0x12, 4, state) end - if dcdc == 3 self.write_bit(0x12, 1, state) end - end - - # set LDO enable, 2/3 (LDO 1 is always on) - def set_ldo_enable(ldo, state) - if ldo == 2 self.write_bit(0x12, 2, state) end - if ldo == 3 self.write_bit(0x12, 3, state) end - end - - # set GPIO output state 0/1/2 and 3/4 - def write_gpio(gpio, state) - if gpio >= 0 && gpio <= 2 - self.write_bit(0x94, gpio, state) - elif gpio >= 3 && gpio <= 4 - self.write_bit(0x96, gpio - 3, state) - end - end - - # Set voltage on DC-DC1/2/3 - # dcdc: 1/2/3 (warning some C libs start at 0) - # voltage: - def set_dc_voltage(dcdc, voltage) - if dcdc < 1 || dcdc > 3 return end - var v - if voltage < 700 v = 0 - elif voltage > 3500 v = 112 - elif dcdc == 2 && voltage > 2275 v = 63 # dcdc2 is limited to 2.275V - else v = (voltage - 700) / 25 - end - - var addr = 0x26 - if dcdc == 3 addr = 0x27 - elif dcdc == 2 addr = 0x23 - end - - self.write8(addr, self.read8(addr) & 0x80 | (v & 0x7F)) - end - - # Set charging current - # 100mA = 0 - # 190mA = 1 - # 280mA = 2 - # 360mA = 3 - # 450mA = 4 - # 550mA = 5 - # 630mA = 6 - # 700mA = 7 - # 780mA = 8 - # 880mA = 9 - # 960mA = 10 - # 1000mA = 11 - # 1080mA = 12 - # 1160mA = 13 - # 1240mA = 14 - # 1320mA = 15 - def set_chg_current(current_code) - self.write8(0x33, self.read8(0x33) & 0xF0 | (current_code & 0x0F)) - end - - # // Low Volt Level 1, when APS Volt Output < 3.4496 V - # // Low Volt Level 2, when APS Volt Output < 3.3992 V, then this flag is SET (0x01) - # // Flag will reset once battery volt is charged above Low Volt Level 1 - # // Note: now AXP192 have the Shutdown Voltage of 3.0V (B100) Def in REG 31H - def get_warning_level() - return self.read12(0x47) & 1 - end - - #- trigger a read every second -# - # def every_second() - # if !self.wire return nil end #- exit if not initialized -# - # end - - #- display sensor value in the web UI -# - def web_sensor() - if !self.wire return nil end #- exit if not initialized -# - import string - var msg = string.format( - "{s}VBus Voltage{m}%.3f V{e}".. - "{s}VBus Current{m}%.1f mA{e}".. - "{s}Batt Voltage{m}%.3f V{e}".. - "{s}Batt Current{m}%.1f mA{e}".. - #"{s}Batt Power{m}%.3f{e}".. - "{s}Temp AXP{m}%.1f °C{e}", - self.get_vbus_voltage(), self.get_vbus_voltage(), - self.get_bat_voltage(), self.get_bat_current(), - #self.get_bat_power(), - self.get_temp() - ) - tasmota.web_send_decimal(msg) - end - - #- add sensor value to teleperiod -# - def json_append() - if !self.wire return nil end #- exit if not initialized -# - # import string - # var ax = int(self.accel[0] * 1000) - # var ay = int(self.accel[1] * 1000) - # var az = int(self.accel[2] * 1000) - # var msg = string.format(",\"MPU6886\":{\"AX\":%i,\"AY\":%i,\"AZ\":%i,\"GX\":%i,\"GY\":%i,\"GZ\":%i}", - # ax, ay, az, self.gyro[0], self.gyro[1], self.gyro[2]) - # tasmota.response_append(msg) - end -end diff --git a/lib/libesp32/berry/default/embedded/i2c_driver.be b/lib/libesp32/berry/default/embedded/i2c_driver.be deleted file mode 100644 index a66afa5ad..000000000 --- a/lib/libesp32/berry/default/embedded/i2c_driver.be +++ /dev/null @@ -1,104 +0,0 @@ -#------------------------------------------------------------- - - IMPORTANT - - THIS CLASS IS ALREADY BAKED IN TASMOTA - - - - It is here for debugging and documentation purpose only - -------------------------------------------------------------# - -#------------------------------------------------------------- - - I2C_Driver class to simplify development of I2C drivers - - - - I2C_Driver(name, addr [, i2c_index]) -> nil - - name: name of I2C device for logging, or function to detect the model - - addr: I2C address of device, will probe all I2C buses for it - - i2c_index: (optional) check is the device is not disabled - -------------------------------------------------------------# - -class I2C_Driver - var wire #- wire object to reach the device, if nil then the module is not initialized -# - var addr #- I2C address of the device -# - var name #- model namme of the device, cannot be nil -# - - #- Init and look for device - - Input: - - name_or_detect : name of the device (if string) - or function to detect the precise model(if function) - the function is passed a single argument `self` - and must return a string, or `nil` if the device is invalid - - addr : I2C address of device (int 0..255) - - i2c_index : Tasmota I2C index, see `I2CDEVICES.md` (int) - --# - def init(name_or_detect, addr, i2c_index) - var tasmota = self.get_tasmota() #- retrieve the 'tasmota' singleton -# - - #- check if the i2c index is disabled by Tasmota configuration -# - if i2c_index != nil && !tasmota.i2c_enabled(i2c_index) return end - - self.addr = addr #- address for AXP192 -# - self.wire = tasmota.wire_scan(self.addr) #- get the right I2C bus -# - - if self.wire - #- find name of device, can be a string or a method -# - if type(name_or_detect) == 'function' - self.name = name_or_detect(self) - else - self.name = name_or_detect - end - #- if name is invalid, it means we can't detect device, abort -# - if self.name == nil self.wire = nil end - - if self.wire - print("I2C:", self.name, "detected on bus", self.wire.bus) - end - end - end - - #- write register with 8 bits value -# - def write8(reg, val) - return self.wire.write(self.addr, reg, val, 1) - end - - # Set or clear a specific bit in a register - # write_bit(reg:int, bit:int, state:bool) -> nil - # reg: I2C register number (0..255) - # bit: bit of I2C register to change (0..7) - # state: boolean value to write to specified bit - def write_bit(reg, bit, state) - if bit < 0 || bit > 7 return end - var mark = 1 << bit - if state self.write8(reg, self.read8(reg) | mark) - else self.write8(reg, self.read8(reg) & (0xFF - mark)) - end - end - - # read 8 bits - def read8(reg) - return self.wire.read(self.addr, reg, 1) - end - # read 12 bits - def read12(reg) - var buf = self.wire.read_bytes(self.addr, reg, 2) - return (buf[0] << 4) + buf[1] - end - # read 13 bits - def read13(reg) - var buf = self.wire.read_bytes(self.addr, reg, 2) - return (buf[0] << 5) + buf[1] - end - # read 24 bits - def read24(reg) - var buf = self.wire.read_bytes(self.addr, reg, 3) - return (buf[0] << 16) + (buf[1] << 8) + buf[2] - end - # read 32 bits - def read32(reg) - var buf = self.wire.read_bytes(self.addr, reg, 4) - return (buf[0] << 24) + (buf[1] << 16) + (buf[2] << 8) + buf[3] - end -end - -#- Example - -d = I2C_Driver("MPU", 0x68, 58) - --# \ No newline at end of file diff --git a/lib/libesp32/berry/default/embedded/leds.be b/lib/libesp32/berry/default/embedded/leds.be deleted file mode 100644 index 11a0489af..000000000 --- a/lib/libesp32/berry/default/embedded/leds.be +++ /dev/null @@ -1,338 +0,0 @@ -# class Leds -# -# for adressable leds like NoePixel - - -# Native commands -# 00 : ctor (leds:int, gpio:int) -> void -# 01 : begin void -> void -# 02 : show void -> void -# 03 : CanShow void -> bool -# 04 : IsDirty void -> bool -# 05 : Dirty void -> void -# 06 : Pixels void -> bytes() (mapped to the buffer) -# 07 : PixelSize void -> int -# 08 : PixelCount void -> int -# 09 : ClearTo (color:??) -> void -# 10 : SetPixelColor (idx:int, color:??) -> void -# 11 : GetPixelColor (idx:int) -> color:?? -# 20 : RotateLeft (rot:int [, first:int, last:int]) -> void -# 21 : RotateRight (rot:int [, first:int, last:int]) -> void -# 22 : ShiftLeft (rot:int [, first:int, last:int]) -> void -# 23 : ShiftRight (rot:int [, first:int, last:int]) -> void - - -class Leds : Leds_ntv - var gamma # if true, apply gamma (true is default) - var leds # number of leds - # leds:int = number of leds of the strip - # gpio:int (optional) = GPIO for NeoPixel. If not specified, takes the WS2812 gpio - # type:int (optional) = Type of LED, defaults to WS2812 RGB - # rmt:int (optional) = RMT hardware channel to use, leave default unless you have a good reason - def init(leds, gpio, type, rmt) # rmt is optional - self.gamma = true # gamma is enabled by default, it should be disabled explicitly if needed - self.leds = int(leds) - - if gpio == nil && gpio.pin(gpio.WS2812) >= 0 - gpio = gpio.pin(gpio.WS2812) - end - - # if no GPIO, abort - if gpio == nil - raise "valuer_error", "no GPIO specified for neopixelbus" - end - - # initialize the structure - self.ctor(self.leds, gpio, type, rmt) - - if self._p == nil raise "internal_error", "couldn't not initialize noepixelbus" end - - # call begin - self.begin() - - end - - def clear() - self.clear_to(0x000000) - self.show() - end - - def ctor(leds, gpio, rmt) - if rmt == nil - self.call_native(0, leds, gpio) - else - self.call_native(0, leds, gpio, rmt) - end - end - def begin() - self.call_native(1) - end - def show() - self.call_native(2) - end - def can_show() - return self.call_native(3) - end - def is_dirty() - return self.call_native(4) - end - def dirty() - self.call_native(5) - end - def pixels_buffer() - return self.call_native(6) - end - def pixel_size() - return self.call_native(7) - end - def pixel_count() - return self.call_native(8) - end - def clear_to(col, bri) - self.call_native(9, self.to_gamma(col, bri)) - end - def set_pixel_color(idx, col, bri) - self.call_native(10, idx, self.to_gamma(col, bri)) - end - def get_pixel_color(idx) - return self.call_native(11, idx) - end - # def rotate_left(rot, first, last) - # self.call_native(20, rot, first, last) - # end - # def rotate_right(rot, first, last) - # self.call_native(21, rot, first, last) - # end - # def shift_left(rot, first, last) - # self.call_native(22, rot, first, last) - # end - # def shift_right(rot, first, last) - # self.call_native(22, rot, first, last) - # end - - # apply gamma and bri - def to_gamma(rgbw, bri) - bri = (bri != nil) ? bri : 100 - var r = tasmota.scale_uint(bri, 0, 100, 0, (rgbw & 0xFF0000) >> 16) - var g = tasmota.scale_uint(bri, 0, 100, 0, (rgbw & 0x00FF00) >> 8) - var b = tasmota.scale_uint(bri, 0, 100, 0, (rgbw & 0x0000FF)) - if self.gamma - return light.gamma8(r) << 16 | - light.gamma8(g) << 8 | - light.gamma8(b) - else - return r << 16 | - g << 8 | - b - end - end - - # `segment` - # create a new `strip` object that maps a part of the current strip - def create_segment(offset, leds) - if int(offset) + int(leds) > self.leds || offset < 0 || leds < 0 - raise "value_error", "out of range" - end - - # inner class - class Leds_segment - var strip - var offset, leds - - def init(strip, offset, leds) - self.strip = strip - self.offset = int(offset) - self.leds = int(leds) - end - - def clear() - self.clear_to(0x000000) - self.show() - end - - def begin() - # do nothing, already being handled by physical strip - end - def show(force) - # don't trigger on segment, you will need to trigger on full strip instead - if bool(force) || (self.offset == 0 && self.leds == self.strip.leds) - self.strip.show() - end - end - def can_show() - return self.strip.can_show() - end - def is_dirty() - return self.strip.is_dirty() - end - def dirty() - self.strip.dirty() - end - def pixels_buffer() - return nil - end - def pixel_size() - return self.strip.pixel_size() - end - def pixel_count() - return self.leds - end - def clear_to(col, bri) - var i = 0 - while i < self.leds - self.strip.set_pixel_color(i + self.offset, col, bri) - i += 1 - end - end - def set_pixel_color(idx, col, bri) - self.strip.set_pixel_color(idx + self.offset, col, bri) - end - def get_pixel_color(idx) - return self.strip.get_pixel_color(idx + self.offseta) - end - end - - return Leds_segment(self, offset, leds) - - end - - def create_matrix(w, h, offset) - offset = int(offset) - w = int(w) - h = int(h) - if offset == nil offset = 0 end - if w * h + offset > self.leds || h < 0 || w < 0 || offset < 0 - raise "value_error", "out of range" - end - - # inner class - class Leds_matrix - var strip - var offset - var h, w - var alternate # are rows in alternate mode (even/odd are reversed) - - def init(strip, w, h, offset) - self.strip = strip - self.offset = offset - self.h = h - self.w = w - self.alternate = false - end - - def clear() - self.clear_to(0x000000) - self.show() - end - - def begin() - # do nothing, already being handled by physical strip - end - def show(force) - # don't trigger on segment, you will need to trigger on full strip instead - if bool(force) || (self.offset == 0 && self.w * self.h == self.strip.leds) - self.strip.show() - end - end - def can_show() - return self.strip.can_show() - end - def is_dirty() - return self.strip.is_dirty() - end - def dirty() - self.strip.dirty() - end - def pixels_buffer() - return nil - end - def pixel_size() - return self.strip.pixel_size() - end - def pixel_count() - return self.w * self.h - end - def clear_to(col, bri) - var i = 0 - while i < self.w * self.h - self.strip.set_pixel_color(i + self.offset, col, bri) - i += 1 - end - end - def set_pixel_color(idx, col, bri) - self.strip.set_pixel_color(idx + self.offset, col, bri) - end - def get_pixel_color(idx) - return self.strip.get_pixel_color(idx + self.offseta) - end - - # Leds_matrix specific - def set_alternate(alt) - self.alternate = alt - end - def get_alternate() - return self.alternate - end - - def set_matrix_pixel_color(x, y, col, bri) - if self.alternate && x % 2 - # reversed line - self.strip.set_pixel_color(x * self.w + self.h - y - 1 + self.offset, col, bri) - else - self.strip.set_pixel_color(x * self.w + y + self.offset, col, bri) - end - end - end - - return Leds_matrix(self, w, h, offset) - - end - - static def matrix(w, h, gpio, rmt) - var strip = Leds(w * h, gpio, rmt) - var matrix = strip.create_matrix(w, h, 0) - return matrix - end -end - - -#- - -var s = Leds(25, gpio.pin(gpio.WS2812, 1)) -s.clear_to(0x300000) -s.show() -i = 0 - -def anim() - s.clear_to(0x300000) - s.set_pixel_color(i, 0x004000) - s.show() - i = (i + 1) % 25 - tasmota.set_timer(200, anim) -end -anim() - --# - -#- - -var s = Leds_matrix(5, 5, gpio.pin(gpio.WS2812, 1)) -s.set_alternate(true) -s.clear_to(0x300000) -s.show() -x = 0 -y = 0 - -def anim() - s.clear_to(0x300000) - s.set_matrix_pixel_color(x, y, 0x004000) - s.show() - y = (y + 1) % 5 - if y == 0 - x = (x + 1) % 5 - end - tasmota.set_timer(200, anim) -end -anim() - --# diff --git a/lib/libesp32/berry/default/embedded/leds_animator.be b/lib/libesp32/berry/default/embedded/leds_animator.be deleted file mode 100644 index 1ed25b491..000000000 --- a/lib/libesp32/berry/default/embedded/leds_animator.be +++ /dev/null @@ -1,70 +0,0 @@ -# class Leds_animator - -class Leds_animator - var strip # neopixelbus object - var pixel_count # number of pixels in the strip - var bri # brightness of the animation, 0..100, default 50 - var running # is the animation running - var animators # animators list - - def init(strip) - self.strip = strip - self.bri = 50 # percentage of brightness 0..100 - self.running = false - self.pixel_count = strip.pixel_count() - self.animators = [] - # - self.clear() # clear all leds first - # - tasmota.add_driver(self) - end - - def add_anim(anim) - self.animators.push(anim) - anim.run() # start the animator - end - - def clear() - self.stop() - self.strip.clear() - end - def start() - self.running = true - end - def stop() - self.running = false - end - - def set_bri(bri) - self.bri = bri - end - def get_bri(bri) - return self.bri - end - - def every_50ms() - if self.running - # run animators first - var i = 0 - while i < size(self.animators) - var anim = self.animators[i] - if anim.is_running() - anim.animate() - i += 1 - else - self.animators.remove(i) # remove any finished animator - end - end - # tirgger animate and display - self.animate() - end - end - - def animate() - # placeholder - do nothing by default - end - - def remove() - tasmota.remove_driver(self) - end -end diff --git a/lib/libesp32/berry/default/embedded/lv_clock_icon.be b/lib/libesp32/berry/default/embedded/lv_clock_icon.be deleted file mode 100644 index f5d19ca11..000000000 --- a/lib/libesp32/berry/default/embedded/lv_clock_icon.be +++ /dev/null @@ -1,54 +0,0 @@ -#- LVGL lv_clock_icon - - ---# - -class lv_clock_icon: lv.label - var hour, minute, sec - - def init(parent) - super(self).init(parent) - var f_s7_16 = lv.seg7_font(16) - if f_s7_16 != nil self.set_style_text_font(f_s7_16, lv.PART_MAIN | lv.STATE_DEFAULT) end - - if parent != nil - var parent_height = parent.get_height() - - self.set_text("--:--") - self.refr_size() - var w = self.get_width() - self.set_y((parent.get_height() - self.get_height()) / 2) # center vertically - - var pad_right = parent.get_style_pad_right(lv.PART_MAIN | lv.STATE_DEFAULT) - self.set_x(parent.get_width() - w - pad_right - 3) - parent.set_style_pad_right(pad_right + w + 6, lv.PART_MAIN | lv.STATE_DEFAULT) - - self.set_style_bg_color(lv.color(lv.COLOR_BLACK), lv.PART_MAIN | lv.STATE_DEFAULT) - end - - tasmota.add_driver(self) - end - - def set_time(hour, minute, sec) - import string - if hour != self.hour || minute != self.minute || sec != self.sec - var txt = string.format("%02d%s%02d", hour, sec % 2 ? ":" : " ", minute) - self.hour = hour - self.minute = minute - self.sec = sec - #if txt[0] == '0' txt = '!' .. string.split(txt,1)[1] end # replace first char with '!' - self.set_text(txt) - end - end - - def every_second() - var now = tasmota.time_dump(tasmota.rtc()['local']) - if now['year'] != 1970 - self.set_time(now['hour'], now['min'], now['sec']) - end - end - - def del() - super(self).del() - tasmota.remove_driver(self) - end -end \ No newline at end of file diff --git a/lib/libesp32/berry/default/embedded/lv_signal_arcs.be b/lib/libesp32/berry/default/embedded/lv_signal_arcs.be deleted file mode 100644 index 7dd924e90..000000000 --- a/lib/libesp32/berry/default/embedded/lv_signal_arcs.be +++ /dev/null @@ -1,133 +0,0 @@ -#- LVGL lv_signal_bars and lv_wifi_bars - - ---# - -class lv_signal_arcs : lv.obj - var percentage # value to display, range 0..100 - var p1, p2, area, line_dsc # instances of objects kept to avoid re-instanciating at each call - - def init(parent) - # init custom widget (don't call super constructor) - _lvgl.create_custom_widget(self, parent) - # own values - self.percentage = 100 - # pre-allocate buffers - self.p1 = lv.point() - self.p2 = lv.point() - self.area = lv.area() - self.line_dsc = lv.draw_line_dsc() - end - - def widget_event(cl, event) - # Call the ancestor's event handler - if lv.obj_event_base(cl, event) != lv.RES_OK return end - var code = event.code - - import math - def atleast1(x) if x >= 1 return x else return 1 end end - # the model is that we have 4 bars and inter-bar (1/4 of width) - var height = self.get_height() - var width = self.get_width() - - var inter_bar = atleast1(height / 8) - var bar = atleast1((height - inter_bar * 2) / 3) - var bar_offset = bar / 2 - #print("inter_bar", inter_bar, "bar", bar, "bar_offset", bar_offset) - - if code == lv.EVENT_DRAW_MAIN - var clip_area = lv.area(event.param) - - # get coordinates of object - self.get_coords(self.area) - var x_ofs = self.area.x1 - var y_ofs = self.area.y1 - - lv.draw_line_dsc_init(self.line_dsc) # initialize lv.draw_line_dsc structure - self.init_draw_line_dsc(lv.PART_MAIN, self.line_dsc) # copy the current values - - self.line_dsc.round_start = 1 - self.line_dsc.round_end = 1 - self.line_dsc.width = (bar * 3 + 1) / 4 - var on_color = self.get_style_line_color(lv.PART_MAIN | lv.STATE_DEFAULT) - var off_color = self.get_style_bg_color(lv.PART_MAIN | lv.STATE_DEFAULT) - - # initial calculation, but does not take into account bounding box - # var angle = int(math.deg(math.atan2(width / 2, height))) - - # better calculation - var hypotenuse = height - bar # center if at bar/2 from bottom and circle stops at bar/2 from top - var adjacent = width / 2 - bar_offset # stop at bar_offset from side - var angle = int(90 - math.deg(math.acos(real(adjacent) / real(hypotenuse)))) - if (angle > 45) angle = 45 end - - # print("hypotenuse",hypotenuse,"adjacent",adjacent,"angle",angle) - self.p1.x = x_ofs + width / 2 - self.p1.y = y_ofs + height - 1 - bar_offset - - self.line_dsc.color = self.percentage >= 25 ? on_color : off_color - lv.draw_arc(self.p1.x, self.p1.y, 0 * (bar + inter_bar) + bar_offset, 0, 360, clip_area, self.line_dsc) - self.line_dsc.color = self.percentage >= 50 ? on_color : off_color - lv.draw_arc(self.p1.x, self.p1.y, 1 * (bar + inter_bar) + bar_offset - 1, 270 - angle, 270 + angle, clip_area, self.line_dsc) - self.line_dsc.color = self.percentage >= 75 ? on_color : off_color - lv.draw_arc(self.p1.x, self.p1.y, 2 * (bar + inter_bar) + bar_offset - 2, 270 - angle, 270 + angle, clip_area, self.line_dsc) - - #elif mode == lv.DESIGN_DRAW_POST # commented since we don't want a frame around this object - # self.ancestor_design.call(self, clip_area, mode) - end - end - - def set_percentage(v) - var old_bars = self.percentage / 25 - if v > 100 v = 100 end - if v < 0 v = 0 end - self.percentage = v - if old_bars != v / 25 - self.invalidate() # be frugal and avoid updating the widget if it's not needed - end - end - - def get_percentage() - return self.percentage - end -end - -class lv_wifi_arcs: lv_signal_arcs - def init(parent) - super(self).init(parent) - tasmota.add_driver(self) - self.set_percentage(0) # we generally start with 0, meaning not connected - end - - def every_second() - var wifi = tasmota.wifi() - var quality = wifi.find("quality") - var ip = wifi.find("ip") - if ip == nil - self.set_percentage(0) - elif quality != nil - self.set_percentage(quality) - end - end - - def del() - super(self).del() - tasmota.remove_driver(self) - end -end - -class lv_wifi_arcs_icon: lv_wifi_arcs - def init(parent) - super(self).init(parent) - self.set_style_line_color(lv.color(lv.COLOR_WHITE), lv.PART_MAIN | lv.STATE_DEFAULT) - self.set_style_bg_color(lv.color(lv.COLOR_BLACK), lv.PART_MAIN | lv.STATE_DEFAULT) - if parent != nil - var parent_height = parent.get_height() - var pad_right = parent.get_style_pad_right(lv.PART_MAIN | lv.STATE_DEFAULT) - self.set_height(parent_height) - var w = (parent_height*4)/3 - self.set_width(w) # 130% - self.set_x(parent.get_width() - w - pad_right) - parent.set_style_pad_right(pad_right + w + 1, lv.PART_MAIN | lv.STATE_DEFAULT) - end - end -end \ No newline at end of file diff --git a/lib/libesp32/berry/default/embedded/lv_signal_bars.be b/lib/libesp32/berry/default/embedded/lv_signal_bars.be deleted file mode 100644 index f548457b9..000000000 --- a/lib/libesp32/berry/default/embedded/lv_signal_bars.be +++ /dev/null @@ -1,118 +0,0 @@ -#- LVGL lv_signal_bars and lv_wifi_bars - - ---# - -class lv_signal_bars : lv.obj - var percentage # value to display, range 0..100 - var p1, p2, area, line_dsc # instances of objects kept to avoid re-instanciating at each call - - def init(parent) - # init custom widget (don't call super constructor) - _lvgl.create_custom_widget(self, parent) - # own values - self.percentage = 100 - # pre-allocate buffers - self.p1 = lv.point() - self.p2 = lv.point() - self.area = lv.area() - self.line_dsc = lv.draw_line_dsc() - end - - def widget_event(cl, event) - # Call the ancestor's event handler - if lv.obj_event_base(cl, event) != lv.RES_OK return end - var code = event.code - - def atleast1(x) if x >= 1 return x else return 1 end end - # the model is that we have 4 bars and inter-bar (1/4 of width) - var height = self.get_height() - var width = self.get_width() - - var inter_bar = atleast1(width / 15) - var bar = atleast1((width - inter_bar * 3) / 4) - var bar_offset = bar / 2 - - if code == lv.EVENT_DRAW_MAIN - var clip_area = lv.area(event.param) - - # get coordinates of object - self.get_coords(self.area) - var x_ofs = self.area.x1 - var y_ofs = self.area.y1 - - lv.draw_line_dsc_init(self.line_dsc) # initialize lv_draw_line_dsc structure - self.init_draw_line_dsc(lv.PART_MAIN, self.line_dsc) # copy the current values - - self.line_dsc.round_start = 1 - self.line_dsc.round_end = 1 - self.line_dsc.width = bar - var on_color = self.get_style_line_color(lv.PART_MAIN | lv.STATE_DEFAULT) - var off_color = self.get_style_bg_color(lv.PART_MAIN | lv.STATE_DEFAULT) - - lv.event_send(self, lv.EVENT_DRAW_PART_BEGIN, self.line_dsc) - for i:0..3 # 4 bars - self.line_dsc.color = self.percentage >= (i+1)*20 ? on_color : off_color - self.p1.y = y_ofs + height - 1 - bar_offset - self.p1.x = x_ofs + i * (bar + inter_bar) + bar_offset - self.p2.y = y_ofs + ((3 - i) * (height - bar)) / 4 + bar_offset - self.p2.x = self.p1.x - lv.draw_line(self.p1, self.p2, clip_area, self.line_dsc) - end - lv.event_send(self, lv.EVENT_DRAW_PART_END, self.line_dsc) - end - end - - def set_percentage(v) - var old_bars = self.percentage / 20 - if v > 100 v = 100 end - if v < 0 v = 0 end - self.percentage = v - if old_bars != v / 20 - self.invalidate() # be frugal and avoid updating the widget if it's not needed - end - end - - def get_percentage() - return self.percentage - end -end - -class lv_wifi_bars: lv_signal_bars - def init(parent) - super(self).init(parent) - tasmota.add_driver(self) - self.set_percentage(0) # we generally start with 0, meaning not connected - end - - def every_second() - var wifi = tasmota.wifi() - var quality = wifi.find("quality") - var ip = wifi.find("ip") - if ip == nil - self.set_percentage(0) - elif quality != nil - self.set_percentage(quality) - end - end - - def del() - super(self).del() - tasmota.remove_driver(self) - end -end - -class lv_wifi_bars_icon: lv_wifi_bars - def init(parent) - super(self).init(parent) - self.set_style_line_color(lv.color(lv.COLOR_WHITE), lv.PART_MAIN | lv.STATE_DEFAULT) - self.set_style_bg_color(lv.color(lv.COLOR_BLACK), lv.PART_MAIN | lv.STATE_DEFAULT) - if parent != nil - var parent_height = parent.get_height() - var pad_right = parent.get_style_pad_right(lv.PART_MAIN | lv.STATE_DEFAULT) - self.set_height(parent_height) - self.set_width(parent_height) - self.set_x(parent.get_width() - parent_height - pad_right) - parent.set_style_pad_right(pad_right + parent_height + 1, lv.PART_MAIN | lv.STATE_DEFAULT) - end - end -end diff --git a/lib/libesp32/berry/default/embedded/lvgl_glob.be b/lib/libesp32/berry/default/embedded/lvgl_glob.be deleted file mode 100644 index 04250ff54..000000000 --- a/lib/libesp32/berry/default/embedded/lvgl_glob.be +++ /dev/null @@ -1,256 +0,0 @@ -#- embedded class for LVGL globals -# - -#- This class stores all globals used by LVGL and cannot be stored in the solidified module -# -#- this limits the globals to a single value '_lvgl' -# -class LVGL_glob - # all variables are lazily initialized to reduce the memory pressure. Until they are used, they consume zero memory - var cb_obj # map between a native C pointer (as int) and the corresponding lv.lv_* berry object, also helps marking the objects as non-gc-able - var cb_event_closure # mapping for event closures per LVGL native pointer (int) - var event_cb # native callback for lv.lv_event - - #- below are native callbacks mapped to a closure to a method of this instance -# - var null_cb # cb called if type is not supported - var widget_ctor_cb - var widget_dtor_cb - var widget_event_cb - - var widget_struct_default - var widget_struct_by_class - - #- this is the fallback callback, if the event is unknown or unsupported -# - static cb_do_nothing = def() print("LVG: call to unsupported callback") end - - #- register an lv.lv_* object in the mapping -# - def register_obj(obj) - if self.cb_obj == nil self.cb_obj = {} end - self.cb_obj[obj._p] = obj - end - - def get_object_from_ptr(ptr) - if self.cb_obj != nil - return self.cb_obj.find(ptr) # raise an exception if something is wrong - end - end - - def lvgl_event_dispatch(event_ptr) - import introspect - - var event = lv.lv_event(introspect.toptr(event_ptr)) - - var target = event.target - var f = self.cb_event_closure[target] - var obj = self.get_object_from_ptr(target) - #print('>> lvgl_event_dispatch', f, obj, event) - f(obj, event) - end - - def gen_cb(name, f, obj, ptr) - #print('>> gen_cb', name, obj, ptr) - # record the object, whatever the callback - - if name == "lv_event_cb" - if self.cb_event_closure == nil self.cb_event_closure = {} end - if self.event_cb == nil self.event_cb = tasmota.gen_cb(/ event_ptr -> self.lvgl_event_dispatch(event_ptr)) end # encapsulate 'self' in closure - - self.register_obj(obj) - self.cb_event_closure[ptr] = f - return self.event_cb - # elif name == "" - else - if self.null_cb == nil self.null_cb = tasmota.gen_cb(self.cb_do_nothing) end - return self.null_cb - end - end - - def widget_ctor_impl(cl_ptr, obj_ptr) - import introspect - var cl = lv.lv_obj_class(cl_ptr) - var obj = self.get_object_from_ptr(obj_ptr) - if self.cb_obj.find(obj) obj = self.cb_obj[obj] end - # print("widget_ctor_impl", cl, obj) - if type(obj) == 'instance' && introspect.get(obj, 'widget_constructor') - obj.widget_constructor(cl) - end - end - def widget_dtor_impl(cl_ptr, obj_ptr) - import introspect - var cl = lv.lv_obj_class(cl_ptr) - var obj = self.get_object_from_ptr(obj_ptr) - # print("widget_dtor_impl", cl, obj) - if type(obj) == 'instance' && introspect.get(obj, 'widget_destructor') - obj.widget_destructor(cl) - end - end - def widget_event_impl(cl_ptr, e_ptr) - import introspect - var cl = lv.lv_obj_class(cl_ptr) - var event = lv.lv_event(e_ptr) - var obj_ptr = event.target - var obj = self.get_object_from_ptr(obj_ptr) - if type(obj) == 'instance' && introspect.get(obj, 'widget_event') - obj.widget_event(cl, event) - end - # print("widget_event_impl", cl, obj_ptr, obj, event) - end - - - def widget_cb() - if self.widget_ctor_cb == nil self.widget_ctor_cb = tasmota.gen_cb(/ cl, obj -> self.widget_ctor_impl(cl, obj)) end - if self.widget_dtor_cb == nil self.widget_dtor_cb = tasmota.gen_cb(/ cl, obj -> self.widget_dtor_impl(cl, obj)) end - if self.widget_event_cb == nil self.widget_event_cb = tasmota.gen_cb(/ cl, e -> self.widget_event_impl(cl, e)) end - - if self.widget_struct_default == nil - self.widget_struct_default = lv.lv_obj_class(lv.lv_obj._class).copy() - self.widget_struct_default.base_class = lv.lv_obj._class # by default, inherit from base class `lv_obj`, this can be overriden - self.widget_struct_default.constructor_cb = self.widget_ctor_cb # set the berry cb dispatchers - self.widget_struct_default.destructor_cb = self.widget_dtor_cb - self.widget_struct_default.event_cb = self.widget_event_cb - end - end - - #- deregister_obj all information linked to a specific LVGL native object (int) -# - def deregister_obj(obj) - if self.cb_obj != nil self.cb_obj.remove(obj) end - if self.cb_event_closure != nil self.cb_event_closure.remove(obj) end - end - - #- initialize a custom widget -# - #- arg must be a subclass of lv.lv_obj -# - def create_custom_widget(obj, parent) - import introspect - - if !isinstance(obj, lv.lv_obj) raise "value_error", "arg must be a subclass of lv_obj" end - if self.widget_struct_by_class == nil self.widget_struct_by_class = {} end - - var obj_classname = classname(obj) - var obj_class_struct = self.widget_struct_by_class.find(obj_classname) - # print("classname=",obj_classname,"_class",super(obj)._class) - #- not already built, create a new one for this class -# - if obj_class_struct == nil - self.widget_cb() # set up all structures - obj_class_struct = self.widget_struct_default.copy() # get a copy of the structure with pre-defined callbacks - obj_class_struct.base_class = super(obj)._class - if introspect.get(obj, 'widget_width_def') obj_class_struct.width_def = obj.widget_width_def end - if introspect.get(obj, 'widget_height_def') obj_class_struct.height_def = obj.widget_height_def end - if introspect.get(obj, 'widget_editable') obj_class_struct.editable = obj.widget_editable end - if introspect.get(obj, 'widget_group_def') obj_class_struct.group_def = obj.widget_group_def end - if introspect.get(obj, 'widget_instance_size') obj_class_struct.instance_size = obj.widget_instance_size end - - #- keep a copy of the structure to avoid GC and reuse if needed -# - self.widget_struct_by_class[obj_classname] = obj_class_struct - end - - var lv_obj_ptr = lv.obj_class_create_obj(obj_class_struct, parent) - obj._p = lv_obj_ptr._p - self.register_obj(obj) - obj.class_init_obj() - end -end - -_lvgl = LVGL_glob() - -# class lv_custom_widget : lv.lv_obj -# # static widget_width_def -# # static widget_height_def -# # static widget_editable -# # static widget_group_def -# # static widget_instance_size -# # -# var percentage # value to display, range 0..100 -# var p1, p2, area, line_dsc # instances of objects kept to avoid re-instanciating at each call - -# def init(parent) -# _lvgl.create_custom_widget(self, parent) -# # own values -# self.percentage = 100 -# # pre-allocate buffers -# self.p1 = lv.lv_point() -# self.p2 = lv.lv_point() -# self.area = lv.lv_area() -# self.line_dsc = lv.lv_draw_line_dsc() -# end - -# # def widget_constructor(cl) -# # print("widget_constructor", cl) -# # end - -# # def widget_destructor(cl) -# # print("widget_destructor", cl) -# # end - -# def widget_event(cl, event) -# var res = lv.obj_event_base(cl, event) -# if res != lv.RES_OK return end - -# def atleast1(x) if x >= 1 return x else return 1 end end -# # the model is that we have 4 bars and inter-bar (1/4 of width) -# var height = self.get_height() -# var width = self.get_width() - -# var inter_bar = atleast1(width / 15) -# var bar = atleast1((width - inter_bar * 3) / 4) -# var bar_offset = bar / 2 - -# var code = event.code -# if code == lv.EVENT_DRAW_MAIN -# var clip_area = lv.lv_area(event.param) -# print("widget_event DRAW", clip_area.tomap()) -# # lv.event_send(self, lv.EVENT_DRAW_MAIN, clip_area) - -# # get coordinates of object -# self.get_coords(self.area) -# var x_ofs = self.area.x1 -# var y_ofs = self.area.y1 - -# lv.draw_line_dsc_init(self.line_dsc) # initialize lv.lv_draw_line_dsc structure -# self.init_draw_line_dsc(lv.PART_MAIN, self.line_dsc) - -# self.line_dsc.round_start = 1 -# self.line_dsc.round_end = 1 -# self.line_dsc.width = bar - -# var on_color = self.get_style_line_color(lv.PART_MAIN | lv.STATE_DEFAULT) -# var off_color = self.get_style_bg_color(lv.PART_MAIN | lv.STATE_DEFAULT) - -# lv.event_send(self, lv.EVENT_DRAW_PART_BEGIN, self.line_dsc) -# for i:0..3 # 4 bars -# self.line_dsc.color = self.percentage >= (i+1)*20 ? on_color : off_color -# self.p1.y = y_ofs + height - 1 - bar_offset -# self.p1.x = x_ofs + i * (bar + inter_bar) + bar_offset -# self.p2.y = y_ofs + ((3 - i) * (height - bar)) / 4 + bar_offset -# self.p2.x = self.p1.x -# lv.draw_line(self.p1, self.p2, clip_area, self.line_dsc) -# end -# lv.event_send(self, lv.EVENT_DRAW_PART_END, self.line_dsc) - -# end -# end - -# def set_percentage(v) -# var old_bars = self.percentage / 5 -# if v > 100 v = 100 end -# if v < 0 v = 0 end -# self.percentage = v -# if old_bars != v / 5 -# self.invalidate() # be frugal and avoid updating the widget if it's not needed -# end -# end - -# def get_percentage() -# return self.percentage -# end -# end - -# ########## ########## ########## ########## ########## ########## ########## ########## - -# lv.start() - -# hres = lv.get_hor_res() # should be 320 -# vres = lv.get_ver_res() # should be 240 - -# scr = lv.scr_act() # default screean object -# f20 = lv.montserrat_font(20) # load embedded Montserrat 20 - -# scr.set_style_bg_color(lv.lv_color(0x0000A0), lv.PART_MAIN | lv.STATE_DEFAULT) - -# w = lv_custom_widget(scr) \ No newline at end of file diff --git a/lib/libesp32/berry/default/embedded/openhasp.be b/lib/libesp32/berry/default/embedded/openhasp.be deleted file mode 100644 index 4232a605b..000000000 --- a/lib/libesp32/berry/default/embedded/openhasp.be +++ /dev/null @@ -1,764 +0,0 @@ -import string -import json - -# lv.start() -# scr = lv.scr_act() # default screean object -# scr.set_style_bg_color(lv.color(0x0000A0), lv.PART_MAIN | lv.STATE_DEFAULT) - -lv.start() - -hres = lv.get_hor_res() # should be 320 -vres = lv.get_ver_res() # should be 240 - -scr = lv.scr_act() # default screean object -#f20 = lv.montserrat_font(20) # load embedded Montserrat 20 -r20 = lv.font_robotocondensed_latin1(20) -r16 = lv.font_robotocondensed_latin1(16) - -th2 = lv.theme_openhasp_init(0, lv.color(0xFF00FF), lv.color(0x303030), false, r16) -scr.get_disp().set_theme(th2) -# TODO -scr.set_style_bg_color(lv.color(lv.COLOR_WHITE),0) - -# apply theme to layer_top, but keep it transparent -lv.theme_apply(lv.layer_top()) -lv.layer_top().set_style_bg_opa(0,0) - - -# takes an attribute name and responds if it needs color conversion -def is_color_attribute(t) - import string - t = str(t) - # contains `color` but does not contain `color_` - return (string.find(t, "color") >= 0) && (string.find(t, "color_") < 0) -end - -# parse hex string -def parse_hex(s) - import string - s = string.toupper(s) # turn to uppercase - var val = 0 - for i:0..size(s)-1 - var c = s[i] - # var c_int = string.byte(c) - if c == "#" continue end # skip '#' prefix if any - if c == "x" || c == "X" continue end # skip 'x' or 'X' - - if c >= "A" && c <= "F" - val = (val << 4) | string.byte(c) - 55 - elif c >= "0" && c <= "9" - val = (val << 4) | string.byte(c) - 48 - end - end - return val -end - -def parse_color(s) - s = str(s) - if s[0] == '#' - return lv.color(parse_hex(s)) - else - import string - import introspect - var col_name = "COLOR_" + string.toupper(s) - var col_try = introspect.get(lv, col_name) - if col_try != nil - return lv.color(col_try) - end - end - # fail safe with black color - return lv.color(0x000000) -end - -#- ------------------------------------------------------------ - Class `lvh_obj` encapsulating `lv_obj`` - - Provide a mapping for virtual members - Stores the associated page and object id - - Adds specific virtual members used by OpenHASP -- ------------------------------------------------------------ -# -class lvh_obj - # _lv_class refers to the lvgl class encapsulated, and is overriden by subclasses - static _lv_class = lv.obj - static _lv_part2_selector # selector for secondary part (like knob of arc) - - # attributes to ignore when set at object level (they are managed by page) - static _attr_ignore = [ - "id", - "obj", - "page", - "comment", - "parentid", - "auto_size", # TODO not sure it's still needed in LVGL8 - ] - #- mapping from OpenHASP attribute to LVGL attribute -# - #- if mapping is null, we use set_X and get_X from our own class -# - static _attr_map = { - "x": "x", - "y": "y", - "w": "width", - "h": "height", - # arc - "asjustable": nil, - "mode": nil, - "start_angle": "bg_start_angle", - "start_angle1": "start_angle", - "end_angle": "bg_end_angle", - "end_angle1": "end_angle", - "radius": "style_radius", - "border_side": "style_border_side", - "bg_opa": "style_bg_opa", - "border_width": "style_border_width", - "line_width": nil, # depebds on class - "line_width1": nil, # depebds on class - "action": nil, # store the action in self._action - "hidden": nil, # apply to self - "enabled": nil, # apply to self - "click": nil, # synonym to enabled - "toggle": nil, - "bg_color": "style_bg_color", - "bg_grad_color": "style_bg_grad_color", - "type": nil, - # below automatically create a sub-label - "text": nil, # apply to self - "value_str": nil, # synonym to 'text' - "align": nil, - "text_font": nil, - "value_font": nil, # synonym to text_font - "text_color": nil, - "value_color": nil, # synonym to text_color - "value_ofs_x": nil, - "value_ofs_y": nil, - # - "min": nil, - "max": nil, - "val": "value", - "rotation": "rotation", - # img - "src": "src", - "image_recolor": "style_img_recolor", - "image_recolor_opa": "style_img_recolor_opa", - # spinner - "angle": nil, - "speed": nil, - # padding of knob - "pad_top2": nil, - "pad_bottom2": nil, - "pad_left2": nil, - "pad_right2": nil, - "pad_all2": nil, - "radius2": nil, - } - - var _lv_obj # native lvgl object - var _lv_label # sub-label if exists - var _action # action for OpenHASP - - # init - # - create the LVGL encapsulated object - # arg1: parent object - # arg2: json line object - def init(parent, jline) - var obj_class = self._lv_class # need to assign to a var to distinguish from method call - self._lv_obj = obj_class(parent) # instanciate LVGL object - self.post_init() - end - - # post-init, to be overriden - def post_init() - end - - # get LVGL encapsulated object - def get_obj() - return self._lv_obj - end - - def set_action(t) - self._action = str(t) - end - def get_action() - return self._action() - end - - def set_line_width(t) - self._lv_obj.set_style_line_width(int(t), lv.PART_MAIN | lv.STATE_DEFAULT) - end - def get_line_width() - return self._lv_obj.get_style_line_width(lv.PART_MAIN | lv.STATE_DEFAULT) - end - - #- ------------------------------------------------------------ - Mapping of synthetic attributes - - text - - hidden - - enabled - - ------------------------------------------------------------ -# - #- `hidden` attributes mapped to OBJ_FLAG_HIDDEN -# - def set_hidden(h) - if h - self._lv_obj.add_flag(lv.OBJ_FLAG_HIDDEN) - else - self._lv_obj.clear_flag(lv.OBJ_FLAG_HIDDEN) - end - end - - def get_hidden() - return self._lv_obj.has_flag(lv.OBJ_FLAG_HIDDEN) - end - - #- `enabled` attributes mapped to OBJ_FLAG_CLICKABLE -# - def set_enabled(h) - if h - self._lv_obj.add_flag(lv.OBJ_FLAG_CLICKABLE) - else - self._lv_obj.clear_flag(lv.OBJ_FLAG_CLICKABLE) - end - end - - def get_enabled() - return self._lv_obj.has_flag(lv.OBJ_FLAG_CLICKABLE) - end - # click is synonym to enabled - def set_click(t) self.set_enabled(t) end - def get_click() return self.get_enabled() end - - #- `toggle` attributes mapped to STATE_CHECKED -# - def set_toggle(t) - if t == "TRUE" t = true end - if t == "FALSE" t = false end - if t - self._lv_obj.add_state(lv.STATE_CHECKED) - else - self._lv_obj.clear_state(lv.STATE_CHECKED) - end - end - - def get_toggle() - return self._lv_obj.has_state(lv.STATE_CHECKED) - end - - def set_adjustable(t) - if t - self._lv_obj.add_flag(lv.OBJ_FLAG_CLICKABLE) - else - self._lv_obj.clear_flag(lv.OBJ_FLAG_CLICKABLE) - end - end - def get_adjustable() - return self._lv_obj.has_flag(lv.OBJ_FLAG_CLICKABLE) - end - - #- set_text: create a `lv_label` sub object to the current object -# - #- (default case, may be overriden by object that directly take text) -# - def check_label() - if self._lv_label == nil - self._lv_label = lv.label(self.get_obj()) - self._lv_label.set_align(lv.ALIGN_CENTER); - end - end - - def set_text(t) - self.check_label() - self._lv_label.set_text(str(t)) - end - def set_value_str(t) self.set_text(t) end - - def get_text() - if self._lv_label == nil return nil end - return self._lv_label.get_text() - end - def get_value_str() return self.get_text() end - - def set_align(t) - var align - self.check_label() - if t == 0 || t == "left" - align = lv.TEXT_ALIGN_LEFT - elif t == 1 || t == "center" - align = lv.TEXT_ALIGN_CENTER - elif t == 2 || t == "right" - align = lv.TEXT_ALIGN_RIGHT - end - self._lv_label.set_style_text_align(align, lv.PART_MAIN | lv.STATE_DEFAULT) - end - - def get_align() - if self._lv_label == nil return nil end - var align self._lv_label.get_style_text_align(lv.PART_MAIN | lv.STATE_DEFAULT) - if align == lv.TEXT_ALIGN_LEFT - return "left" - elif align == lv.TEXT_ALIGN_CENTER - return "center" - elif align == lv.TEXT_ALIGN_RIGHT - return "right" - else - return nil - end - end - - def set_text_font(t) - self.check_label() - var f = lv.font_robotocondensed_latin1(int(t)) - if f != nil - self._lv_label.set_style_text_font(f, lv.PART_MAIN | lv.STATE_DEFAULT) - else - print("HSP: Unsupported font size: robotocondensed-latin1", t) - end - end - def get_text_font() - end - def set_value_font(t) self.set_text_font(t) end - def get_value_font() return self.get_text_font() end - - def set_text_color(t) - self.check_label() - self._lv_label.set_style_text_color(parse_color(t), lv.PART_MAIN | lv.STATE_DEFAULT) - end - def get_text_color() - return self._text_color - end - def set_value_color(t) self.set_text_color(t) end - def get_value_color() return self.get_value_color() end - - def set_value_ofs_x(t) - self.check_label() - self._lv_label.set_x(int(t)) - end - def get_value_ofs_x() - return self._lv_label.get_x() - end - def set_value_ofs_y(t) - self.check_label() - self._lv_label.set_y(int(t)) - end - def get_value_ofs_y() - return self._lv_label.get_y() - end - - # secondary element - def set_pad_top2(t) - if self._lv_part2_selector != nil - self._lv_obj.set_style_pad_top(int(t), self._lv_part2_selector | lv.STATE_DEFAULT) - end - end - def set_pad_bottom2(t) - if self._lv_part2_selector != nil - self._lv_obj.set_style_pad_bottom(int(t), self._lv_part2_selector | lv.STATE_DEFAULT) - end - end - def set_pad_left2(t) - if self._lv_part2_selector != nil - self._lv_obj.set_style_pad_left(int(t), self._lv_part2_selector | lv.STATE_DEFAULT) - end - end - def set_pad_right2(t) - if self._lv_part2_selector != nil - self._lv_obj.set_style_pad_right(int(t), self._lv_part2_selector | lv.STATE_DEFAULT) - end - end - def set_pad_all2(t) - if self._lv_part2_selector != nil - self._lv_obj.set_style_pad_all(int(t), self._lv_part2_selector | lv.STATE_DEFAULT) - end - end - - def get_pad_top() - if self._lv_part2_selector != nil - return self._lv_obj.get_style_pad_top(self._lv_part2_selector | lv.STATE_DEFAULT) - end - end - def get_pad_bottomo() - if self._lv_part2_selector != nil - return self._lv_obj.get_style_pad_bottom(self._lv_part2_selector | lv.STATE_DEFAULT) - end - end - def get_pad_left() - if self._lv_part2_selector != nil - return self._lv_obj.get_style_pad_left(self._lv_part2_selector | lv.STATE_DEFAULT) - end - end - def get_pad_right() - if self._lv_part2_selector != nil - return self._lv_obj.get_style_pad_right(self._lv_part2_selector | lv.STATE_DEFAULT) - end - end - def get_pad_all() - end - - def set_radius2(t) - if self._lv_part2_selector != nil - self._lv_obj.set_style_radius(int(t), self._lv_part2_selector | lv.STATE_DEFAULT) - end - end - def get_radius2() - if self._lv_part2_selector != nil - return self._lv_obj.get_style_radius(self._lv_part2_selector | lv.STATE_DEFAULT) - end - end - - #- ------------------------------------------------------------ - Mapping of virtual attributes - - ------------------------------------------------------------ -# - def member(k) - # tostring is a special case, we shouldn't raise an exception for it - if k == 'tostring' return nil end - # - if self._attr_map.has(k) - import introspect - var kv = self._attr_map[k] - if kv - var f = introspect.get(self._lv_obj, "get_" + kv) - if type(f) == 'function' - return f(self._lv_obj) - end - else - # call self method - var f = introspect.get(self, "get_" + k) - if type(f) == 'function' - return f(self, k) - end - end - end - raise "value_error", "unknown attribute " + str(k) - end - - def setmember(k, v) - import string - # print(">> setmember", k, v) - # print(">>", classname(self), self._attr_map) - if self._attr_ignore.find(k) != nil - return - elif self._attr_map.has(k) - import introspect - var kv = self._attr_map[k] - if kv - var f = introspect.get(self._lv_obj, "set_" + kv) - # if the attribute contains 'color', convert to lv_color - if type(kv) == 'string' && is_color_attribute(kv) - v = parse_color(v) - end - # print("f=", f, v, kv, self._lv_obj, self) - if type(f) == 'function' - if string.find(kv, "style_") == 0 - # style function need a selector as second parameter - f(self._lv_obj, v, lv.PART_MAIN | lv.STATE_DEFAULT) - else - f(self._lv_obj, v) - end - return - else - print("HSP: Could not find function set_"+kv) - end - else - # call self method - var f = introspect.get(self, "set_" + k) - # print("f==",f) - if type(f) == 'function' - f(self, v) - return - end - end - - else - print("HSP: unknown attribute:", k) - end - # silently ignore if the attribute name is not supported - end -end - -#- ------------------------------------------------------------ - Other widgets -- ------------------------------------------------------------ -# - -#- ------------------------------------------------------------ - label -#- ------------------------------------------------------------# -class lvh_label : lvh_obj - static _lv_class = lv.label - # label do not need a sub-label - def post_init() - self._lv_label = self._lv_obj - end -end - -#- ------------------------------------------------------------ - arc -#- ------------------------------------------------------------# -class lvh_arc : lvh_obj - static _lv_class = lv.arc - static _lv_part2_selector = lv.PART_KNOB - - # line_width converts to arc_width - def set_line_width(t) - self._lv_obj.set_style_arc_width(int(t), lv.PART_MAIN | lv.STATE_DEFAULT) - end - def get_line_width() - return self._lv_obj.get_arc_line_width(lv.PART_MAIN | lv.STATE_DEFAULT) - end - def set_line_width1(t) - self._lv_obj.set_style_arc_width(int(t), lv.PART_INDICATOR | lv.STATE_DEFAULT) - end - def get_line_width1() - return self._lv_obj.get_arc_line_width(lv.PART_INDICATOR | lv.STATE_DEFAULT) - end - - def set_min(t) - self._lv_obj.set_range(int(t), self.get_max()) - end - def set_max(t) - self._lv_obj.set_range(self.get_min(), int(t)) - end - def get_min() - return self._lv_obj.get_min_value() - end - def get_max() - return self._lv_obj.get_max_value() - end - def set_type(t) - var mode - if t == 0 mode = lv.ARC_MODE_NORMAL - elif t == 1 mode = lv.ARC_MODE_REVERSE - elif t == 2 mode = lv.ARC_MODE_SYMMETRICAL - end - if mode != nil - self._lv_obj.set_mode(mode) - end - end - def get_type() - return self._lv_obj.get_mode() - end - # mode - def set_mode(t) - var mode - if mode == "expand" self._lv_obj.set_width(lv.SIZE_CONTENT) - elif mode == "break" mode = lv.LABEL_LONG_WRAP - elif mode == "dots" mode = lv.LABEL_LONG_DOT - elif mode == "scroll" mode = lv.LABEL_LONG_SCROLL - elif mode == "loop" mode = lv.LABEL_LONG_SCROLL_CIRCULAR - elif mode == "crop" mode = lv.LABEL_LONG_CLIP - end - if mode != nil - self._lv_obj.lv_label_set_long_mode(mode) - end - end - def get_mode() - end - -end - -#- ------------------------------------------------------------ - switch -#- ------------------------------------------------------------# -class lvh_switch : lvh_obj - static _lv_class = lv.switch - static _lv_part2_selector = lv.PART_KNOB -end - -#- ------------------------------------------------------------ - spinner -#- ------------------------------------------------------------# -class lvh_spinner : lvh_arc - static _lv_class = lv.spinner - - # init - # - create the LVGL encapsulated object - # arg1: parent object - # arg2: json line object - def init(parent, jline) - var angle = jline.find("angle", 60) - var speed = jline.find("speed", 1000) - self._lv_obj = lv.spinner(parent, speed, angle) - self.post_init() - end - - # ignore attributes, spinner can't be changed once created - def set_angle(t) end - def get_angle() end - def set_speed(t) end - def get_speed() end -end - -#- creat sub-classes of lvh_obj and map the LVGL class in static '_lv_class' attribute -# -class lvh_bar : lvh_obj static _lv_class = lv.bar end -class lvh_btn : lvh_obj static _lv_class = lv.btn end -class lvh_btnmatrix : lvh_obj static _lv_class = lv.btnmatrix end -class lvh_checkbox : lvh_obj static _lv_class = lv.checkbox end -class lvh_dropdown : lvh_obj static _lv_class = lv.dropdown end -class lvh_img : lvh_obj static _lv_class = lv.img end -class lvh_line : lvh_obj static _lv_class = lv.line end -class lvh_roller : lvh_obj static _lv_class = lv.roller end -class lvh_slider : lvh_obj static _lv_class = lv.slider end -class lvh_textarea : lvh_obj static _lv_class = lv.textarea end - -#- ---------------------------------------------------------------------------- - Class `lvh_page` encapsulating `lv_obj` as screen (created with lv.obj(0)) -- ----------------------------------------------------------------------------- -# -# ex of transition: lv.scr_load_anim(scr, lv.SCR_LOAD_ANIM_MOVE_RIGHT, 500, 0, false) -class lvh_page - var _obj_id # (map) of objects by id numbers - var _page_id # (int) id number of the page - var _lv_scr # (lv_obj) lvgl screen object - - #- init(page_number) -# - def init(page_number) - import global - - # if no parameter, default to page #1 - if page_number == nil page_number = 1 end - - self._page_id = page_number # remember our page_number - self._obj_id = {} # init list of objects - if page_number == 1 - self._lv_scr = lv.scr_act() # default screen - elif page_number == 0 - self._lv_scr = lv.layer_top() # top layer, visible over all screens - else - self._lv_scr = lv.obj(0) # allocate a new screen - # self._lv_scr.set_style_bg_color(lv.color(0x000000), lv.PART_MAIN | lv.STATE_DEFAULT) # set black background - self._lv_scr.set_style_bg_color(lv.color(0xFFFFFF), lv.PART_MAIN | lv.STATE_DEFAULT) # set white background - end - - # create a global for this page of form p, ex p1 - var glob_name = string.format("p%i", self._page_id) - global.(glob_name) = self - end - - #- retrieve lvgl screen object for this page -# - def get_scr() - return self._lv_scr - end - - #- add an object to this page -# - def set_obj(id, o) - self._obj_id[id] = o - end - def get_obj(id) - return self._obj_id.find(id) - end - - #- return id of this page -# - def id() - return self._page_id - end - - #- show this page, with animation -# - def show(anim, duration) - # ignore if there is no screen, like for id 0 - if self._lv_scr == nil return nil end - # ignore if the screen is already active - if self._lv_scr._p == lv.scr_act()._p return end # do nothing - - # default animation is lv.SCR_LOAD_ANIM_MOVE_RIGHT - if anim == nil anim = lv.SCR_LOAD_ANIM_MOVE_RIGHT end - # default duration of 500ms - if duration == nil duration = 500 end - - # load new screen with anumation, no delay, 500ms transition time, no auto-delete - lv.scr_load_anim(self._lv_scr, lv.SCR_LOAD_ANIM_MOVE_RIGHT, duration, 0, false) - end -end - -#- pages -# -var lvh_page_cur = lvh_page(1) -var lvh_pages = { 1: lvh_page_cur } # always create page #1 - -f = open("pages.jsonl","r") -var jsonl = string.split(f.read(), "\n") -f.close() - -#- ------------------------------------------------------------ - Parse page information - - Create a new page object if required - Change the active page -- ------------------------------------------------------------ -# -def parse_page(jline) - if jline.has("page") && type(jline["page"]) == 'int' - var page = int(jline["page"]) - # does the page already exist? - if lvh_pages.has(page) - # yes, just change the current page - lvh_page_cur = lvh_pages[page] - else - # no, create a new page - lvh_page_cur = lvh_page(page) - lvh_pages[page] = lvh_page_cur - end - end -end - -#- ------------------------------------------------------------ - Parse single object - -- ------------------------------------------------------------ -# -def parse_obj(jline, page) - import global - import introspect - - # line must contain 'obj' and 'id', otherwise it is ignored - if jline.has("obj") && jline.has("id") && type(jline["id"]) == 'int' - # 'obj_id' must be between 1 and 254 - var obj_id = int(jline["id"]) - if obj_id < 1 || obj_id > 254 - raise "value error", "invalid id " + str(obj_id) - end - - # extract openhasp class, prefix with `lvh_`. Ex: `btn` becomes `lvh_btn` - var obj_type = jline["obj"] - - # extract parent - var parent - var parent_id = int(jline.find("parentid")) - if parent_id != nil - var parent_obj = lvh_page_cur.get_obj(parent_id) - if parent_obj != nil - parent = parent_obj._lv_obj - end - end - if parent == nil - parent = page.get_scr() - end - - # check if a class with the requested name exists - var obj_class = introspect.get(global, "lvh_" + obj_type) - if obj_class == nil - raise "value error", "cannot find object of type " + str(obj_type) - end - - # instanciate the object, passing the lvgl screen as paren object - var obj = obj_class(parent, jline) - - # add object to page object - lvh_page_cur.set_obj(obj_id, obj) - # set attributes - # try every attribute, if not supported it is silently ignored - for k:jline.keys() - # introspect.set(obj, k, jline[k]) - obj.(k) = jline[k] - end - - # create a global variable for this object of form pb, ex p1b2 - var glob_name = string.format("p%ib%i", lvh_page_cur.id(), obj_id) - global.(glob_name) = obj - end -end - -# ex: -# {'page': 1, 'h': 50, 'obj': 'label', 'hidden': false, 'text': 'Hello', 'x': 5, 'id': 1, 'enabled': true, 'y': 5, 'w': 50} -# {"page":1,"id":2,"obj":"btn","x":5,"y":90,"h":90,"w":50,"text":"World","enabled":false,"hidden":false} - -#- ------------------------------------------------------------ - Parse jsonl file line by line - -- ------------------------------------------------------------ -# -tasmota.yield() -for j:jsonl - var jline = json.load(j) - - # parse page first - if type(jline) == 'instance' - parse_page(jline) - parse_obj(jline, lvh_page_cur) - end -end diff --git a/lib/libesp32/berry/default/embedded/openhasp/demo-all.jsonl b/lib/libesp32/berry/default/embedded/openhasp/demo-all.jsonl deleted file mode 100644 index 76d3ed810..000000000 --- a/lib/libesp32/berry/default/embedded/openhasp/demo-all.jsonl +++ /dev/null @@ -1,61 +0,0 @@ -{"page":1,"comment":"---------- Page 1 ----------"} -{"page":1,"id":0,"bg_color":"#FFFFFF","bg_grad_color":"#FFFFFF","text_color":"#000000","radius":0,"border_side":0} -{"page":1,"id":1,"obj":"btn","x":0,"y":0,"w":240,"h":30,"text":"LIVING ROOM","value_font":24,"bg_color":"#2C3E50","bg_grad_color":"#2C3E50","text_color":"#FFFFFF","radius":0,"border_side":0} - -{"page":1,"id":2,"obj":"arc","x":20,"y":65,"w":80,"h":100,"max":40,"border_side":0,"type":0,"rotation":0,"start_angle":180,"end_angle":0,"start_angle1":180,"value_font":12,"value_ofs_x":0,"value_ofs_y":-14,"bg_opa":0,"text":"21.2°C","min":-20,"max":50,"val":21} - -{"page":1,"id":3,"obj":"arc","x":140,"y":65,"w":80,"h":100,"max":100,"border_side":0,"type":0,"start_angle":180,"end_angle":0,"start_angle1":180,"value_font":12,"value_color":"#000000","value_ofs_x":0,"value_ofs_y":-14,"bg_opa":0,"text":"44%","val":44} - -{"page":1,"id":4,"obj":"label","x":0,"y":120,"w":240,"h":20,"text":"CO2 levels: 1483 ppm","radius":0,"border_side":0,"align":1} -{"page":1,"id":5,"obj":"label","x":2,"y":35,"w":140,"text":"Temperature","align":1} -{"page":1,"id":6,"obj":"label","x":140,"y":35,"w":95,"text":"Humidity","align":1} -{"page":1,"id":7,"obj":"btn","x":0,"y":160,"w":240,"h":20,"text":"LIGHTS","bg_color":"#F1C40F","text_color":"#FFFFFF","radius":0,"border_side":0} -{"page":1,"id":8,"obj":"label","x":20,"y":190,"w":140,"h":20,"text":"Ceiling Light"} -{"page":1,"id":9,"obj":"switch","x":160,"y":190,"w":40,"h":20,"toggle":"TRUE"} -{"page":1,"id":10,"obj":"label","x":20,"y":215,"w":140,"h":20,"text":"Wall Light"} -{"page":1,"id":11,"obj":"switch","x":160,"y":215,"w":40,"h":20,"toggle":"TRUE"} -{"page":1,"id":12,"obj":"label","x":20,"y":240,"w":200,"h":20,"text":"Ambient Light"} -{"page":1,"id":13,"obj":"slider","x":30,"y":265,"w":200,"h":10} - -{"page":2,"comment":"---------- Page 2 ----------"} -{"page":2,"id":1,"obj":"btn","x":0,"y":0,"w":240,"h":30,"text":"ENTITIES","value_font":24,"bg_color":"#2C3E50","text_color":"#FFFFFF","radius":0,"border_side":0,"click":0} -{"page":2,"id":2,"obj":"obj","x":5,"y":35,"w":230,"h":250,"click":0} - -{"page":2,"id":11,"obj":"label","x":8,"y":33,"w":35,"h":35,"text":"\uE004","align":1,"text_font":32,"text_color":"black"} -{"page":2,"id":12,"obj":"label","x":48,"y":43,"w":130,"h":30,"text":"Presence override","align":0,"text_font":16,"text_color":"black"} -{"page":2,"id":13,"obj":"switch","x":177,"y":40,"w":50,"h":25,"radius":25,"radius2":15} - -{"page":2,"id":21,"obj":"label","x":8,"y":69,"w":35,"h":35,"text":"\uF020","align":1,"text_font":32,"text_color":"black"} -{"page":2,"id":22,"obj":"label","x":48,"y":79,"w":130,"h":30,"text":"Front door light","align":0,"text_font":16,"text_color":"black"} -{"page":2,"id":23,"obj":"switch","x":177,"y":74,"w":50,"h":25,"radius":25,"radius2":15} - -{"page":2,"id":31,"obj":"label","x":8,"y":103,"w":35,"h":35,"text":"\uF054","align":1,"text_font":32,"text_color":"black"} -{"page":2,"id":32,"obj":"label","x":48,"y":113,"w":130,"h":30,"text":"Back yard lights","align":0,"text_font":16,"text_color":"black"} -{"page":2,"id":33,"obj":"switch","x":177,"y":110,"w":50,"h":25,"radius":25,"radius2":15} - -{"page":2,"id":41,"obj":"label","x":8,"y":138,"w":35,"h":35,"text":"\uEA7A","align":1,"text_font":32,"text_color":"black"} -{"page":2,"id":42,"obj":"label","x":48,"y":148,"w":130,"h":30,"text":"Trash service","align":0,"text_font":16,"text_color":"black"} -{"page":2,"id":43,"obj":"label","x":97,"y":148,"w":130,"h":30,"text":"in 6 days","align":2,"text_color":"black"} - -{"page":2,"id":51,"obj":"label","x":8,"y":173,"w":35,"h":35,"text":"\uF39D","align":1,"text_font":32,"text_color":"black"} -{"page":2,"id":52,"obj":"label","x":48,"y":183,"w":130,"h":30,"text":"Selective trash","align":0,"text_font":16,"text_color":"black"} -{"page":2,"id":53,"obj":"label","x":97,"y":183,"w":130,"h":30,"text":"in 10 days","align":2,"text_color":"black"} - -{"page":2,"id":61,"obj":"label","x":8,"y":208,"w":35,"h":35,"text":"\uE32A","align":1,"text_font":32,"text_color":"black"} -{"page":2,"id":62,"obj":"label","x":48,"y":218,"w":130,"h":30,"text":"Green energy active","align":0,"text_font":16,"text_color":"black"} -{"page":2,"id":63,"obj":"label","x":97,"y":218,"w":130,"h":30,"text":"Yes :)","align":2,"text_color":"black"} - -{"page":2,"id":71,"obj":"label","x":8,"y":243,"w":35,"h":35,"text":"\uE957","align":1,"text_font":32,"text_color":"black"} -{"page":2,"id":72,"obj":"label","x":48,"y":253,"w":130,"h":30,"text":"Air quality","align":0,"text_font":16,"text_color":"black"} -{"page":2,"id":73,"obj":"label","x":97,"y":253,"w":130,"h":30,"text":"OK (29.58 µg/m³)","align":2,"text_color":"black"} - -{"page":3,"comment":"---------- Page 3 ----------"} -{"page":3,"id":1,"obj":"btn","x":0,"y":0,"w":240,"h":30,"text":"FAN STATUS","text_font":16,"bg_color":"#2C3E50","text_color":"#FFFFFF","radius":0,"border_side":0,"click":0} - -{"page":3,"id":11,"obj":"img","src":"A:/noun_Fan_35097_140.png","auto_size":1,"w":140,"h":140,"x":50,"y":75,"image_recolor":"lime","image_recolor_opa":150} -{"page":3,"id":12,"obj":"spinner","parentid":11,"x":7,"y":6,"w":126,"h":126,"bg_opa":0,"border_width":0,"line_width":7,"line_width1":7,"type":2,"angle":120,"speed":1000,"value_str":3,"value_font":24} - -{"page":0,"comment":"---------- All pages ----------"} -{"page":0,"id":11,"obj":"btn","action":"prev","x":0,"y":290,"w":79,"h":32,"bg_color":"#34495E","text":"\uE141","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":32} -{"page":0,"id":12,"obj":"btn","action":"back","x":80,"y":290,"w":80,"h":32,"bg_color":"#34495E","text":"\uE2DC","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":24} -{"page":0,"id":13,"obj":"btn","action":"next","x":161,"y":290,"w":79,"h":32,"bg_color":"#34495E","text":"\uE142","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":32} diff --git a/lib/libesp32/berry/default/embedded/openhasp/demo1.jsonl b/lib/libesp32/berry/default/embedded/openhasp/demo1.jsonl deleted file mode 100644 index 684e0d324..000000000 --- a/lib/libesp32/berry/default/embedded/openhasp/demo1.jsonl +++ /dev/null @@ -1,23 +0,0 @@ -{"page":1,"comment":"---------- Page 1 ----------"} -{"page":1,"id":0,"bg_color":"#FFFFFF","bg_grad_color":"#FFFFFF","text_color":"#000000","radius":0,"border_side":0} -{"page":1,"id":1,"obj":"btn","x":0,"y":0,"w":240,"h":30,"text":"LIVING ROOM","value_font":22,"bg_color":"#2C3E50","bg_grad_color":"#2C3E50","text_color":"#FFFFFF","radius":0,"border_side":0} - -{"page":1,"id":2,"obj":"arc","x":20,"y":65,"w":80,"h":100,"max":40,"border_side":0,"type":0,"rotation":0,"start_angle":180,"end_angle":0,"start_angle1":180,"value_font":12,"value_ofs_x":0,"value_ofs_y":-14,"bg_opa":0,"text":"21.2°C","min":-20,"max":50,"val":21} - -{"page":1,"id":3,"obj":"arc","x":140,"y":65,"w":80,"h":100,"max":100,"border_side":0,"type":0,"start_angle":180,"end_angle":0,"start_angle1":180,"value_font":12,"value_color":"#000000","value_ofs_x":0,"value_ofs_y":-14,"bg_opa":0,"text":"44%","val":44} - -{"page":1,"id":4,"obj":"label","x":0,"y":120,"w":240,"h":20,"text":"CO2 levels: 1483 ppm","radius":0,"border_side":0,"align":1} -{"page":1,"id":5,"obj":"label","x":2,"y":35,"w":140,"text":"Temperature","align":1} -{"page":1,"id":6,"obj":"label","x":140,"y":35,"w":95,"text":"Humidity","align":1} -{"page":1,"id":7,"obj":"btn","x":0,"y":160,"w":240,"h":20,"text":"LIGHTS","bg_color":"#F1C40F","text_color":"#FFFFFF","radius":0,"border_side":0} -{"page":1,"id":8,"obj":"label","x":20,"y":190,"w":140,"h":20,"text":"Ceiling Light"} -{"page":1,"id":9,"obj":"switch","x":160,"y":190,"w":40,"h":20,"toggle":"TRUE"} -{"page":1,"id":10,"obj":"label","x":20,"y":215,"w":140,"h":20,"text":"Wall Light"} -{"page":1,"id":11,"obj":"switch","x":160,"y":215,"w":40,"h":20,"toggle":"TRUE"} -{"page":1,"id":12,"obj":"label","x":20,"y":240,"w":200,"h":20,"text":"Ambient Light"} -{"page":1,"id":13,"obj":"slider","x":30,"y":265,"w":200,"h":10} - -{"page":0,"comment":"---------- All pages ----------"} -{"page":0,"id":11,"obj":"btn","action":"prev","x":0,"y":290,"w":79,"h":32,"bg_color":"#34495E","text":"\uE141","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":32} -{"page":0,"id":12,"obj":"btn","action":"back","x":80,"y":290,"w":80,"h":32,"bg_color":"#34495E","text":"\uE2DC","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":24} -{"page":0,"id":13,"obj":"btn","action":"next","x":161,"y":290,"w":79,"h":32,"bg_color":"#34495E","text":"\uE142","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":32} diff --git a/lib/libesp32/berry/default/embedded/openhasp/demo2.jsonl b/lib/libesp32/berry/default/embedded/openhasp/demo2.jsonl deleted file mode 100644 index b1d6efc34..000000000 --- a/lib/libesp32/berry/default/embedded/openhasp/demo2.jsonl +++ /dev/null @@ -1,35 +0,0 @@ -{"page":1,"id":1,"obj":"btn","x":0,"y":0,"w":240,"h":30,"text":"ENTITIES","value_font":22,"bg_color":"#2C3E50","text_color":"#FFFFFF","radius":0,"border_side":0,"click":0} -{"page":1,"id":2,"obj":"obj","x":5,"y":35,"w":230,"h":250,"click":0} - -{"page":1,"id":11,"obj":"label","x":8,"y":33,"w":35,"h":35,"text":"\uE004","align":1,"text_font":32,"text_color":"black"} -{"page":1,"id":12,"obj":"label","x":48,"y":43,"w":130,"h":30,"text":"Presence override","align":0,"text_font":16,"text_color":"black"} -{"page":1,"id":13,"obj":"switch","x":177,"y":40,"w":50,"h":25,"radius":25,"radius2":15} - -{"page":1,"id":21,"obj":"label","x":8,"y":69,"w":35,"h":35,"text":"\uF020","align":1,"text_font":32,"text_color":"black"} -{"page":1,"id":22,"obj":"label","x":48,"y":79,"w":130,"h":30,"text":"Front door light","align":0,"text_font":16,"text_color":"black"} -{"page":1,"id":23,"obj":"switch","x":177,"y":74,"w":50,"h":25,"radius":25,"radius2":15} - -{"page":1,"id":31,"obj":"label","x":8,"y":103,"w":35,"h":35,"text":"\uF054","align":1,"text_font":32,"text_color":"black"} -{"page":1,"id":32,"obj":"label","x":48,"y":113,"w":130,"h":30,"text":"Back yard lights","align":0,"text_font":16,"text_color":"black"} -{"page":1,"id":33,"obj":"switch","x":177,"y":110,"w":50,"h":25,"radius":25,"radius2":15} - -{"page":1,"id":41,"obj":"label","x":8,"y":138,"w":35,"h":35,"text":"\uEA7A","align":1,"text_font":32,"text_color":"black"} -{"page":1,"id":42,"obj":"label","x":48,"y":148,"w":130,"h":30,"text":"Trash service","align":0,"text_font":16,"text_color":"black"} -{"page":1,"id":43,"obj":"label","x":97,"y":148,"w":130,"h":30,"text":"in 6 days","align":2,"text_color":"black"} - -{"page":1,"id":51,"obj":"label","x":8,"y":173,"w":35,"h":35,"text":"\uF39D","align":1,"text_font":32,"text_color":"black"} -{"page":1,"id":52,"obj":"label","x":48,"y":183,"w":130,"h":30,"text":"Selective trash","align":0,"text_font":16,"text_color":"black"} -{"page":1,"id":53,"obj":"label","x":97,"y":183,"w":130,"h":30,"text":"in 10 days","align":2,"text_color":"black"} - -{"page":1,"id":61,"obj":"label","x":8,"y":208,"w":35,"h":35,"text":"\uE32A","align":1,"text_font":32,"text_color":"black"} -{"page":1,"id":62,"obj":"label","x":48,"y":218,"w":130,"h":30,"text":"Green energy active","align":0,"text_font":16,"text_color":"black"} -{"page":1,"id":63,"obj":"label","x":97,"y":218,"w":130,"h":30,"text":"Yes :)","align":2,"text_color":"black"} - -{"page":1,"id":71,"obj":"label","x":8,"y":243,"w":35,"h":35,"text":"\uE957","align":1,"text_font":32,"text_color":"black"} -{"page":1,"id":72,"obj":"label","x":48,"y":253,"w":130,"h":30,"text":"Air quality","align":0,"text_font":16,"text_color":"black"} -{"page":1,"id":73,"obj":"label","x":97,"y":253,"w":130,"h":30,"text":"OK (29.58 µg/m³)","align":2,"text_color":"black"} - -{"page":0,"comment":"---------- All pages ----------"} -{"page":0,"id":11,"obj":"btn","action":"prev","x":0,"y":290,"w":79,"h":32,"bg_color":"#34495E","text":"\uE141","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":32} -{"page":0,"id":12,"obj":"btn","action":"back","x":80,"y":290,"w":80,"h":32,"bg_color":"#34495E","text":"\uE2DC","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":24} -{"page":0,"id":13,"obj":"btn","action":"next","x":161,"y":290,"w":79,"h":32,"bg_color":"#34495E","text":"\uE142","text_color":"#CCCCCC","radius":0,"border_side":0,"text_font":32} diff --git a/lib/libesp32/berry/default/embedded/openhasp/demo3.jsonl b/lib/libesp32/berry/default/embedded/openhasp/demo3.jsonl deleted file mode 100644 index f8b952f81..000000000 --- a/lib/libesp32/berry/default/embedded/openhasp/demo3.jsonl +++ /dev/null @@ -1,4 +0,0 @@ -{"page":1,"id":1,"obj":"btn","x":0,"y":0,"w":240,"h":30,"text":"FAN STATUS","text_font":16,"bg_color":"#2C3E50","text_color":"#FFFFFF","radius":0,"border_side":0,"click":0} - -{"page":1,"id":11,"obj":"img","src":"A:/noun_Fan_35097_140.png","auto_size":1,"w":140,"h":140,"x":50,"y":75,"image_recolor":"lime","image_recolor_opa":150} -{"page":1,"id":12,"obj":"spinner","parentid":11,"x":7,"y":6,"w":126,"h":126,"bg_opa":0,"border_width":0,"line_width":7,"line_width1":7,"type":2,"angle":120,"speed":1000,"value_str":3,"value_font":24} \ No newline at end of file diff --git a/lib/libesp32/berry/default/embedded/persist.be b/lib/libesp32/berry/default/embedded/persist.be deleted file mode 100644 index 164a1dd7b..000000000 --- a/lib/libesp32/berry/default/embedded/persist.be +++ /dev/null @@ -1,161 +0,0 @@ -#- persistance module for Berry -# -#- -# -#- To solidify: -# -#- - # load only persis_module and persist_module.init - import solidify - solidify.dump(persist_module.init) - # copy and paste into `be_persist_lib.c` --# -var persist_module = module("persist") - -persist_module.init = def (m) - - class Persist - var _filename - var _p - var _dirty - - #- persist can be initialized with pre-existing values. The map is not copied so any change will be reflected -# - def init(m) - # print("Persist init") - self._filename = '_persist.json' - if isinstance(m,map) - self._p = m.copy() # need to copy instead? - else - self._p = {} - end - self.load(self._p, self._filename) - self._dirty = false - # print("Persist init") - end - - #- virtual member getter, if a key does not exists return `nil`-# - def member(key) - return self._p.find(key) - end - - #- virtual member setter -# - def setmember(key, value) - self._p[key] = value - self._dirty = true - end - - #- clear all entries -# - def zero() - self._p = {} - self._dirty = true - end - - def remove(k) - self._p.remove(k) - self._dirty = true - end - - def has(k) - return self._p.has(k) - end - - def find(k, d) - return self._p.find(k, d) - end - - def load() - import json - import path - var f # file object - var val # values loaded from json - - if path.exists(self._filename) - try - f = open(self._filename, "r") - val = json.load(f.read()) - f.close() - except .. as e, m - if f != nil f.close() end - raise e, m - end - if isinstance(val, map) - self._p = val # sucess - else - print("BRY: failed to load _persist.json") - end - self._dirty = false - else - self.save() - end - - # print("Loading") - end - - def save() - var f # file object - try - f = open(self._filename, "w") - self.json_fdump(f) - f.close() - except .. as e, m - if f != nil f.close() end - f = open(self._filename, "w") - f.write('{}') # fallback write empty map - f.close() - raise e, m - end - self._dirty = false - # print("Saving") - end - - def json_fdump_any(f, v) - import json - if isinstance(v, map) - self.json_fdump_map(f, v) - elif isinstance(v, list)v - self.json_fdump_list(f, v) - else - f.write(json.dump(v)) - end - end - - def json_fdump_map(f, v) - import json - f.write('{') - var sep = nil - for k:v.keys() - if sep != nil f.write(sep) end - - f.write(json.dump(str(k))) - f.write(':') - self.json_fdump_any(f, v[k]) - - sep = "," - end - f.write('}') - end - - def json_fdump_list(f, v) - import json - f.write('[') - var i = 0 - while i < size(v) - if i > 0 f.write(',') end - self.json_fdump_any(f, v[i]) - i += 1 - end - f.write(']') - end - - def json_fdump(f) - import json - if isinstance(self._p, map) - self.json_fdump_map(f, self._p) - else - raise "internal_error", "persist._p is not a map" - end - end - end - - - return Persist() # return an instance of this class -end - -return persist_module diff --git a/lib/libesp32/berry/default/embedded/tapp.be b/lib/libesp32/berry/default/embedded/tapp.be deleted file mode 100644 index 30aa1f740..000000000 --- a/lib/libesp32/berry/default/embedded/tapp.be +++ /dev/null @@ -1,35 +0,0 @@ -#- Tasmota apps module for Berry -# -#- -# - -var tapp_module = module("tapp") - -tapp_module.init = def (m) - - class Tapp - - def init() - tasmota.add_driver(self) - end - - def autoexec() - import path - import string - - var dir = path.listdir("/") - - for d: dir - if string.find(d, ".tapp") > 0 - tasmota.log(string.format("TAP: found Tasmota App '%s'", d), 2) - tasmota.load(d + "#autoexec.be") - end - end - end - end - - return Tapp() # return an instance of this class -end - -# aa = autoconf_module.init(autoconf_module) -# import webserver -# webserver.on('/ac2', / -> aa.page_autoconf_mgr(), webserver.HTTP_GET) -return tapp_module diff --git a/lib/libesp32/berry/default/embedded/test_crypto.be b/lib/libesp32/berry/default/embedded/test_crypto.be deleted file mode 100644 index f2edbfee5..000000000 --- a/lib/libesp32/berry/default/embedded/test_crypto.be +++ /dev/null @@ -1,30 +0,0 @@ -ec = crypto.EC_C25519() - -# Alice -sk_A = bytes('77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a') -pk_A = ec.public_key(sk_A) -assert(pk_A == bytes('8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a')) - -# Bob -sk_B = bytes('5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb') -pk_B = ec.public_key(sk_B) -assert(pk_B == bytes('de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f')) - -psk = ec.shared_key(sk_A, pk_B) -assert(psk == bytes('4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742')) -psk2 = ec.shared_key(sk_B, pk_A) -assert(psk2 == bytes('4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742')) - -#- test vectors from RFC77748 - - Alice's private key, a: - 77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a - Alice's public key, X25519(a, 9): - 8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a - Bob's private key, b: - 5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb - Bob's public key, X25519(b, 9): - de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f - Their shared secret, K: - 4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742 --# diff --git a/lib/libesp32/berry/default/static_block.hpp b/lib/libesp32/berry/default/static_block.hpp deleted file mode 100644 index 152dda130..000000000 --- a/lib/libesp32/berry/default/static_block.hpp +++ /dev/null @@ -1,80 +0,0 @@ -/** - * static_block.hpp - * - * An implementation of a Java-style static block, in C++ (and potentially a - * GCC/clang extension to avoid warnings). Almost, but not quite, valid C. - * Partially inspired by Andrei Alexandrescu's Scope Guard and - * discussions on stackoverflow.com - * - * By Eyal Rozenberg - * - * Licensed under the Apache License v2.0: - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ -#pragma once -#ifndef STATIC_BLOCK_HPP_ -#define STATIC_BLOCK_HPP_ - -#ifndef CONCATENATE -#define CONCATENATE(s1, s2) s1##s2 -#define EXPAND_THEN_CONCATENATE(s1, s2) CONCATENATE(s1, s2) -#endif /* CONCATENATE */ - -#ifndef UNIQUE_IDENTIFIER -/** - * This macro expands into a different identifier in every expansion. - * Note that you _can_ clash with an invocation of UNIQUE_IDENTIFIER - * by manually using the same identifier elsewhere; or by carefully - * choosing another prefix etc. - */ -#ifdef __COUNTER__ -#define UNIQUE_IDENTIFIER(prefix) EXPAND_THEN_CONCATENATE(prefix, __COUNTER__) -#else -#define UNIQUE_IDENTIFIER(prefix) EXPAND_THEN_CONCATENATE(prefix, __LINE__) -#endif /* COUNTER */ -#else -#endif /* UNIQUE_IDENTIFIER */ - -/** - * Following is a mechanism for executing code statically. - * - * @note Caveats: - * - Your static block must be surround by curly braces. - * - No need for a semicolon after the block (but it won't hurt). - * - Do not put static blocks in files, as it might get compiled multiple - * times ane execute multiple times. - * - A static_block can only be used in file scope - not within any other block etc. - * - Templated static blocks will probably not work. Avoid them. - * - No other funny business, this is fragile. - * - This does not having any threading issues (AFAICT) - as it has no static - * initialization order issue. Of course, you have to _keep_ it safe with - * your static code. - * - Execution of the code is guaranteed to occur before main() executes, - * but the relative order of statics being initialized is unknown/unclear. So, - * do not call any method of an instance of a class which you expect to have been - * constructed; it may not have been. Instead, you can use a static getInstance() method - * (look this idiom up on the web, it's safe). - * - Variables defined within the static block are not global; they will - * go out of scope as soon as its execution concludes. - * - * Usage example: - * - * static_block { - * do_stuff(); - * std::cout << "in the static block!\n"; - * } - * - */ -#define static_block STATIC_BLOCK_IMPL1(UNIQUE_IDENTIFIER(_static_block_)) - -#define STATIC_BLOCK_IMPL1(prefix) \ - STATIC_BLOCK_IMPL2(CONCATENATE(prefix,_fn),CONCATENATE(prefix,_var)) - -#define STATIC_BLOCK_IMPL2(function_name,var_name) \ -static void function_name(); \ -static int var_name __attribute((unused)) = (function_name(), 0) ; \ -static void function_name() - - -#endif // STATIC_BLOCK_HPP_ diff --git a/lib/libesp32/berry/examples/anon_func.be b/lib/libesp32/berry/examples/anon_func.be deleted file mode 100644 index 78854ce64..000000000 --- a/lib/libesp32/berry/examples/anon_func.be +++ /dev/null @@ -1,20 +0,0 @@ -# anonymous function and closure -def count(x) - var arr = [] - for i : 0 .. x - arr.push( - def (n) # loop variable cannot be used directly as free variable - return def () - return n * n - end - end (i) # define and call anonymous function - ) - end - return arr -end - -for xx : count(6) - print(xx()) # 0, 1, 4 ... n * n -end - -return count diff --git a/lib/libesp32/berry/examples/bigloop.be b/lib/libesp32/berry/examples/bigloop.be deleted file mode 100644 index a3a77768b..000000000 --- a/lib/libesp32/berry/examples/bigloop.be +++ /dev/null @@ -1,15 +0,0 @@ -import time - -c = time.clock() -do - i = 0 - while i < 100000000 - i += 1 - end -end -print('while iteration 100000000 times', time.clock() - c, 's') - -c = time.clock() -for i : 1 .. 100000000 -end -print('for iteration 100000000 times', time.clock() - c, 's') diff --git a/lib/libesp32/berry/examples/bintree.be b/lib/libesp32/berry/examples/bintree.be deleted file mode 100644 index 81936f8a0..000000000 --- a/lib/libesp32/berry/examples/bintree.be +++ /dev/null @@ -1,60 +0,0 @@ -# Reference from https://github.com/BerryMathDevelopmentTeam/BerryMath/blob/master/testscript/BinaryTree.bm - -class node - var v, l, r - def init(v, l, r) - self.v = v - self.l = l - self.r = r - end - def insert(v) - if v < self.v - if self.l - self.l.insert(v) - else - self.l = node(v) - end - else - if self.r - self.r.insert(v) - else - self.r = node (v) - end - end - end - def sort(l) - if (self.l) self.l.sort(l) end - l.push(self.v) - if (self.r) self.r.sort(l) end - end -end - -class btree - var root - def insert(v) - if self.root - self.root.insert(v) - else - self.root = node(v) - end - end - def sort() - var l = [] - if self.root - self.root.sort(l) - end - return l - end -end - -var tree = btree() -tree.insert(-100) -tree.insert(5); -tree.insert(3); -tree.insert(9); -tree.insert(10); -tree.insert(10000000); -tree.insert(1); -tree.insert(-1); -tree.insert(-10); -print(tree.sort()); diff --git a/lib/libesp32/berry/examples/calcpi.be b/lib/libesp32/berry/examples/calcpi.be deleted file mode 100644 index 053f87875..000000000 --- a/lib/libesp32/berry/examples/calcpi.be +++ /dev/null @@ -1,16 +0,0 @@ -def cpi(n) - i = 2 - pi = 3 - while i <= n - term = 4.0 / (i * (i + 1) * (i + 2)) - if i % 4 - pi = pi + term - else - pi = pi - term - end - i = i + 2 - end - return pi -end - -print("pi =", cpi(100)) diff --git a/lib/libesp32/berry/examples/exception.be b/lib/libesp32/berry/examples/exception.be deleted file mode 100644 index 3a3098dce..000000000 --- a/lib/libesp32/berry/examples/exception.be +++ /dev/null @@ -1,12 +0,0 @@ -import debug - -def test_func() - try - compile('def +() end')() - except .. as e, v - print('catch execption:', str(e) + ' >>>\n ' + str(v)) - debug.traceback() - end -end - -test_func() diff --git a/lib/libesp32/berry/examples/fib_rec.be b/lib/libesp32/berry/examples/fib_rec.be deleted file mode 100644 index 31ed3817b..000000000 --- a/lib/libesp32/berry/examples/fib_rec.be +++ /dev/null @@ -1,12 +0,0 @@ -import time - -def fib(x) - if x <= 2 - return 1 - end - return fib(x - 1) + fib(x - 2) -end - -c = time.clock() -print("fib:", fib(38)) # minimum stack size: 78!! -print("time:", time.clock() - c, 's') diff --git a/lib/libesp32/berry/examples/guess_number.be b/lib/libesp32/berry/examples/guess_number.be deleted file mode 100644 index 6cbd07e7c..000000000 --- a/lib/libesp32/berry/examples/guess_number.be +++ /dev/null @@ -1,26 +0,0 @@ -import time -import math - -math.srand(time.time()) -res = math.rand() % 100 -max_test = 7 -test = -1 -idx = 1 -print('Guess a number between 0 and 99. You have', max_test, 'chances.') -while test != res && idx <= max_test - test = number(input(str(idx) + ': enter the number you guessed: ')) - if type(test) != 'int' - print('This is not an integer. Continue!') - continue - elif test > res - print('This number is too large.') - elif test < res - print('This number is too small.') - end - idx = idx + 1 -end -if test == res - print('You win!') -else - print('You failed, the correct answer is', res) -end diff --git a/lib/libesp32/berry/examples/json.be b/lib/libesp32/berry/examples/json.be deleted file mode 100644 index d98dff8bb..000000000 --- a/lib/libesp32/berry/examples/json.be +++ /dev/null @@ -1,4 +0,0 @@ -import json -print(json.load('{"key": "value"}')) -print(json.dump({'test key': nil})) -print(json.dump({'key1': nil, 45: true}, 'format')) diff --git a/lib/libesp32/berry/examples/lambda.be b/lib/libesp32/berry/examples/lambda.be deleted file mode 100644 index 1d0b709bb..000000000 --- a/lib/libesp32/berry/examples/lambda.be +++ /dev/null @@ -1,8 +0,0 @@ -# simple lambda example -print((/a b c-> a * b + c)(2, 3, 4)) - -# Y-Combinator and factorial functions -Y = /f-> (/x-> f(/n-> x(x)(n)))(/x-> f(/n-> x(x)(n))) -F = /f-> /x-> x ? f(x - 1) * x : 1 -fact = Y(F) -print('fact(10) == ' .. fact(10)) diff --git a/lib/libesp32/berry/examples/listdir.be b/lib/libesp32/berry/examples/listdir.be deleted file mode 100644 index 2dd880118..000000000 --- a/lib/libesp32/berry/examples/listdir.be +++ /dev/null @@ -1,16 +0,0 @@ -import os - -def scandir(path) - print('path: ' + path) - for name : os.listdir(path) - var fullname = os.path.join(path, name) - if os.path.isfile(fullname) - print('file: ' + fullname) - else - print('path: ' + fullname) - scandir(fullname) - end - end -end - -scandir('.') diff --git a/lib/libesp32/berry/examples/qsort.be b/lib/libesp32/berry/examples/qsort.be deleted file mode 100644 index b09b65672..000000000 --- a/lib/libesp32/berry/examples/qsort.be +++ /dev/null @@ -1,42 +0,0 @@ -def qsort(data) - # do once sort - def once(left, right) - var pivot = data[left] # use the 0th value as the pivot - while left < right # check if sort is complete - # put the value less than the pivot to the left - while left < right && data[right] >= pivot - right -= 1 # skip values greater than pivot - end - data[left] = data[right] - # put the value greater than the pivot on the right - while left < right && data[left] <= pivot - left += 1 # skip values less than pivot - end - data[right] = data[left] - end - # now we have the index of the pivot, store it - data[left] = pivot - return left # return the index of the pivot - end - # recursive quick sort algorithm - def _sort(left, right) - if left < right # executed when the array is not empty - var index = once(left, right) # get index of pivot for divide and conquer - _sort(left, index - 1) # sort the data on the left - _sort(index + 1, right) # sort the data on the right - end - end - # start quick sort - _sort(0, data.size() - 1) - return data -end - -import time, math -math.srand(time.time()) # sse system time as a random seed -data = [] -# put 20 random numbers into the array -for i : 1 .. 20 - data.push(math.rand() % 100) -end -# sort and print -print(qsort(data)) diff --git a/lib/libesp32/berry/examples/repl.be b/lib/libesp32/berry/examples/repl.be deleted file mode 100644 index aac26b0a1..000000000 --- a/lib/libesp32/berry/examples/repl.be +++ /dev/null @@ -1,61 +0,0 @@ -do - def ismult(msg) - import string - return string.split(msg, -5)[1] == '\'EOS\'' - end - - def multline(src, msg) - if !ismult(msg) - print('syntax_error: ' + msg) - return - end - while true - try - src += '\n' + input('>> ') - return compile(src) - except 'syntax_error' as e, m - if !ismult(m) - print('syntax_error: ' + m) - return - end - end - end - end - - def parse() - var fun, src = input('> ') - try - fun = compile('return (' + src + ')') - except 'syntax_error' as e, m - try - fun = compile(src) - except 'syntax_error' as e, m - fun = multline(src, m) - end - end - return fun - end - - def run(fun) - try - var res = fun() - if res print(res) end - except .. as e, m - import debug - print(e .. ': ' .. m) - debug.traceback() - end - end - - def repl() - while true - var fun = parse() - if fun != nil - run(fun) - end - end - end - - print("Berry Berry REPL!") - repl() -end diff --git a/lib/libesp32/berry/examples/string.be b/lib/libesp32/berry/examples/string.be deleted file mode 100644 index 299834e21..000000000 --- a/lib/libesp32/berry/examples/string.be +++ /dev/null @@ -1,32 +0,0 @@ -s = "This is a long string test. 0123456789 abcdefg ABCDEFG" -print(s) - -a = .5 -print(a) - -import string as s - -print(s.hex(0x45678ABCD, 16)) - -def bin(x, num) - assert(type(x) == 'int', 'the type of \'x\' must be integer') - # test the 'x' bits - var bits = 1 - for i : 0 .. 62 - if x & (1 << 63 - i) - bits = 64 - i - break - end - end - if type(num) == 'int' && num > 0 && num <= 64 - bits = bits < num ? num : bits - end - var result = '' - bits -= 1 - for i : 0 .. bits - result += x & (1 << (bits - i)) ? '1' : '0' - end - return result -end - -print(bin(33)) diff --git a/lib/libesp32/berry/examples/strmod.be b/lib/libesp32/berry/examples/strmod.be deleted file mode 100644 index 8660f5b4e..000000000 --- a/lib/libesp32/berry/examples/strmod.be +++ /dev/null @@ -1,7 +0,0 @@ -import string - -print(string.format('%.3d', 12)) -print(string.format('%.3f', 12)) -print(string.format('%20.7f', 14.5)) -print(string.format('-- %-40s ---', 'this is a string format test')) -print(string.format('-- %40s ---', 'this is a string format test')) diff --git a/lib/libesp32/berry/gen.sh b/lib/libesp32/berry/gen.sh deleted file mode 100755 index 303a62c95..000000000 --- a/lib/libesp32/berry/gen.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -python3 tools/pycoc/main.py -o generate src default ../berry_mapping/src -c default/berry_conf.h diff --git a/lib/libesp32/berry/generate/be_const_strtab.h b/lib/libesp32/berry/generate/be_const_strtab.h deleted file mode 100644 index 50198eb8f..000000000 --- a/lib/libesp32/berry/generate/be_const_strtab.h +++ /dev/null @@ -1,741 +0,0 @@ -extern const bcstring be_const_str_; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_AXP192; -extern const bcstring be_const_str_Animate_X20pc_X20is_X20out_X20of_X20range; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_Auto_X2Dconfiguration; -extern const bcstring be_const_str_BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20; -extern const bcstring be_const_str_BRY_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s; -extern const bcstring be_const_str_BRY_X3A_X20could_X20not_X20save_X20compiled_X20file_X20_X25s_X20_X28_X25s_X29; -extern const bcstring be_const_str_BRY_X3A_X20failed_X20to_X20load_X20_persist_X2Ejson; -extern const bcstring be_const_str_BUTTON_CONFIGURATION; -extern const bcstring be_const_str_CFG_X3A_X20Exception_X3E_X20_X27_X25s_X27_X20_X2D_X20_X25s; -extern const bcstring be_const_str_CFG_X3A_X20_X27init_X2Ebat_X27_X20done_X2C_X20restarting; -extern const bcstring be_const_str_CFG_X3A_X20could_X20not_X20run_X20_X25s_X20_X28_X25s_X20_X2D_X20_X25s_X29; -extern const bcstring be_const_str_CFG_X3A_X20downloading_X20_X27_X25s_X27; -extern const bcstring be_const_str_CFG_X3A_X20exception_X20_X27_X25s_X27_X20_X2D_X20_X27_X25s_X27; -extern const bcstring be_const_str_CFG_X3A_X20loaded_X20_X20; -extern const bcstring be_const_str_CFG_X3A_X20loaded_X20_X27_X25s_X27; -extern const bcstring be_const_str_CFG_X3A_X20loading_X20; -extern const bcstring be_const_str_CFG_X3A_X20loading_X20_X27_X25s_X27; -extern const bcstring be_const_str_CFG_X3A_X20multiple_X20autoconf_X20files_X20found_X2C_X20aborting_X20_X28_X27_X25s_X27_X20_X2B_X20_X27_X25s_X27_X29; -extern const bcstring be_const_str_CFG_X3A_X20no_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found; -extern const bcstring be_const_str_CFG_X3A_X20ran_X20_X20; -extern const bcstring be_const_str_CFG_X3A_X20removed_X20file_X20_X27_X25s_X27; -extern const bcstring be_const_str_CFG_X3A_X20removing_X20autoconf_X20files; -extern const bcstring be_const_str_CFG_X3A_X20removing_X20first_X20time_X20marker; -extern const bcstring be_const_str_CFG_X3A_X20return_code_X3D_X25i; -extern const bcstring be_const_str_CFG_X3A_X20running_X20; -extern const bcstring be_const_str_CFG_X3A_X20skipping_X20_X27display_X2Eini_X27_X20because_X20already_X20present_X20in_X20file_X2Dsystem; -extern const bcstring be_const_str_COLOR_BLACK; -extern const bcstring be_const_str_COLOR_WHITE; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_EVENT_DRAW_MAIN; -extern const bcstring be_const_str_EVENT_DRAW_PART_BEGIN; -extern const bcstring be_const_str_EVENT_DRAW_PART_END; -extern const bcstring be_const_str_False; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_HTTP_GET; -extern const bcstring be_const_str_HTTP_POST; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_I2C_X3A; -extern const bcstring be_const_str_LVG_X3A_X20call_X20to_X20unsupported_X20callback; -extern const bcstring be_const_str_Leds; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_None; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_PART_MAIN; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_Parameter_X20error; -extern const bcstring be_const_str_RES_OK; -extern const bcstring be_const_str_Restart_X201; -extern const bcstring be_const_str_SERIAL_5E1; -extern const bcstring be_const_str_SERIAL_5E2; -extern const bcstring be_const_str_SERIAL_5N1; -extern const bcstring be_const_str_SERIAL_5N2; -extern const bcstring be_const_str_SERIAL_5O1; -extern const bcstring be_const_str_SERIAL_5O2; -extern const bcstring be_const_str_SERIAL_6E1; -extern const bcstring be_const_str_SERIAL_6E2; -extern const bcstring be_const_str_SERIAL_6N1; -extern const bcstring be_const_str_SERIAL_6N2; -extern const bcstring be_const_str_SERIAL_6O1; -extern const bcstring be_const_str_SERIAL_6O2; -extern const bcstring be_const_str_SERIAL_7E1; -extern const bcstring be_const_str_SERIAL_7E2; -extern const bcstring be_const_str_SERIAL_7N1; -extern const bcstring be_const_str_SERIAL_7N2; -extern const bcstring be_const_str_SERIAL_7O1; -extern const bcstring be_const_str_SERIAL_7O2; -extern const bcstring be_const_str_SERIAL_8E1; -extern const bcstring be_const_str_SERIAL_8E2; -extern const bcstring be_const_str_SERIAL_8N1; -extern const bcstring be_const_str_SERIAL_8N2; -extern const bcstring be_const_str_SERIAL_8O1; -extern const bcstring be_const_str_SERIAL_8O2; -extern const bcstring be_const_str_SK6812_GRBW; -extern const bcstring be_const_str_STATE_DEFAULT; -extern const bcstring be_const_str_TAP_X3A_X20found_X20Tasmota_X20App_X20_X27_X25s_X27; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_Tele; -extern const bcstring be_const_str_Timer; -extern const bcstring be_const_str_True; -extern const bcstring be_const_str_Unknown_X20command; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_WS2812_GRB; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str__; -extern const bcstring be_const_str__X0A; -extern const bcstring be_const_str__X20; -extern const bcstring be_const_str__X21_X3D; -extern const bcstring be_const_str__X21_X3D_X3D; -extern const bcstring be_const_str__X23; -extern const bcstring be_const_str__X23autoexec_X2Ebat; -extern const bcstring be_const_str__X23autoexec_X2Ebe; -extern const bcstring be_const_str__X23display_X2Eini; -extern const bcstring be_const_str__X23init_X2Ebat; -extern const bcstring be_const_str__X23preinit_X2Ebe; -extern const bcstring be_const_str__X2502d_X25s_X2502d; -extern const bcstring be_const_str__X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d; -extern const bcstring be_const_str__X25s_X2Eautoconf; -extern const bcstring be_const_str__X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B; -extern const bcstring be_const_str__X26lt_X3BNone_X26gt_X3B; -extern const bcstring be_const_str__X28_X29; -extern const bcstring be_const_str__X2B; -extern const bcstring be_const_str__X2C; -extern const bcstring be_const_str__X2D_X2D_X3A_X2D_X2D; -extern const bcstring be_const_str__X2E; -extern const bcstring be_const_str__X2E_X2E; -extern const bcstring be_const_str__X2Eautoconf; -extern const bcstring be_const_str__X2Ebe; -extern const bcstring be_const_str__X2Ebec; -extern const bcstring be_const_str__X2Elen; -extern const bcstring be_const_str__X2Ep; -extern const bcstring be_const_str__X2Ep1; -extern const bcstring be_const_str__X2Ep2; -extern const bcstring be_const_str__X2Esize; -extern const bcstring be_const_str__X2Etapp; -extern const bcstring be_const_str__X2Ew; -extern const bcstring be_const_str__X2F; -extern const bcstring be_const_str__X2F_X2Eautoconf; -extern const bcstring be_const_str__X2F_X3Frst_X3D; -extern const bcstring be_const_str__X2Fac; -extern const bcstring be_const_str__X3A; -extern const bcstring be_const_str__X3C; -extern const bcstring be_const_str__X3C_X2Fform_X3E_X3C_X2Fp_X3E; -extern const bcstring be_const_str__X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E; -extern const bcstring be_const_str__X3C_X3D; -extern const bcstring be_const_str__X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E; -extern const bcstring be_const_str__X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E; -extern const bcstring be_const_str__X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E; -extern const bcstring be_const_str__X3Cinstance_X3A_X20_X25s_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X29; -extern const bcstring be_const_str__X3Clabel_X3EChoose_X20a_X20device_X20configuration_X3A_X3C_X2Flabel_X3E_X3Cbr_X3E; -extern const bcstring be_const_str__X3Clambda_X3E; -extern const bcstring be_const_str__X3Clegend_X3E_X3Cb_X20title_X3D_X27Autoconfiguration_X27_X3E_X26nbsp_X3BCurrent_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E; -extern const bcstring be_const_str__X3Clegend_X3E_X3Cb_X20title_X3D_X27New_X20autoconf_X27_X3E_X26nbsp_X3BSelect_X20new_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E; -extern const bcstring be_const_str__X3Coption_X20value_X3D_X27_X25s_X27_X3E_X25s_X3C_X2Foption_X3E; -extern const bcstring be_const_str__X3Coption_X20value_X3D_X27reset_X27_X3E_X26lt_X3BRemove_X20autoconf_X26gt_X3B_X3C_X2Foption_X3E; -extern const bcstring be_const_str__X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E; -extern const bcstring be_const_str__X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E; -extern const bcstring be_const_str__X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E; -extern const bcstring be_const_str__X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3E_X26_X23129668_X3B_X20Auto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E; -extern const bcstring be_const_str__X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20; -extern const bcstring be_const_str__X3Cp_X3E_X3Cform_X20id_X3Dzip_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20; -extern const bcstring be_const_str__X3Cp_X3E_X3Csmall_X3E_X26nbsp_X3B_X28This_X20feature_X20requires_X20an_X20internet_X20connection_X29_X3C_X2Fsmall_X3E_X3C_X2Fp_X3E; -extern const bcstring be_const_str__X3Cselect_X20name_X3D_X27zip_X27_X3E; -extern const bcstring be_const_str__X3D; -extern const bcstring be_const_str__X3D_X3C_X3E_X21; -extern const bcstring be_const_str__X3D_X3D; -extern const bcstring be_const_str__X3E; -extern const bcstring be_const_str__X3E_X3D; -extern const bcstring be_const_str__X3F; -extern const bcstring be_const_str__X5B; -extern const bcstring be_const_str__X5D; -extern const bcstring be_const_str__X7B; -extern const bcstring be_const_str__X7B_X7D; -extern const bcstring be_const_str__X7Bs_X7DBatt_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D; -extern const bcstring be_const_str__X7Bs_X7DBatt_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D; -extern const bcstring be_const_str__X7Bs_X7DTemp_X20AXP_X7Bm_X7D_X25_X2E1f_X20_XB0C_X7Be_X7D; -extern const bcstring be_const_str__X7Bs_X7DVBus_X20Current_X7Bm_X7D_X25_X2E1f_X20mA_X7Be_X7D; -extern const bcstring be_const_str__X7Bs_X7DVBus_X20Voltage_X7Bm_X7D_X25_X2E3f_X20V_X7Be_X7D; -extern const bcstring be_const_str__X7D; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str__anonymous_; -extern const bcstring be_const_str__archive; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str__class; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str__debug_present; -extern const bcstring be_const_str__def; -extern const bcstring be_const_str__dirty; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str__energy; -extern const bcstring be_const_str__error; -extern const bcstring be_const_str__filename; -extern const bcstring be_const_str__global_addr; -extern const bcstring be_const_str__global_def; -extern const bcstring be_const_str__lvgl; -extern const bcstring be_const_str__p; -extern const bcstring be_const_str__persist_X2Ejson; -extern const bcstring be_const_str__ptr; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str__settings_def; -extern const bcstring be_const_str__settings_ptr; -extern const bcstring be_const_str__t; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_a; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_add_anim; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_alternate; -extern const bcstring be_const_str_animate; -extern const bcstring be_const_str_animators; -extern const bcstring be_const_str_arch; -extern const bcstring be_const_str_area; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_arg_X20must_X20be_X20a_X20subclass_X20of_X20lv_obj; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_atleast1; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_autoexec; -extern const bcstring be_const_str_autorun; -extern const bcstring be_const_str_available; -extern const bcstring be_const_str_b; -extern const bcstring be_const_str_back_forth; -extern const bcstring be_const_str_base_class; -extern const bcstring be_const_str_battery_present; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_bool; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_bri; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_button_pressed; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_c; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_call_native; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_can_show; -extern const bcstring be_const_str_cb; -extern const bcstring be_const_str_cb_do_nothing; -extern const bcstring be_const_str_cb_event_closure; -extern const bcstring be_const_str_cb_obj; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_class_init_obj; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_clear_first_time; -extern const bcstring be_const_str_clear_to; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_closure; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_cmd_res; -extern const bcstring be_const_str_code; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_color; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_compress; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_connect; -extern const bcstring be_const_str_connected; -extern const bcstring be_const_str_connection_error; -extern const bcstring be_const_str_constructor_cb; -extern const bcstring be_const_str_contains; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_couldn_X27t_X20not_X20initialize_X20noepixelbus; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_counters; -extern const bcstring be_const_str_create_custom_widget; -extern const bcstring be_const_str_create_matrix; -extern const bcstring be_const_str_create_segment; -extern const bcstring be_const_str_ctor; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_ctypes_bytes_dyn; -extern const bcstring be_const_str_dac_voltage; -extern const bcstring be_const_str_day; -extern const bcstring be_const_str_debug; -extern const bcstring be_const_str_decompress; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_del; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_delete_all_configs; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_deregister_obj; -extern const bcstring be_const_str_destructor_cb; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_detected_X20on_X20bus; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_dirty; -extern const bcstring be_const_str_display; -extern const bcstring be_const_str_display_X2Eini; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_draw_arc; -extern const bcstring be_const_str_draw_line; -extern const bcstring be_const_str_draw_line_dsc; -extern const bcstring be_const_str_draw_line_dsc_init; -extern const bcstring be_const_str_due; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_duration; -extern const bcstring be_const_str_editable; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_enabled; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_energy_struct; -extern const bcstring be_const_str_engine; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_escape; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_event_cb; -extern const bcstring be_const_str_event_send; -extern const bcstring be_const_str_every_100ms; -extern const bcstring be_const_str_every_50ms; -extern const bcstring be_const_str_every_second; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_exec_tele; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_f; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_file; -extern const bcstring be_const_str_file_X20extension_X20is_X20not_X20_X27_X2Ebe_X27_X20or_X20_X27_X2Ebec_X27; -extern const bcstring be_const_str_files; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_flush; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_from_to; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_fromptr; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_function; -extern const bcstring be_const_str_gamma; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_get_alternate; -extern const bcstring be_const_str_get_aps_voltage; -extern const bcstring be_const_str_get_bat_charge_current; -extern const bcstring be_const_str_get_bat_current; -extern const bcstring be_const_str_get_bat_power; -extern const bcstring be_const_str_get_bat_voltage; -extern const bcstring be_const_str_get_battery_chargin_status; -extern const bcstring be_const_str_get_bri; -extern const bcstring be_const_str_get_cb_list; -extern const bcstring be_const_str_get_coords; -extern const bcstring be_const_str_get_current_module_name; -extern const bcstring be_const_str_get_current_module_path; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_get_height; -extern const bcstring be_const_str_get_input_power_status; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_get_object_from_ptr; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_get_percentage; -extern const bcstring be_const_str_get_pixel_color; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_get_style_bg_color; -extern const bcstring be_const_str_get_style_line_color; -extern const bcstring be_const_str_get_style_pad_right; -extern const bcstring be_const_str_get_switch; -extern const bcstring be_const_str_get_tasmota; -extern const bcstring be_const_str_get_temp; -extern const bcstring be_const_str_get_vbus_current; -extern const bcstring be_const_str_get_vbus_voltage; -extern const bcstring be_const_str_get_warning_level; -extern const bcstring be_const_str_get_width; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_global; -extern const bcstring be_const_str_gpio; -extern const bcstring be_const_str_group_def; -extern const bcstring be_const_str_h; -extern const bcstring be_const_str_has; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_height_def; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_hour; -extern const bcstring be_const_str_hs2rgb; -extern const bcstring be_const_str_https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_X2F_X25s_X2Eautoconf; -extern const bcstring be_const_str_https_X3A_X2F_X2Fraw_X2Egithubusercontent_X2Ecom_X2Ftasmota_X2Fautoconf_X2Fmain_X2F_X25s_manifest_X2Ejson; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_id; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_init_draw_line_dsc; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_ins_goto; -extern const bcstring be_const_str_ins_ramp; -extern const bcstring be_const_str_ins_time; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_instance; -extern const bcstring be_const_str_instance_size; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_internal_error; -extern const bcstring be_const_str_introspect; -extern const bcstring be_const_str_invalidate; -extern const bcstring be_const_str_io_error; -extern const bcstring be_const_str_ip; -extern const bcstring be_const_str_is_dirty; -extern const bcstring be_const_str_is_first_time; -extern const bcstring be_const_str_is_running; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_isnan; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_json; -extern const bcstring be_const_str_json_append; -extern const bcstring be_const_str_json_fdump; -extern const bcstring be_const_str_json_fdump_any; -extern const bcstring be_const_str_json_fdump_list; -extern const bcstring be_const_str_json_fdump_map; -extern const bcstring be_const_str_k; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_kv; -extern const bcstring be_const_str_last_modified; -extern const bcstring be_const_str_leds; -extern const bcstring be_const_str_length_X20in_X20bits_X20must_X20be_X20between_X200_X20and_X2032; -extern const bcstring be_const_str_light; -extern const bcstring be_const_str_line_dsc; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_listdir; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_load_templates; -extern const bcstring be_const_str_local; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_lv; -extern const bcstring be_const_str_lv_event; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_lv_obj_class; -extern const bcstring be_const_str_lvgl_event_dispatch; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_math; -extern const bcstring be_const_str_matrix; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_min; -extern const bcstring be_const_str_minute; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_month; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_nan; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_no_X20GPIO_X20specified_X20for_X20neopixelbus; -extern const bcstring be_const_str_null_cb; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_obj_class_create_obj; -extern const bcstring be_const_str_obj_event_base; -extern const bcstring be_const_str_offset; -extern const bcstring be_const_str_offseta; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E; -extern const bcstring be_const_str_onsubmit_X3D_X27return_X20confirm_X28_X22This_X20will_X20change_X20the_X20current_X20configuration_X20and_X20cause_X20a_X20restart_X2E_X22_X29_X3B_X27_X3E; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_out_X20of_X20range; -extern const bcstring be_const_str_p1; -extern const bcstring be_const_str_p2; -extern const bcstring be_const_str_page_autoconf_ctl; -extern const bcstring be_const_str_page_autoconf_mgr; -extern const bcstring be_const_str_param; -extern const bcstring be_const_str_path; -extern const bcstring be_const_str_pc; -extern const bcstring be_const_str_pc_abs; -extern const bcstring be_const_str_pc_rel; -extern const bcstring be_const_str_percentage; -extern const bcstring be_const_str_persist; -extern const bcstring be_const_str_persist_X2E_p_X20is_X20not_X20a_X20map; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_pixel_count; -extern const bcstring be_const_str_pixel_size; -extern const bcstring be_const_str_pixels_buffer; -extern const bcstring be_const_str_point; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_pop_path; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_preinit; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_push_path; -extern const bcstring be_const_str_quality; -extern const bcstring be_const_str_r; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_read_sensors; -extern const bcstring be_const_str_readbytes; -extern const bcstring be_const_str_readline; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_reapply; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_reduce; -extern const bcstring be_const_str_refr_size; -extern const bcstring be_const_str_register_obj; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_return_X20code_X3D_X25i; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_rotate; -extern const bcstring be_const_str_round_end; -extern const bcstring be_const_str_round_start; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_rule; -extern const bcstring be_const_str_run; -extern const bcstring be_const_str_run_bat; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_running; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_save_before_restart; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_sec; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_serial; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_set_alternate; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_set_bri; -extern const bcstring be_const_str_set_chg_current; -extern const bcstring be_const_str_set_dc_voltage; -extern const bcstring be_const_str_set_dcdc_enable; -extern const bcstring be_const_str_set_first_time; -extern const bcstring be_const_str_set_height; -extern const bcstring be_const_str_set_ldo_enable; -extern const bcstring be_const_str_set_ldo_voltage; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_set_matrix_pixel_color; -extern const bcstring be_const_str_set_percentage; -extern const bcstring be_const_str_set_pixel_color; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_set_style_bg_color; -extern const bcstring be_const_str_set_style_line_color; -extern const bcstring be_const_str_set_style_pad_right; -extern const bcstring be_const_str_set_style_text_font; -extern const bcstring be_const_str_set_text; -extern const bcstring be_const_str_set_time; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_set_width; -extern const bcstring be_const_str_set_x; -extern const bcstring be_const_str_set_y; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_settings; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_show; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_solidified; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_stop_iteration; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_string; -extern const bcstring be_const_str_strip; -extern const bcstring be_const_str_strptime; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_sys; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_target; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_tasmota; -extern const bcstring be_const_str_tasmota_X2Eget_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eget_X28_X29; -extern const bcstring be_const_str_tasmota_X2Eset_light_X28_X29_X20is_X20deprecated_X2C_X20use_X20light_X2Eset_X28_X29; -extern const bcstring be_const_str_tcpclient; -extern const bcstring be_const_str_tele; -extern const bcstring be_const_str_the_X20second_X20argument_X20is_X20not_X20a_X20function; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_to_gamma; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_tomap; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_toptr; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_tr; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_unknown_X20instruction; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_v; -extern const bcstring be_const_str_value; -extern const bcstring be_const_str_value_error; -extern const bcstring be_const_str_valuer_error; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_w; -extern const bcstring be_const_str_wd; -extern const bcstring be_const_str_web_add_button; -extern const bcstring be_const_str_web_add_config_button; -extern const bcstring be_const_str_web_add_console_button; -extern const bcstring be_const_str_web_add_handler; -extern const bcstring be_const_str_web_add_main_button; -extern const bcstring be_const_str_web_add_management_button; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_web_sensor; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_webserver; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_widget_cb; -extern const bcstring be_const_str_widget_constructor; -extern const bcstring be_const_str_widget_ctor_cb; -extern const bcstring be_const_str_widget_ctor_impl; -extern const bcstring be_const_str_widget_destructor; -extern const bcstring be_const_str_widget_dtor_cb; -extern const bcstring be_const_str_widget_dtor_impl; -extern const bcstring be_const_str_widget_editable; -extern const bcstring be_const_str_widget_event; -extern const bcstring be_const_str_widget_event_cb; -extern const bcstring be_const_str_widget_event_impl; -extern const bcstring be_const_str_widget_group_def; -extern const bcstring be_const_str_widget_height_def; -extern const bcstring be_const_str_widget_instance_size; -extern const bcstring be_const_str_widget_struct_by_class; -extern const bcstring be_const_str_widget_struct_default; -extern const bcstring be_const_str_widget_width_def; -extern const bcstring be_const_str_width; -extern const bcstring be_const_str_width_def; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_write_file; -extern const bcstring be_const_str_write_gpio; -extern const bcstring be_const_str_x; -extern const bcstring be_const_str_x1; -extern const bcstring be_const_str_y; -extern const bcstring be_const_str_y1; -extern const bcstring be_const_str_year; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_zero; -extern const bcstring be_const_str_zip; diff --git a/lib/libesp32/berry/generate/be_const_strtab_def.h b/lib/libesp32/berry/generate/be_const_strtab_def.h deleted file mode 100644 index 4c195c96b..000000000 --- a/lib/libesp32/berry/generate/be_const_strtab_def.h +++ /dev/null @@ -1,1109 +0,0 @@ -be_define_const_str(, "", 2166136261u, 0, 0, NULL); -be_define_const_str(_X0A, "\n", 252472541u, 0, 1, &be_const_str_Unknown_X20command); -be_define_const_str(_X20, " ", 621580159u, 0, 1, &be_const_str_geti); -be_define_const_str(_X21_X3D, "!=", 2428715011u, 0, 2, &be_const_str_asstring); -be_define_const_str(_X21_X3D_X3D, "!==", 559817114u, 0, 3, &be_const_str_type); -be_define_const_str(_X23, "#", 638357778u, 0, 1, &be_const_str_CFG_X3A_X20no_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found); -be_define_const_str(_X23autoexec_X2Ebat, "#autoexec.bat", 3382890497u, 0, 13, &be_const_str_arg_size); -be_define_const_str(_X23autoexec_X2Ebe, "#autoexec.be", 1181757091u, 0, 12, &be_const_str_file_X20extension_X20is_X20not_X20_X27_X2Ebe_X27_X20or_X20_X27_X2Ebec_X27); -be_define_const_str(_X23display_X2Eini, "#display.ini", 182218220u, 0, 12, &be_const_str___lower__); -be_define_const_str(_X23init_X2Ebat, "#init.bat", 3297595077u, 0, 9, &be_const_str_SERIAL_7O2); -be_define_const_str(_X23preinit_X2Ebe, "#preinit.be", 687035716u, 0, 11, &be_const_str_SERIAL_8O2); -be_define_const_str(_X2502d_X25s_X2502d, "%02d%s%02d", 1587999717u, 0, 10, &be_const_str_yield); -be_define_const_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d, "%04d-%02d-%02dT%02d:%02d:%02d", 3425528601u, 0, 29, &be_const_str__global_def); -be_define_const_str(_X25s_X2Eautoconf, "%s.autoconf", 3560383524u, 0, 11, &be_const_str_every_second); -be_define_const_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B, "<Error: apply new or remove>", 2855507949u, 0, 34, &be_const_str_add_driver); -be_define_const_str(_X26lt_X3BNone_X26gt_X3B, "<None>", 2602165498u, 0, 12, &be_const_str_rand); -be_define_const_str(_X28_X29, "()", 685372826u, 0, 2, &be_const_str__X3Cinstance_X3A_X20_X25s_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X29); -be_define_const_str(_X2B, "+", 772578730u, 0, 1, &be_const_str_gpio); -be_define_const_str(_X2C, ",", 688690635u, 0, 1, &be_const_str_add_cmd); -be_define_const_str(_X2D_X2D_X3A_X2D_X2D, "--:--", 1370615441u, 0, 5, &be_const_str_AudioOutputI2S); -be_define_const_str(_X2E, ".", 722245873u, 0, 1, NULL); -be_define_const_str(_X2E_X2E, "..", 2748622605u, 0, 2, &be_const_str__X2Ep2); -be_define_const_str(_X2Eautoconf, ".autoconf", 2524679088u, 0, 9, NULL); -be_define_const_str(_X2Ebe, ".be", 1325797348u, 0, 3, &be_const_str_sinh); -be_define_const_str(_X2Ebec, ".bec", 3985273221u, 0, 4, &be_const_str__debug_present); -be_define_const_str(_X2Elen, ".len", 850842136u, 0, 4, NULL); -be_define_const_str(_X2Ep, ".p", 1171526419u, 0, 2, &be_const_str_COLOR_WHITE); -be_define_const_str(_X2Ep1, ".p1", 249175686u, 0, 3, &be_const_str_sin); -be_define_const_str(_X2Ep2, ".p2", 232398067u, 0, 3, &be_const_str_json_fdump_map); -be_define_const_str(_X2Esize, ".size", 1965188224u, 0, 5, &be_const_str__X2Fac); -be_define_const_str(_X2Etapp, ".tapp", 1363391594u, 0, 5, NULL); -be_define_const_str(_X2Ew, ".w", 1255414514u, 0, 2, &be_const_str_member); -be_define_const_str(_X2F, "/", 705468254u, 0, 1, &be_const_str_None); -be_define_const_str(_X2F_X2Eautoconf, "/.autoconf", 2212074393u, 0, 10, &be_const_str_set_dc_voltage); -be_define_const_str(_X2F_X3Frst_X3D, "/?rst=", 580074707u, 0, 6, &be_const_str_AES_GCM); -be_define_const_str(_X2Fac, "/ac", 3904651978u, 0, 3, &be_const_str_get_current_module_path); -be_define_const_str(_X3A, ":", 1057798253u, 0, 1, &be_const_str_json_fdump); -be_define_const_str(_X3C, "<", 957132539u, 0, 1, NULL); -be_define_const_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "

", 3546571739u, 0, 11, &be_const_str_atan); -be_define_const_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E, "

", 1863865923u, 0, 16, NULL); -be_define_const_str(_X3C_X3D, "<=", 2499223986u, 0, 2, &be_const_str_HTTP_POST); -be_define_const_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E, "", 3147934216u, 0, 82, &be_const_str_Wire); -be_define_const_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E, "", 1205771629u, 0, 72, &be_const_str_color); -be_define_const_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E, "
", 842307168u, 0, 77, &be_const_str_set_power); -be_define_const_str(_X3Cinstance_X3A_X20_X25s_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X29, "Choose a device configuration:
", 1336654704u, 0, 49, &be_const_str_bus); -be_define_const_str(_X3Clambda_X3E, "", 607256038u, 0, 8, &be_const_str_point); -be_define_const_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27Autoconfiguration_X27_X3E_X26nbsp_X3BCurrent_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E, " Current auto-configuration", 4212500780u, 0, 82, &be_const_str_get_warning_level); -be_define_const_str(_X3Clegend_X3E_X3Cb_X20title_X3D_X27New_X20autoconf_X27_X3E_X26nbsp_X3BSelect_X20new_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E, " Select new auto-configuration", 1926223891u, 0, 80, &be_const_str_get_vbus_current); -be_define_const_str(_X3Coption_X20value_X3D_X27_X25s_X27_X3E_X25s_X3C_X2Foption_X3E, "", 510303524u, 0, 30, &be_const_str_cb_event_closure); -be_define_const_str(_X3Coption_X20value_X3D_X27reset_X27_X3E_X26lt_X3BRemove_X20autoconf_X26gt_X3B_X3C_X2Foption_X3E, "", 3994619755u, 0, 54, NULL); -be_define_const_str(_X3Cp_X20style_X3D_X27width_X3A340px_X3B_X27_X3E_X3Cb_X3EException_X3A_X3C_X2Fb_X3E_X3Cbr_X3E_X27_X25s_X27_X3Cbr_X3E_X25s_X3C_X2Fp_X3E, "

Exception:
'%s'
%s

", 4252565082u, 0, 59, &be_const_str_arg); -be_define_const_str(_X3Cp_X3E_X3C_X2Fp_X3E_X3C_X2Ffieldset_X3E_X3Cp_X3E_X3C_X2Fp_X3E, "

", 2052843416u, 0, 25, &be_const_str_area); -be_define_const_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3E_X26_X23129668_X3B_X20Auto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "

", 452285201u, 0, 120, NULL); -be_define_const_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20, "

 (This feature requires an internet connection)

", 2719266486u, 0, 74, &be_const_str_register_obj); -be_define_const_str(_X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E, "

Current configuration:

%s

", 4115655761u, 0, 46, &be_const_str_get_cb_list); -be_define_const_str(_X3Cselect_X20name_X3D_X27zip_X27_X3E, "