diff --git a/lib/libesp32/Berry/default/be_path_tasmota_lib.c b/lib/libesp32/Berry/default/be_path_tasmota_lib.c index c4208203f..81711a053 100644 --- a/lib/libesp32/Berry/default/be_path_tasmota_lib.c +++ b/lib/libesp32/Berry/default/be_path_tasmota_lib.c @@ -18,13 +18,17 @@ #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_pushbool(vm, be_isexist(path)); be_return(vm); } extern time_t be_last_modified(void *hfile); @@ -43,10 +47,24 @@ static int m_path_last_modified(bvm *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_port.cpp b/lib/libesp32/Berry/default/be_port.cpp index 88815a000..1870d3ae3 100644 --- a/lib/libesp32/Berry/default/be_port.cpp +++ b/lib/libesp32/Berry/default/be_port.cpp @@ -18,7 +18,9 @@ // Local pointer for file managment #ifdef USE_UFILESYS #include + #include "ZipReadFS.h" extern FS *ufsp; + FS zip_ufsp(ZipReadFSImplPtr(new ZipReadFSImpl(&ufsp))); #endif // USE_UFILESYS /* this file contains configuration for the file system. */ @@ -95,10 +97,42 @@ BERRY_API void be_writebuffer(const char *buffer, size_t 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 = ufsp->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 0; - // return be_fgets(stdin, buffer, (int)size); + return be_fgets(stdin, buffer, (int)size); } /* use the standard library implementation file API. */ @@ -106,7 +140,7 @@ BERRY_API char* be_readstring(char *buffer, size_t size) void* be_fopen(const char *filename, const char *modes) { #ifdef USE_UFILESYS - if (ufsp != nullptr && filename != nullptr && modes != nullptr) { + if (filename != nullptr && modes != nullptr) { char fname2[strlen(filename) + 2]; if (filename[0] == '/') { strcpy(fname2, filename); // copy unchanged @@ -115,7 +149,7 @@ void* be_fopen(const char *filename, const char *modes) strcpy(fname2 + 1, filename); // prepend with '/' } // Serial.printf("be_fopen filename=%s, modes=%s\n", filename, modes); - File f = ufsp->open(fname2, modes); // returns an object, not a pointer + 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? @@ -127,11 +161,24 @@ void* be_fopen(const char *filename, const char *modes) // 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 (ufsp != nullptr && hfile != nullptr) { + if (hfile != nullptr) { File * f_ptr = (File*) hfile; f_ptr->close(); delete f_ptr; @@ -146,7 +193,7 @@ size_t be_fwrite(void *hfile, const void *buffer, size_t length) { #ifdef USE_UFILESYS // Serial.printf("be_fwrite %d\n", length); - if (ufsp != nullptr && hfile != nullptr && buffer != nullptr) { + if (hfile != nullptr && buffer != nullptr) { File * f_ptr = (File*) hfile; return f_ptr->write((const uint8_t*) buffer, length); } @@ -159,7 +206,7 @@ size_t be_fread(void *hfile, void *buffer, size_t length) { #ifdef USE_UFILESYS // Serial.printf("be_fread %d\n", length); - if (ufsp != nullptr && hfile != nullptr && buffer != nullptr) { + if (hfile != nullptr && buffer != nullptr) { File * f_ptr = (File*) hfile; int32_t ret = f_ptr->read((uint8_t*) buffer, length); if (ret >= 0) { @@ -175,13 +222,19 @@ size_t be_fread(void *hfile, void *buffer, size_t length) char* be_fgets(void *hfile, void *buffer, int size) { #ifdef USE_UFILESYS - // Serial.printf("be_fgets %d\n", size); + 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 (ufsp != nullptr && hfile != nullptr && buffer != nullptr && size > 0) { + if (hfile != nullptr && buffer != nullptr && size > 0) { File * f_ptr = (File*) hfile; - int ret = f_ptr->readBytesUntil('\n', buf, size - 1); + 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; } } @@ -194,7 +247,7 @@ int be_fseek(void *hfile, long offset) { #ifdef USE_UFILESYS // Serial.printf("be_fseek %d\n", offset); - if (ufsp != nullptr && hfile != nullptr) { + if (hfile != nullptr) { File * f_ptr = (File*) hfile; if (f_ptr->seek(offset)) { return 0; // success @@ -209,7 +262,7 @@ long int be_ftell(void *hfile) { #ifdef USE_UFILESYS // Serial.printf("be_ftell\n"); - if (ufsp != nullptr && hfile != nullptr) { + if (hfile != nullptr) { File * f_ptr = (File*) hfile; return f_ptr->position(); } @@ -222,7 +275,7 @@ long int be_fflush(void *hfile) { #ifdef USE_UFILESYS // Serial.printf("be_fflush\n"); - if (ufsp != nullptr && hfile != nullptr) { + if (hfile != nullptr) { File * f_ptr = (File*) hfile; f_ptr->flush(); } @@ -235,7 +288,7 @@ size_t be_fsize(void *hfile) { #ifdef USE_UFILESYS // Serial.printf("be_fsize\n"); - if (ufsp != nullptr && hfile != nullptr) { + if (hfile != nullptr) { File * f_ptr = (File*) hfile; return f_ptr->size(); } @@ -251,7 +304,7 @@ size_t be_fsize(void *hfile) extern "C" time_t be_last_modified(void *hfile) { #ifdef USE_UFILESYS - if (ufsp != nullptr && hfile != nullptr) { + if (hfile != nullptr) { File * f_ptr = (File*) hfile; return f_ptr->getLastWrite(); } @@ -262,16 +315,29 @@ extern "C" time_t be_last_modified(void *hfile) int be_isexist(const char *filename) { #ifdef USE_UFILESYS - if (ufsp != nullptr) { - char fname2[strlen(filename) + 2]; - if (filename[0] == '/') { - strcpy(fname2, filename); // copy unchanged - } else { - fname2[0] = '/'; - strcpy(fname2 + 1, filename); // prepend with '/' - } - return ufsp->exists(fname2); + 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; } diff --git a/lib/libesp32/Berry/default/be_webclient_lib.c b/lib/libesp32/Berry/default/be_webclient_lib.c index bc24705d6..0e4b66e90 100644 --- a/lib/libesp32/Berry/default/be_webclient_lib.c +++ b/lib/libesp32/Berry/default/be_webclient_lib.c @@ -21,6 +21,7 @@ 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" @@ -48,6 +49,7 @@ class be_class_webclient (scope: global, name: webclient) { 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 */ diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 18fc29fcf..d574c12ed 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,340 +1,342 @@ -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_SERIAL_6E1; -extern const bcstring be_const_str_SERIAL_8O1; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_global; -extern const bcstring be_const_str_last_modified; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_dac_voltage; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_SERIAL_7N2; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_SERIAL_7O1; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_SERIAL_5N2; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_SERIAL_8N2; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_SERIAL_5E1; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str__global_def; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_enabled; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_ctypes_bytes_dyn; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_toptr; extern const bcstring be_const_str_SERIAL_5N1; -extern const bcstring be_const_str__def; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_get_switch; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_fromptr; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_flush; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str__settings_def; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_SERIAL_6N1; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_dot_size; -extern const bcstring be_const_str_SERIAL_5O1; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_exec_tele; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_dot_len; -extern const bcstring be_const_str_AudioGeneratorMP3; extern const bcstring be_const_str__global_addr; -extern const bcstring be_const_str_SERIAL_6E2; -extern const bcstring be_const_str_SERIAL_7E1; -extern const bcstring be_const_str_SERIAL_8O2; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_SERIAL_8E2; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str__ptr; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_SERIAL_8N1; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_available; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_SERIAL_6N2; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_SERIAL_5O2; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_SERIAL_7E2; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_SERIAL_8E1; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_has; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_reduce; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_OneWire; extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_kv; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_cmd_res; -extern const bcstring be_const_str_settings; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_SERIAL_7N1; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_SERIAL_8O2; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_tostring; extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_SERIAL_7O2; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_SERIAL_5E2; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_contains; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_nan; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_isnan; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_SERIAL_6O2; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_serial; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_tomap; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_upper; extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str__settings_ptr; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_SERIAL_6O1; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_counters; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_global; extern const bcstring be_const_str_yield; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_SERIAL_8E1; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_SERIAL_6N1; +extern const bcstring be_const_str_SERIAL_8O1; +extern const bcstring be_const_str__settings_ptr; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_available; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_last_modified; +extern const bcstring be_const_str_serial; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_SERIAL_6E2; +extern const bcstring be_const_str_ctypes_bytes_dyn; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_SERIAL_5E1; +extern const bcstring be_const_str_has; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_cmd_res; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_SERIAL_6E1; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_SERIAL_6O2; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_detect; extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_kv; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_SERIAL_5E2; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_dot_len; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_SERIAL_5N2; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_enabled; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_dot_size; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_SERIAL_7N2; +extern const bcstring be_const_str_set; extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_get_switch; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_reduce; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_SERIAL_8E2; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_isnan; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_listdir; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_exec_tele; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_SERIAL_7E2; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_SERIAL_7N1; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_fromptr; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_nan; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_toptr; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_SERIAL_5O2; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str__def; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_dac_voltage; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_tomap; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_SERIAL_7O1; +extern const bcstring be_const_str_SERIAL_8N1; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str__global_def; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_SERIAL_6N2; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_SERIAL_7O2; +extern const bcstring be_const_str_SERIAL_8N2; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str__ptr; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_settings; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_SERIAL_7E1; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_counters; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str__settings_def; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_SERIAL_6O1; +extern const bcstring be_const_str_contains; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_SERIAL_5O1; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_flush; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_write_file; +extern const bcstring be_const_str_class; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 09b11b23d..b3bac44ab 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,508 +1,511 @@ -be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_SERIAL_8O1); -be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, NULL); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_global); -be_define_const_str(global, "global", 503252654u, 0, 6, &be_const_str_last_modified); -be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, &be_const_str_public_key); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); -be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, &be_const_str_set_power); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, &be_const_str_url_encode); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, &be_const_str_atan); -be_define_const_str(atan, "atan", 108579519u, 0, 4, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, &be_const_str_select); -be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_setmember); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_i2c_enabled); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_wire1); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); -be_define_const_str(_global_def, "_global_def", 646007001u, 0, 11, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); -be_define_const_str(char, "char", 2823553821u, 0, 4, NULL); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_enabled); -be_define_const_str(enabled, "enabled", 49525662u, 0, 7, NULL); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_ctypes_bytes_dyn); -be_define_const_str(ctypes_bytes_dyn, "ctypes_bytes_dyn", 915205307u, 0, 16, NULL); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_toptr); -be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); -be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str__def); -be_define_const_str(_def, "_def", 1985022181u, 0, 4, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, NULL); -be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_fromptr); -be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(flush, "flush", 3002334877u, 0, 5, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, NULL); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); -be_define_const_str(_settings_def, "_settings_def", 3775560307u, 0, 13, NULL); -be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str__cmd); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, NULL); -be_define_const_str(dot_size, ".size", 1965188224u, 0, 5, &be_const_str_SERIAL_5O1); -be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_AudioFileSourceFS); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); +be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, NULL); +be_define_const_str(_global_addr, "_global_addr", 533766721u, 0, 12, &be_const_str_setmember); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); +be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_exec_tele); -be_define_const_str(exec_tele, "exec_tele", 1020751601u, 0, 9, NULL); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(dot_len, ".len", 850842136u, 0, 4, &be_const_str_AudioGeneratorMP3); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str__global_addr); -be_define_const_str(_global_addr, "_global_addr", 533766721u, 0, 12, NULL); -be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, &be_const_str_SERIAL_7E1); -be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_SERIAL_8O2); -be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); -be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); -be_define_const_str(_ptr, "_ptr", 306235816u, 0, 4, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_item); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_item); be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, NULL); -be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(available, "available", 1727918744u, 0, 9, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, &be_const_str_strftime); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_SERIAL_5O2); -be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_erase); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); -be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_def); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, &be_const_str_def); be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_push); -be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); -be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, NULL); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, &be_const_str_webclient); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); -be_define_const_str(has, "has", 3988721635u, 0, 3, NULL); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); -be_define_const_str(reduce, "reduce", 2002030311u, 0, 6, NULL); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, NULL); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_kv); -be_define_const_str(kv, "kv", 1497177492u, 0, 2, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(cmd_res, "cmd_res", 921166762u, 0, 7, &be_const_str_settings); -be_define_const_str(settings, "settings", 1745255176u, 0, 8, NULL); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_get_option); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); -be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); -be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, NULL); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_content_send); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_addr); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_contains); -be_define_const_str(contains, "contains", 1825239352u, 0, 8, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, NULL); -be_define_const_str(nan, "nan", 797905850u, 0, 3, NULL); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_isnan); -be_define_const_str(isnan, "isnan", 2981347434u, 0, 5, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_check_privileged_access); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_exec_rules); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_serial); -be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_finish); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(tomap, "tomap", 612167626u, 0, 5, NULL); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(save, "save", 3439296072u, 0, 4, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(_settings_ptr, "_settings_ptr", 1825772182u, 0, 13, &be_const_str_search); -be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str__end_transmission); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); -be_define_const_str(counters, "counters", 4095866864u, 0, 8, NULL); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_yield); +be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(global, "global", 503252654u, 0, 6, &be_const_str_yield); be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_arg_size); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, NULL); +be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_finish); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, NULL); +be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, &be_const_str__settings_ptr); +be_define_const_str(_settings_ptr, "_settings_ptr", 1825772182u, 0, 13, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_atan2); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(available, "available", 1727918744u, 0, 9, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_last_modified); +be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, &be_const_str_serial); +be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_webclient); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); +be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, &be_const_str_ctypes_bytes_dyn); +be_define_const_str(ctypes_bytes_dyn, "ctypes_bytes_dyn", 915205307u, 0, 16, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_deg); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); +be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str_has); +be_define_const_str(has, "has", 3988721635u, 0, 3, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, NULL); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); +be_define_const_str(cmd_res, "cmd_res", 921166762u, 0, 7, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_check_privileged_access); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, NULL); +be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_content_send); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_kv); +be_define_const_str(kv, "kv", 1497177492u, 0, 2, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(dot_len, ".len", 850842136u, 0, 4, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_arg_size); be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_I2C_Driver); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str__cmd); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_enabled); +be_define_const_str(enabled, "enabled", 49525662u, 0, 7, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(dot_size, ".size", 1965188224u, 0, 5, NULL); +be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, &be_const_str_elif); be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_get_switch); +be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, NULL); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_reduce); +be_define_const_str(reduce, "reduce", 2002030311u, 0, 6, NULL); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(isnan, "isnan", 2981347434u, 0, 5, NULL); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, NULL); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_listdir); +be_define_const_str(listdir, "listdir", 2005220720u, 0, 7, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(exec_tele, "exec_tele", 1020751601u, 0, 9, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_AudioGeneratorWAV); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str__buffer); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_remove_driver); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, NULL); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_nan); +be_define_const_str(nan, "nan", 797905850u, 0, 3, NULL); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, &be_const_str_set_power); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, &be_const_str_toptr); +be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); +be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str__available); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str__def); +be_define_const_str(_def, "_def", 1985022181u, 0, 4, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, NULL); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, &be_const_str_tomap); +be_define_const_str(tomap, "tomap", 612167626u, 0, 5, NULL); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, NULL); +be_define_const_str(str, "str", 3259748752u, 0, 3, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, NULL); +be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_SERIAL_8N1); +be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, NULL); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(_global_def, "_global_def", 646007001u, 0, 11, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, NULL); +be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str__request_from); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_close); +be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, &be_const_str_SERIAL_8N2); +be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(_ptr, "_ptr", 306235816u, 0, 4, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_settings); +be_define_const_str(settings, "settings", 1745255176u, 0, 8, NULL); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(counters, "counters", 4095866864u, 0, 8, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str__settings_def); +be_define_const_str(_settings_def, "_settings_def", 3775560307u, 0, 13, NULL); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str_contains); +be_define_const_str(contains, "contains", 1825239352u, 0, 8, &be_const_str_set_light); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); +be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_flush); +be_define_const_str(flush, "flush", 3002334877u, 0, 5, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_push); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_write_file); +be_define_const_str(write_file, "write_file", 3177658879u, 0, 10, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_size, - (const bstring *)&be_const_str_has_arg, + (const bstring *)&be_const_str_SERIAL_5N1, + (const bstring *)&be_const_str__global_addr, + (const bstring *)&be_const_str_OneWire, + (const bstring *)&be_const_str_SERIAL_8O2, + (const bstring *)&be_const_str_copy, + (const bstring *)&be_const_str_tostring, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_read8, + (const bstring *)&be_const_str_rad, + (const bstring *)&be_const_str_load, + (const bstring *)&be_const_str_opt_add, NULL, + (const bstring *)&be_const_str_chars_in_string, + (const bstring *)&be_const_str_select, + (const bstring *)&be_const_str_global, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_SERIAL_8E1, + (const bstring *)&be_const_str_get_power, + (const bstring *)&be_const_str_addr, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_add, + (const bstring *)&be_const_str_SERIAL_6N1, + (const bstring *)&be_const_str_SERIAL_8O1, + (const bstring *)&be_const_str___iterator__, + (const bstring *)&be_const_str_available, + (const bstring *)&be_const_str__drivers, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_SERIAL_6E2, + (const bstring *)&be_const_str_classname, (const bstring *)&be_const_str_remove, + (const bstring *)&be_const_str_begin, + (const bstring *)&be_const_str_content_stop, + (const bstring *)&be_const_str_reset, + NULL, + (const bstring *)&be_const_str_clear, + (const bstring *)&be_const_str_SERIAL_5E1, + (const bstring *)&be_const_str_setitem, + (const bstring *)&be_const_str_stop, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_exec_cmd, + (const bstring *)&be_const_str_ceil, + (const bstring *)&be_const_str_call, + (const bstring *)&be_const_str_cmd_res, + NULL, + NULL, + (const bstring *)&be_const_str_opt_connect, (const bstring *)&be_const_str_SERIAL_6E1, - (const bstring *)&be_const_str_cosh, - (const bstring *)&be_const_str_dac_voltage, + (const bstring *)&be_const_str__cb, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_SERIAL_6O2, + (const bstring *)&be_const_str_detect, + (const bstring *)&be_const_str_depower, + (const bstring *)&be_const_str_add_header, + (const bstring *)&be_const_str_pow, + (const bstring *)&be_const_str_SERIAL_5E2, + (const bstring *)&be_const_str_get, + (const bstring *)&be_const_str_dot_len, + (const bstring *)&be_const_str_SERIAL_5N2, + (const bstring *)&be_const_str_AudioFileSource, + (const bstring *)&be_const_str_digital_write, + NULL, + (const bstring *)&be_const_str_char, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_byte, + (const bstring *)&be_const_str_dot_size, + (const bstring *)&be_const_str_list, NULL, (const bstring *)&be_const_str_SERIAL_7N2, - (const bstring *)&be_const_str__cb, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_decrypt, - (const bstring *)&be_const_str_SERIAL_7O1, - (const bstring *)&be_const_str_SERIAL_5N2, - (const bstring *)&be_const_str_SERIAL_8N2, - (const bstring *)&be_const_str_resp_cmnd_failed, - (const bstring *)&be_const_str_SERIAL_5E1, - NULL, - (const bstring *)&be_const_str__global_def, - (const bstring *)&be_const_str__rules, - (const bstring *)&be_const_str___upper__, - (const bstring *)&be_const_str_char, - (const bstring *)&be_const_str_add_header, - (const bstring *)&be_const_str_OneWire, - (const bstring *)&be_const_str_close, - (const bstring *)&be_const_str_read13, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_gen_cb, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_pow, - (const bstring *)&be_const_str_count, - (const bstring *)&be_const_str_web_send, - NULL, - (const bstring *)&be_const_str_classof, - (const bstring *)&be_const_str_rand, - (const bstring *)&be_const_str_cb_dispatch, - (const bstring *)&be_const_str_floor, - (const bstring *)&be_const_str_SERIAL_5N1, - (const bstring *)&be_const_str_get_switch, - NULL, - (const bstring *)&be_const_str__read, - (const bstring *)&be_const_str_opt_eq, - NULL, - (const bstring *)&be_const_str_setbits, - (const bstring *)&be_const_str_stop, - (const bstring *)&be_const_str_issubclass, - (const bstring *)&be_const_str_flush, - (const bstring *)&be_const_str_I2C_Driver, - (const bstring *)&be_const_str_atan2, - (const bstring *)&be_const_str__settings_def, - (const bstring *)&be_const_str_name, - (const bstring *)&be_const_str_acos, - (const bstring *)&be_const_str_exists, - (const bstring *)&be_const_str_EC_C25519, - (const bstring *)&be_const_str_bus, - (const bstring *)&be_const_str_bytes, - NULL, - (const bstring *)&be_const_str_SERIAL_6N1, - (const bstring *)&be_const_str_dot_size, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_cmd, - (const bstring *)&be_const_str_tostring, - (const bstring *)&be_const_str__buffer, - (const bstring *)&be_const_str_except, - (const bstring *)&be_const_str_dot_len, - (const bstring *)&be_const_str_SERIAL_6E2, + (const bstring *)&be_const_str_Tasmota, + (const bstring *)&be_const_str_read, + (const bstring *)&be_const_str___lower__, + (const bstring *)&be_const_str_POST, + (const bstring *)&be_const_str_deinit, (const bstring *)&be_const_str_SERIAL_8E2, - (const bstring *)&be_const_str__ptr, - (const bstring *)&be_const_str_GET, + (const bstring *)&be_const_str_isnan, + (const bstring *)&be_const_str_arg_name, + (const bstring *)&be_const_str_get_light, NULL, - (const bstring *)&be_const_str_byte, NULL, - (const bstring *)&be_const_str_true, - (const bstring *)&be_const_str__write, - (const bstring *)&be_const_str_Wire, - (const bstring *)&be_const_str_SERIAL_8N1, - (const bstring *)&be_const_str_exec_cmd, - (const bstring *)&be_const_str_available, - (const bstring *)&be_const_str_publish_result, + (const bstring *)&be_const_str_sqrt, + (const bstring *)&be_const_str__end_transmission, + (const bstring *)&be_const_str_exec_tele, + (const bstring *)&be_const_str_format, + NULL, + (const bstring *)&be_const_str_SERIAL_7E2, + NULL, + (const bstring *)&be_const_str_SERIAL_7N1, + (const bstring *)&be_const_str_content_button, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_fromptr, + (const bstring *)&be_const_str_geti, + (const bstring *)&be_const_str_assert, + (const bstring *)&be_const_str_time_str, + (const bstring *)&be_const_str_exists, + (const bstring *)&be_const_str_seti, + (const bstring *)&be_const_str_acos, + (const bstring *)&be_const_str_find_op, + NULL, + (const bstring *)&be_const_str_isinstance, + (const bstring *)&be_const_str_cb_dispatch, + (const bstring *)&be_const_str_SERIAL_5O2, (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_dac_voltage, + (const bstring *)&be_const_str_add_rule, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str__write, + (const bstring *)&be_const_str_resp_cmnd, + NULL, + NULL, + (const bstring *)&be_const_str_content_start, + (const bstring *)&be_const_str_memory, + (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_str, + (const bstring *)&be_const_str_get_option, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_SERIAL_7O1, + (const bstring *)&be_const_str__timers, + NULL, + NULL, + (const bstring *)&be_const_str_GET, + (const bstring *)&be_const_str_break, + (const bstring *)&be_const_str__global_def, + (const bstring *)&be_const_str_find, NULL, (const bstring *)&be_const_str_SERIAL_6N2, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_fromstring, - (const bstring *)&be_const_str_print, - (const bstring *)&be_const_str__request_from, - (const bstring *)&be_const_str_detect, - (const bstring *)&be_const_str_nil, - (const bstring *)&be_const_str_remove_driver, - (const bstring *)&be_const_str_SERIAL_7E2, - (const bstring *)&be_const_str_SERIAL_8E1, - (const bstring *)&be_const_str_add, - NULL, - (const bstring *)&be_const_str_compile, - (const bstring *)&be_const_str_has, - (const bstring *)&be_const_str_codedump, - (const bstring *)&be_const_str_reduce, - (const bstring *)&be_const_str_as, - (const bstring *)&be_const_str_get_size, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str__get_cb, - (const bstring *)&be_const_str_gc, - (const bstring *)&be_const_str_begin, - (const bstring *)&be_const_str_cmd_res, - (const bstring *)&be_const_str_insert, - (const bstring *)&be_const_str___iterator__, - (const bstring *)&be_const_str_SERIAL_7N1, - (const bstring *)&be_const_str_int, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_module, + (const bstring *)&be_const_str_var, + (const bstring *)&be_const_str_content_send_style, + (const bstring *)&be_const_str_asstring, + (const bstring *)&be_const_str_get_string, + (const bstring *)&be_const_str_encrypt, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_exec_rules, + (const bstring *)&be_const_str_AudioFileSourceFS, (const bstring *)&be_const_str_SERIAL_7O2, NULL, - (const bstring *)&be_const_str_POST, - (const bstring *)&be_const_str_hex, - (const bstring *)&be_const_str_SERIAL_5E2, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_publish, - (const bstring *)&be_const_str_log10, - (const bstring *)&be_const_str__drivers, + (const bstring *)&be_const_str__ptr, + (const bstring *)&be_const_str_open, NULL, - (const bstring *)&be_const_str_arg, - (const bstring *)&be_const_str_wire, - (const bstring *)&be_const_str_dot_w, - (const bstring *)&be_const_str_scan, - (const bstring *)&be_const_str_AudioFileSource, - (const bstring *)&be_const_str_nan, - (const bstring *)&be_const_str_MD5, - (const bstring *)&be_const_str_SERIAL_6O2, - (const bstring *)&be_const_str_content_start, - (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_cmd, + (const bstring *)&be_const_str_nil, + (const bstring *)&be_const_str_SERIAL_7E1, + (const bstring *)&be_const_str_calldepth, NULL, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_encrypt, - (const bstring *)&be_const_str__available, - (const bstring *)&be_const_str_attrdump, - (const bstring *)&be_const_str_false, - (const bstring *)&be_const_str_tomap, - (const bstring *)&be_const_str_find_key_i, - (const bstring *)&be_const_str_pop, - (const bstring *)&be_const_str_sin, - NULL, - (const bstring *)&be_const_str_input, - (const bstring *)&be_const_str_Tasmota, - (const bstring *)&be_const_str__begin_transmission, - (const bstring *)&be_const_str_save, - (const bstring *)&be_const_str__settings_ptr, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_resp_cmnd_done, - (const bstring *)&be_const_str_tan, - (const bstring *)&be_const_str_get_string, - (const bstring *)&be_const_str_memory, - (const bstring *)&be_const_str_SERIAL_6O1, (const bstring *)&be_const_str_counters, - (const bstring *)&be_const_str_millis, - (const bstring *)&be_const_str_import, - (const bstring *)&be_const_str___lower__, - (const bstring *)&be_const_str__ccmd, - (const bstring *)&be_const_str_imax, - (const bstring *)&be_const_str_elif + (const bstring *)&be_const_str__rules, + (const bstring *)&be_const_str_codedump, + (const bstring *)&be_const_str_dot_p2, + NULL, + (const bstring *)&be_const_str_erase, + (const bstring *)&be_const_str_gamma8, + NULL, + (const bstring *)&be_const_str_SERIAL_6O1, + (const bstring *)&be_const_str_target_search, + NULL, + (const bstring *)&be_const_str_abs, + (const bstring *)&be_const_str_eth, + (const bstring *)&be_const_str_SERIAL_5O1, + (const bstring *)&be_const_str_compile, + (const bstring *)&be_const_str_add_cmd }; static const struct bconststrtab m_const_string_table = { - .size = 159, - .count = 318, + .size = 160, + .count = 320, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_webclient.h b/lib/libesp32/Berry/generate/be_fixed_be_class_webclient.h index 6a7044c15..15eaa21d7 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_webclient.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_webclient.h @@ -1,26 +1,27 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_webclient_map) { - { be_const_key(url_encode, 3), be_const_func(wc_urlencode) }, - { be_const_key(POST, -1), be_const_func(wc_POST) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(begin, 5), be_const_func(wc_begin) }, - { be_const_key(set_useragent, 2), be_const_func(wc_set_useragent) }, - { be_const_key(set_auth, 12), be_const_func(wc_set_auth) }, { be_const_key(close, -1), be_const_func(wc_close) }, - { be_const_key(add_header, 9), be_const_func(wc_addheader) }, - { be_const_key(get_size, -1), be_const_func(wc_getsize) }, + { be_const_key(get_string, 5), be_const_func(wc_getstring) }, + { be_const_key(dot_w, 11), be_const_var(0) }, + { be_const_key(dot_p, 13), be_const_var(1) }, + { be_const_key(add_header, 10), be_const_func(wc_addheader) }, + { be_const_key(url_encode, -1), be_const_func(wc_urlencode) }, + { be_const_key(POST, -1), be_const_func(wc_POST) }, + { be_const_key(GET, 6), be_const_func(wc_GET) }, { be_const_key(deinit, -1), be_const_func(wc_deinit) }, + { be_const_key(get_size, -1), be_const_func(wc_getsize) }, { be_const_key(set_timeouts, -1), be_const_func(wc_set_timeouts) }, - { be_const_key(GET, 13), be_const_func(wc_GET) }, - { be_const_key(init, -1), be_const_func(wc_init) }, - { be_const_key(dot_w, -1), be_const_var(1) }, - { be_const_key(get_string, 11), be_const_func(wc_getstring) }, + { be_const_key(set_auth, -1), be_const_func(wc_set_auth) }, + { be_const_key(set_useragent, -1), be_const_func(wc_set_useragent) }, + { be_const_key(init, 0), be_const_func(wc_init) }, + { be_const_key(begin, -1), be_const_func(wc_begin) }, + { be_const_key(write_file, -1), be_const_func(wc_writefile) }, }; static be_define_const_map( be_class_webclient_map, - 15 + 16 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_tasmota_path.h b/lib/libesp32/Berry/generate/be_fixed_tasmota_path.h index 4689021c4..90ae43054 100644 --- a/lib/libesp32/Berry/generate/be_fixed_tasmota_path.h +++ b/lib/libesp32/Berry/generate/be_fixed_tasmota_path.h @@ -1,13 +1,15 @@ #include "be_constobj.h" static be_define_const_map_slots(m_libpath_map) { - { be_const_key(exists, -1), be_const_func(m_path_exists) }, - { be_const_key(last_modified, 0), be_const_func(m_path_last_modified) }, + { be_const_key(listdir, -1), be_const_func(m_path_listdir) }, + { be_const_key(last_modified, 2), be_const_func(m_path_last_modified) }, + { be_const_key(exists, 3), be_const_func(m_path_exists) }, + { be_const_key(remove, -1), be_const_func(m_path_remove) }, }; static be_define_const_map( m_libpath_map, - 2 + 4 ); static be_define_const_module( diff --git a/lib/libesp32/Zip-readonly-FS/library.json b/lib/libesp32/Zip-readonly-FS/library.json new file mode 100644 index 000000000..a8c83f81b --- /dev/null +++ b/lib/libesp32/Zip-readonly-FS/library.json @@ -0,0 +1,14 @@ +{ + "name": "Zip-readonly-FS", + "version": "1.0", + "description": "Simple filesystem to open an uncompressed ZIP file and read-only", + "license": "MIT", + "homepage": "https://github.com/arendst/Tasmota", + "frameworks": "*", + "platforms": "*", + "authors": + { + "name": "Stephan Hadinger", + "maintainer": true + } + } diff --git a/lib/libesp32/Zip-readonly-FS/src/ZipReadFS.cpp b/lib/libesp32/Zip-readonly-FS/src/ZipReadFS.cpp new file mode 100644 index 000000000..a7282c128 --- /dev/null +++ b/lib/libesp32/Zip-readonly-FS/src/ZipReadFS.cpp @@ -0,0 +1,463 @@ +/* + ZipReadFS.cpp - FS overlay to read uncompressed ZIP files + + Copyright (C) 2021 Stephan Hadinger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef ESP32 + +#include "ZipReadFS.h" + +extern FS *zip_ufsp; + +#define USE_TASMOTA_LOG + +#ifdef USE_TASMOTA_LOG +extern void AddLog(uint32_t loglevel, PGM_P formatP, ...); +enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE}; +#endif + +/******************************************************************** +** Convert DOS time to time_t +** from: https://opensource.apple.com/source/gcc3/gcc3-1161/fastjar/dostime.c +********************************************************************/ +time_t dos2unixtime(uint32_t dostime) + /* Return the Unix time_t value (GMT/UTC time) for the DOS format (local) + * time dostime, where dostime is a four byte value (date in most + * significant word, time in least significant word), see dostime() + * function. + */ +{ + struct tm *t; /* argument for mktime() */ + time_t clock = time(NULL); + + t = localtime(&clock); + t->tm_isdst = -1; /* let mktime() determine if DST is in effect */ + /* Convert DOS time to UNIX time_t format */ + t->tm_sec = (((int)dostime) << 1) & 0x3e; + t->tm_min = (((int)dostime) >> 5) & 0x3f; + t->tm_hour = (((int)dostime) >> 11) & 0x1f; + t->tm_mday = (int)(dostime >> 16) & 0x1f; + t->tm_mon = ((int)(dostime >> 21) & 0x0f) - 1; + t->tm_year = ((int)(dostime >> 25) & 0x7f) + 80; + + return mktime(t); +} + +/******************************************************************** +** Zip file parser +** +********************************************************************/ +template class LList; + +struct ZipHeader { + uint16_t padding; // need to offset by 16 bites so that 32 bits below are aligned to 4 bytes boundaries + uint16_t signature1; + uint16_t signature2; + uint16_t version; + uint16_t gen_purpose_flags; + uint16_t compression; + uint16_t last_mod_time; + uint16_t last_mod_date; + uint32_t crc32; + uint32_t size_compressed; + uint32_t size_uncompressed; + uint16_t filename_size; + uint16_t extra_field_size; +}; + +class ZipEntry { +public: + ZipEntry() : + file_name(), file_start(0), file_len(0), last_mod(0) + {}; + // ZipEntry(const char * fname, uint32_t start, uint32_t len) : + // file_name(fname), file_start(start), file_len(len) + // {}; + + String file_name; // name of the file as used by Berry, with all directories removed + uint32_t file_start; // offset in bytes where this file starts in the archive + uint32_t file_len; // length in bytes of the file + time_t last_mod; +}; + +class ZipArchive { +public: + ZipArchive(File * _f) : + f(_f), entries() + {}; + ~ZipArchive(void) { + f->close(); // TODO + } + + bool parse(void); + + File * f; + LList entries; +}; + +class ZipEntryFileImpl : public FileImpl { +public: + ZipEntryFileImpl(File * f) : zip(f) { } + +protected: + ZipArchive zip; +}; + +/******************************************************************** +** Neutral file overlay +** +********************************************************************/ + +class ZipReadFileImpl; +typedef std::shared_ptr ZipReadFileImplPtr; + +class ZipReadFileImpl : public FileImpl { +public: + ZipReadFileImpl(File f) { _f = f; } + virtual ~ZipReadFileImpl() {} + size_t write(const uint8_t *buf, size_t size) { + return _f.write(buf, size); + } + size_t read(uint8_t* buf, size_t size) { + return _f.read(buf, size); + } + void flush() { + _f.flush(); + } + bool seek(uint32_t pos, SeekMode mode) { + return _f.seek(pos, mode); + } + size_t position() const { + return _f.position(); + } + size_t size() const { + return _f.size(); + } + void close() { + _f.close(); + } + time_t getLastWrite() { + return _f.getLastWrite(); + } + const char* path() const { + return _f.path(); + } + const char* name() const { + return _f.name(); + } + boolean isDirectory(void) { + return _f.isDirectory(); + } + FileImplPtr openNextFile(const char* mode) { + return nullptr; // TODO + } + void rewindDirectory(void) { + return _f.rewindDirectory(); + } + operator bool() { + return (bool) _f; + } + +protected: + File _f; +}; + +/******************************************************************** +** Subfile implementation +** +** Takes a `File` object of the ZIP archive +** First byte in archive and len +********************************************************************/ + +class ZipItemImpl; +typedef std::shared_ptr ZipItemImplPtr; + +class ZipItemImpl : public FileImpl { +public: + + ZipItemImpl(File f, uint32_t first_byte, uint32_t len, time_t last_mod) { + _f = f; + _first_byte = first_byte; + _len = len; + _seek = 0; + _last_mod = last_mod; + } + + virtual ~ZipItemImpl() {} + + size_t write(const uint8_t *buf, size_t size) { + return 0; // not accepted + } + + size_t read(uint8_t* buf, size_t size) { + // AddLog(LOG_LEVEL_DEBUG, "ZIP: read bytes=%i seek=%i len=%i", size, _seek, _len); + if (_seek < _len) { + if (size + _seek > _len) { + size = _len - _seek; // always > 0 because of guarding test + } + bool bret = _f.seek(_first_byte + _seek, SeekSet); + // AddLog(LOG_LEVEL_DEBUG, "ZIP: seek_ret ret=%i zip_seek=%i", bret, _first_byte + _seek); + if (bret) { + size_t ret = _f.read(buf, size); + // AddLog(LOG_LEVEL_DEBUG, "ZIP: read done ret=%i zip_seek=%i", ret, size); + _seek += ret; + if (_seek > _len) { _seek = _len; } + return ret; + } + } + return 0; // abort + } + + void flush() { + // do nothing + } + + bool seek(uint32_t pos, SeekMode mode) { + AddLog(LOG_LEVEL_DEBUG, "ZIP: seek pos=%i mode=%i", pos, mode); + if (SeekSet == mode) { + if (pos <= _len) { + _seek = pos; + return true; + } + } else if (SeekCur == mode) { + if (_seek + pos <= _len) { + _seek += pos; + return true; + } + } else if (SeekEnd == mode) { + _seek = _len; + return true; + } + return false; + } + + size_t position() const { + AddLog(LOG_LEVEL_DEBUG, "ZIP: position return=%i", _seek); + return _seek; + } + + size_t size() const { + AddLog(LOG_LEVEL_DEBUG, "ZIP: size return=%i", _len); + return _len; + } + + void close() { + // do nothing + } + time_t getLastWrite() { + return _last_mod; + } + + const char* path() const { + return _f.path(); // TODO + } + + const char* name() const { + return _f.name(); // TODO + } + + boolean isDirectory(void) { + return false; // no directory allowed + } + + FileImplPtr openNextFile(const char* mode) { + return nullptr; // TODO + } + + void rewindDirectory(void) { + // ignore + } + + operator bool() { + return true; + } + +protected: + File _f; + uint32_t _first_byte; + uint32_t _len; + uint32_t _seek; + time_t _last_mod; +}; + +/******************************************************************** +** Zip file parser +** Implementation +********************************************************************/ + +// parse the Zip archive to extract all entries +// returns true if ok +bool ZipArchive::parse(void) { + ZipHeader header; + f->seek(0); // start of file + int32_t offset = 0; + const size_t zip_header_size = sizeof(header) - sizeof(header.padding); + + while (1) { + f->seek(offset); + int32_t bytes_read = f->read(sizeof(header.padding) + (uint8_t*) &header, zip_header_size); + if (bytes_read != zip_header_size) { + break; + } + // AddLog(LOG_LEVEL_DEBUG, "ZIG: header version=%i flags=%p compress=%i mod_time=%i mod_date=%i size=%i-%i fnamesize=%i", + // header.version, header.gen_purpose_flags, header.compression, header.last_mod_time, header.last_mod_date, + // header.size_compressed, header.size_uncompressed, header.filename_size); + // Check signature + if (header.signature1 != 0x4B50) { + AddLog(LOG_LEVEL_INFO, "ZIP: invalid zip signature"); + return false; + } + if (header.signature2 != 0x0403) { + AddLog(LOG_LEVEL_DEBUG, "ZIP: end of file section"); + break; + } + // Check no extra field + if (header.gen_purpose_flags != 0x0000) { + AddLog(LOG_LEVEL_INFO, "ZIP: invalid general purpose flags 0x%04X", header.gen_purpose_flags); + return false; + } + // Check no compression + if (header.compression != 0x0000) { + AddLog(LOG_LEVEL_INFO, "ZIP: compressed files unsupported 0x%04X", header.compression); + return false; + } + // Check size is the same for compressed and uncompressed + if (header.size_compressed != header.size_uncompressed) { + AddLog(LOG_LEVEL_INFO, "ZIP: compressed size differs from uncompressed %i - %i", header.size_compressed, header.size_uncompressed); + return false; + } + // Check file name size + if (header.filename_size > 64) { + AddLog(LOG_LEVEL_INFO, "ZIP: entry filename size too long %i", header.filename_size); + return false; + } + + // read full filename + char fname[header.filename_size + 1]; + if (f->read((uint8_t*) &fname[0], header.filename_size) != header.filename_size) { + return false; + } + fname[header.filename_size] = 0; // add NULL termination + + // Remove any directory names, and keep only what's after the last `/`` + char * fname_suffix; + char * saveptr; + fname_suffix = strtok_r(&fname[0], "#", &saveptr); + char * res = fname_suffix; + while (res) { + res = strtok_r(nullptr, "#", &saveptr); + if (res) { fname_suffix = res; } + } + offset += zip_header_size + header.filename_size + header.extra_field_size; + + ZipEntry & entry = entries.addToLast(); + entry.file_name = fname_suffix; + entry.file_start = offset; + entry.file_len = header.size_uncompressed; + entry.last_mod = dos2unixtime((header.last_mod_date << 16) | header.last_mod_time); + offset += header.size_uncompressed; + + AddLog(LOG_LEVEL_DEBUG, "ZIP: found file '%s' (%i bytes - offset %i) - next entry %i", &fname[0], header.size_uncompressed, entry.file_start, offset); + } + + return true; +} + + +/******************************************************************** +** Encapsulation of FS and File to piggyback on Arduino +** +********************************************************************/ + +FileImplPtr ZipReadFSImpl::open(const char* path, const char* mode, const bool create) { + if (*_fs == nullptr) { return nullptr; } + + if (strchr(path, '#')) { + // we don't support any other mode than "r" and no-create + if (strcmp(mode, "r") != 0 || create) { + AddLog(LOG_LEVEL_INFO, "ZIP: writing to zip is not supported"); + return ZipReadFileImplPtr(); // return an error + } + // treat as a ZIP archive + char sub_path[strlen(path)+1]; + strcpy(sub_path, path); + + // extract the suffix + char *tok; + char *prefix = strtok_r(sub_path, "#", &tok); + char *suffix = strtok_r(NULL, "", &tok); + AddLog(LOG_LEVEL_DEBUG, "ZIP: prefix=%s suffix=%s", prefix, suffix); + // parse ZIP archive + File zipfile = (*_fs)->open(prefix, "r", false); + if ((bool)zipfile) { + // we could read the file + ZipArchive zip_archive = ZipArchive(&zipfile); + zip_archive.parse(); + + for (auto & entry : zip_archive.entries) { + if (entry.file_name.equals(suffix)) { + // found + AddLog(LOG_LEVEL_DEBUG, "ZIP: file '%s' in archive (start=%i - len=%i - last_mod=%i)", suffix, entry.file_start, entry.file_len, entry.last_mod); + return ZipItemImplPtr(new ZipItemImpl((*_fs)->open(prefix, "r", false), entry.file_start, entry.file_len, entry.last_mod)); + } + } + return ZipReadFileImplPtr(); // return an error + } else { + AddLog(LOG_LEVEL_INFO, "ZIP: could not open '%s'", prefix); + return ZipReadFileImplPtr(); // return an error + } + } else { + // simple file, do nothing + return ZipReadFileImplPtr(new ZipReadFileImpl((*_fs)->open(path, mode, create))); + } +} + +bool ZipReadFSImpl::exists(const char* path) { + if (*_fs == nullptr) { return false; } + + if (strchr(path, '#')) { + // treat as a ZIP archive + char sub_path[strlen(path)+1]; + strcpy(sub_path, path); + + // extract the suffix + char *tok; + char *prefix = strtok_r(sub_path, "#", &tok); + char *suffix = strtok_r(NULL, "", &tok); + // parse ZIP archive + File zipfile = (*_fs)->open(prefix, "r", false); + if ((bool)zipfile) { + // we could read the file + ZipArchive zip_archive = ZipArchive(&zipfile); + zip_archive.parse(); + + for (auto & entry : zip_archive.entries) { + if (entry.file_name.equals(suffix)) { + return true; + } + } + } + return false; + } else { + // simple file, do nothing + return (*_fs)->exists(path); + } +} + +ZipReadFSImpl::~ZipReadFSImpl() {}; + +#endif // ESP32 \ No newline at end of file diff --git a/lib/libesp32/Zip-readonly-FS/src/ZipReadFS.h b/lib/libesp32/Zip-readonly-FS/src/ZipReadFS.h new file mode 100644 index 000000000..ff0e2f997 --- /dev/null +++ b/lib/libesp32/Zip-readonly-FS/src/ZipReadFS.h @@ -0,0 +1,67 @@ + +#ifndef __ZIP_READ_FS__ +#define __ZIP_READ_FS__ + +#include + +#ifdef ESP32 + +#include +#include +#include + +class ZipReadFSImpl; +typedef std::shared_ptr ZipReadFSImplPtr; + + +class ZipReadFSImpl : public FSImpl { +public: + + ZipReadFSImpl(FS **fs) : _fs(fs) {}; + virtual ~ZipReadFSImpl(); + + FileImplPtr open(const char* path, const char* mode, const bool create); + + bool exists(const char* path); + + bool rename(const char* pathFrom, const char* pathTo) { + if (*_fs) { + return (*_fs)->rename(pathFrom, pathTo); + } else { + return false; + } + } + bool remove(const char* path) { + if (*_fs) { + return (*_fs)->remove(path); + } else { + return false; + } + } + bool mkdir(const char *path) { + if (*_fs) { + return (*_fs)->mkdir(path); + } else { + return false; + } + } + bool rmdir(const char *path) { + if (*_fs) { + return (*_fs)->rmdir(path); + } else { + return false; + } + } + void mountpoint(const char *) { + }; + const char * mountpoint() { + return nullptr; + } + +private: + FS **_fs; +}; + +#endif // ESP32 + +#endif // __ZIP_READ_FS__ diff --git a/tasmota/xdrv_52_3_berry_webclient.ino b/tasmota/xdrv_52_3_berry_webclient.ino index e95dcf9d9..b7b56a39e 100644 --- a/tasmota/xdrv_52_3_berry_webclient.ino +++ b/tasmota/xdrv_52_3_berry_webclient.ino @@ -24,6 +24,10 @@ #include #include "HttpClientLight.h" +#include "be_sys.h" + +// Tasmota extension +extern File * be_get_arduino_file(void *hfile); String wc_UrlEncode(const String& text) { const char hex[] = "0123456789ABCDEF"; @@ -298,6 +302,26 @@ extern "C" { be_return(vm); /* return code */ } + int32_t wc_writefile(struct bvm *vm); + int32_t wc_writefile(struct bvm *vm) { + int32_t argc = be_top(vm); + if (argc >= 2 && be_isstring(vm, 2)) { + HTTPClientLight * cl = wc_getclient(vm); + const char * fname = be_tostring(vm, 2); + + void * f = be_fopen(fname, "w"); + int ret = -1; + if (f) { + File * fptr = be_get_arduino_file(f); + ret = cl->writeToStream(fptr); + } + be_fclose(f); + be_pushint(vm, ret); + be_return(vm); /* return code */ + } + be_raise(vm, kTypeError, nullptr); + } + int32_t wc_getsize(struct bvm *vm); int32_t wc_getsize(struct bvm *vm) { HTTPClientLight * cl = wc_getclient(vm); diff --git a/tasmota/xdrv_52_9_berry.ino b/tasmota/xdrv_52_9_berry.ino index e8577b7aa..61879a761 100644 --- a/tasmota/xdrv_52_9_berry.ino +++ b/tasmota/xdrv_52_9_berry.ino @@ -24,6 +24,7 @@ #include #include "be_vm.h" +#include "ZipReadFS.h" extern "C" { extern void be_load_custom_libs(bvm *vm);