/* * DiscreteOutputDelayed.cpp * * Created on: 12 ÿíâ. 2018 ã. * Author: titov */ #include "DiscreteOutputDelayed.hh" void driver::detail::DiscreteOutputDelayed::on() { gpio_pin.write(active_level); if( not prev_state_on ) timer_completed.start(timeout); prev_state_on = true; } void driver::detail::DiscreteOutputDelayed::off() { gpio_pin.write(!active_level); if( prev_state_on ) timer_completed.start(timeout); prev_state_on = false; } bool driver::detail::DiscreteOutputDelayed::isCompleted() const { return timer_completed.delayElapsed(); } driver::detail::DiscreteOutputDelayed::DiscreteOutputDelayed( peripheral::IGpio & gpio_pin, bool active_level, unsigned int timeout_in_ms) : gpio_pin(gpio_pin), active_level(active_level), timeout(timeout_in_ms), prev_state_on(false) { gpio_pin.write(!active_level); timer_completed.start(timeout); } driver::detail::DiscreteOutputDelayed::~DiscreteOutputDelayed() noexcept { gpio_pin.write(!active_level); }