ref. 8ceeebdb24
does not really do much, just causes yet another 'why does this driver
ignores pin 1 or 3' question by anyone trying to use buttons or relays
since we configure pins on per-driver basis and dont have global
'roles' assigned to each pin, it is pretty tricky to understand every
other dependency coming in at setup() time. right now, first one wins.
a bit more complex pre-setup() dependency resolution could also work,
and some concept that we depend on uart as peripheral and not just some pins
Totally breaks on unicode input.
Main reason to add this in the first place was handling of
terminal escape sequences, but perhaps it would be better off to do
that on another layer.
For example, <Backspace> will inject an invisible symbol into the resulting
'chunk', at least one other thing to do is to validate after we append
things into an 'argv' that it at least looks like some kind of text.
Make the buffer work on '\n' instead of a limit, flush asap.
Still using single 'DEBUG' output for both terminal and debug prints;
we no longer have 'pre' and 'msg' distinction - there is just 'msg'.
implementation is a bit clunky, since WIFISERVER seems to be working
much slower with (or because?) of no-delay
pending some changes so we *always* schedule telnet comms in the loop
(which also would leave just one SERVER option, and also enable encryption)
Make every available call site 'private'
e.g. typing command in telnet no longer prints to serial or WebUI
Serial input is now optional, see `TERMINAL_SERIAL_SUPPORT`.
Telnet using async server is a proper Print implementation now.
WebUI, MQTT and HTTP input is allowed to inject multiple lines at once.
Modernize our helper classes and remove legacy 2.3.0 quirks.
Replace global Terminal object and allow to separately
split, parse ARGV list and perform command search and invocation with
standalone function calls.
(but, notice that we still depend on a globally shared 'commands' list)
This greatly reduces used RAM (but, slightly increases our ROM).
Update our test suite to use namespaces and new calling convention.
cannot depend on checkprogsize, since it depends on .elf and not .bin
also, compare with the block-aligned size
add notes about reserved space
warning might become annoying, though :)
store objcopy of these extra symbols and .map from the linker
distribution will have an extra debug .zip file that could be used with
the exception decoder
also fixes relative paths in the build-and-copy
(although, yet again loses the pio target in the gui)
execute multiple transition-initiating functions
when we don't do any transitions or have value changes queued
main application for right now is a simple notification
routine that consists of N single channel on->off transitions
- reduce number of resets that triggers unstable mode
- introduce a reboot reason for stability counter
which only gets handled on soft-reset
- allow to forcibly change to either stable or unstable mode
more explicit terminal comands to leave or enter either mode
rework more namespaces to use `espurna` root
makes internal references much easier (and shorter)
view class is not specific to settings, could use it across the app
remove duplicate code from IR