/* * Solenoid.cpp * * Created on: Aug 2, 2018 * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert */ #include "Solenoid.h" #include "utility/config.h" namespace flippR_driver { namespace output { namespace items { namespace detail { Solenoid::Solenoid(std::shared_ptr pin_controller, uint8_t address, std::string name, std::chrono::milliseconds deactivation_time) : DriverBoardItem(std::move(pin_controller), address, std::move(name)), deactivation_time(deactivation_time) { CLOG(INFO, OUTPUT_LOGGER) << "Created solenoid " << name << " with address " << address; } void Solenoid::triggerTask() { this->pin_controller->activate(*this); std::this_thread::sleep_for(deactivation_time); this->pin_controller->deactivate(*this); } void Solenoid::trigger() { CLOG(INFO, OUTPUT_LOGGER) << "Trigger Solenoid " << name << " for " << deactivation_time.count() << "ms"; this->trigger_task = std::async(std::launch::async, &Solenoid::triggerTask, this); } } } } /* namespace output */ }