/* * Solenoid.h * * Created on: Aug 2, 2018 * Author: Johannes Wendel, Jonas Zeunert */ #ifndef _SRC_OUTPUT_SOLENOID_H_ #define _SRC_OUTPUT_SOLENOID_H_ #include "output/items/Solenoid.h" #include "output/items/detail/Item.h" #include "output/items/detail/DriverBoardItem.h" #include "output/DriverBoardPinController.h" #include #include namespace flippR_driver { namespace output { namespace items { namespace detail { class Solenoid : public DriverBoardItem, public detail::Item, public items::Solenoid { public: Solenoid(std::shared_ptr pin_controller, const uint8_t & address, const std::string & name, const std::chrono::milliseconds & deactivation_time); ~Solenoid() override = default; void deactivate() override; void trigger() override; private: virtual void triggerTask(); private: const std::shared_ptr pin_controller; const std::chrono::milliseconds deactivation_time; std::future trigger_task; }; } } /* namespace output */ } } #endif