purge timers based on target status, do not check 'armed' state
allow to schedule timer and keep it inactive until relay loop
fixing bug with pulse api not respecting before / after delays.
activate timers when switching to an opposite state.
deactive existing timers when with the same state.
print debug after completing actions, making sure accidental yield would
not change expected state while still modifying it
- configure magnitudes right after they are created.
if any sensor fails begin(), this would leave .filter uninitialized
- poll on flags instead of raw timestamps.
minor change to get rid of the init state.
- system::timer::SystemTimerFlag -> system::ReadyFlag
ref. #2543
search the bus preemptively and create sensor instances based on that
more clean-up for error handling, allow specific device to fail independently
most of the sensor was re-written
- general one-wire operations are part of the system driver now
- split class definitions for digital and temperature sensors
- system timer instead of polling, enforce ordering by forcing specific
instance to handle conversion request, while notifying every other ones
- synchronize readings and conversion requests with the sensor reading
interval, instead of relying on internal polling. now, it happens
right after begin() and pre() instead of previosly (almost) random tick() calls
- auto-detect conversion time based on device resolution / resolution setting
initialization also adds runtime settings (read on boot)
- `dallasPin` to set current one-wire pin
- `dallasParasite` to change from non-powered mode (default is still on)
- `dallasResolution` to force sensor to be operated using 9...12bit res
(0 to keep default one)
birth message should trigger discovery, enabled by default
ref. #1637
clean-up discovery code to properly re-init when something goes wrong
also restore manual discovery trigger from WebUI
instead of one giant read func, use magnitude-specific ones
ref. datasheet, adc read failure should have a different constant,
and does not warrant re-init
sensor loop assumes value(index) value is ok
ref. #2543
move all checks to pre(), value() returns pre-read value
- tick() and pre() are allowed to fail specific device
- pre() would fail the sensor if any of devices fail
- value(index) is never reached unless tick() and pre() succeed