4753 Commits

Author SHA1 Message Date
Maxim Prokhorov
79633343b9 gpio(terminal): explicit mode in addition to write 2025-11-10 02:53:35 +03:00
Maxim Prokhorov
5e681eb009 mqtt(debug): display empty message as 0 bytes
since there is no quoting, should'nt mistake it for space(s)
2025-11-10 02:53:35 +03:00
Maxim Prokhorov
22fbd61db6 system(boot): led & buttons work when not too unstable
remap buttons to reset & leds to notify that device is not actually dead
if rebooting still happens from either module, still works as before
2025-11-10 02:53:35 +03:00
Maxim Prokhorov
7babf84b53 system(boot): persistent count clamp & code reuse 2025-11-10 02:53:35 +03:00
Maxim Prokhorov
bdf87e1a51 led(pattern): refactoring
w/ another -fsanitize=address hint, use separate objects instead of
relying on pattern itself holding everything api *may* need

combine pattern and preset patterns currently separate timers
pattern container reworked to allow small-size optimization

introduce a special '0,0' marker, repeating the whole pattern (instead
of just one delay at the end)

since pattern is part of the led struct proper, display it in settings query
update tests & reuse time parsing routines from utils
2025-11-10 02:53:35 +03:00
Maxim Prokhorov
8592474a9b btn(action): manual reset should not increment unstable counter 2025-11-09 18:52:44 +03:00
Maxim Prokhorov
f737ee2615 uart(debug): also disable rx when uart0 was configured w/o it 2025-11-09 18:52:44 +03:00
Maxim Prokhorov
bc9f879c9c libs(views): fix lingering pointer to old object when copying / moving
also noticed by -fsanitize=address

> auto split = StatefulSplitView{input, " "};
> ...
> split = StatefulSplitViewinput, ","};

ctor & assignment should properly re-construct iterator to avoid referencing
temporaries (especially when ctor & move actually happens and not elided)
2025-11-09 18:52:44 +03:00
Maxim Prokhorov
bb7bd06d67 terminal(test): known memory leakage
allow -fsanitize=address without warnings

avoid extra attributes and just fix the usage in tests,
deprecate for everything else
2025-11-09 18:52:44 +03:00
Maxim Prokhorov
bbfe32940c debug(uart): also mask rx isr when disabled
reserved pins are still techincally in use
also reverts commit removing static putc1
2025-10-03 16:33:45 +03:00
Maxim Prokhorov
63871a6ff2 debug(uart): another spurious unused function warning
same flow when disabling internal uart
2025-10-03 16:32:27 +03:00
Maxim Prokhorov
96efa49fce ntp(cfg): unchecked comparison with nullptr 2025-09-10 11:19:55 +03:00
Maxim Prokhorov
eab8653eb5 debug(uart): spurious unused function warning
amends e76b67b355
2025-09-08 23:41:25 +03:00
Maxim Prokhorov
a63c6c342a types(build): sv constants in read-only memory 2025-09-08 22:58:46 +03:00
Maxim Prokhorov
d576fad945 sns(build): remove FlashStringHelper 2025-09-08 22:57:26 +03:00
Maxim Prokhorov
4cd98f8622 rfm69(build): remove FlashStringHelper 2025-09-08 22:57:13 +03:00
Maxim Prokhorov
9cf52ddbca pzem(modbus): reduntant templated code
there is no need to specialization when doing common operations
inject only the necessary params instead of the the whole body
2025-09-08 22:54:23 +03:00
Maxim Prokhorov
7fffcbda4f pzem(build): flash strings clean-up, remove FlashStringHelper 2025-09-08 22:41:42 +03:00
Maxim Prokhorov
c8c1b7a4d2 ir(build): clean-up command string init and remove FlashStringHelper
note that constexpr is still not allowed in this case, only when
commands are declared beforehand (and thus symbols are known at 'compile time')
2025-09-08 22:34:03 +03:00
Maxim Prokhorov
69b5f119a6 dcz(build): remove FlashStringHelper 2025-09-08 22:33:12 +03:00
Maxim Prokhorov
fee3e57884 ntp(debug): do not log server value twice 2025-09-08 22:32:11 +03:00
Maxim Prokhorov
9d21b561c3 ntp(build): use TZ.h as raw strings, not macros
constexpr'ifies string values for build, remove FlashStringHelper
2025-09-08 22:28:37 +03:00
Maxim Prokhorov
d49b33def3 webui(settings): default to step="any" for generic number inputs
per. https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/step implicit default is step="1"
> If not explicitly included, step defaults to 1 for number and range, and 1 unit type (minute, week, month, day) for the date/time input types.
> The value must be a positive number - integer or float — or the special value any, which means no stepping is implied and any value is allowed
> (barring other constraints, such as min and max)
>
> Only values which are a whole number of steps from the step base are valid.

.checkValidity()/.reportValidity() enforce the rule, making these values
impossible to set (besides manually setting the kv through console)

also clean-up any defaults & suspicious use in specific modules

