From 7a4108ef93d755e3ea07f48ab518dc47ec2b28f5 Mon Sep 17 00:00:00 2001
From: Stephan Hadinger
Date: Sun, 6 Mar 2022 15:50:24 +0100
Subject: [PATCH 1/3] Fix WS2812 multi-strip support
---
lib/libesp32/berry_tasmota/src/be_leds_lib.c | 51 +++++++++++--------
.../berry_tasmota/src/embedded/leds.be | 12 +++--
tasmota/berry/include/be_gpio_defines.h | 4 +-
tasmota/tasmota_template.h | 2 +-
tools/lv_gpio/lv_gpio_enum.h | 2 +
5 files changed, 45 insertions(+), 26 deletions(-)
diff --git a/lib/libesp32/berry_tasmota/src/be_leds_lib.c b/lib/libesp32/berry_tasmota/src/be_leds_lib.c
index 58b0a991e..ee158e4d9 100644
--- a/lib/libesp32/berry_tasmota/src/be_leds_lib.c
+++ b/lib/libesp32/berry_tasmota/src/be_leds_lib.c
@@ -1203,9 +1203,9 @@ be_local_closure(Leds_show, /* name */
********************************************************************/
be_local_closure(Leds_ctor, /* name */
be_nested_proto(
- 10, /* nstack */
- 4, /* argc */
- 0, /* varg */
+ 12, /* nstack */
+ 5, /* argc */
+ 2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
@@ -1217,23 +1217,34 @@ be_local_closure(Leds_ctor, /* name */
}),
&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
+ ( &(const binstruction[27]) { /* code */
+ 0x4C140000, // 0000 LDNIL R5
+ 0x1C140605, // 0001 EQ R5 R3 R5
+ 0x78160005, // 0002 JMPF R5 #0009
+ 0x8C140100, // 0003 GETMET R5 R0 K0
+ 0x581C0001, // 0004 LDCONST R7 K1
+ 0x5C200200, // 0005 MOVE R8 R1
+ 0x5C240400, // 0006 MOVE R9 R2
+ 0x7C140800, // 0007 CALL R5 4
+ 0x70020010, // 0008 JMP #001A
+ 0x4C140000, // 0009 LDNIL R5
+ 0x1C140805, // 000A EQ R5 R4 R5
+ 0x78160006, // 000B JMPF R5 #0013
+ 0x8C140100, // 000C GETMET R5 R0 K0
+ 0x581C0001, // 000D LDCONST R7 K1
+ 0x5C200200, // 000E MOVE R8 R1
+ 0x5C240400, // 000F MOVE R9 R2
+ 0x5C280600, // 0010 MOVE R10 R3
+ 0x7C140A00, // 0011 CALL R5 5
+ 0x70020006, // 0012 JMP #001A
+ 0x8C140100, // 0013 GETMET R5 R0 K0
+ 0x581C0001, // 0014 LDCONST R7 K1
+ 0x5C200200, // 0015 MOVE R8 R1
+ 0x5C240400, // 0016 MOVE R9 R2
+ 0x5C280600, // 0017 MOVE R10 R3
+ 0x5C2C0800, // 0018 MOVE R11 R4
+ 0x7C140C00, // 0019 CALL R5 6
+ 0x80000000, // 001A RET 0
})
)
);
diff --git a/lib/libesp32/berry_tasmota/src/embedded/leds.be b/lib/libesp32/berry_tasmota/src/embedded/leds.be
index 11a0489af..a0bad7435 100644
--- a/lib/libesp32/berry_tasmota/src/embedded/leds.be
+++ b/lib/libesp32/berry_tasmota/src/embedded/leds.be
@@ -4,7 +4,7 @@
# Native commands
-# 00 : ctor (leds:int, gpio:int) -> void
+# 00 : ctor (leds:int, gpio:int[, type:int, rmt:int]) -> void
# 01 : begin void -> void
# 02 : show void -> void
# 03 : CanShow void -> bool
@@ -57,11 +57,15 @@ class Leds : Leds_ntv
self.show()
end
- def ctor(leds, gpio, rmt)
- if rmt == nil
+ def ctor(leds, gpio, type, rmt)
+ if type == nil
self.call_native(0, leds, gpio)
else
- self.call_native(0, leds, gpio, rmt)
+ if rmt == nil
+ self.call_native(0, leds, gpio, type)
+ else
+ self.call_native(0, leds, gpio, type, rmt)
+ end
end
end
def begin()
diff --git a/tasmota/berry/include/be_gpio_defines.h b/tasmota/berry/include/be_gpio_defines.h
index 8906f90a0..c3b07a7fc 100644
--- a/tasmota/berry/include/be_gpio_defines.h
+++ b/tasmota/berry/include/be_gpio_defines.h
@@ -14,7 +14,6 @@ const be_const_member_t lv_gpio_constants[] = {
{ "ADC_INPUT", (int32_t) GPIO_ADC_INPUT },
{ "ADC_JOY", (int32_t) GPIO_ADC_JOY },
{ "ADC_LIGHT", (int32_t) GPIO_ADC_LIGHT },
- { "ADC_MQ", (int32_t) GPIO_ADC_MQ },
{ "ADC_PH", (int32_t) GPIO_ADC_PH },
{ "ADC_RANGE", (int32_t) GPIO_ADC_RANGE },
{ "ADC_TEMP", (int32_t) GPIO_ADC_TEMP },
@@ -39,6 +38,8 @@ const be_const_member_t lv_gpio_constants[] = {
{ "CC1101_GDO0", (int32_t) GPIO_CC1101_GDO0 },
{ "CC1101_GDO2", (int32_t) GPIO_CC1101_GDO2 },
{ "CHANGE", CHANGE },
+ { "CM11_RXD", (int32_t) GPIO_CM11_RXD },
+ { "CM11_TXD", (int32_t) GPIO_CM11_TXD },
{ "CNTR1", (int32_t) GPIO_CNTR1 },
{ "CNTR1_NP", (int32_t) GPIO_CNTR1_NP },
{ "CSE7761_RX", (int32_t) GPIO_CSE7761_RX },
@@ -130,6 +131,7 @@ const be_const_member_t lv_gpio_constants[] = {
{ "MAX7219CLK", (int32_t) GPIO_MAX7219CLK },
{ "MAX7219CS", (int32_t) GPIO_MAX7219CS },
{ "MAX7219DIN", (int32_t) GPIO_MAX7219DIN },
+ { "MAX_RMT", MAX_RMT },
{ "MCP2515_CS", (int32_t) GPIO_MCP2515_CS },
{ "MCP39F5_RST", (int32_t) GPIO_MCP39F5_RST },
{ "MCP39F5_RX", (int32_t) GPIO_MCP39F5_RX },
diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h
index d5a589bf6..490ff9bdf 100644
--- a/tasmota/tasmota_template.h
+++ b/tasmota/tasmota_template.h
@@ -616,7 +616,7 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_P9813_CLK), // P9813 CLOCK
AGPIO(GPIO_P9813_DAT), // P9813 DATA
#else
- AGPIO(GPIO_WS2812) + MAX_RMT,// WS2812 Led string, using RMT on ESP32
+ AGPIO(GPIO_WS2812) + (MAX_RMT ? MAX_RMT + 1 : 0),// WS2812 Led string, using RMT on ESP32
#endif // NEO_HW_P9813
#endif
#ifdef USE_ARILUX_RF
diff --git a/tools/lv_gpio/lv_gpio_enum.h b/tools/lv_gpio/lv_gpio_enum.h
index 51e83ae7e..3f56ef2b2 100644
--- a/tools/lv_gpio/lv_gpio_enum.h
+++ b/tools/lv_gpio/lv_gpio_enum.h
@@ -17,6 +17,8 @@ RISING
FALLING
CHANGE
+MAX_RMT
+
NONE = GPIO_NONE
KEY1 = GPIO_KEY1
KEY1_NP = GPIO_KEY1_NP
From da783abaef35fe04c74ee08079b5608f19f738f8 Mon Sep 17 00:00:00 2001
From: Stephan Hadinger
Date: Sun, 6 Mar 2022 16:13:23 +0100
Subject: [PATCH 2/3] Added assign_rmt
---
lib/libesp32/berry/generate/be_const_strtab.h | 5 +
.../berry/generate/be_const_strtab_def.h | 2221 +++++++++--------
lib/libesp32/berry_tasmota/src/be_leds_lib.c | 1998 ++++++++-------
.../berry_tasmota/src/embedded/leds.be | 38 +
4 files changed, 2212 insertions(+), 2050 deletions(-)
diff --git a/lib/libesp32/berry/generate/be_const_strtab.h b/lib/libesp32/berry/generate/be_const_strtab.h
index 0c7767650..6afa9f5aa 100644
--- a/lib/libesp32/berry/generate/be_const_strtab.h
+++ b/lib/libesp32/berry/generate/be_const_strtab.h
@@ -59,6 +59,7 @@ extern const bcstring be_const_str_INTERNAL_PDM;
extern const bcstring be_const_str_LVG_X3A_X20call_X20to_X20unsupported_X20callback;
extern const bcstring be_const_str_LVG_X3A_X20object_X3A;
extern const bcstring be_const_str_Leds;
+extern const bcstring be_const_str_MAX_RMT;
extern const bcstring be_const_str_MD5;
extern const bcstring be_const_str_None;
extern const bcstring be_const_str_OPTION_A;
@@ -220,6 +221,7 @@ 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__rmt;
extern const bcstring be_const_str__rules;
extern const bcstring be_const_str__settings_def;
extern const bcstring be_const_str__settings_ptr;
@@ -258,6 +260,7 @@ extern const bcstring be_const_str_argument_X20must_X20be_X20a_X20list;
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_assign_rmt;
extern const bcstring be_const_str_asstring;
extern const bcstring be_const_str_atan;
extern const bcstring be_const_str_atan2;
@@ -510,6 +513,7 @@ 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_invalid_X20GPIO_X20number;
extern const bcstring be_const_str_invalidate;
extern const bcstring be_const_str_io_error;
extern const bcstring be_const_str_ip;
@@ -595,6 +599,7 @@ extern const bcstring be_const_str_next;
extern const bcstring be_const_str_next_cron;
extern const bcstring be_const_str_nil;
extern const bcstring be_const_str_no_X20GPIO_X20specified_X20for_X20neopixelbus;
+extern const bcstring be_const_str_no_X20more_X20RMT_X20channel_X20available;
extern const bcstring be_const_str_now;
extern const bcstring be_const_str_null_cb;
extern const bcstring be_const_str_number;
diff --git a/lib/libesp32/berry/generate/be_const_strtab_def.h b/lib/libesp32/berry/generate/be_const_strtab_def.h
index 468626270..5803f2223 100644
--- a/lib/libesp32/berry/generate/be_const_strtab_def.h
+++ b/lib/libesp32/berry/generate/be_const_strtab_def.h
@@ -1,792 +1,797 @@
-be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_CFG_X3A_X20removing_X20first_X20time_X20marker);
-be_define_const_str(_X0A, "\n", 252472541u, 0, 1, &be_const_str_ALIGN_LEFT_MID);
-be_define_const_str(_X20, " ", 621580159u, 0, 1, &be_const_str_close);
-be_define_const_str(_X21_X3D, "!=", 2428715011u, 0, 2, &be_const_str_url_encode);
-be_define_const_str(_X21_X3D_X3D, "!==", 559817114u, 0, 3, &be_const_str_SERIAL_6E1);
-be_define_const_str(_X22, "\"", 655135397u, 0, 1, &be_const_str_argument_X20must_X20be_X20a_X20list);
-be_define_const_str(_X22_X3A, "\":", 399167565u, 0, 2, &be_const_str_lv_wifi_arcs_icon);
-be_define_const_str(_X23, "#", 638357778u, 0, 1, &be_const_str__X2Etapp);
-be_define_const_str(_X23autoexec_X2Ebat, "#autoexec.bat", 3382890497u, 0, 13, &be_const_str__def);
-be_define_const_str(_X23autoexec_X2Ebe, "#autoexec.be", 1181757091u, 0, 12, &be_const_str_srand);
-be_define_const_str(_X23display_X2Eini, "#display.ini", 182218220u, 0, 12, &be_const_str__fl);
-be_define_const_str(_X23init_X2Ebat, "#init.bat", 3297595077u, 0, 9, &be_const_str_h);
-be_define_const_str(_X23preinit_X2Ebe, "#preinit.be", 687035716u, 0, 11, &be_const_str_c);
-be_define_const_str(_X2502d_X25s_X2502d, "%02d%s%02d", 1587999717u, 0, 10, &be_const_str_AudioFileSourceFS);
-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_arch);
-be_define_const_str(_X2508x_X2D_X2504x_X2D_X2504x_X2D_X2504x_X2D_X2504x_X2508x, "%08x-%04x-%04x-%04x-%04x%08x", 1670063141u, 0, 28, &be_const_str_SERIAL_7O1);
-be_define_const_str(_X25s_X2Eautoconf, "%s.autoconf", 3560383524u, 0, 11, &be_const_str_SERIAL_5O2);
-be_define_const_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B, "<Error: apply new or remove>", 2855507949u, 0, 34, &be_const_str_CFG_X3A_X20removed_X20file_X20_X27_X25s_X27);
-be_define_const_str(_X26lt_X3BNone_X26gt_X3B, "<None>", 2602165498u, 0, 12, &be_const_str__X3E_X3D);
-be_define_const_str(_X28_X29, "()", 685372826u, 0, 2, &be_const_str__dirty);
+be_define_const_str(, "", 2166136261u, 0, 0, NULL);
+be_define_const_str(_X0A, "\n", 252472541u, 0, 1, &be_const_str_keys);
+be_define_const_str(_X20, " ", 621580159u, 0, 1, &be_const_str_hour);
+be_define_const_str(_X21_X3D, "!=", 2428715011u, 0, 2, NULL);
+be_define_const_str(_X21_X3D_X3D, "!==", 559817114u, 0, 3, &be_const_str_battery_present);
+be_define_const_str(_X22, "\"", 655135397u, 0, 1, NULL);
+be_define_const_str(_X22_X3A, "\":", 399167565u, 0, 2, &be_const_str_collect);
+be_define_const_str(_X23, "#", 638357778u, 0, 1, &be_const_str_clear_to);
+be_define_const_str(_X23autoexec_X2Ebat, "#autoexec.bat", 3382890497u, 0, 13, &be_const_str_BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20);
+be_define_const_str(_X23autoexec_X2Ebe, "#autoexec.be", 1181757091u, 0, 12, &be_const_str__X2Ep2);
+be_define_const_str(_X23display_X2Eini, "#display.ini", 182218220u, 0, 12, &be_const_str_attrdump);
+be_define_const_str(_X23init_X2Ebat, "#init.bat", 3297595077u, 0, 9, &be_const_str__X2502d_X25s_X2502d);
+be_define_const_str(_X23preinit_X2Ebe, "#preinit.be", 687035716u, 0, 11, &be_const_str_set_style_line_color);
+be_define_const_str(_X2502d_X25s_X2502d, "%02d%s%02d", 1587999717u, 0, 10, &be_const_str_next_cron);
+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_map);
+be_define_const_str(_X2508x_X2D_X2504x_X2D_X2504x_X2D_X2504x_X2D_X2504x_X2508x, "%08x-%04x-%04x-%04x-%04x%08x", 1670063141u, 0, 28, &be_const_str_set_time);
+be_define_const_str(_X25s_X2Eautoconf, "%s.autoconf", 3560383524u, 0, 11, &be_const_str_INTERNAL_PDM);
+be_define_const_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B, "<Error: apply new or remove>", 2855507949u, 0, 34, &be_const_str__debug_present);
+be_define_const_str(_X26lt_X3BNone_X26gt_X3B, "<None>", 2602165498u, 0, 12, NULL);
+be_define_const_str(_X28_X29, "()", 685372826u, 0, 2, &be_const_str_event_send);
be_define_const_str(_X2B, "+", 772578730u, 0, 1, NULL);
-be_define_const_str(_X2C, ",", 688690635u, 0, 1, &be_const_str_duration);
-be_define_const_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D, ",\"AXP192\":{\"VBusVoltage\":%.3f,\"VBusCurrent\":%.1f,\"BattVoltage\":%.3f,\"BattCurrent\":%.1f,\"Temperature\":%.1f}", 2598755376u, 0, 106, NULL);
-be_define_const_str(_X2D_X2D_X3A_X2D_X2D, "--:--", 1370615441u, 0, 5, &be_const_str_module);
-be_define_const_str(_X2E, ".", 722245873u, 0, 1, &be_const_str_SERIAL_8O2);
-be_define_const_str(_X2E_X2E, "..", 2748622605u, 0, 2, &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_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E);
-be_define_const_str(_X2Eautoconf, ".autoconf", 2524679088u, 0, 9, NULL);
-be_define_const_str(_X2Ebe, ".be", 1325797348u, 0, 3, &be_const_str_geti);
-be_define_const_str(_X2Ebec, ".bec", 3985273221u, 0, 4, &be_const_str_keys);
-be_define_const_str(_X2Elen, ".len", 850842136u, 0, 4, &be_const_str_gamma);
-be_define_const_str(_X2Ep, ".p", 1171526419u, 0, 2, NULL);
-be_define_const_str(_X2Ep1, ".p1", 249175686u, 0, 3, &be_const_str_isrunning);
-be_define_const_str(_X2Ep2, ".p2", 232398067u, 0, 3, &be_const_str_set_bri);
-be_define_const_str(_X2Esize, ".size", 1965188224u, 0, 5, &be_const_str_AudioGenerator);
-be_define_const_str(_X2Etapp, ".tapp", 1363391594u, 0, 5, &be_const_str_param);
-be_define_const_str(_X2Ew, ".w", 1255414514u, 0, 2, &be_const_str_lvgl_event_dispatch);
-be_define_const_str(_X2F, "/", 705468254u, 0, 1, &be_const_str_CFG_X3A_X20loaded_X20_X20);
-be_define_const_str(_X2F_X2Eautoconf, "/.autoconf", 2212074393u, 0, 10, &be_const_str_BRY_X3A_X20ERROR_X2C_X20bad_X20json_X3A_X20);
-be_define_const_str(_X2F_X3Frst_X3D, "/?rst=", 580074707u, 0, 6, &be_const_str_consume_silence);
-be_define_const_str(_X2Fac, "/ac", 3904651978u, 0, 3, &be_const_str_STATE_DEFAULT);
-be_define_const_str(_X2Flights_X2F, "/lights/", 2370247908u, 0, 8, NULL);
-be_define_const_str(_X2Fstate_X2F, "/state/", 4226179876u, 0, 7, &be_const_str_type_error);
-be_define_const_str(_X3A, ":", 1057798253u, 0, 1, &be_const_str_EVENT_DELETE);
-be_define_const_str(_X3C, "<", 957132539u, 0, 1, &be_const_str_setbits);
-be_define_const_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "
", 3546571739u, 0, 11, &be_const_str_consume_mono);
+be_define_const_str(_X2C, ",", 688690635u, 0, 1, &be_const_str_SERIAL_8N1);
+be_define_const_str(_X2C_X22AXP192_X22_X3A_X7B_X22VBusVoltage_X22_X3A_X25_X2E3f_X2C_X22VBusCurrent_X22_X3A_X25_X2E1f_X2C_X22BattVoltage_X22_X3A_X25_X2E3f_X2C_X22BattCurrent_X22_X3A_X25_X2E1f_X2C_X22Temperature_X22_X3A_X25_X2E1f_X7D, ",\"AXP192\":{\"VBusVoltage\":%.3f,\"VBusCurrent\":%.1f,\"BattVoltage\":%.3f,\"BattCurrent\":%.1f,\"Temperature\":%.1f}", 2598755376u, 0, 106, &be_const_str_before_del);
+be_define_const_str(_X2D_X2D_X3A_X2D_X2D, "--:--", 1370615441u, 0, 5, &be_const_str_last_modified);
+be_define_const_str(_X2E, ".", 722245873u, 0, 1, &be_const_str_display);
+be_define_const_str(_X2E_X2E, "..", 2748622605u, 0, 2, &be_const_str_char);
+be_define_const_str(_X2Eautoconf, ".autoconf", 2524679088u, 0, 9, &be_const_str_id);
+be_define_const_str(_X2Ebe, ".be", 1325797348u, 0, 3, &be_const_str_SERIAL_5N1);
+be_define_const_str(_X2Ebec, ".bec", 3985273221u, 0, 4, &be_const_str_seg7_font);
+be_define_const_str(_X2Elen, ".len", 850842136u, 0, 4, &be_const_str_a);
+be_define_const_str(_X2Ep, ".p", 1171526419u, 0, 2, &be_const_str_ctor);
+be_define_const_str(_X2Ep1, ".p1", 249175686u, 0, 3, &be_const_str_set_style_img_recolor);
+be_define_const_str(_X2Ep2, ".p2", 232398067u, 0, 3, NULL);
+be_define_const_str(_X2Esize, ".size", 1965188224u, 0, 5, &be_const_str__X3Cselect_X20name_X3D_X27zip_X27_X3E);
+be_define_const_str(_X2Etapp, ".tapp", 1363391594u, 0, 5, &be_const_str_rounded);
+be_define_const_str(_X2Ew, ".w", 1255414514u, 0, 2, &be_const_str_run_bat);
+be_define_const_str(_X2F, "/", 705468254u, 0, 1, &be_const_str_SERIAL_8N2);
+be_define_const_str(_X2F_X2Eautoconf, "/.autoconf", 2212074393u, 0, 10, &be_const_str_CFG_X3A_X20removed_X20file_X20_X27_X25s_X27);
+be_define_const_str(_X2F_X3Frst_X3D, "/?rst=", 580074707u, 0, 6, &be_const_str_run_cron);
+be_define_const_str(_X2Fac, "/ac", 3904651978u, 0, 3, &be_const_str__read);
+be_define_const_str(_X2Flights_X2F, "/lights/", 2370247908u, 0, 8, &be_const_str_log10);
+be_define_const_str(_X2Fstate_X2F, "/state/", 4226179876u, 0, 7, &be_const_str_AudioGeneratorMP3);
+be_define_const_str(_X3A, ":", 1057798253u, 0, 1, NULL);
+be_define_const_str(_X3C, "<", 957132539u, 0, 1, &be_const_str_SERIAL_8O2);
+be_define_const_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "", 3546571739u, 0, 11, &be_const_str_set_style_text_font);
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_deinit);
-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_counters);
-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_get_bat_power);
-be_define_const_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E, "", 2052843416u, 0, 25, &be_const_str_full_state);
-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_X3EAuto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "", 2058443583u, 0, 110, 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, "