diff --git a/.github/workflows/Tasmota_build_devel.yml b/.github/workflows/Tasmota_build_devel.yml index 3f9fe9e06..c81bc4b65 100644 --- a/.github/workflows/Tasmota_build_devel.yml +++ b/.github/workflows/Tasmota_build_devel.yml @@ -39,6 +39,9 @@ jobs: - tasmota32-lvgl - tasmota32c3 - tasmota32c3usb + - tasmota32s2 + - tasmota32s3 + - tasmota32s3usb - tasmota32solo1 - tasmota32solo1-safeboot - tasmota32-safeboot @@ -46,6 +49,7 @@ jobs: - tasmota32c3usb-safeboot - tasmota32s2-safeboot - tasmota32s3-safeboot + - tasmota32s3usb-safeboot steps: - uses: actions/checkout@v3 with: @@ -124,6 +128,8 @@ jobs: [ ! -f ./mv_firmware/firmware/tasmota32-core2.* ] || mv ./mv_firmware/firmware/tasmota32-core2.* ./firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32-bluetooth.* ] || mv ./mv_firmware/firmware/tasmota32-bluetooth.* ./firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32c3*.* ] || mv ./mv_firmware/firmware/tasmota32c3*.* ./firmware/tasmota32/ + [ ! -f ./mv_firmware/firmware/tasmota32s2*.* ] || mv ./mv_firmware/firmware/tasmota32s2*.* ./firmware/tasmota32/ + [ ! -f ./mv_firmware/firmware/tasmota32s3*.* ] || mv ./mv_firmware/firmware/tasmota32s3*.* ./firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32-safeboot* ] || mv ./mv_firmware/firmware/tasmota32-safeboot* ./firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32-* ] || mv ./mv_firmware/firmware/tasmota32-* ./firmware/tasmota32/languages/ [ ! -f ./mv_firmware/firmware/tasmota32* ] || mv ./mv_firmware/firmware/tasmota32* ./firmware/tasmota32/ diff --git a/.github/workflows/Tasmota_build_master.yml b/.github/workflows/Tasmota_build_master.yml index d39246639..ab158fc49 100644 --- a/.github/workflows/Tasmota_build_master.yml +++ b/.github/workflows/Tasmota_build_master.yml @@ -38,13 +38,17 @@ jobs: - tasmota32-lvgl - tasmota32c3 - tasmota32c3usb + - tasmota32s2 + - tasmota32s3 + - tasmota32s3usb - tasmota32solo1 - tasmota32solo1-safeboot - tasmota32-safeboot - tasmota32c3-safeboot + - tasmota32c3usb-safeboot - tasmota32s2-safeboot - tasmota32s3-safeboot - - tasmota32c3usb-safeboot + - tasmota32s3usb-safeboot steps: - uses: actions/checkout@v3 with: @@ -132,6 +136,8 @@ jobs: [ ! -f ./mv_firmware/firmware/tasmota32-core2.* ] || mv ./mv_firmware/firmware/tasmota32-core2.* ./release-firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32-bluetooth.* ] || mv ./mv_firmware/firmware/tasmota32-bluetooth.* ./release-firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32c3*.* ] || mv ./mv_firmware/firmware/tasmota32c3*.* ./release-firmware/tasmota32/ + [ ! -f ./mv_firmware/firmware/tasmota32s2*.* ] || mv ./mv_firmware/firmware/tasmota32s2*.* ./release-firmware/tasmota32/ + [ ! -f ./mv_firmware/firmware/tasmota32s3*.* ] || mv ./mv_firmware/firmware/tasmota32s3*.* ./release-firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32-safeboot* ] || mv ./mv_firmware/firmware/tasmota32-safeboot* ./release-firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32-* ] || mv ./mv_firmware/firmware/tasmota32-* ./release-firmware/tasmota32/languages/ [ ! -f ./mv_firmware/firmware/tasmota32* ] || mv ./mv_firmware/firmware/tasmota32* ./release-firmware/tasmota32/languages/ diff --git a/.github/workflows/build_all_the_things.yml b/.github/workflows/build_all_the_things.yml index 3303759f4..f82d04b51 100644 --- a/.github/workflows/build_all_the_things.yml +++ b/.github/workflows/build_all_the_things.yml @@ -40,9 +40,11 @@ jobs: - tasmota32-display - tasmota32-ir - tasmota32-lvgl - - tasmota32s2 - tasmota32c3 - tasmota32c3usb + - tasmota32s2 + - tasmota32s3 + - tasmota32s3usb - tasmota32solo1 - tasmota32solo1-safeboot - tasmota32-safeboot @@ -50,6 +52,7 @@ jobs: - tasmota32c3usb-safeboot - tasmota32s2-safeboot - tasmota32s3-safeboot + - tasmota32s3usb-safeboot steps: - uses: actions/checkout@v2 - name: Set up Python diff --git a/lib/default/Ext-printf/src/SBuffer.hpp b/lib/default/Ext-printf/src/SBuffer.hpp index 67bbbcd48..9c545add0 100644 --- a/lib/default/Ext-printf/src/SBuffer.hpp +++ b/lib/default/Ext-printf/src/SBuffer.hpp @@ -48,7 +48,7 @@ public: inline uint8_t *buf(size_t i = 0) const { return &_buf->buf[i]; } inline char *charptr(size_t i = 0) const { return (char*) &_buf->buf[i]; } - virtual ~SBuffer(void) { + ~SBuffer(void) { delete[] _buf; } @@ -258,6 +258,12 @@ public: return buf2; } + static SBuffer SBufferFromBytes(const uint8_t *bytes, size_t len2) { + SBuffer buf2(len2); + buf2.addBuffer(bytes, len2); + return buf2; + } + // nullptr accepted static bool equalsSBuffer(const class SBuffer * buf1, const class SBuffer * buf2) { if (buf1 == buf2) { return true; } @@ -290,18 +296,3 @@ protected: SBuffer_impl * _buf; } SBuffer; - -typedef class PreAllocatedSBuffer : public SBuffer { - -public: - PreAllocatedSBuffer(const size_t size, void * buffer) { - _buf = (SBuffer_impl*) buffer; - _buf->size = size - 4; - _buf->len = 0; - } - - ~PreAllocatedSBuffer(void) { - // don't deallocate - _buf = nullptr; - } -} PreAllocatedSBuffer; diff --git a/lib/libesp32/berry/default/be_modtab.c b/lib/libesp32/berry/default/be_modtab.c index 5ed4a99e6..8f7addd94 100644 --- a/lib/libesp32/berry/default/be_modtab.c +++ b/lib/libesp32/berry/default/be_modtab.c @@ -48,13 +48,16 @@ be_extern_native_module(uuid); be_extern_native_module(animate); be_extern_native_module(partition_core); be_extern_native_module(crc); +#ifdef USE_ZIGBEE +be_extern_native_module(zigbee); +#endif // USE_ZIGBEE #ifdef USE_LVGL be_extern_native_module(lv); be_extern_native_module(lv_extra); be_extern_native_module(lv_tasmota); -#ifdef USE_LVGL_OPENHASP -be_extern_native_module(openhasp); -#endif // USE_LVGL_OPENHASP +#ifdef USE_LVGL_HASPMOTA +be_extern_native_module(haspmota); +#endif // USE_LVGL_HASPMOTA #endif // USE_LVGL /* user-defined modules declare start */ @@ -137,9 +140,9 @@ BERRY_LOCAL const bntvmodule* const be_module_table[] = { &be_native_module(lv), &be_native_module(lv_extra), &be_native_module(lv_tasmota), -#ifdef USE_LVGL_OPENHASP - &be_native_module(openhasp), -#endif // USE_LVGL_OPENHASP +#ifdef USE_LVGL_HASPMOTA + &be_native_module(haspmota), +#endif // USE_LVGL_HASPMOTA #endif // USE_LVGL #ifdef USE_ENERGY_SENSOR &be_native_module(energy), @@ -147,6 +150,9 @@ BERRY_LOCAL const bntvmodule* const be_module_table[] = { #ifdef USE_WEBSERVER &be_native_module(webserver), #endif // USE_WEBSERVER +#ifdef USE_ZIGBEE + &be_native_module(zigbee), +#endif // USE_ZIGBEE &be_native_module(flash), &be_native_module(partition_core), &be_native_module(crc), diff --git a/lib/libesp32/berry/gen.sh b/lib/libesp32/berry/gen.sh index 7156e8719..ee97feeef 100755 --- a/lib/libesp32/berry/gen.sh +++ b/lib/libesp32/berry/gen.sh @@ -1,2 +1,8 @@ #!/bin/bash +# +# generate all precompiled Berry structures from multiple modules +# +# Should be eventually included in the build process +# +rm generate/be_*.h python3 tools/pycoc/main.py -o generate src default ../berry_tasmota/src ../berry_mapping/src ../berry_int64/src ../../libesp32_lvgl/lv_binding_berry/src ../../libesp32_lvgl/lv_binding_berry/generate -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 index d9cdc2394..3b61ccf21 100644 --- a/lib/libesp32/berry/generate/be_const_strtab.h +++ b/lib/libesp32/berry/generate/be_const_strtab.h @@ -1,5 +1,6 @@ extern const bcstring be_const_str_; extern const bcstring be_const_str_00; +extern const bcstring be_const_str_0x_X2502X; extern const bcstring be_const_str_AA50; extern const bcstring be_const_str_AES_GCM; extern const bcstring be_const_str_ALIGN_BOTTOM_MID; @@ -264,6 +265,7 @@ extern const bcstring be_const_str__timers; extern const bcstring be_const_str__validate; extern const bcstring be_const_str__write; extern const bcstring be_const_str_a; +extern const bcstring be_const_str_abort; extern const bcstring be_const_str_abs; extern const bcstring be_const_str_acos; extern const bcstring be_const_str_active_otadata; @@ -486,6 +488,7 @@ 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_frombytes; +extern const bcstring be_const_str_fromhex; extern const bcstring be_const_str_fromptr; extern const bcstring be_const_str_fromstring; extern const bcstring be_const_str_full_state; @@ -567,6 +570,7 @@ extern const bcstring be_const_str_imax; extern const bcstring be_const_str_img; extern const bcstring be_const_str_imin; extern const bcstring be_const_str_import; +extern const bcstring be_const_str_info; extern const bcstring be_const_str_init; extern const bcstring be_const_str_init_draw_arc_dsc; extern const bcstring be_const_str_init_draw_line_dsc; @@ -917,6 +921,7 @@ extern const bcstring be_const_str_subscribe; extern const bcstring be_const_str_subtype; extern const bcstring be_const_str_subtype_to_string; extern const bcstring be_const_str_success; +extern const bcstring be_const_str_sum; extern const bcstring be_const_str_super; extern const bcstring be_const_str_switch_factory; extern const bcstring be_const_str_sys; @@ -1029,5 +1034,9 @@ 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_zb_coord_ntv; +extern const bcstring be_const_str_zb_device; +extern const bcstring be_const_str_zcl_frame; +extern const bcstring be_const_str_zcl_frame_ntv; 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 index a2d290c79..c9217e6c3 100644 --- a/lib/libesp32/berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/berry/generate/be_const_strtab_def.h @@ -1,978 +1,983 @@ -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str__X3Clegend_X3E_X3Cb_X20title_X3D_X27New_X20autoconf_X27_X3E_X26nbsp_X3BSelect_X20new_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E); -be_define_const_str(_X0A, "\n", 252472541u, 0, 1, &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); -be_define_const_str(_X0A_X29_X3E, "\n)>", 804061574u, 0, 3, &be_const_str_CFG_X3A_X20running_X20); -be_define_const_str(_X20, " ", 621580159u, 0, 1, &be_const_str_Auto_X2Dconfiguration); -be_define_const_str(_X20_X20, " ", 2982523533u, 0, 2, NULL); -be_define_const_str(_X20_X28, " (", 2848302581u, 0, 2, &be_const_str_show); -be_define_const_str(_X21_X3D, "!=", 2428715011u, 0, 2, NULL); -be_define_const_str(_X21_X3D_X3D, "!==", 559817114u, 0, 3, NULL); -be_define_const_str(_X22, "\"", 655135397u, 0, 1, NULL); -be_define_const_str(_X22_X3A, "\":", 399167565u, 0, 2, &be_const_str_gamma8); -be_define_const_str(_X23, "#", 638357778u, 0, 1, &be_const_str_finish); -be_define_const_str(_X23autoexec_X2Ebat, "#autoexec.bat", 3382890497u, 0, 13, &be_const_str_set_alternate); -be_define_const_str(_X23autoexec_X2Ebe, "#autoexec.be", 1181757091u, 0, 12, &be_const_str_pc); -be_define_const_str(_X23display_X2Eini, "#display.ini", 182218220u, 0, 12, NULL); -be_define_const_str(_X23init_X2Ebat, "#init.bat", 3297595077u, 0, 9, NULL); -be_define_const_str(_X23preinit_X2Ebe, "#preinit.be", 687035716u, 0, 11, &be_const_str_clock_icon); -be_define_const_str(_X25, "%", 537692064u, 0, 1, NULL); -be_define_const_str(_X2502d_X25s_X2502d, "%02d%s%02d", 1587999717u, 0, 10, &be_const_str_get_free_heap); -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_before_del); -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_BLE); -be_define_const_str(_X25s_X2Eautoconf, "%s.autoconf", 3560383524u, 0, 11, &be_const_str_EVENT_DRAW_PART_BEGIN); -be_define_const_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B, "<Error: apply new or remove>", 2855507949u, 0, 34, &be_const_str_exec_cmd); -be_define_const_str(_X26lt_X3BNone_X26gt_X3B, "<None>", 2602165498u, 0, 12, &be_const_str__X3F); -be_define_const_str(_X27_X20_X2D_X20, "' - ", 3420378487u, 0, 4, &be_const_str_set_light); -be_define_const_str(_X28_X29, "()", 685372826u, 0, 2, &be_const_str__X2Elen); -be_define_const_str(_X29, ")", 739023492u, 0, 1, NULL); -be_define_const_str(_X2A, "*", 789356349u, 0, 1, &be_const_str_widget_event_cb); -be_define_const_str(_X2B, "+", 772578730u, 0, 1, &be_const_str_add); -be_define_const_str(_X2C, ",", 688690635u, 0, 1, &be_const_str_CFG_X3A_X20removing_X20autoconf_X20files); -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, "-", 671913016u, 0, 1, NULL); -be_define_const_str(_X2D_X2A, "-*", 499980374u, 0, 2, &be_const_str_MI32); -be_define_const_str(_X2D_X2D_X3A_X2D_X2D, "--:--", 1370615441u, 0, 5, &be_const_str_get_coords); -be_define_const_str(_X2E, ".", 722245873u, 0, 1, NULL); -be_define_const_str(_X2E_X2E, "..", 2748622605u, 0, 2, NULL); -be_define_const_str(_X2Eautoconf, ".autoconf", 2524679088u, 0, 9, &be_const_str_check_privileged_access); -be_define_const_str(_X2Ebe, ".be", 1325797348u, 0, 3, &be_const_str_addr); -be_define_const_str(_X2Ebec, ".bec", 3985273221u, 0, 4, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_event_cb); +be_define_const_str(_X0A, "\n", 252472541u, 0, 1, &be_const_str__X7B); +be_define_const_str(_X0A_X29_X3E, "\n)>", 804061574u, 0, 3, &be_const_str_tasmota); +be_define_const_str(_X20, " ", 621580159u, 0, 1, &be_const_str_settings); +be_define_const_str(_X20_X20, " ", 2982523533u, 0, 2, &be_const_str_EVENT_DRAW_MAIN); +be_define_const_str(_X20_X28, " (", 2848302581u, 0, 2, &be_const_str_chars_in_string); +be_define_const_str(_X21_X3D, "!=", 2428715011u, 0, 2, &be_const_str_dac_voltage); +be_define_const_str(_X21_X3D_X3D, "!==", 559817114u, 0, 3, &be_const_str_depower); +be_define_const_str(_X22, "\"", 655135397u, 0, 1, &be_const_str_finish); +be_define_const_str(_X22_X3A, "\":", 399167565u, 0, 2, &be_const_str_gamma10); +be_define_const_str(_X23, "#", 638357778u, 0, 1, &be_const_str_stop_iteration); +be_define_const_str(_X23autoexec_X2Ebat, "#autoexec.bat", 3382890497u, 0, 13, &be_const_str_content_send); +be_define_const_str(_X23autoexec_X2Ebe, "#autoexec.be", 1181757091u, 0, 12, &be_const_str_duration); +be_define_const_str(_X23display_X2Eini, "#display.ini", 182218220u, 0, 12, &be_const_str_begin); +be_define_const_str(_X23init_X2Ebat, "#init.bat", 3297595077u, 0, 9, &be_const_str_EBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFF); +be_define_const_str(_X23preinit_X2Ebe, "#preinit.be", 687035716u, 0, 11, NULL); +be_define_const_str(_X25, "%", 537692064u, 0, 1, &be_const_str_rule); +be_define_const_str(_X2502d_X25s_X2502d, "%02d%s%02d", 1587999717u, 0, 10, &be_const_str__timers); +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_count); +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_WS2812_GRB); +be_define_const_str(_X25s_X2Eautoconf, "%s.autoconf", 3560383524u, 0, 11, &be_const_str_delay); +be_define_const_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B, "<Error: apply new or remove>", 2855507949u, 0, 34, &be_const_str_get_image_size); +be_define_const_str(_X26lt_X3BNone_X26gt_X3B, "<None>", 2602165498u, 0, 12, &be_const_str_data); +be_define_const_str(_X27_X20_X2D_X20, "' - ", 3420378487u, 0, 4, &be_const_str_set_rgb); +be_define_const_str(_X28_X29, "()", 685372826u, 0, 2, NULL); +be_define_const_str(_X29, ")", 739023492u, 0, 1, &be_const_str_AudioOutputI2S); +be_define_const_str(_X2A, "*", 789356349u, 0, 1, &be_const_str_lv_wifi_arcs_icon); +be_define_const_str(_X2B, "+", 772578730u, 0, 1, &be_const_str_BRY_X3A_X20failed_X20to_X20run_X20compiled_X20code_X20_X27_X25s_X27_X20_X2D_X20_X25s); +be_define_const_str(_X2C, ",", 688690635u, 0, 1, &be_const_str_AudioGeneratorMP3); +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_init); +be_define_const_str(_X2D, "-", 671913016u, 0, 1, &be_const_str_nvs); +be_define_const_str(_X2D_X2A, "-*", 499980374u, 0, 2, &be_const_str_coord_arr); +be_define_const_str(_X2D_X2D_X3A_X2D_X2D, "--:--", 1370615441u, 0, 5, &be_const_str_DIMMER); +be_define_const_str(_X2E, ".", 722245873u, 0, 1, &be_const_str_draw_line_dsc_init); +be_define_const_str(_X2E_X2E, "..", 2748622605u, 0, 2, &be_const_str_log10); +be_define_const_str(_X2Eautoconf, ".autoconf", 2524679088u, 0, 9, &be_const_str_COLOR_BLACK); +be_define_const_str(_X2Ebe, ".be", 1325797348u, 0, 3, &be_const_str_set_style_text_color); +be_define_const_str(_X2Ebec, ".bec", 3985273221u, 0, 4, &be_const_str_allocated); be_define_const_str(_X2Elen, ".len", 850842136u, 0, 4, NULL); -be_define_const_str(_X2Ep, ".p", 1171526419u, 0, 2, NULL); -be_define_const_str(_X2Ep1, ".p1", 249175686u, 0, 3, &be_const_str_CT); -be_define_const_str(_X2Ep2, ".p2", 232398067u, 0, 3, &be_const_str_setfloat); -be_define_const_str(_X2Esize, ".size", 1965188224u, 0, 5, &be_const_str_set_huesat); -be_define_const_str(_X2Etapp, ".tapp", 1363391594u, 0, 5, &be_const_str__X2Ew); -be_define_const_str(_X2Ew, ".w", 1255414514u, 0, 2, &be_const_str__X3C_X2Fform_X3E_X3C_X2Fp_X3E); -be_define_const_str(_X2F, "/", 705468254u, 0, 1, &be_const_str_get_string); -be_define_const_str(_X2F_X2Eautoconf, "/.autoconf", 2212074393u, 0, 10, &be_const_str_add_anim); -be_define_const_str(_X2F_X3Frst_X3D, "/?rst=", 580074707u, 0, 6, &be_const_str_AudioOpusDecoder); -be_define_const_str(_X2Fac, "/ac", 3904651978u, 0, 3, &be_const_str_pow); -be_define_const_str(_X2Flights_X2F, "/lights/", 2370247908u, 0, 8, &be_const_str_AudioGeneratorMP3); -be_define_const_str(_X2Fstate_X2F, "/state/", 4226179876u, 0, 7, &be_const_str_keys); -be_define_const_str(00, "00", 569209421u, 0, 2, &be_const_str_find_op); -be_define_const_str(_X3A, ":", 1057798253u, 0, 1, &be_const_str_compile); -be_define_const_str(_X3C, "<", 957132539u, 0, 1, &be_const_str_instance_X20required); +be_define_const_str(_X2Ep, ".p", 1171526419u, 0, 2, &be_const_str_get_vbus_current); +be_define_const_str(_X2Ep1, ".p1", 249175686u, 0, 3, &be_const_str_return_X20code_X3D_X25i); +be_define_const_str(_X2Ep2, ".p2", 232398067u, 0, 3, &be_const_str_collect); +be_define_const_str(_X2Esize, ".size", 1965188224u, 0, 5, &be_const_str_line_dsc); +be_define_const_str(_X2Etapp, ".tapp", 1363391594u, 0, 5, &be_const_str_WS2812); +be_define_const_str(_X2Ew, ".w", 1255414514u, 0, 2, &be_const_str_can_show); +be_define_const_str(_X2F, "/", 705468254u, 0, 1, &be_const_str__anonymous_); +be_define_const_str(_X2F_X2Eautoconf, "/.autoconf", 2212074393u, 0, 10, &be_const_str_obj); +be_define_const_str(_X2F_X3Frst_X3D, "/?rst=", 580074707u, 0, 6, &be_const_str__X3Clegend_X3E_X3Cb_X20title_X3D_X27Autoconfiguration_X27_X3E_X26nbsp_X3BCurrent_X20auto_X2Dconfiguration_X3C_X2Fb_X3E_X3C_X2Flegend_X3E); +be_define_const_str(_X2Fac, "/ac", 3904651978u, 0, 3, &be_const_str__global_def); +be_define_const_str(_X2Flights_X2F, "/lights/", 2370247908u, 0, 8, &be_const_str_time_dump); +be_define_const_str(_X2Fstate_X2F, "/state/", 4226179876u, 0, 7, &be_const_str__persist_X2Ejson); +be_define_const_str(00, "00", 569209421u, 0, 2, &be_const_str_addr); +be_define_const_str(0x_X2502X, "0x%02X", 2626549866u, 0, 6, &be_const_str_draw_ctx); +be_define_const_str(_X3A, ":", 1057798253u, 0, 1, &be_const_str__X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E); +be_define_const_str(_X3C, "<", 957132539u, 0, 1, &be_const_str_set_channels); be_define_const_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "
", 3546571739u, 0, 11, NULL); -be_define_const_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E, "", 1863865923u, 0, 16, &be_const_str_get_bat_power); -be_define_const_str(_X3C_X3D, "<=", 2499223986u, 0, 2, &be_const_str__X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E); -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_draw_line_dsc_init); -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_tag); -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__X7Bs_X7DTemp_X20AXP_X7Bm_X7D_X25_X2E1f_X20_X26deg_X3BC_X7Be_X7D); -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, &be_const_str_CFG_X3A_X20loading_X20); -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, "", 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, "