resolve #2651
2025-08-29 18:06:20 +03:00
Maxim Prokhorov
61c5cd7651 webui(build): remove mistakenly set src/*.html binary attribute 2025-08-29 18:05:56 +03:00
Maxim Prokhorov
3dcbc660b2 webui(build): missing embedded files check for index header values 2025-08-29 18:01:11 +03:00
Maxim Prokhorov
e76b67b355 debug(uart): no-op output for sdk when uart support is disabled 2025-08-29 18:00:16 +03:00
Maxim Prokhorov
02631120cb build(codegen): bump re2c to 4.3 2025-08-29 17:42:49 +03:00
Maxim Prokhorov
c3cf5e23c2 sch(api): missing id initializer
dont end up with an invalid schedule obj
2025-07-02 02:34:51 +03:00
Maxim Prokhorov
4d2da2b49d sns(build): explicitly init strings, even when unused
-Wmissing-field-initializers partial positive
ref. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96868
2025-07-02 02:34:51 +03:00
Maxim Prokhorov
771a4b1dd7 all(build): fix unused variable warnings 2025-07-02 02:34:51 +03:00
Maxim Prokhorov
899e83f25a mqtt(build): unused warning & fix enabled ref 2025-07-02 02:34:51 +03:00
Maxim Prokhorov
f30fffdfab tspk(build): fallthrough warning 2025-07-02 02:29:31 +03:00
Maxim Prokhorov
7d046086ea ci(release): api token authorizes, not authenticates
8aacf08c71 incorrect header c/p
ref. https://docs.github.com/en/rest/rate-limit/rate-limit
2025-06-30 16:35:04 +03:00
Maxim Prokhorov
1cfef1f5b5 build(scripts): not a bash script 2025-06-26 03:17:36 +03:00
Maxim Prokhorov
ed32ab20ba build(scripts): sync & generate config/arduino.h 2025-06-26 03:11:41 +03:00
Maxim Prokhorov
525808ebf1 ci(scripts): build.sh no longer used 2025-06-25 03:54:38 +03:00
Maxim Prokhorov
c5a0b5f23f build(scripts): allow to generate compile_commands.json with everything enabled 2025-06-24 23:55:41 +03:00
Maxim Prokhorov
3ed1050f8c debug(scripts): decoder typing & refactoring
- typing info to clean-up path <-> string and arguments mixups
- argparse.FileType deprecated, use another built-in 'fileinput' that allows similar behaviour
- tool selection always uses shutil.which result for a full cmd path
- tool exec errors treated as script errors
2025-06-24 23:55:21 +03:00
Maxim Prokhorov
1a7f519bcc settings(internal): remove inline funcs & fixup crash handler
implement relevant funcs within the handler, as it is the main consumer
2025-06-21 00:50:28 +03:00
Maxim Prokhorov
da12585c83 settings(internal): naming & combine common move code 2025-06-21 00:49:40 +03:00
Maxim Prokhorov
1cade55159 settings(storage): consistent initialization order
size & storage set up when constructed, avoid splitting auto-size & explicit one
more expensive in code size than just a global, but can be remedied elsewhere

same as gpio init, settings & eeprom initialized statically within a func context
revise internals to access specific instance
2025-06-21 00:46:08 +03:00
Maxim Prokhorov
f22f7366e1 settings(internal): commit to storage on first boot
- implement wrapper class for the rotate to slightly change the behaviour
  correctly reference size info and move 'fill' aka 'clean' into the class itself
- increase storage rotation limits for 2M+ boards, 16 & 32 respectively
  for 8M and 16M board configurations
  bump to 8 original 4M one and extra check for 2M
- minor clean-up to terminal output. shorter strings, more static ones
2025-06-20 20:59:01 +03:00
Maxim Prokhorov
6ac0a93554 terminal(internal): allow empty error message 2025-06-20 20:58:09 +03:00
Maxim Prokhorov
e2924dd4ed settings(internal): allow foreach loop to stop 2025-06-20 20:55:42 +03:00
Maxim Prokhorov
4f7a7ab3e3 system(internal): advertise forced sdk erase as noreturn 2025-06-20 20:53:43 +03:00
Maxim Prokhorov
b406ec306c api(internal): dont ignore partial body
same as in mqtt case, async callback expects us to notice incomplete payload
2025-06-20 11:50:51 +03:00
Maxim Prokhorov
79ff1521d6 mqtt(internal): common functions for processing & logging
fixes log size comparison, ref. https://github.com/hamed-ta/espurna/pull/2

try to use common funcs instead of code dup for sync and async variants
async buffer align & size calc moved into a separate struct
2025-06-20 11:48:19 +03:00
Maxim Prokhorov
7c7d57070e i2c(internal): generic bit packing and casting
common code when dealing with fixed size ints
c++23 bit_cast when dealing with 'cpymem'-like ops

compat header continues to use std number comparison since
libstdcxx feature detection seem to rely on 'import' / 'include'
(and 'bits/version.h' is not available in gcc4)
2025-06-19 11:56:22 +03:00
Maxim Prokhorov
d128bff88d sns(internal): explicit loop type
as previous commits, avoid ambiguous numeric index type
2025-06-19 11:25:40 +03:00
Maxim Prokhorov
e2e4dadcde sns(i2c): re-add sized reader & writer to api
also fixes ade7953 writer, previously lost in wip code
next todo would be to attempt to clean up error handling
2025-06-09 04:46:15 +03:00