diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d0feb195..73f80bcf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. - Support for Hydreon RG-15 Solid State Rain sensor (#12974) - Support for IKEA VINDRIKTNING particle concentration sensor (#12976) - Commands ``SwitchMode 17`` PushHoldMultiDelay and ``SwitchMode 18`` PushHoldMultiDelayInverted adding delayed single press event (#12973) +- Berry support for Curve 25519 EC crypto ### Changed - Shelly EM template needs to use GPIO ADE7953_IRQ_2 diff --git a/lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_i15.c b/lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_i15.c deleted file mode 100644 index cea8091d8..000000000 --- a/lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_i15.c +++ /dev/null @@ -1,398 +0,0 @@ -/* - * Copyright (c) 2017 Thomas Pornin - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#include "t_inner.h" - -/* - * Parameters for the field: - * - field modulus p = 2^255-19 - * - R^2 mod p (R = 2^(15k) for the smallest k such that R >= p) - */ - -static const uint16_t C255_P[] = { - 0x0110, - 0x7FED, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, - 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, - 0x7FFF -}; - -#define P0I 0x4A1B - -static const uint16_t C255_R2[] = { - 0x0110, - 0x0169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000 -}; - -/* obsolete -#include -#include -static void -print_int_mont(const char *name, const uint16_t *x) -{ - uint16_t y[18]; - unsigned char tmp[32]; - size_t u; - - printf("%s = ", name); - memcpy(y, x, sizeof y); - br_i15_from_monty(y, C255_P, P0I); - br_i15_encode(tmp, sizeof tmp, y); - for (u = 0; u < sizeof tmp; u ++) { - printf("%02X", tmp[u]); - } - printf("\n"); -} -*/ - -static const uint16_t C255_A24[] = { - 0x0110, - 0x45D3, 0x0046, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000 -}; - -static const unsigned char GEN[] PROGMEM = { - 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -static const unsigned char ORDER[] PROGMEM = { - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF -}; - -static const unsigned char * -api_generator(int curve, size_t *len) -{ - (void)curve; - *len = 32; - return GEN; -} - -static const unsigned char * -api_order(int curve, size_t *len) -{ - (void)curve; - *len = 32; - return ORDER; -} - -static size_t -api_xoff(int curve, size_t *len) -{ - (void)curve; - *len = 32; - return 0; -} - -static void -cswap(uint16_t *a, uint16_t *b, uint32_t ctl) -{ - int i; - - ctl = -ctl; - for (i = 0; i < 18; i ++) { - uint32_t aw, bw, tw; - - aw = a[i]; - bw = b[i]; - tw = ctl & (aw ^ bw); - a[i] = aw ^ tw; - b[i] = bw ^ tw; - } -} - -static void -c255_add(uint16_t *d, const uint16_t *a, const uint16_t *b) -{ - uint32_t ctl; - uint16_t t[18]; - - memcpy_P(t, a, sizeof t); - ctl = br_i15_add(t, b, 1); - ctl |= NOT(br_i15_sub(t, C255_P, 0)); - br_i15_sub(t, C255_P, ctl); - memcpy(d, t, sizeof t); -} - -static void -c255_sub(uint16_t *d, const uint16_t *a, const uint16_t *b) -{ - uint16_t t[18]; - - memcpy_P(t, a, sizeof t); - br_i15_add(t, C255_P, br_i15_sub(t, b, 1)); - memcpy(d, t, sizeof t); -} - -static void -c255_mul(uint16_t *d, const uint16_t *a, const uint16_t *b) -{ - uint16_t t[18]; - - br_i15_montymul(t, a, b, C255_P, P0I); - memcpy(d, t, sizeof t); -} - -static void -byteswap(unsigned char *G) -{ - int i; - - for (i = 0; i < 16; i ++) { - unsigned char t; - - t = G[i]; - G[i] = G[31 - i]; - G[31 - i] = t; - } -} - -static uint32_t -api_mul(unsigned char *G, size_t Glen, - const unsigned char *kb, size_t kblen, int curve) -{ -#define ILEN (18 * sizeof(uint16_t)) - - /* - * The a[] and b[] arrays have an extra word to allow for - * decoding without using br_i15_decode_reduce(). - */ - uint16_t x1[18], x2[18], x3[18], z2[18], z3[18]; - uint16_t a[19], aa[18], b[19], bb[18]; - uint16_t c[18], d[18], e[18], da[18], cb[18]; - unsigned char k[32]; - uint32_t swap; - int i; - - (void)curve; - - /* - * Points are encoded over exactly 32 bytes. Multipliers must fit - * in 32 bytes as well. - * RFC 7748 mandates that the high bit of the last point byte must - * be ignored/cleared. - */ - if (Glen != 32 || kblen > 32) { - return 0; - } - G[31] &= 0x7F; - - /* - * Byteswap the point encoding, because it uses little-endian, and - * the generic decoding routine uses big-endian. - */ - byteswap(G); - - /* - * Decode the point ('u' coordinate). This should be reduced - * modulo p, but we prefer to avoid the dependency on - * br_i15_decode_reduce(). Instead, we use br_i15_decode_mod() - * with a synthetic modulus of value 2^255 (this must work - * since G was truncated to 255 bits), then use a conditional - * subtraction. We use br_i15_decode_mod() and not - * br_i15_decode(), because the ec_prime_i15 implementation uses - * the former but not the latter. - * br_i15_decode_reduce(a, G, 32, C255_P); - */ - br_i15_zero(b, 0x111); - b[18] = 1; - br_i15_decode_mod(a, G, 32, b); - a[0] = 0x110; - br_i15_sub(a, C255_P, NOT(br_i15_sub(a, C255_P, 0))); - - /* - * Initialise variables x1, x2, z2, x3 and z3. We set all of them - * into Montgomery representation. - */ - br_i15_montymul(x1, a, C255_R2, C255_P, P0I); - memcpy(x3, x1, ILEN); - br_i15_zero(z2, C255_P[0]); - memcpy(x2, z2, ILEN); - x2[1] = 19; - memcpy(z3, x2, ILEN); - - memset(k, 0, (sizeof k) - kblen); - memcpy_P(k + (sizeof k) - kblen, kb, kblen); - k[31] &= 0xF8; - k[0] &= 0x7F; - k[0] |= 0x40; - - /* obsolete - print_int_mont("x1", x1); - */ - - swap = 0; - for (i = 254; i >= 0; i --) { - uint32_t kt; - - kt = (k[31 - (i >> 3)] >> (i & 7)) & 1; - swap ^= kt; - cswap(x2, x3, swap); - cswap(z2, z3, swap); - swap = kt; - - /* obsolete - print_int_mont("x2", x2); - print_int_mont("z2", z2); - print_int_mont("x3", x3); - print_int_mont("z3", z3); - */ - - c255_add(a, x2, z2); - c255_mul(aa, a, a); - c255_sub(b, x2, z2); - c255_mul(bb, b, b); - c255_sub(e, aa, bb); - c255_add(c, x3, z3); - c255_sub(d, x3, z3); - c255_mul(da, d, a); - c255_mul(cb, c, b); - - /* obsolete - print_int_mont("a ", a); - print_int_mont("aa", aa); - print_int_mont("b ", b); - print_int_mont("bb", bb); - print_int_mont("e ", e); - print_int_mont("c ", c); - print_int_mont("d ", d); - print_int_mont("da", da); - print_int_mont("cb", cb); - */ - - c255_add(x3, da, cb); - c255_mul(x3, x3, x3); - c255_sub(z3, da, cb); - c255_mul(z3, z3, z3); - c255_mul(z3, z3, x1); - c255_mul(x2, aa, bb); - c255_mul(z2, C255_A24, e); - c255_add(z2, z2, aa); - c255_mul(z2, e, z2); - - /* obsolete - print_int_mont("x2", x2); - print_int_mont("z2", z2); - print_int_mont("x3", x3); - print_int_mont("z3", z3); - */ - } - cswap(x2, x3, swap); - cswap(z2, z3, swap); - - /* - * Inverse z2 with a modular exponentiation. This is a simple - * square-and-multiply algorithm; we mutualise most non-squarings - * since the exponent contains almost only ones. - */ - memcpy(a, z2, ILEN); - for (i = 0; i < 15; i ++) { - c255_mul(a, a, a); - c255_mul(a, a, z2); - } - memcpy(b, a, ILEN); - for (i = 0; i < 14; i ++) { - int j; - - for (j = 0; j < 16; j ++) { - c255_mul(b, b, b); - } - c255_mul(b, b, a); - } - for (i = 14; i >= 0; i --) { - c255_mul(b, b, b); - if ((0xFFEB >> i) & 1) { - c255_mul(b, z2, b); - } - } - c255_mul(b, x2, b); - - /* - * To avoid a dependency on br_i15_from_monty(), we use a - * Montgomery multiplication with 1. - * memcpy(x2, b, ILEN); - * br_i15_from_monty(x2, C255_P, P0I); - */ - br_i15_zero(a, C255_P[0]); - a[1] = 1; - br_i15_montymul(x2, a, b, C255_P, P0I); - - br_i15_encode(G, 32, x2); - byteswap(G); - return 1; - -#undef ILEN -} - -static size_t -api_mulgen(unsigned char *R, - const unsigned char *x, size_t xlen, int curve) -{ - const unsigned char *G; - size_t Glen; - - G = api_generator(curve, &Glen); - memcpy(R, G, Glen); - api_mul(R, Glen, x, xlen, curve); - return Glen; -} - -static uint32_t -api_muladd(unsigned char *A, const unsigned char *B, size_t len, - const unsigned char *x, size_t xlen, - const unsigned char *y, size_t ylen, int curve) -{ - /* - * We don't implement this method, since it is used for ECDSA - * only, and there is no ECDSA over Curve25519 (which instead - * uses EdDSA). - */ - (void)A; - (void)B; - (void)len; - (void)x; - (void)xlen; - (void)y; - (void)ylen; - (void)curve; - return 0; -} - -/* see bearssl_ec.h */ -const br_ec_impl br_ec_c25519_i15 PROGMEM = { - (uint32_t)0x20000000, - &api_generator, - &api_order, - &api_xoff, - &api_mul, - &api_mulgen, - &api_muladd -}; diff --git a/lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_m15.c b/lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_m15.c new file mode 100644 index 000000000..115d51a63 --- /dev/null +++ b/lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_m15.c @@ -0,0 +1,1478 @@ +/* + * Copyright (c) 2017 Thomas Pornin + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "t_inner.h" + +/* obsolete +#include +#include +static void +print_int(const char *name, const uint32_t *x) +{ + size_t u; + unsigned char tmp[36]; + + printf("%s = ", name); + for (u = 0; u < 20; u ++) { + if (x[u] > 0x1FFF) { + printf("INVALID:"); + for (u = 0; u < 20; u ++) { + printf(" %04X", x[u]); + } + printf("\n"); + return; + } + } + memset(tmp, 0, sizeof tmp); + for (u = 0; u < 20; u ++) { + uint32_t w; + int j, k; + + w = x[u]; + j = 13 * (int)u; + k = j & 7; + if (k != 0) { + w <<= k; + j -= k; + } + k = j >> 3; + tmp[35 - k] |= (unsigned char)w; + tmp[34 - k] |= (unsigned char)(w >> 8); + tmp[33 - k] |= (unsigned char)(w >> 16); + tmp[32 - k] |= (unsigned char)(w >> 24); + } + for (u = 4; u < 36; u ++) { + printf("%02X", tmp[u]); + } + printf("\n"); +} +*/ + +/* + * If BR_NO_ARITH_SHIFT is undefined, or defined to 0, then we _assume_ + * that right-shifting a signed negative integer copies the sign bit + * (arithmetic right-shift). This is "implementation-defined behaviour", + * i.e. it is not undefined, but it may differ between compilers. Each + * compiler is supposed to document its behaviour in that respect. GCC + * explicitly defines that an arithmetic right shift is used. We expect + * all other compilers to do the same, because underlying CPU offer an + * arithmetic right shift opcode that could not be used otherwise. + */ +#if BR_NO_ARITH_SHIFT +#define ARSH(x, n) (((uint32_t)(x) >> (n)) \ + | ((-((uint32_t)(x) >> 31)) << (32 - (n)))) +#else +#define ARSH(x, n) ((*(int32_t *)&(x)) >> (n)) +#endif + +/* + * Convert an integer from unsigned little-endian encoding to a sequence of + * 13-bit words in little-endian order. The final "partial" word is + * returned. + */ +static uint32_t +le8_to_le13(uint32_t *dst, const unsigned char *src, size_t len) +{ + uint32_t acc; + int acc_len; + + acc = 0; + acc_len = 0; + while (len -- > 0) { + acc |= (uint32_t)(*src ++) << acc_len; + acc_len += 8; + if (acc_len >= 13) { + *dst ++ = acc & 0x1FFF; + acc >>= 13; + acc_len -= 13; + } + } + return acc; +} + +/* + * Convert an integer (13-bit words, little-endian) to unsigned + * little-endian encoding. The total encoding length is provided; all + * the destination bytes will be filled. + */ +static void +le13_to_le8(unsigned char *dst, size_t len, const uint32_t *src) +{ + uint32_t acc; + int acc_len; + + acc = 0; + acc_len = 0; + while (len -- > 0) { + if (acc_len < 8) { + acc |= (*src ++) << acc_len; + acc_len += 13; + } + *dst ++ = (unsigned char)acc; + acc >>= 8; + acc_len -= 8; + } +} + +/* + * Normalise an array of words to a strict 13 bits per word. Returned + * value is the resulting carry. The source (w) and destination (d) + * arrays may be identical, but shall not overlap partially. + */ +static inline uint32_t +norm13(uint32_t *d, const uint32_t *w, size_t len) +{ + size_t u; + uint32_t cc; + + cc = 0; + for (u = 0; u < len; u ++) { + int32_t z; + + z = w[u] + cc; + d[u] = z & 0x1FFF; + cc = ARSH(z, 13); + } + return cc; +} + +/* + * mul20() multiplies two 260-bit integers together. Each word must fit + * on 13 bits; source operands use 20 words, destination operand + * receives 40 words. All overlaps allowed. + * + * square20() computes the square of a 260-bit integer. Each word must + * fit on 13 bits; source operand uses 20 words, destination operand + * receives 40 words. All overlaps allowed. + */ + +#if BR_SLOW_MUL15 + +static void +mul20(uint32_t *d, const uint32_t *a, const uint32_t *b) +{ + /* + * Two-level Karatsuba: turns a 20x20 multiplication into + * nine 5x5 multiplications. We use 13-bit words but do not + * propagate carries immediately, so words may expand: + * + * - First Karatsuba decomposition turns the 20x20 mul on + * 13-bit words into three 10x10 muls, two on 13-bit words + * and one on 14-bit words. + * + * - Second Karatsuba decomposition further splits these into: + * + * * four 5x5 muls on 13-bit words + * * four 5x5 muls on 14-bit words + * * one 5x5 mul on 15-bit words + * + * Highest word value is 8191, 16382 or 32764, for 13-bit, 14-bit + * or 15-bit words, respectively. + */ + uint32_t u[45], v[45], w[90]; + uint32_t cc; + int i; + +#define ZADD(dw, d_off, s1w, s1_off, s2w, s2_off) do { \ + (dw)[5 * (d_off) + 0] = (s1w)[5 * (s1_off) + 0] \ + + (s2w)[5 * (s2_off) + 0]; \ + (dw)[5 * (d_off) + 1] = (s1w)[5 * (s1_off) + 1] \ + + (s2w)[5 * (s2_off) + 1]; \ + (dw)[5 * (d_off) + 2] = (s1w)[5 * (s1_off) + 2] \ + + (s2w)[5 * (s2_off) + 2]; \ + (dw)[5 * (d_off) + 3] = (s1w)[5 * (s1_off) + 3] \ + + (s2w)[5 * (s2_off) + 3]; \ + (dw)[5 * (d_off) + 4] = (s1w)[5 * (s1_off) + 4] \ + + (s2w)[5 * (s2_off) + 4]; \ + } while (0) + +#define ZADDT(dw, d_off, sw, s_off) do { \ + (dw)[5 * (d_off) + 0] += (sw)[5 * (s_off) + 0]; \ + (dw)[5 * (d_off) + 1] += (sw)[5 * (s_off) + 1]; \ + (dw)[5 * (d_off) + 2] += (sw)[5 * (s_off) + 2]; \ + (dw)[5 * (d_off) + 3] += (sw)[5 * (s_off) + 3]; \ + (dw)[5 * (d_off) + 4] += (sw)[5 * (s_off) + 4]; \ + } while (0) + +#define ZSUB2F(dw, d_off, s1w, s1_off, s2w, s2_off) do { \ + (dw)[5 * (d_off) + 0] -= (s1w)[5 * (s1_off) + 0] \ + + (s2w)[5 * (s2_off) + 0]; \ + (dw)[5 * (d_off) + 1] -= (s1w)[5 * (s1_off) + 1] \ + + (s2w)[5 * (s2_off) + 1]; \ + (dw)[5 * (d_off) + 2] -= (s1w)[5 * (s1_off) + 2] \ + + (s2w)[5 * (s2_off) + 2]; \ + (dw)[5 * (d_off) + 3] -= (s1w)[5 * (s1_off) + 3] \ + + (s2w)[5 * (s2_off) + 3]; \ + (dw)[5 * (d_off) + 4] -= (s1w)[5 * (s1_off) + 4] \ + + (s2w)[5 * (s2_off) + 4]; \ + } while (0) + +#define CPR1(w, cprcc) do { \ + uint32_t cprz = (w) + cprcc; \ + (w) = cprz & 0x1FFF; \ + cprcc = cprz >> 13; \ + } while (0) + +#define CPR(dw, d_off) do { \ + uint32_t cprcc; \ + cprcc = 0; \ + CPR1((dw)[(d_off) + 0], cprcc); \ + CPR1((dw)[(d_off) + 1], cprcc); \ + CPR1((dw)[(d_off) + 2], cprcc); \ + CPR1((dw)[(d_off) + 3], cprcc); \ + CPR1((dw)[(d_off) + 4], cprcc); \ + CPR1((dw)[(d_off) + 5], cprcc); \ + CPR1((dw)[(d_off) + 6], cprcc); \ + CPR1((dw)[(d_off) + 7], cprcc); \ + CPR1((dw)[(d_off) + 8], cprcc); \ + (dw)[(d_off) + 9] = cprcc; \ + } while (0) + + memcpy_P(u, a, 20 * sizeof *a); + ZADD(u, 4, a, 0, a, 1); + ZADD(u, 5, a, 2, a, 3); + ZADD(u, 6, a, 0, a, 2); + ZADD(u, 7, a, 1, a, 3); + ZADD(u, 8, u, 6, u, 7); + + memcpy_P(v, b, 20 * sizeof *b); + ZADD(v, 4, b, 0, b, 1); + ZADD(v, 5, b, 2, b, 3); + ZADD(v, 6, b, 0, b, 2); + ZADD(v, 7, b, 1, b, 3); + ZADD(v, 8, v, 6, v, 7); + + /* + * Do the eight first 8x8 muls. Source words are at most 16382 + * each, so we can add product results together "as is" in 32-bit + * words. + */ + for (i = 0; i < 40; i += 5) { + w[(i << 1) + 0] = MUL15(u[i + 0], v[i + 0]); + w[(i << 1) + 1] = MUL15(u[i + 0], v[i + 1]) + + MUL15(u[i + 1], v[i + 0]); + w[(i << 1) + 2] = MUL15(u[i + 0], v[i + 2]) + + MUL15(u[i + 1], v[i + 1]) + + MUL15(u[i + 2], v[i + 0]); + w[(i << 1) + 3] = MUL15(u[i + 0], v[i + 3]) + + MUL15(u[i + 1], v[i + 2]) + + MUL15(u[i + 2], v[i + 1]) + + MUL15(u[i + 3], v[i + 0]); + w[(i << 1) + 4] = MUL15(u[i + 0], v[i + 4]) + + MUL15(u[i + 1], v[i + 3]) + + MUL15(u[i + 2], v[i + 2]) + + MUL15(u[i + 3], v[i + 1]) + + MUL15(u[i + 4], v[i + 0]); + w[(i << 1) + 5] = MUL15(u[i + 1], v[i + 4]) + + MUL15(u[i + 2], v[i + 3]) + + MUL15(u[i + 3], v[i + 2]) + + MUL15(u[i + 4], v[i + 1]); + w[(i << 1) + 6] = MUL15(u[i + 2], v[i + 4]) + + MUL15(u[i + 3], v[i + 3]) + + MUL15(u[i + 4], v[i + 2]); + w[(i << 1) + 7] = MUL15(u[i + 3], v[i + 4]) + + MUL15(u[i + 4], v[i + 3]); + w[(i << 1) + 8] = MUL15(u[i + 4], v[i + 4]); + w[(i << 1) + 9] = 0; + } + + /* + * For the 9th multiplication, source words are up to 32764, + * so we must do some carry propagation. If we add up to + * 4 products and the carry is no more than 524224, then the + * result fits in 32 bits, and the next carry will be no more + * than 524224 (because 4*(32764^2)+524224 < 8192*524225). + * + * We thus just skip one of the products in the middle word, + * then do a carry propagation (this reduces words to 13 bits + * each, except possibly the last, which may use up to 17 bits + * or so), then add the missing product. + */ + w[80 + 0] = MUL15(u[40 + 0], v[40 + 0]); + w[80 + 1] = MUL15(u[40 + 0], v[40 + 1]) + + MUL15(u[40 + 1], v[40 + 0]); + w[80 + 2] = MUL15(u[40 + 0], v[40 + 2]) + + MUL15(u[40 + 1], v[40 + 1]) + + MUL15(u[40 + 2], v[40 + 0]); + w[80 + 3] = MUL15(u[40 + 0], v[40 + 3]) + + MUL15(u[40 + 1], v[40 + 2]) + + MUL15(u[40 + 2], v[40 + 1]) + + MUL15(u[40 + 3], v[40 + 0]); + w[80 + 4] = MUL15(u[40 + 0], v[40 + 4]) + + MUL15(u[40 + 1], v[40 + 3]) + + MUL15(u[40 + 2], v[40 + 2]) + + MUL15(u[40 + 3], v[40 + 1]); + /* + MUL15(u[40 + 4], v[40 + 0]) */ + w[80 + 5] = MUL15(u[40 + 1], v[40 + 4]) + + MUL15(u[40 + 2], v[40 + 3]) + + MUL15(u[40 + 3], v[40 + 2]) + + MUL15(u[40 + 4], v[40 + 1]); + w[80 + 6] = MUL15(u[40 + 2], v[40 + 4]) + + MUL15(u[40 + 3], v[40 + 3]) + + MUL15(u[40 + 4], v[40 + 2]); + w[80 + 7] = MUL15(u[40 + 3], v[40 + 4]) + + MUL15(u[40 + 4], v[40 + 3]); + w[80 + 8] = MUL15(u[40 + 4], v[40 + 4]); + + CPR(w, 80); + + w[80 + 4] += MUL15(u[40 + 4], v[40 + 0]); + + /* + * The products on 14-bit words in slots 6 and 7 yield values + * up to 5*(16382^2) each, and we need to subtract two such + * values from the higher word. We need the subtraction to fit + * in a _signed_ 32-bit integer, i.e. 31 bits + a sign bit. + * However, 10*(16382^2) does not fit. So we must perform a + * bit of reduction here. + */ + CPR(w, 60); + CPR(w, 70); + + /* + * Recompose results. + */ + + /* 0..1*0..1 into 0..3 */ + ZSUB2F(w, 8, w, 0, w, 2); + ZSUB2F(w, 9, w, 1, w, 3); + ZADDT(w, 1, w, 8); + ZADDT(w, 2, w, 9); + + /* 2..3*2..3 into 4..7 */ + ZSUB2F(w, 10, w, 4, w, 6); + ZSUB2F(w, 11, w, 5, w, 7); + ZADDT(w, 5, w, 10); + ZADDT(w, 6, w, 11); + + /* (0..1+2..3)*(0..1+2..3) into 12..15 */ + ZSUB2F(w, 16, w, 12, w, 14); + ZSUB2F(w, 17, w, 13, w, 15); + ZADDT(w, 13, w, 16); + ZADDT(w, 14, w, 17); + + /* first-level recomposition */ + ZSUB2F(w, 12, w, 0, w, 4); + ZSUB2F(w, 13, w, 1, w, 5); + ZSUB2F(w, 14, w, 2, w, 6); + ZSUB2F(w, 15, w, 3, w, 7); + ZADDT(w, 2, w, 12); + ZADDT(w, 3, w, 13); + ZADDT(w, 4, w, 14); + ZADDT(w, 5, w, 15); + + /* + * Perform carry propagation to bring all words down to 13 bits. + */ + cc = norm13(d, w, 40); + d[39] += (cc << 13); + +#undef ZADD +#undef ZADDT +#undef ZSUB2F +#undef CPR1 +#undef CPR +} + +static inline void +square20(uint32_t *d, const uint32_t *a) +{ + mul20(d, a, a); +} + +#else + +/*static*/ void +mul20(uint32_t *d, const uint32_t *a, const uint32_t *b) +{ + uint32_t t[39]; + + t[ 0] = MUL15(a[ 0], b[ 0]); + t[ 1] = MUL15(a[ 0], b[ 1]) + + MUL15(a[ 1], b[ 0]); + t[ 2] = MUL15(a[ 0], b[ 2]) + + MUL15(a[ 1], b[ 1]) + + MUL15(a[ 2], b[ 0]); + t[ 3] = MUL15(a[ 0], b[ 3]) + + MUL15(a[ 1], b[ 2]) + + MUL15(a[ 2], b[ 1]) + + MUL15(a[ 3], b[ 0]); + t[ 4] = MUL15(a[ 0], b[ 4]) + + MUL15(a[ 1], b[ 3]) + + MUL15(a[ 2], b[ 2]) + + MUL15(a[ 3], b[ 1]) + + MUL15(a[ 4], b[ 0]); + t[ 5] = MUL15(a[ 0], b[ 5]) + + MUL15(a[ 1], b[ 4]) + + MUL15(a[ 2], b[ 3]) + + MUL15(a[ 3], b[ 2]) + + MUL15(a[ 4], b[ 1]) + + MUL15(a[ 5], b[ 0]); + t[ 6] = MUL15(a[ 0], b[ 6]) + + MUL15(a[ 1], b[ 5]) + + MUL15(a[ 2], b[ 4]) + + MUL15(a[ 3], b[ 3]) + + MUL15(a[ 4], b[ 2]) + + MUL15(a[ 5], b[ 1]) + + MUL15(a[ 6], b[ 0]); + t[ 7] = MUL15(a[ 0], b[ 7]) + + MUL15(a[ 1], b[ 6]) + + MUL15(a[ 2], b[ 5]) + + MUL15(a[ 3], b[ 4]) + + MUL15(a[ 4], b[ 3]) + + MUL15(a[ 5], b[ 2]) + + MUL15(a[ 6], b[ 1]) + + MUL15(a[ 7], b[ 0]); + t[ 8] = MUL15(a[ 0], b[ 8]) + + MUL15(a[ 1], b[ 7]) + + MUL15(a[ 2], b[ 6]) + + MUL15(a[ 3], b[ 5]) + + MUL15(a[ 4], b[ 4]) + + MUL15(a[ 5], b[ 3]) + + MUL15(a[ 6], b[ 2]) + + MUL15(a[ 7], b[ 1]) + + MUL15(a[ 8], b[ 0]); + t[ 9] = MUL15(a[ 0], b[ 9]) + + MUL15(a[ 1], b[ 8]) + + MUL15(a[ 2], b[ 7]) + + MUL15(a[ 3], b[ 6]) + + MUL15(a[ 4], b[ 5]) + + MUL15(a[ 5], b[ 4]) + + MUL15(a[ 6], b[ 3]) + + MUL15(a[ 7], b[ 2]) + + MUL15(a[ 8], b[ 1]) + + MUL15(a[ 9], b[ 0]); + t[10] = MUL15(a[ 0], b[10]) + + MUL15(a[ 1], b[ 9]) + + MUL15(a[ 2], b[ 8]) + + MUL15(a[ 3], b[ 7]) + + MUL15(a[ 4], b[ 6]) + + MUL15(a[ 5], b[ 5]) + + MUL15(a[ 6], b[ 4]) + + MUL15(a[ 7], b[ 3]) + + MUL15(a[ 8], b[ 2]) + + MUL15(a[ 9], b[ 1]) + + MUL15(a[10], b[ 0]); + t[11] = MUL15(a[ 0], b[11]) + + MUL15(a[ 1], b[10]) + + MUL15(a[ 2], b[ 9]) + + MUL15(a[ 3], b[ 8]) + + MUL15(a[ 4], b[ 7]) + + MUL15(a[ 5], b[ 6]) + + MUL15(a[ 6], b[ 5]) + + MUL15(a[ 7], b[ 4]) + + MUL15(a[ 8], b[ 3]) + + MUL15(a[ 9], b[ 2]) + + MUL15(a[10], b[ 1]) + + MUL15(a[11], b[ 0]); + t[12] = MUL15(a[ 0], b[12]) + + MUL15(a[ 1], b[11]) + + MUL15(a[ 2], b[10]) + + MUL15(a[ 3], b[ 9]) + + MUL15(a[ 4], b[ 8]) + + MUL15(a[ 5], b[ 7]) + + MUL15(a[ 6], b[ 6]) + + MUL15(a[ 7], b[ 5]) + + MUL15(a[ 8], b[ 4]) + + MUL15(a[ 9], b[ 3]) + + MUL15(a[10], b[ 2]) + + MUL15(a[11], b[ 1]) + + MUL15(a[12], b[ 0]); + t[13] = MUL15(a[ 0], b[13]) + + MUL15(a[ 1], b[12]) + + MUL15(a[ 2], b[11]) + + MUL15(a[ 3], b[10]) + + MUL15(a[ 4], b[ 9]) + + MUL15(a[ 5], b[ 8]) + + MUL15(a[ 6], b[ 7]) + + MUL15(a[ 7], b[ 6]) + + MUL15(a[ 8], b[ 5]) + + MUL15(a[ 9], b[ 4]) + + MUL15(a[10], b[ 3]) + + MUL15(a[11], b[ 2]) + + MUL15(a[12], b[ 1]) + + MUL15(a[13], b[ 0]); + t[14] = MUL15(a[ 0], b[14]) + + MUL15(a[ 1], b[13]) + + MUL15(a[ 2], b[12]) + + MUL15(a[ 3], b[11]) + + MUL15(a[ 4], b[10]) + + MUL15(a[ 5], b[ 9]) + + MUL15(a[ 6], b[ 8]) + + MUL15(a[ 7], b[ 7]) + + MUL15(a[ 8], b[ 6]) + + MUL15(a[ 9], b[ 5]) + + MUL15(a[10], b[ 4]) + + MUL15(a[11], b[ 3]) + + MUL15(a[12], b[ 2]) + + MUL15(a[13], b[ 1]) + + MUL15(a[14], b[ 0]); + t[15] = MUL15(a[ 0], b[15]) + + MUL15(a[ 1], b[14]) + + MUL15(a[ 2], b[13]) + + MUL15(a[ 3], b[12]) + + MUL15(a[ 4], b[11]) + + MUL15(a[ 5], b[10]) + + MUL15(a[ 6], b[ 9]) + + MUL15(a[ 7], b[ 8]) + + MUL15(a[ 8], b[ 7]) + + MUL15(a[ 9], b[ 6]) + + MUL15(a[10], b[ 5]) + + MUL15(a[11], b[ 4]) + + MUL15(a[12], b[ 3]) + + MUL15(a[13], b[ 2]) + + MUL15(a[14], b[ 1]) + + MUL15(a[15], b[ 0]); + t[16] = MUL15(a[ 0], b[16]) + + MUL15(a[ 1], b[15]) + + MUL15(a[ 2], b[14]) + + MUL15(a[ 3], b[13]) + + MUL15(a[ 4], b[12]) + + MUL15(a[ 5], b[11]) + + MUL15(a[ 6], b[10]) + + MUL15(a[ 7], b[ 9]) + + MUL15(a[ 8], b[ 8]) + + MUL15(a[ 9], b[ 7]) + + MUL15(a[10], b[ 6]) + + MUL15(a[11], b[ 5]) + + MUL15(a[12], b[ 4]) + + MUL15(a[13], b[ 3]) + + MUL15(a[14], b[ 2]) + + MUL15(a[15], b[ 1]) + + MUL15(a[16], b[ 0]); + t[17] = MUL15(a[ 0], b[17]) + + MUL15(a[ 1], b[16]) + + MUL15(a[ 2], b[15]) + + MUL15(a[ 3], b[14]) + + MUL15(a[ 4], b[13]) + + MUL15(a[ 5], b[12]) + + MUL15(a[ 6], b[11]) + + MUL15(a[ 7], b[10]) + + MUL15(a[ 8], b[ 9]) + + MUL15(a[ 9], b[ 8]) + + MUL15(a[10], b[ 7]) + + MUL15(a[11], b[ 6]) + + MUL15(a[12], b[ 5]) + + MUL15(a[13], b[ 4]) + + MUL15(a[14], b[ 3]) + + MUL15(a[15], b[ 2]) + + MUL15(a[16], b[ 1]) + + MUL15(a[17], b[ 0]); + t[18] = MUL15(a[ 0], b[18]) + + MUL15(a[ 1], b[17]) + + MUL15(a[ 2], b[16]) + + MUL15(a[ 3], b[15]) + + MUL15(a[ 4], b[14]) + + MUL15(a[ 5], b[13]) + + MUL15(a[ 6], b[12]) + + MUL15(a[ 7], b[11]) + + MUL15(a[ 8], b[10]) + + MUL15(a[ 9], b[ 9]) + + MUL15(a[10], b[ 8]) + + MUL15(a[11], b[ 7]) + + MUL15(a[12], b[ 6]) + + MUL15(a[13], b[ 5]) + + MUL15(a[14], b[ 4]) + + MUL15(a[15], b[ 3]) + + MUL15(a[16], b[ 2]) + + MUL15(a[17], b[ 1]) + + MUL15(a[18], b[ 0]); + t[19] = MUL15(a[ 0], b[19]) + + MUL15(a[ 1], b[18]) + + MUL15(a[ 2], b[17]) + + MUL15(a[ 3], b[16]) + + MUL15(a[ 4], b[15]) + + MUL15(a[ 5], b[14]) + + MUL15(a[ 6], b[13]) + + MUL15(a[ 7], b[12]) + + MUL15(a[ 8], b[11]) + + MUL15(a[ 9], b[10]) + + MUL15(a[10], b[ 9]) + + MUL15(a[11], b[ 8]) + + MUL15(a[12], b[ 7]) + + MUL15(a[13], b[ 6]) + + MUL15(a[14], b[ 5]) + + MUL15(a[15], b[ 4]) + + MUL15(a[16], b[ 3]) + + MUL15(a[17], b[ 2]) + + MUL15(a[18], b[ 1]) + + MUL15(a[19], b[ 0]); + t[20] = MUL15(a[ 1], b[19]) + + MUL15(a[ 2], b[18]) + + MUL15(a[ 3], b[17]) + + MUL15(a[ 4], b[16]) + + MUL15(a[ 5], b[15]) + + MUL15(a[ 6], b[14]) + + MUL15(a[ 7], b[13]) + + MUL15(a[ 8], b[12]) + + MUL15(a[ 9], b[11]) + + MUL15(a[10], b[10]) + + MUL15(a[11], b[ 9]) + + MUL15(a[12], b[ 8]) + + MUL15(a[13], b[ 7]) + + MUL15(a[14], b[ 6]) + + MUL15(a[15], b[ 5]) + + MUL15(a[16], b[ 4]) + + MUL15(a[17], b[ 3]) + + MUL15(a[18], b[ 2]) + + MUL15(a[19], b[ 1]); + t[21] = MUL15(a[ 2], b[19]) + + MUL15(a[ 3], b[18]) + + MUL15(a[ 4], b[17]) + + MUL15(a[ 5], b[16]) + + MUL15(a[ 6], b[15]) + + MUL15(a[ 7], b[14]) + + MUL15(a[ 8], b[13]) + + MUL15(a[ 9], b[12]) + + MUL15(a[10], b[11]) + + MUL15(a[11], b[10]) + + MUL15(a[12], b[ 9]) + + MUL15(a[13], b[ 8]) + + MUL15(a[14], b[ 7]) + + MUL15(a[15], b[ 6]) + + MUL15(a[16], b[ 5]) + + MUL15(a[17], b[ 4]) + + MUL15(a[18], b[ 3]) + + MUL15(a[19], b[ 2]); + t[22] = MUL15(a[ 3], b[19]) + + MUL15(a[ 4], b[18]) + + MUL15(a[ 5], b[17]) + + MUL15(a[ 6], b[16]) + + MUL15(a[ 7], b[15]) + + MUL15(a[ 8], b[14]) + + MUL15(a[ 9], b[13]) + + MUL15(a[10], b[12]) + + MUL15(a[11], b[11]) + + MUL15(a[12], b[10]) + + MUL15(a[13], b[ 9]) + + MUL15(a[14], b[ 8]) + + MUL15(a[15], b[ 7]) + + MUL15(a[16], b[ 6]) + + MUL15(a[17], b[ 5]) + + MUL15(a[18], b[ 4]) + + MUL15(a[19], b[ 3]); + t[23] = MUL15(a[ 4], b[19]) + + MUL15(a[ 5], b[18]) + + MUL15(a[ 6], b[17]) + + MUL15(a[ 7], b[16]) + + MUL15(a[ 8], b[15]) + + MUL15(a[ 9], b[14]) + + MUL15(a[10], b[13]) + + MUL15(a[11], b[12]) + + MUL15(a[12], b[11]) + + MUL15(a[13], b[10]) + + MUL15(a[14], b[ 9]) + + MUL15(a[15], b[ 8]) + + MUL15(a[16], b[ 7]) + + MUL15(a[17], b[ 6]) + + MUL15(a[18], b[ 5]) + + MUL15(a[19], b[ 4]); + t[24] = MUL15(a[ 5], b[19]) + + MUL15(a[ 6], b[18]) + + MUL15(a[ 7], b[17]) + + MUL15(a[ 8], b[16]) + + MUL15(a[ 9], b[15]) + + MUL15(a[10], b[14]) + + MUL15(a[11], b[13]) + + MUL15(a[12], b[12]) + + MUL15(a[13], b[11]) + + MUL15(a[14], b[10]) + + MUL15(a[15], b[ 9]) + + MUL15(a[16], b[ 8]) + + MUL15(a[17], b[ 7]) + + MUL15(a[18], b[ 6]) + + MUL15(a[19], b[ 5]); + t[25] = MUL15(a[ 6], b[19]) + + MUL15(a[ 7], b[18]) + + MUL15(a[ 8], b[17]) + + MUL15(a[ 9], b[16]) + + MUL15(a[10], b[15]) + + MUL15(a[11], b[14]) + + MUL15(a[12], b[13]) + + MUL15(a[13], b[12]) + + MUL15(a[14], b[11]) + + MUL15(a[15], b[10]) + + MUL15(a[16], b[ 9]) + + MUL15(a[17], b[ 8]) + + MUL15(a[18], b[ 7]) + + MUL15(a[19], b[ 6]); + t[26] = MUL15(a[ 7], b[19]) + + MUL15(a[ 8], b[18]) + + MUL15(a[ 9], b[17]) + + MUL15(a[10], b[16]) + + MUL15(a[11], b[15]) + + MUL15(a[12], b[14]) + + MUL15(a[13], b[13]) + + MUL15(a[14], b[12]) + + MUL15(a[15], b[11]) + + MUL15(a[16], b[10]) + + MUL15(a[17], b[ 9]) + + MUL15(a[18], b[ 8]) + + MUL15(a[19], b[ 7]); + t[27] = MUL15(a[ 8], b[19]) + + MUL15(a[ 9], b[18]) + + MUL15(a[10], b[17]) + + MUL15(a[11], b[16]) + + MUL15(a[12], b[15]) + + MUL15(a[13], b[14]) + + MUL15(a[14], b[13]) + + MUL15(a[15], b[12]) + + MUL15(a[16], b[11]) + + MUL15(a[17], b[10]) + + MUL15(a[18], b[ 9]) + + MUL15(a[19], b[ 8]); + t[28] = MUL15(a[ 9], b[19]) + + MUL15(a[10], b[18]) + + MUL15(a[11], b[17]) + + MUL15(a[12], b[16]) + + MUL15(a[13], b[15]) + + MUL15(a[14], b[14]) + + MUL15(a[15], b[13]) + + MUL15(a[16], b[12]) + + MUL15(a[17], b[11]) + + MUL15(a[18], b[10]) + + MUL15(a[19], b[ 9]); + t[29] = MUL15(a[10], b[19]) + + MUL15(a[11], b[18]) + + MUL15(a[12], b[17]) + + MUL15(a[13], b[16]) + + MUL15(a[14], b[15]) + + MUL15(a[15], b[14]) + + MUL15(a[16], b[13]) + + MUL15(a[17], b[12]) + + MUL15(a[18], b[11]) + + MUL15(a[19], b[10]); + t[30] = MUL15(a[11], b[19]) + + MUL15(a[12], b[18]) + + MUL15(a[13], b[17]) + + MUL15(a[14], b[16]) + + MUL15(a[15], b[15]) + + MUL15(a[16], b[14]) + + MUL15(a[17], b[13]) + + MUL15(a[18], b[12]) + + MUL15(a[19], b[11]); + t[31] = MUL15(a[12], b[19]) + + MUL15(a[13], b[18]) + + MUL15(a[14], b[17]) + + MUL15(a[15], b[16]) + + MUL15(a[16], b[15]) + + MUL15(a[17], b[14]) + + MUL15(a[18], b[13]) + + MUL15(a[19], b[12]); + t[32] = MUL15(a[13], b[19]) + + MUL15(a[14], b[18]) + + MUL15(a[15], b[17]) + + MUL15(a[16], b[16]) + + MUL15(a[17], b[15]) + + MUL15(a[18], b[14]) + + MUL15(a[19], b[13]); + t[33] = MUL15(a[14], b[19]) + + MUL15(a[15], b[18]) + + MUL15(a[16], b[17]) + + MUL15(a[17], b[16]) + + MUL15(a[18], b[15]) + + MUL15(a[19], b[14]); + t[34] = MUL15(a[15], b[19]) + + MUL15(a[16], b[18]) + + MUL15(a[17], b[17]) + + MUL15(a[18], b[16]) + + MUL15(a[19], b[15]); + t[35] = MUL15(a[16], b[19]) + + MUL15(a[17], b[18]) + + MUL15(a[18], b[17]) + + MUL15(a[19], b[16]); + t[36] = MUL15(a[17], b[19]) + + MUL15(a[18], b[18]) + + MUL15(a[19], b[17]); + t[37] = MUL15(a[18], b[19]) + + MUL15(a[19], b[18]); + t[38] = MUL15(a[19], b[19]); + + d[39] = norm13(d, t, 39); +} + +/*static*/ void +square20(uint32_t *d, const uint32_t *a) +{ + uint32_t t[39]; + + t[ 0] = MUL15(a[ 0], a[ 0]); + t[ 1] = ((MUL15(a[ 0], a[ 1])) << 1); + t[ 2] = MUL15(a[ 1], a[ 1]) + + ((MUL15(a[ 0], a[ 2])) << 1); + t[ 3] = ((MUL15(a[ 0], a[ 3]) + + MUL15(a[ 1], a[ 2])) << 1); + t[ 4] = MUL15(a[ 2], a[ 2]) + + ((MUL15(a[ 0], a[ 4]) + + MUL15(a[ 1], a[ 3])) << 1); + t[ 5] = ((MUL15(a[ 0], a[ 5]) + + MUL15(a[ 1], a[ 4]) + + MUL15(a[ 2], a[ 3])) << 1); + t[ 6] = MUL15(a[ 3], a[ 3]) + + ((MUL15(a[ 0], a[ 6]) + + MUL15(a[ 1], a[ 5]) + + MUL15(a[ 2], a[ 4])) << 1); + t[ 7] = ((MUL15(a[ 0], a[ 7]) + + MUL15(a[ 1], a[ 6]) + + MUL15(a[ 2], a[ 5]) + + MUL15(a[ 3], a[ 4])) << 1); + t[ 8] = MUL15(a[ 4], a[ 4]) + + ((MUL15(a[ 0], a[ 8]) + + MUL15(a[ 1], a[ 7]) + + MUL15(a[ 2], a[ 6]) + + MUL15(a[ 3], a[ 5])) << 1); + t[ 9] = ((MUL15(a[ 0], a[ 9]) + + MUL15(a[ 1], a[ 8]) + + MUL15(a[ 2], a[ 7]) + + MUL15(a[ 3], a[ 6]) + + MUL15(a[ 4], a[ 5])) << 1); + t[10] = MUL15(a[ 5], a[ 5]) + + ((MUL15(a[ 0], a[10]) + + MUL15(a[ 1], a[ 9]) + + MUL15(a[ 2], a[ 8]) + + MUL15(a[ 3], a[ 7]) + + MUL15(a[ 4], a[ 6])) << 1); + t[11] = ((MUL15(a[ 0], a[11]) + + MUL15(a[ 1], a[10]) + + MUL15(a[ 2], a[ 9]) + + MUL15(a[ 3], a[ 8]) + + MUL15(a[ 4], a[ 7]) + + MUL15(a[ 5], a[ 6])) << 1); + t[12] = MUL15(a[ 6], a[ 6]) + + ((MUL15(a[ 0], a[12]) + + MUL15(a[ 1], a[11]) + + MUL15(a[ 2], a[10]) + + MUL15(a[ 3], a[ 9]) + + MUL15(a[ 4], a[ 8]) + + MUL15(a[ 5], a[ 7])) << 1); + t[13] = ((MUL15(a[ 0], a[13]) + + MUL15(a[ 1], a[12]) + + MUL15(a[ 2], a[11]) + + MUL15(a[ 3], a[10]) + + MUL15(a[ 4], a[ 9]) + + MUL15(a[ 5], a[ 8]) + + MUL15(a[ 6], a[ 7])) << 1); + t[14] = MUL15(a[ 7], a[ 7]) + + ((MUL15(a[ 0], a[14]) + + MUL15(a[ 1], a[13]) + + MUL15(a[ 2], a[12]) + + MUL15(a[ 3], a[11]) + + MUL15(a[ 4], a[10]) + + MUL15(a[ 5], a[ 9]) + + MUL15(a[ 6], a[ 8])) << 1); + t[15] = ((MUL15(a[ 0], a[15]) + + MUL15(a[ 1], a[14]) + + MUL15(a[ 2], a[13]) + + MUL15(a[ 3], a[12]) + + MUL15(a[ 4], a[11]) + + MUL15(a[ 5], a[10]) + + MUL15(a[ 6], a[ 9]) + + MUL15(a[ 7], a[ 8])) << 1); + t[16] = MUL15(a[ 8], a[ 8]) + + ((MUL15(a[ 0], a[16]) + + MUL15(a[ 1], a[15]) + + MUL15(a[ 2], a[14]) + + MUL15(a[ 3], a[13]) + + MUL15(a[ 4], a[12]) + + MUL15(a[ 5], a[11]) + + MUL15(a[ 6], a[10]) + + MUL15(a[ 7], a[ 9])) << 1); + t[17] = ((MUL15(a[ 0], a[17]) + + MUL15(a[ 1], a[16]) + + MUL15(a[ 2], a[15]) + + MUL15(a[ 3], a[14]) + + MUL15(a[ 4], a[13]) + + MUL15(a[ 5], a[12]) + + MUL15(a[ 6], a[11]) + + MUL15(a[ 7], a[10]) + + MUL15(a[ 8], a[ 9])) << 1); + t[18] = MUL15(a[ 9], a[ 9]) + + ((MUL15(a[ 0], a[18]) + + MUL15(a[ 1], a[17]) + + MUL15(a[ 2], a[16]) + + MUL15(a[ 3], a[15]) + + MUL15(a[ 4], a[14]) + + MUL15(a[ 5], a[13]) + + MUL15(a[ 6], a[12]) + + MUL15(a[ 7], a[11]) + + MUL15(a[ 8], a[10])) << 1); + t[19] = ((MUL15(a[ 0], a[19]) + + MUL15(a[ 1], a[18]) + + MUL15(a[ 2], a[17]) + + MUL15(a[ 3], a[16]) + + MUL15(a[ 4], a[15]) + + MUL15(a[ 5], a[14]) + + MUL15(a[ 6], a[13]) + + MUL15(a[ 7], a[12]) + + MUL15(a[ 8], a[11]) + + MUL15(a[ 9], a[10])) << 1); + t[20] = MUL15(a[10], a[10]) + + ((MUL15(a[ 1], a[19]) + + MUL15(a[ 2], a[18]) + + MUL15(a[ 3], a[17]) + + MUL15(a[ 4], a[16]) + + MUL15(a[ 5], a[15]) + + MUL15(a[ 6], a[14]) + + MUL15(a[ 7], a[13]) + + MUL15(a[ 8], a[12]) + + MUL15(a[ 9], a[11])) << 1); + t[21] = ((MUL15(a[ 2], a[19]) + + MUL15(a[ 3], a[18]) + + MUL15(a[ 4], a[17]) + + MUL15(a[ 5], a[16]) + + MUL15(a[ 6], a[15]) + + MUL15(a[ 7], a[14]) + + MUL15(a[ 8], a[13]) + + MUL15(a[ 9], a[12]) + + MUL15(a[10], a[11])) << 1); + t[22] = MUL15(a[11], a[11]) + + ((MUL15(a[ 3], a[19]) + + MUL15(a[ 4], a[18]) + + MUL15(a[ 5], a[17]) + + MUL15(a[ 6], a[16]) + + MUL15(a[ 7], a[15]) + + MUL15(a[ 8], a[14]) + + MUL15(a[ 9], a[13]) + + MUL15(a[10], a[12])) << 1); + t[23] = ((MUL15(a[ 4], a[19]) + + MUL15(a[ 5], a[18]) + + MUL15(a[ 6], a[17]) + + MUL15(a[ 7], a[16]) + + MUL15(a[ 8], a[15]) + + MUL15(a[ 9], a[14]) + + MUL15(a[10], a[13]) + + MUL15(a[11], a[12])) << 1); + t[24] = MUL15(a[12], a[12]) + + ((MUL15(a[ 5], a[19]) + + MUL15(a[ 6], a[18]) + + MUL15(a[ 7], a[17]) + + MUL15(a[ 8], a[16]) + + MUL15(a[ 9], a[15]) + + MUL15(a[10], a[14]) + + MUL15(a[11], a[13])) << 1); + t[25] = ((MUL15(a[ 6], a[19]) + + MUL15(a[ 7], a[18]) + + MUL15(a[ 8], a[17]) + + MUL15(a[ 9], a[16]) + + MUL15(a[10], a[15]) + + MUL15(a[11], a[14]) + + MUL15(a[12], a[13])) << 1); + t[26] = MUL15(a[13], a[13]) + + ((MUL15(a[ 7], a[19]) + + MUL15(a[ 8], a[18]) + + MUL15(a[ 9], a[17]) + + MUL15(a[10], a[16]) + + MUL15(a[11], a[15]) + + MUL15(a[12], a[14])) << 1); + t[27] = ((MUL15(a[ 8], a[19]) + + MUL15(a[ 9], a[18]) + + MUL15(a[10], a[17]) + + MUL15(a[11], a[16]) + + MUL15(a[12], a[15]) + + MUL15(a[13], a[14])) << 1); + t[28] = MUL15(a[14], a[14]) + + ((MUL15(a[ 9], a[19]) + + MUL15(a[10], a[18]) + + MUL15(a[11], a[17]) + + MUL15(a[12], a[16]) + + MUL15(a[13], a[15])) << 1); + t[29] = ((MUL15(a[10], a[19]) + + MUL15(a[11], a[18]) + + MUL15(a[12], a[17]) + + MUL15(a[13], a[16]) + + MUL15(a[14], a[15])) << 1); + t[30] = MUL15(a[15], a[15]) + + ((MUL15(a[11], a[19]) + + MUL15(a[12], a[18]) + + MUL15(a[13], a[17]) + + MUL15(a[14], a[16])) << 1); + t[31] = ((MUL15(a[12], a[19]) + + MUL15(a[13], a[18]) + + MUL15(a[14], a[17]) + + MUL15(a[15], a[16])) << 1); + t[32] = MUL15(a[16], a[16]) + + ((MUL15(a[13], a[19]) + + MUL15(a[14], a[18]) + + MUL15(a[15], a[17])) << 1); + t[33] = ((MUL15(a[14], a[19]) + + MUL15(a[15], a[18]) + + MUL15(a[16], a[17])) << 1); + t[34] = MUL15(a[17], a[17]) + + ((MUL15(a[15], a[19]) + + MUL15(a[16], a[18])) << 1); + t[35] = ((MUL15(a[16], a[19]) + + MUL15(a[17], a[18])) << 1); + t[36] = MUL15(a[18], a[18]) + + ((MUL15(a[17], a[19])) << 1); + t[37] = ((MUL15(a[18], a[19])) << 1); + t[38] = MUL15(a[19], a[19]); + + d[39] = norm13(d, t, 39); +} + +#endif + +/* + * Perform a "final reduction" in field F255 (field for Curve25519) + * The source value must be less than twice the modulus. If the value + * is not lower than the modulus, then the modulus is subtracted and + * this function returns 1; otherwise, it leaves it untouched and it + * returns 0. + */ +static uint32_t +reduce_final_f255(uint32_t *d) +{ + uint32_t t[20]; + uint32_t cc; + int i; + + memcpy(t, d, sizeof t); + cc = 19; + for (i = 0; i < 20; i ++) { + uint32_t w; + + w = t[i] + cc; + cc = w >> 13; + t[i] = w & 0x1FFF; + } + cc = t[19] >> 8; + t[19] &= 0xFF; + CCOPY(cc, d, t, sizeof t); + return cc; +} + +static void +f255_mulgen(uint32_t *d, const uint32_t *a, const uint32_t *b, int square) +{ + uint32_t t[40], cc, w; + + /* + * Compute raw multiplication. All result words fit in 13 bits + * each; upper word (t[39]) must fit on 5 bits, since the product + * of two 256-bit integers must fit on 512 bits. + */ + if (square) { + square20(t, a); + } else { + mul20(t, a, b); + } + + /* + * Modular reduction: each high word is added where necessary. + * Since the modulus is 2^255-19 and word 20 corresponds to + * offset 20*13 = 260, word 20+k must be added to word k with + * a factor of 19*2^5 = 608. The extra bits in word 19 are also + * added that way. + */ + cc = MUL15(t[19] >> 8, 19); + t[19] &= 0xFF; + +#define MM1(x) do { \ + w = t[x] + cc + MUL15(t[(x) + 20], 608); \ + t[x] = w & 0x1FFF; \ + cc = w >> 13; \ + } while (0) + + MM1( 0); + MM1( 1); + MM1( 2); + MM1( 3); + MM1( 4); + MM1( 5); + MM1( 6); + MM1( 7); + MM1( 8); + MM1( 9); + MM1(10); + MM1(11); + MM1(12); + MM1(13); + MM1(14); + MM1(15); + MM1(16); + MM1(17); + MM1(18); + MM1(19); + +#undef MM1 + + cc = MUL15(w >> 8, 19); + t[19] &= 0xFF; + +#define MM2(x) do { \ + w = t[x] + cc; \ + d[x] = w & 0x1FFF; \ + cc = w >> 13; \ + } while (0) + + MM2( 0); + MM2( 1); + MM2( 2); + MM2( 3); + MM2( 4); + MM2( 5); + MM2( 6); + MM2( 7); + MM2( 8); + MM2( 9); + MM2(10); + MM2(11); + MM2(12); + MM2(13); + MM2(14); + MM2(15); + MM2(16); + MM2(17); + MM2(18); + MM2(19); + +#undef MM2 +} + +/* + * Perform a multiplication of two integers modulo 2^255-19. + * Operands are arrays of 20 words, each containing 13 bits of data, in + * little-endian order. Input value may be up to 2^256-1; on output, value + * fits on 256 bits and is lower than twice the modulus. + * + * f255_mul() is the general multiplication, f255_square() is specialised + * for squarings. + */ +#define f255_mul(d, a, b) f255_mulgen(d, a, b, 0) +#define f255_square(d, a) f255_mulgen(d, a, a, 1) + +/* + * Add two values in F255. Partial reduction is performed (down to less + * than twice the modulus). + */ +static void +f255_add(uint32_t *d, const uint32_t *a, const uint32_t *b) +{ + int i; + uint32_t cc, w; + + cc = 0; + for (i = 0; i < 20; i ++) { + w = a[i] + b[i] + cc; + d[i] = w & 0x1FFF; + cc = w >> 13; + } + cc = MUL15(w >> 8, 19); + d[19] &= 0xFF; + for (i = 0; i < 20; i ++) { + w = d[i] + cc; + d[i] = w & 0x1FFF; + cc = w >> 13; + } +} + +/* + * Subtract one value from another in F255. Partial reduction is + * performed (down to less than twice the modulus). + */ +static void +f255_sub(uint32_t *d, const uint32_t *a, const uint32_t *b) +{ + /* + * We actually compute a - b + 2*p, so that the final value is + * necessarily positive. + */ + int i; + uint32_t cc, w; + + cc = (uint32_t)-38; + for (i = 0; i < 20; i ++) { + w = a[i] - b[i] + cc; + d[i] = w & 0x1FFF; + cc = ARSH(w, 13); + } + cc = MUL15((w + 0x200) >> 8, 19); + d[19] &= 0xFF; + for (i = 0; i < 20; i ++) { + w = d[i] + cc; + d[i] = w & 0x1FFF; + cc = w >> 13; + } +} + +/* + * Multiply an integer by the 'A24' constant (121665). Partial reduction + * is performed (down to less than twice the modulus). + */ +static void +f255_mul_a24(uint32_t *d, const uint32_t *a) +{ + int i; + uint32_t cc, w; + + cc = 0; + for (i = 0; i < 20; i ++) { + w = MUL15(a[i], 121665) + cc; + d[i] = w & 0x1FFF; + cc = w >> 13; + } + cc = MUL15(w >> 8, 19); + d[19] &= 0xFF; + for (i = 0; i < 20; i ++) { + w = d[i] + cc; + d[i] = w & 0x1FFF; + cc = w >> 13; + } +} + +static const unsigned char GEN[] PROGMEM = { + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char ORDER[] PROGMEM = { + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +static const unsigned char * +api_generator(int curve, size_t *len) +{ + (void)curve; + *len = 32; + return GEN; +} + +static const unsigned char * +api_order(int curve, size_t *len) +{ + (void)curve; + *len = 32; + return ORDER; +} + +static size_t +api_xoff(int curve, size_t *len) +{ + (void)curve; + *len = 32; + return 0; +} + +static void +cswap(uint32_t *a, uint32_t *b, uint32_t ctl) +{ + int i; + + ctl = -ctl; + for (i = 0; i < 20; i ++) { + uint32_t aw, bw, tw; + + aw = a[i]; + bw = b[i]; + tw = ctl & (aw ^ bw); + a[i] = aw ^ tw; + b[i] = bw ^ tw; + } +} + +static uint32_t +api_mul(unsigned char *G, size_t Glen, + const unsigned char *kb, size_t kblen, int curve) +{ + uint32_t x1[20], x2[20], x3[20], z2[20], z3[20]; + uint32_t a[20], aa[20], b[20], bb[20]; + uint32_t c[20], d[20], e[20], da[20], cb[20]; + unsigned char k[32]; + uint32_t swap; + int i; + + (void)curve; + + /* + * Points are encoded over exactly 32 bytes. Multipliers must fit + * in 32 bytes as well. + * RFC 7748 mandates that the high bit of the last point byte must + * be ignored/cleared. + */ + if (Glen != 32 || kblen > 32) { + return 0; + } + G[31] &= 0x7F; + + /* + * Initialise variables x1, x2, z2, x3 and z3. We set all of them + * into Montgomery representation. + */ + x1[19] = le8_to_le13(x1, G, 32); + memcpy(x3, x1, sizeof x1); + memset(z2, 0, sizeof z2); + memset(x2, 0, sizeof x2); + x2[0] = 1; + memset(z3, 0, sizeof z3); + z3[0] = 1; + + memset(k, 0, (sizeof k) - kblen); + memcpy(k + (sizeof k) - kblen, kb, kblen); + k[31] &= 0xF8; + k[0] &= 0x7F; + k[0] |= 0x40; + + /* obsolete + print_int("x1", x1); + */ + + swap = 0; + for (i = 254; i >= 0; i --) { + uint32_t kt; + + kt = (k[31 - (i >> 3)] >> (i & 7)) & 1; + swap ^= kt; + cswap(x2, x3, swap); + cswap(z2, z3, swap); + swap = kt; + + /* obsolete + print_int("x2", x2); + print_int("z2", z2); + print_int("x3", x3); + print_int("z3", z3); + */ + + f255_add(a, x2, z2); + f255_square(aa, a); + f255_sub(b, x2, z2); + f255_square(bb, b); + f255_sub(e, aa, bb); + f255_add(c, x3, z3); + f255_sub(d, x3, z3); + f255_mul(da, d, a); + f255_mul(cb, c, b); + + /* obsolete + print_int("a ", a); + print_int("aa", aa); + print_int("b ", b); + print_int("bb", bb); + print_int("e ", e); + print_int("c ", c); + print_int("d ", d); + print_int("da", da); + print_int("cb", cb); + */ + + f255_add(x3, da, cb); + f255_square(x3, x3); + f255_sub(z3, da, cb); + f255_square(z3, z3); + f255_mul(z3, z3, x1); + f255_mul(x2, aa, bb); + f255_mul_a24(z2, e); + f255_add(z2, z2, aa); + f255_mul(z2, e, z2); + + /* obsolete + print_int("x2", x2); + print_int("z2", z2); + print_int("x3", x3); + print_int("z3", z3); + */ + } + cswap(x2, x3, swap); + cswap(z2, z3, swap); + + /* + * Inverse z2 with a modular exponentiation. This is a simple + * square-and-multiply algorithm; we mutualise most non-squarings + * since the exponent contains almost only ones. + */ + memcpy(a, z2, sizeof z2); + for (i = 0; i < 15; i ++) { + f255_square(a, a); + f255_mul(a, a, z2); + } + memcpy(b, a, sizeof a); + for (i = 0; i < 14; i ++) { + int j; + + for (j = 0; j < 16; j ++) { + f255_square(b, b); + } + f255_mul(b, b, a); + } + for (i = 14; i >= 0; i --) { + f255_square(b, b); + if ((0xFFEB >> i) & 1) { + f255_mul(b, z2, b); + } + } + f255_mul(x2, x2, b); + reduce_final_f255(x2); + le13_to_le8(G, 32, x2); + return 1; +} + +static size_t +api_mulgen(unsigned char *R, + const unsigned char *x, size_t xlen, int curve) +{ + const unsigned char *G; + size_t Glen; + + G = api_generator(curve, &Glen); + memcpy_P(R, G, Glen); + api_mul(R, Glen, x, xlen, curve); + return Glen; +} + +static uint32_t +api_muladd(unsigned char *A, const unsigned char *B, size_t len, + const unsigned char *x, size_t xlen, + const unsigned char *y, size_t ylen, int curve) +{ + /* + * We don't implement this method, since it is used for ECDSA + * only, and there is no ECDSA over Curve25519 (which instead + * uses EdDSA). + */ + (void)A; + (void)B; + (void)len; + (void)x; + (void)xlen; + (void)y; + (void)ylen; + (void)curve; + return 0; +} + +/* see bearssl_ec.h */ +const br_ec_impl br_ec_c25519_m15 PROGMEM = { + (uint32_t)0x20000000, + &api_generator, + &api_order, + &api_xoff, + &api_mul, + &api_mulgen, + &api_muladd +}; \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_aes_gcm_lib.c b/lib/libesp32/Berry/default/be_crypto_lib.c similarity index 59% rename from lib/libesp32/Berry/default/be_aes_gcm_lib.c rename to lib/libesp32/Berry/default/be_crypto_lib.c index 3276cdd05..04a10b28e 100644 --- a/lib/libesp32/Berry/default/be_aes_gcm_lib.c +++ b/lib/libesp32/Berry/default/be_crypto_lib.c @@ -14,23 +14,29 @@ extern int m_aes_gcm_encryt(bvm *vm); extern int m_aes_gcm_decryt(bvm *vm); extern int m_aes_gcm_tag(bvm *vm); -#if BE_USE_PRECOMPILED_OBJECT -#include "../generate/be_fixed_be_class_aes_gcm.h" -#endif +extern int m_ec_c25519_pubkey(bvm *vm); +extern int m_ec_c25519_sharedkey(bvm *vm); -void be_load_aes_gcm_lib(bvm *vm) { +#include "../generate/be_fixed_be_class_aes_gcm.h" +#include "../generate/be_fixed_be_class_ec_c25519.h" + +void be_load_crypto_lib(bvm *vm) { // insert the class GCM in module AES be_newmodule(vm); - be_setname(vm, -1, "AES"); - be_setglobal(vm, "AES"); + be_setname(vm, -1, "crypto"); + be_setglobal(vm, "crypto"); be_pushntvclass(vm, &be_class_aes_gcm); - be_setmember(vm, -2, "GCM"); + be_setmember(vm, -2, "AES_GCM"); + be_pop(vm, 1); + + be_pushntvclass(vm, &be_class_ec_c25519); + be_setmember(vm, -2, "EC_C25519"); be_pop(vm, 2); } /* @const_object_info_begin -class be_class_aes_gcm (scope: global, name: GCM) { +class be_class_aes_gcm (scope: global, name: AES_GCM) { .p1, var .p2, var @@ -39,6 +45,12 @@ class be_class_aes_gcm (scope: global, name: GCM) { decrypt, func(m_aes_gcm_decryt) tag, func(m_aes_gcm_tag) } + +class be_class_ec_c25519 (scope: global, name: EC_C25519) { + public_key, func(m_ec_c25519_pubkey) + shared_key, func(m_ec_c25519_sharedkey) +} + @const_object_info_end */ #endif // USE_ALEXA_AVS diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index 04e33c3d2..189da0e61 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -109,7 +109,7 @@ extern void be_load_Driver_class(bvm *vm); extern void be_load_Timer_class(bvm *vm); extern void be_load_driver_i2c_lib(bvm *vm); extern void be_load_md5_lib(bvm *vm); -extern void be_load_aes_gcm_lib(bvm *vm); +extern void be_load_crypto_lib(bvm *vm); #ifdef USE_I2S_AUDIO_BERRY extern void be_load_driver_audio_lib(bvm *vm); @@ -142,7 +142,7 @@ BERRY_API void be_load_custom_libs(bvm *vm) be_load_Driver_class(vm); be_load_md5_lib(vm); #ifdef USE_ALEXA_AVS - be_load_aes_gcm_lib(vm); + be_load_crypto_lib(vm); #endif #ifdef USE_I2C be_load_wirelib(vm); diff --git a/lib/libesp32/Berry/default/embedded/test_crypto.be b/lib/libesp32/Berry/default/embedded/test_crypto.be new file mode 100644 index 000000000..f2edbfee5 --- /dev/null +++ b/lib/libesp32/Berry/default/embedded/test_crypto.be @@ -0,0 +1,30 @@ +ec = crypto.EC_C25519() + +# Alice +sk_A = bytes('77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a') +pk_A = ec.public_key(sk_A) +assert(pk_A == bytes('8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a')) + +# Bob +sk_B = bytes('5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb') +pk_B = ec.public_key(sk_B) +assert(pk_B == bytes('de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f')) + +psk = ec.shared_key(sk_A, pk_B) +assert(psk == bytes('4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742')) +psk2 = ec.shared_key(sk_B, pk_A) +assert(psk2 == bytes('4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742')) + +#- test vectors from RFC77748 + + Alice's private key, a: + 77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a + Alice's public key, X25519(a, 9): + 8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a + Bob's private key, b: + 5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb + Bob's public key, X25519(b, 9): + de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f + Their shared secret, K: + 4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742 +-# diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 905ac6f52..40a05da5a 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,663 +1,666 @@ -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_SDCARD_CS; -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_CNTR1; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_get_power; -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_load_font; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_lv_draw_mask_saved; -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_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_GCM; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -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_lv_draw_mask_common_dsc; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str__end_transmission; -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_RFRECV; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_SPI_DC; extern const bcstring be_const_str_SWT1; -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_lv_line; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_REL1; -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_MAX31855DO; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_HPMA_TX; -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_lv_tabview; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_SYMBOL_WARNING; extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_KEY1_INV_NP; -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_lv_obj; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_as; extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_MCP39F5_RST; -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_lv_draw_mask_radius_param_cfg; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_web_send_decimal; extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_toupper; -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_BL0940_RX; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_ZIGBEE_RX; extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -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_GPS_RX; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_PWM1_INV; -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_SYMBOL_UP; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_ctypes_bytes; extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_search; +extern const bcstring be_const_str_lv_tileview; extern const bcstring be_const_str_srand; extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_lv_label; -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_SSD1331_CS; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_lv_draw_mask_radius_param; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_time_str; extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_cosh; -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_HLW_CF; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_OPEN_DRAIN; -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_resize; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_DEEPSLEEP; -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_lv_switch; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_ADC_BUTTON_INV; extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_lv_draw_mask_map_param; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_lv_draw_mask_fade_param; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_lv_draw_mask_line_param; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_lower; extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_lv_draw_mask_angle_param; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_dot_def; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_lv_draw_rect_dsc; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_get; extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_lv_draw_label_dsc; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_add_driver; extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_lv_sqrt_res; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_deg; extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_lv_area; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_lv_draw_mask_saved; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_lv_draw_img_dsc; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_OLED_RESET; extern const bcstring be_const_str_class; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_lv_point; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_lv_draw_line_dsc; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_read_bytes; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index e1956547d..239d3ac8c 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,992 +1,997 @@ -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_lv_area); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_setmember); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_OneWire); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SDCARD_CS); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &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(CNTR1, "CNTR1", 510376965u, 0, 5, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_BACKLIGHT); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_KEY1_NP); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, NULL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_lv_draw_mask_angle_param_cfg); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_draw_rect_dsc); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, NULL); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, NULL); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); -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_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_TASMOTACLIENT_TXD); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, NULL); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SYMBOL_POWER); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SAIR_TX); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_TM1638STB); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SYMBOL_AUDIO); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_setitem); -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(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_SYMBOL_MINUS); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, 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, &be_const_str_lv_draw_mask_saved); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); -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(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_NRG_SEL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_SM16716_DAT); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_TM1638CLK); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_MIEL_HVAC_RX); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, NULL); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_DHT11); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_depower); -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(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(GCM, "GCM", 3790320054u, 0, 3, &be_const_str_SPI_MOSI); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_ROT1B_NP); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &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, NULL); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_TM1637CLK); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_arg_size); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_ETH_PHY_MDC); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_HIGH); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_LEDLNK_INV); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_AudioGenerator); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_DDS2382_RX); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str__cmd); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, NULL); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_WEBCAM_XCLK); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &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_lv_draw_mask_common_dsc); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); -be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, NULL); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_ILI9488_CS); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SAIR_RX); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, NULL); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_SYMBOL_CUT); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, NULL); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_lv_sqrt_res); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_FTC532); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, NULL); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str__end_transmission); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &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(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_PN532_TXD); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_lv_draw_mask_map_param); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, NULL); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, NULL); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_SYMBOL_RIGHT); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_WEBCAM_PCLK); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_lv_gauge); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_WARNING); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_lv_gauge); be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_SHELLY_DIMMER_RST_INV); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_set_power); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_WEBCAM_PSCLK); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, NULL); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_CSE7766_RX); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_SM16716_SEL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, NULL); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str__available); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_SYMBOL_BULLET); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_SYMBOL_EDIT); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_DDS2382_TX); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_WEBCAM_HREF); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, NULL); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, NULL); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, NULL); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_memory); -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, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL); -be_define_const_str(SWT1, "SWT1", 805224112u, 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(lv_line, "lv_line", 2692732914u, 0, 7, NULL); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_SPI_CS); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_lv_draw_line_dsc); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_lv_draw_mask_map_param_cfg); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_bus); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str__request_from); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); -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(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_MAX31855CLK); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_MCP39F5_TX); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_content_send_style); -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(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_ILI9341_CS); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &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, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &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(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_MIEL_HVAC_TX); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_OLED_RESET); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_SYMBOL_LEFT); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &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, NULL); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, NULL); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_lv_spinner); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_calldepth); -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(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &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, NULL); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); -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, NULL); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &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(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_ST7789_CS); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, NULL); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_RC522_CS); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); -be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_compile); -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(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 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(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, NULL); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_SSPI_MAX31865_CS1); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_SYMBOL_SD_CARD); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, NULL); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_OUTPUT_LO); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_HX711_DAT); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &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(REL1_INV, "REL1_INV", 3733155371u, 0, 8, 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, NULL); -be_define_const_str(select, "select", 297952813u, 0, 6, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_ETH_PHY_POWER); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, NULL); -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(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, NULL); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); -be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_lv_draw_mask_radius_param); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_SSPI_DC); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_SYMBOL_BATTERY_FULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, NULL); -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(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_SM16716_CLK); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_SYMBOL_MUTE); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_lv_draw_mask_fade_param); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_DYP_RX); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_CSE7761_RX); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_ETH_PHY_MDIO); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_check_privileged_access); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_content_send); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); -be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &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(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SPI_CLK); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SYMBOL_COPY); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_get); -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(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, 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(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_NONE); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_SWT1_NP); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, 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(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_PN532_RXD); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SM2135_DAT); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_SR04_TRIG); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_byte); -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(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_SDM630_RX); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_SDM72_TX); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str___lower__); -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(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_SWT1_PD); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &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(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_PZEM004_RX); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); -be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_lv_draw_label_dsc); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, 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_SSD1331_CS); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str__buffer); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_MGC3130_XFER); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SYMBOL_BLUETOOTH); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, NULL); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_OUTPUT); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_RF_SENSOR); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_SYMBOL_BATTERY_3); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &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, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_OUTPUT_HI); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_BOILER_OT_TX); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_add_rule); -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(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &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(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_lv_draw_mask_line_param_cfg); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, NULL); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_as); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SAIR_RX); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_exec_cmd); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, &be_const_str_as); be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, NULL); -be_define_const_str(str, "str", 3259748752u, 0, 3, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, NULL); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SDM72_RX); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, NULL); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_lv_draw_mask_angle_param); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_find); -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(cos, "cos", 4220379804u, 0, 3, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &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, NULL); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SYMBOL_UPLOAD); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &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, NULL); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SYMBOL_DOWN); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_SSPI_MISO); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, NULL); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_LED1_INV); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_MCP39F5_RX); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, NULL); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, 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_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_LE01MR_TX); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, NULL); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_ST7789_DC); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_ZEROCROSS); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_codedump); -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, NULL); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_state); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, NULL); be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_check_privileged_access); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_PZEM0XX_TX); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_lv_draw_mask_radius_param); +be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_lv_draw_mask_common_dsc); +be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_I2C_SDA); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_TXD); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); +be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, NULL); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, &be_const_str_lv_draw_mask_map_param); +be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_lv_draw_mask_map_param_cfg); +be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, NULL); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_finish); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, NULL); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_TASMOTACLIENT_TXD); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_ETH_PHY_MDC); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SM2135_DAT); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_SYMBOL_SD_CARD); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_MCP39F5_RX); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_WEBCAM_SIOC); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SSPI_MOSI); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_FTC532); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_IRSEND); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_P9813_DAT); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_SYMBOL_BULLET); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_MIEL_HVAC_TX); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_lv_draw_mask_fade_param); +be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SDS0X1_TX); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_lv_draw_mask_line_param); +be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_ADC_RANGE); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_SYMBOL_KEYBOARD); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_RC522_RST); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_draw_mask_angle_param); +be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_PN532_RXD); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_PN532_TXD); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_PULLUP); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_SM16716_CLK); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_ZEROCROSS); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_detect); +be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_NRG_CF1); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_REL1_INV); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SYMBOL_MINUS); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_IBEACON_RX); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_SDM120_RX); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, NULL); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, NULL); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, NULL); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_select); +be_define_const_str(select, "select", 297952813u, 0, 6, NULL); +be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_set_power); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_setmember); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_ROT1A); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_addr); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_PMS5003_TX); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_SYMBOL_DUMMY); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_TM1638CLK); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_lv_design_cb); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_MAX31855CS); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, NULL); +be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_BOILER_OT_RX); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_SSPI_MAX31865_CS1); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_TFMINIPLUS_RX); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_CSE7761_TX); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_GPS_TX); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_HRXL_RX); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, NULL); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_DDS2382_RX); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_OPEN_DRAIN); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_TUYA_RX); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_SI7021); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, NULL); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, NULL); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_PULLDOWN); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_ROT1A_NP); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SR04_ECHO); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SSPI_MISO); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, NULL); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, NULL); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, NULL); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_OUTPUT_OPEN_DRAIN); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_MHZ_TXD); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SWT1_PD); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_TUYA_TX); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_pow); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_set_light); be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, 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(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_lv_draw_mask_fade_param_cfg); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_class); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SPI_MOSI); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_DDS2382_TX); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_SYMBOL_BELL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_SYMBOL_DRIVE); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_ST7789_CS); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_SYMBOL_COPY); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_I2S_IN_SLCT); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, NULL); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_lv_sqrt_res); +be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_content_send); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SPI_DC); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_DHT11_OUT); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SYMBOL_POWER); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_RC522_CS); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SHELLY_DIMMER_RST_INV); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_lv_area); +be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_eth); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_AudioFileSource); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); +be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, NULL); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, NULL); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SBR_RX); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_char); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_MAX7219CS); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_RFRECV); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_PROJECTOR_CTRL_TX); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_lv_draw_img_dsc); +be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_DYP_RX); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, NULL); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_OneWire); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_TM1637CLK); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_SPI_CLK); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_SYMBOL_OK); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, NULL); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, NULL); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_PROJECTOR_CTRL_RX); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_lv_draw_mask_angle_param_cfg); +be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, NULL); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_SYMBOL_UPLOAD); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_SSPI_DC); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, NULL); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, NULL); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SDM120_TX); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_class); be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_SDM72_TX); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_lv_draw_mask_line_param_cfg); +be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_lv_point); +be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, NULL); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_WEBCAM_PSCLK); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_WIEGAND_D1); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_lv_draw_line_dsc); +be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, NULL); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_SYMBOL_SAVE); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_lv_spinner); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_lv_draw_mask_radius_param_cfg); +be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_SPI_MISO); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, NULL); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_MAX7219DIN); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_lv_draw_mask_fade_param_cfg); +be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str__end_transmission); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_SYMBOL_BATTERY_3); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, NULL); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SSD1351_DC); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_content_start); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_SYMBOL_EYE_CLOSE); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_WEBCAM_RESET); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_push); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_MGC3130_RESET, - (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_copy, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_SYMBOL_BELL, - (const bstring *)&be_const_str_GPS_TX, - (const bstring *)&be_const_str_MAX7219DIN, - (const bstring *)&be_const_str_hex, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_def, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MAX, - (const bstring *)&be_const_str_WEBCAM_PWDN, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_IRSEND, - (const bstring *)&be_const_str_MP3_DFR562, - (const bstring *)&be_const_str_finish, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_SYMBOL_PLAY, + (const bstring *)&be_const_str_SWT1, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str_HPMA_TX, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_HX711_SCK, NULL, - (const bstring *)&be_const_str_IRRECV, - (const bstring *)&be_const_str_ROT1A_NP, - (const bstring *)&be_const_str_PZEM0XX_TX, - (const bstring *)&be_const_str_TUYA_TX, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_INPUT, - (const bstring *)&be_const_str_RDM6300_RX, - (const bstring *)&be_const_str_NRG_SEL_INV, - (const bstring *)&be_const_str_lv_point, - (const bstring *)&be_const_str_MAX31855CS, - NULL, - (const bstring *)&be_const_str_NRF24_DC, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_raise, - (const bstring *)&be_const_str_ROT1A, - (const bstring *)&be_const_str_NRG_CF1, - (const bstring *)&be_const_str_HPMA_RX, - (const bstring *)&be_const_str_exec_cmd, - (const bstring *)&be_const_str_exp, - (const bstring *)&be_const_str_SYMBOL_BACKSPACE, - NULL, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - NULL, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_BOILER_OT_RX, - (const bstring *)&be_const_str_PMS5003_RX, - (const bstring *)&be_const_str_PULLUP, - NULL, - (const bstring *)&be_const_str_TASMOTACLIENT_RST, - (const bstring *)&be_const_str_GCM, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_SSPI_MOSI, - NULL, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_SYMBOL_OK, - (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_ADC_LIGHT, - NULL, - (const bstring *)&be_const_str_lv_chart, - (const bstring *)&be_const_str_LED1, - NULL, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str_Tasmota, - (const bstring *)&be_const_str_read, - (const bstring *)&be_const_str_SYMBOL_LIST, - (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_save, - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_NEOPOOL_RX, - (const bstring *)&be_const_str_arg_name, - NULL, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_SYMBOL_KEYBOARD, - (const bstring *)&be_const_str_WEBCAM_RESET, - (const bstring *)&be_const_str_RFRECV, - (const bstring *)&be_const_str_format, - (const bstring *)&be_const_str_RC522_RST, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_SYMBOL_HOME, - (const bstring *)&be_const_str_SYMBOL_WARNING, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_SYMBOL_LOOP, - (const bstring *)&be_const_str_LE01MR_RX, - (const bstring *)&be_const_str_SPI_MISO, - (const bstring *)&be_const_str_SM2135_CLK, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_lv_calendar, - (const bstring *)&be_const_str_TFMINIPLUS_RX, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_IBEACON_TX, - (const bstring *)&be_const_str_WS2812, + (const bstring *)&be_const_str_state, (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_web_send_decimal, + NULL, + (const bstring *)&be_const_str_IEM3000_RX, + (const bstring *)&be_const_str_get_power, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_SPI_CS, + (const bstring *)&be_const_str_SDCARD_CS, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_find, + (const bstring *)&be_const_str_read8, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_content_stop, + (const bstring *)&be_const_str_geti, + (const bstring *)&be_const_str_lv_group, + (const bstring *)&be_const_str__request_from, + (const bstring *)&be_const_str_SYMBOL_VOLUME_MAX, + NULL, + (const bstring *)&be_const_str_MCP39F5_TX, + (const bstring *)&be_const_str_SYMBOL_LIST, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_wire2, + (const bstring *)&be_const_str__available, + (const bstring *)&be_const_str_TASMOTACLIENT_RXD, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, + NULL, + (const bstring *)&be_const_str_SYMBOL_DOWN, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_SM16716_DAT, + (const bstring *)&be_const_str_ARIRFSEL, (const bstring *)&be_const_str_KEY1_PD, - (const bstring *)&be_const_str_TELEINFO_ENABLE, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_VL53L0X_XSHUT1, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_BACKLIGHT, + (const bstring *)&be_const_str_MHZ_RXD, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_KEY1_INV, (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str__write, - (const bstring *)&be_const_str_PWM1, - (const bstring *)&be_const_str_WEBCAM_SIOC, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_PZEM017_RX, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_WEBCAM_SIOD, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_NRG_SEL, + NULL, + (const bstring *)&be_const_str_dump, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_Tasmota, + (const bstring *)&be_const_str_SYMBOL_BACKSPACE, + (const bstring *)&be_const_str_SYMBOL_PLUS, + (const bstring *)&be_const_str_response_append, + (const bstring *)&be_const_str_lv_textarea, + (const bstring *)&be_const_str_LE01MR_TX, + NULL, + (const bstring *)&be_const_str_WEBCAM_PCLK, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_WEBCAM_HREF, + (const bstring *)&be_const_str_EXS_ENABLE, + NULL, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_SYMBOL_WIFI, + NULL, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_exec_rules, + (const bstring *)&be_const_str_LED1_INV, + NULL, + (const bstring *)&be_const_str_WIEGAND_D0, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_SDS0X1_RX, (const bstring *)&be_const_str_RA8876_CS, NULL, - (const bstring *)&be_const_str_IEM3000_TX, - (const bstring *)&be_const_str_SPI_DC, - (const bstring *)&be_const_str_SWT1, - (const bstring *)&be_const_str_get_option, - (const bstring *)&be_const_str_lv_line, - (const bstring *)&be_const_str_init, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_LMT01, NULL, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_SBR_RX, - (const bstring *)&be_const_str_SSD1351_CS, - NULL, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_try_rule, - (const bstring *)&be_const_str_var, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_lv_gauge_format_cb, - (const bstring *)&be_const_str_SYMBOL_GPS, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_lv_event_cb, - (const bstring *)&be_const_str_TFMINIPLUS_TX, - (const bstring *)&be_const_str_I2C_SCL, - (const bstring *)&be_const_str_wire1, - (const bstring *)&be_const_str_SYMBOL_FILE, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_SYMBOL_PLUS, - NULL, - (const bstring *)&be_const_str_HPMA_TX, - (const bstring *)&be_const_str__rules, - (const bstring *)&be_const_str_lv_tabview, - (const bstring *)&be_const_str_CC1101_GDO0, - NULL, - (const bstring *)&be_const_str_erase, - (const bstring *)&be_const_str_rand, - NULL, - (const bstring *)&be_const_str_SR04_ECHO, - (const bstring *)&be_const_str_MHZ_TXD, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_SSPI_CS, - (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, - (const bstring *)&be_const_str_push, - (const bstring *)&be_const_str_TASMOTACLIENT_RXD, - (const bstring *)&be_const_str_TXD, - NULL, - NULL, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_MAX7219CS, - (const bstring *)&be_const_str_tostring, - (const bstring *)&be_const_str_PULLDOWN, - (const bstring *)&be_const_str_lv_img, + (const bstring *)&be_const_str_SDM72_RX, + (const bstring *)&be_const_str_ceil, + (const bstring *)&be_const_str_LE01MR_RX, (const bstring *)&be_const_str_dot_def, - (const bstring *)&be_const_str_RXD, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_chars_in_string, - (const bstring *)&be_const_str_select, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_rtc, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, - (const bstring *)&be_const_str_addr, + (const bstring *)&be_const_str_module, + (const bstring *)&be_const_str_DCKI, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_I2C_Driver, + (const bstring *)&be_const_str_MAX31855CLK, NULL, - (const bstring *)&be_const_str_add, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_lv_design_cb, - (const bstring *)&be_const_str_SYMBOL_WIFI, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_DSB, + NULL, + (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str__write, (const bstring *)&be_const_str_KEY1_INV_NP, - (const bstring *)&be_const_str_time_dump, - (const bstring *)&be_const_str_classname, - (const bstring *)&be_const_str_lv_obj, - (const bstring *)&be_const_str_begin, - (const bstring *)&be_const_str_SYMBOL_IMAGE, - (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, - (const bstring *)&be_const_str_SYMBOL_VIDEO, - (const bstring *)&be_const_str_lv_textarea, + (const bstring *)&be_const_str_SYMBOL_SETTINGS, + (const bstring *)&be_const_str_SYMBOL_GPS, + NULL, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_setbits, + (const bstring *)&be_const_str_lv_calendar, + (const bstring *)&be_const_str_IBEACON_TX, NULL, NULL, + (const bstring *)&be_const_str_SYMBOL_STOP, + (const bstring *)&be_const_str_ILI9488_CS, + (const bstring *)&be_const_str_lv_draw_rect_dsc, + (const bstring *)&be_const_str___upper__, + (const bstring *)&be_const_str_lv_table, + (const bstring *)&be_const_str_SYMBOL_EJECT, NULL, - (const bstring *)&be_const_str_MAX7219CLK, NULL, + (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_A4988_STP, (const bstring *)&be_const_str_I2S_IN_CLK, NULL, - (const bstring *)&be_const_str_WEBCAM_SIOD, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_HX711_SCK, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_try, - (const bstring *)&be_const_str_MHZ_RXD, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_detect, - NULL, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_lv_draw_mask_radius_param_cfg, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_PZEM016_RX, - (const bstring *)&be_const_str_IEM3000_RX, - NULL, - (const bstring *)&be_const_str_AudioFileSource, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, - (const bstring *)&be_const_str_char, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_SDS0X1_TX, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_LOW, - NULL, - (const bstring *)&be_const_str_lv_draw_img_dsc, - NULL, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_PWM1_INV, - (const bstring *)&be_const_str_SYMBOL_UP, - (const bstring *)&be_const_str_SYMBOL_USB, - (const bstring *)&be_const_str_SDM120_RX, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_SYMBOL_NEW_LINE, - (const bstring *)&be_const_str_TELEINFO_RX, - NULL, - NULL, - (const bstring *)&be_const_str_TUYA_RX, - (const bstring *)&be_const_str_OPTION_A, - (const bstring *)&be_const_str_map, - (const bstring *)&be_const_str_SYMBOL_BATTERY_2, - (const bstring *)&be_const_str_lv_linemeter, - (const bstring *)&be_const_str_count, - NULL, - (const bstring *)&be_const_str_HRXL_RX, - (const bstring *)&be_const_str_content_button, - (const bstring *)&be_const_str_AudioGeneratorMP3, - NULL, - (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_exists, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_SENSOR_END, - NULL, - NULL, - (const bstring *)&be_const_str_I2S_IN_DATA, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_I2C_SDA, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_SDS0X1_RX, - (const bstring *)&be_const_str_SYMBOL_CHARGE, - NULL, - NULL, - (const bstring *)&be_const_str_content_start, - NULL, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_str, - (const bstring *)&be_const_str_SSD1351_DC, - (const bstring *)&be_const_str_montserrat_font, + (const bstring *)&be_const_str_SYMBOL_CALL, (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_super, + (const bstring *)&be_const_str_ARIRFRCV, (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, - NULL, - (const bstring *)&be_const_str_WE517_RX, - (const bstring *)&be_const_str_SOLAXX1_TX, - (const bstring *)&be_const_str_P9813_CLK, - (const bstring *)&be_const_str_A4988_ENA, - NULL, - (const bstring *)&be_const_str_cos, - (const bstring *)&be_const_str_module, - (const bstring *)&be_const_str_HLW_CF, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_resize, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_exec_rules, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_DSB, - (const bstring *)&be_const_str_SYMBOL_NEXT, - (const bstring *)&be_const_str_insert, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_SYMBOL_DUMMY, - (const bstring *)&be_const_str_cmd, - (const bstring *)&be_const_str_nil, - (const bstring *)&be_const_str_lv_slider, - (const bstring *)&be_const_str_SYMBOL_DRIVE, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_INTERRUPT, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_lv_switch, + (const bstring *)&be_const_str_lv_tabview, (const bstring *)&be_const_str_KEY1_TC, + NULL, + (const bstring *)&be_const_str_get_free_heap, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_gen_cb, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_lv_draw_label_dsc, + (const bstring *)&be_const_str_SM2135_CLK, + (const bstring *)&be_const_str_web_send, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_RDM6300_RX, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_PZEM004_RX, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_NEOPOOL_RX, + (const bstring *)&be_const_str_LOW, + (const bstring *)&be_const_str_lv_roller, + (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_OPTION_A, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_RFSEND, + (const bstring *)&be_const_str_get_light, + NULL, + (const bstring *)&be_const_str_HLW_CF, + (const bstring *)&be_const_str_TELEINFO_ENABLE, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_digital_write, + (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_item, + (const bstring *)&be_const_str_time_dump, + (const bstring *)&be_const_str_hex, + (const bstring *)&be_const_str_TFMINIPLUS_TX, + (const bstring *)&be_const_str_on, + (const bstring *)&be_const_str_try_rule, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_elif, + (const bstring *)&be_const_str_KEY1_NP, + (const bstring *)&be_const_str_MP3_DFR562, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_SYMBOL_BATTERY_2, + (const bstring *)&be_const_str_SWT1_NP, (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_SI7021, - (const bstring *)&be_const_str_set_light, + (const bstring *)&be_const_str_DSB_OUT, + (const bstring *)&be_const_str_PWM1_INV, + (const bstring *)&be_const_str_SENSOR_END, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, + (const bstring *)&be_const_str_DEEPSLEEP, + NULL, + NULL, + (const bstring *)&be_const_str_SYMBOL_MUTE, + (const bstring *)&be_const_str_lv_event_cb, + (const bstring *)&be_const_str_deg, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_SYMBOL_HOME, + NULL, + (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str__buffer, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + NULL, + (const bstring *)&be_const_str_return, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_bus, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_SYMBOL_LEFT, + (const bstring *)&be_const_str_HPMA_RX, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_ADE7953_IRQ, + (const bstring *)&be_const_str_lv_draw_mask_saved, + (const bstring *)&be_const_str__cmd, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_SOLAXX1_RX, + NULL, + (const bstring *)&be_const_str_pin_mode, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_pop, + (const bstring *)&be_const_str_I2S_OUT_CLK, + (const bstring *)&be_const_str_SYMBOL_USB, + (const bstring *)&be_const_str_ST7789_DC, + (const bstring *)&be_const_str___lower__, + (const bstring *)&be_const_str_AS3935, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_cb_dispatch, + (const bstring *)&be_const_str_ADC_INPUT, + NULL, + (const bstring *)&be_const_str_begin, + (const bstring *)&be_const_str_wire1, + (const bstring *)&be_const_str_SYMBOL_CUT, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_MGC3130_RESET, + (const bstring *)&be_const_str_delay, + (const bstring *)&be_const_str_opt_eq, + NULL, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_INTERRUPT, + (const bstring *)&be_const_str_SSPI_CS, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_SSD1331_DC, + (const bstring *)&be_const_str_WINDMETER_SPEED, + (const bstring *)&be_const_str_collect, + (const bstring *)&be_const_str_ROT1B_NP, + (const bstring *)&be_const_str_lv_dropdown, + (const bstring *)&be_const_str_HM10_TX, + NULL, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + (const bstring *)&be_const_str_SM16716_SEL, + (const bstring *)&be_const_str_OUTPUT_HI, + (const bstring *)&be_const_str_SYMBOL_NEXT, + (const bstring *)&be_const_str_SYMBOL_DOWNLOAD, + NULL, + (const bstring *)&be_const_str_CSE7761_RX, + (const bstring *)&be_const_str_SR04_TRIG, + (const bstring *)&be_const_str_SSD1331_CS, + NULL, + (const bstring *)&be_const_str_publish, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_MAX7219CLK, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_SYMBOL_RIGHT, + NULL, + NULL, + (const bstring *)&be_const_str_OLED_RESET, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_SYMBOL_IMAGE, + NULL, + (const bstring *)&be_const_str_EPD_DATA, + NULL, + (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_PWM1, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_SSD1351_CS, NULL, (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_abs, - (const bstring *)&be_const_str_I2S_IN_SLCT, - (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_PZEM016_RX, + (const bstring *)&be_const_str_ADC_LIGHT, NULL, - (const bstring *)&be_const_str_atan + (const bstring *)&be_const_str_setitem, + (const bstring *)&be_const_str_SYMBOL_PREV, + (const bstring *)&be_const_str_OUTPUT_LO, + NULL, + NULL, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + (const bstring *)&be_const_str_if, + (const bstring *)&be_const_str_P9813_CLK, + (const bstring *)&be_const_str_SYMBOL_CHARGE, + (const bstring *)&be_const_str_SAIR_TX, + (const bstring *)&be_const_str_SYMBOL_AUDIO, + (const bstring *)&be_const_str_TASMOTACLIENT_RST, + NULL, + (const bstring *)&be_const_str_SYMBOL_UP, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_HIGH, + NULL, + (const bstring *)&be_const_str_RXD, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_LEDLNK_INV, + (const bstring *)&be_const_str_asstring, + (const bstring *)&be_const_str_toint, + (const bstring *)&be_const_str_MAX31855DO, + NULL, + (const bstring *)&be_const_str_ILI9341_DC, + NULL, + (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_remove_timer, + (const bstring *)&be_const_str_IEM3000_TX, + (const bstring *)&be_const_str_SDM630_RX, + (const bstring *)&be_const_str_I2S_IN_DATA, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_lv_list, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_SYMBOL_CLOSE, + NULL, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_I2C_SCL, + NULL, + (const bstring *)&be_const_str_SYMBOL_LOOP, + (const bstring *)&be_const_str_erase }; static const struct bconststrtab m_const_string_table = { - .size = 320, - .count = 641, + .size = 322, + .count = 644, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_aes_gcm.h b/lib/libesp32/Berry/generate/be_fixed_be_class_aes_gcm.h index a603e4de3..829383a3f 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_aes_gcm.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_aes_gcm.h @@ -18,5 +18,5 @@ BE_EXPORT_VARIABLE be_define_const_class( be_class_aes_gcm, 2, NULL, - GCM + AES_GCM ); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_ec_c25519.h b/lib/libesp32/Berry/generate/be_fixed_be_class_ec_c25519.h new file mode 100644 index 000000000..87182a254 --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_ec_c25519.h @@ -0,0 +1,18 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(be_class_ec_c25519_map) { + { be_const_key(public_key, 1), be_const_func(m_ec_c25519_pubkey) }, + { be_const_key(shared_key, -1), be_const_func(m_ec_c25519_sharedkey) }, +}; + +static be_define_const_map( + be_class_ec_c25519_map, + 2 +); + +BE_EXPORT_VARIABLE be_define_const_class( + be_class_ec_c25519, + 0, + NULL, + EC_C25519 +); diff --git a/tasmota/xdrv_52_3_berry_aes_gcm.ino b/tasmota/xdrv_52_3_berry_crypto.ino similarity index 66% rename from tasmota/xdrv_52_3_berry_aes_gcm.ino rename to tasmota/xdrv_52_3_berry_crypto.ino index ae0559794..e80f585ce 100644 --- a/tasmota/xdrv_52_3_berry_aes_gcm.ino +++ b/tasmota/xdrv_52_3_berry_crypto.ino @@ -146,50 +146,73 @@ extern "C" { } while (0); be_raise(vm, kTypeError, nullptr); } +} -// // `Md5.update(content:bytes()) -> nil` -// // -// // Add raw bytes to the MD5 calculation -// int32_t m_md5_update(struct bvm *vm); -// int32_t m_md5_update(struct bvm *vm) { -// int32_t argc = be_top(vm); // Get the number of arguments -// if (argc >= 2 && be_isinstance(vm, 2)) { -// do { -// be_getglobal(vm, "bytes"); /* get the bytes class */ /* TODO eventually replace with be_getbuiltin */ -// if (!be_isderived(vm, 2)) break; -// size_t length = 0; -// const void * bytes = be_tobytes(vm, 2, &length); -// if (!bytes) break; +/*********************************************************************************************\ + * EC C25519 class + * +\*********************************************************************************************/ +#define BR_EC25519_IMPL br_ec_c25519_m15 // BearSSL implementation for Curve 25519 -// be_getmember(vm, 1, ".p"); -// struct MD5Context * ctx; -// ctx = (struct MD5Context *) be_tocomptr(vm, -1); -// if (!ctx) break; +extern "C" { + // crypto.EC_C25519().public_key(private_key:bytes(32)) -> bytes(32) + // Computes the public key from a completely random private key of 32 bytes + int32_t m_ec_c25519_pubkey(bvm *vm); + int32_t m_ec_c25519_pubkey(bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc >= 2 && be_isbytes(vm, 2)) { + size_t buf_len = 0; + const uint8_t * buf = (const uint8_t*) be_tobytes(vm, 2, &buf_len); + if (buf_len == 32) { + /* create the private key structure */ + uint8_t sk[32]; + for (int32_t i=0; i<32; i++) { + sk[i] = buf[31-i]; + } + br_ec_private_key br_sk = { BR_EC_curve25519, sk, 32 }; -// if (length > 0) { -// MD5Update(ctx, (const uint8_t*) bytes, length); -// } -// be_return_nil(vm); -// // success -// } while (0); -// } -// be_raise(vm, kTypeError, nullptr); -// } + uint8_t pk_buf[32]; /* EC 25519 is 32 bytes */ + size_t ret = br_ec_compute_pub(&BR_EC25519_IMPL, nullptr, pk_buf, &br_sk); + if (ret == 32) { + be_pushbytes(vm, pk_buf, ret); + be_return(vm); + } + } + be_raise(vm, "value_error", "invalid input"); + } + be_raise(vm, kTypeError, nullptr); + } -// // `Md5.update(content:bytes()) -> nil` -// // -// // Add raw bytes to the MD5 calculation -// int32_t m_md5_finish(struct bvm *vm); -// int32_t m_md5_finish(struct bvm *vm) { -// be_getmember(vm, 1, ".p"); -// struct MD5Context * ctx; -// ctx = (struct MD5Context *) be_tocomptr(vm, -1); + // crypto.EC_C25519().shared_key(my_private_key:bytes(32), their_public_key:bytes(32)) -> bytes(32) + // Computes the shared pre-key. Normally this shared pre-key is hashed with another algorithm. + int32_t m_ec_c25519_sharedkey(bvm *vm); + int32_t m_ec_c25519_sharedkey(bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc >= 3 && be_isbytes(vm, 2) && be_isbytes(vm, 3)) { + size_t sk_len = 0; + const uint8_t * sk_buf = (const uint8_t*) be_tobytes(vm, 2, &sk_len); + uint8_t sk[32]; + for (int32_t i=0; i<32; i++) { + sk[i] = sk_buf[31-i]; + } + size_t pk_len = 0; + const uint8_t * pk_const = (const uint8_t*) be_tobytes(vm, 3, &pk_len); + uint8_t pk[32]; + memmove(pk, pk_const, sizeof(pk)); /* copy to a non-const variable to receive the result */ -// uint8_t output[16]; -// MD5Final(output, ctx); -// be_pushbytes(vm, output, sizeof(output)); -// be_return(vm); -// } + if (sk_len == 32 && pk_len == 32) { + if (BR_EC25519_IMPL.mul(pk, pk_len, sk, sk_len, BR_EC_curve25519)) { + /* return value (xoff is zero so no offset) */ + be_pushbytes(vm, pk, pk_len); + be_return(vm); + } else { + be_raise(vm, "internal_error", "internal bearssl error in 519_m15.mul()"); + } + } + be_raise(vm, "value_error", "invalid input"); + } + be_raise(vm, kTypeError, nullptr); + } } #endif // USE_ALEXA_AVS