diff --git a/FlippR-Driver/include/output/OutputDriver.h b/FlippR-Driver/include/output/OutputDriver.h index e80a72d..0d96ccc 100644 --- a/FlippR-Driver/include/output/OutputDriver.h +++ b/FlippR-Driver/include/output/OutputDriver.h @@ -35,7 +35,7 @@ public: std::map> lamps, std::map> sounds, std::map> flippers, std::map> displays); - ~OutputDriver() = default;//TODO aufräumen + ~OutputDriver() = default; void activate_displays() const; void deactivate_displays() const; diff --git a/FlippR-Driver/include/output/items/Display.h b/FlippR-Driver/include/output/items/Display.h index 66e2e12..dc0ffe8 100644 --- a/FlippR-Driver/include/output/items/Display.h +++ b/FlippR-Driver/include/output/items/Display.h @@ -8,8 +8,6 @@ #ifndef FLIPPR_DRIVER_OUTPUT_ITEMS_DISPLAY_H_ #define FLIPPR_DRIVER_OUTPUT_ITEMS_DISPLAY_H_ -#include // todo wtf? - namespace flippR_driver { namespace output diff --git a/FlippR-Driver/include/output/items/Lamp.h b/FlippR-Driver/include/output/items/Lamp.h index 0782a94..5457106 100644 --- a/FlippR-Driver/include/output/items/Lamp.h +++ b/FlippR-Driver/include/output/items/Lamp.h @@ -10,6 +10,8 @@ #include "Item.h" +#include + namespace flippR_driver { namespace output @@ -25,6 +27,7 @@ public: virtual void activate() = 0; virtual void deactivate() = 0; virtual bool is_activated() = 0; + virtual std::chrono::milliseconds get_activation_time() const = 0; }; } diff --git a/FlippR-Driver/src/output/detail/OutputDriver.cpp b/FlippR-Driver/src/output/detail/OutputDriver.cpp index f346cf3..b0ad965 100644 --- a/FlippR-Driver/src/output/detail/OutputDriver.cpp +++ b/FlippR-Driver/src/output/detail/OutputDriver.cpp @@ -56,12 +56,11 @@ void OutputDriver::activate_all_lamps() const void OutputDriver::rotate_all_lamps() const { - for(const auto & lamp : lamps) + for(const auto & lamp : this->lamps) { lamp.second->activate(); - // ToDo sleep time + is this thread safe?? - // TODO: time should be parameter - std::this_thread::sleep_for(std::chrono::milliseconds(10)); + // ToDo is this thread safe?? + std::this_thread::sleep_for(lamp.second->get_activation_time()); lamp.second->deactivate(); } } diff --git a/FlippR-Driver/src/output/items/detail/Lamp.cpp b/FlippR-Driver/src/output/items/detail/Lamp.cpp index 2ed7dbd..a122f48 100644 --- a/FlippR-Driver/src/output/items/detail/Lamp.cpp +++ b/FlippR-Driver/src/output/items/detail/Lamp.cpp @@ -20,7 +20,11 @@ namespace detail { Lamp::Lamp(std::shared_ptr pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name) : -detail::Item(std::move(name)), DriverBoardItem(pin_controller, address, pin_base), pin_controller(std::move(pin_controller)), activated(false) + detail::Item(std::move(name)), + DriverBoardItem(pin_controller, address, pin_base), + pin_controller(std::move(pin_controller)), + activated(false), + activation_time(10) { CLOG(INFO, OUTPUT_LOGGER) << "Created lamp " << name << " with address " << address; } @@ -44,6 +48,11 @@ bool Lamp::is_activated() return this->activated; } +std::chrono::milliseconds Lamp::get_activation_time() const +{ + return this->activation_time; +} + } } } /* namespace output */ diff --git a/FlippR-Driver/src/output/items/detail/Lamp.h b/FlippR-Driver/src/output/items/detail/Lamp.h index 44f36db..7bb1575 100644 --- a/FlippR-Driver/src/output/items/detail/Lamp.h +++ b/FlippR-Driver/src/output/items/detail/Lamp.h @@ -33,10 +33,12 @@ public: void activate() override; void deactivate() override; bool is_activated() override; + std::chrono::milliseconds get_activation_time() const override; private: const std::shared_ptr pin_controller; bool activated; + std::chrono::milliseconds activation_time; }; }