MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/driver/DiscreteOutputDelayed.cpp

45 lines
1.0 KiB
C++

/*
* 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);
}