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 Stream 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