diff --git a/FlippR-Driver/src/output/OutputDriverFactory.cpp b/FlippR-Driver/src/output/OutputDriverFactory.cpp index f557c5b..22cdee9 100644 --- a/FlippR-Driver/src/output/OutputDriverFactory.cpp +++ b/FlippR-Driver/src/output/OutputDriverFactory.cpp @@ -49,7 +49,8 @@ std::shared_ptr get_OutputDriver(const std::string & solenoid_conf auto display_board_pin_controller = std::make_shared(get_update_frequency(display_config_path)); auto displays = get_items(display_config_path, display_board_pin_controller); - auto display_controller = std::make_unique(displays, display_board_pin_controller); + auto update_frequency = get_update_frequency(display_config_path); + auto display_controller = std::make_unique(displays, display_board_pin_controller, update_frequency); return std::make_shared(std::move(display_controller), solenoids, lamps, sounds, flippers, displays); } diff --git a/FlippR-Driver/src/output/detail/DisplayController.cpp b/FlippR-Driver/src/output/detail/DisplayController.cpp index 91aee4c..e067b2e 100644 --- a/FlippR-Driver/src/output/detail/DisplayController.cpp +++ b/FlippR-Driver/src/output/detail/DisplayController.cpp @@ -19,9 +19,10 @@ namespace detail { DisplayController::DisplayController(std::map> & displays, - std::shared_ptr pin_controller + std::shared_ptr pin_controller, + std::chrono::microseconds update_frequency ) - : pin_controller{pin_controller}, is_running(true) + : pin_controller{pin_controller}, is_running(true), update_frequency(update_frequency) { for (const auto& display : displays) { @@ -50,7 +51,7 @@ void DisplayController::cycle_displays() const while (is_running) { - std::this_thread::sleep_for(std::chrono::microseconds(10000)); + std::this_thread::sleep_for(update_frequency); for (auto &display : this->displays) { pin_controller->write_display(*display); diff --git a/FlippR-Driver/src/output/detail/DisplayController.h b/FlippR-Driver/src/output/detail/DisplayController.h index 94a87a5..bcd41bb 100644 --- a/FlippR-Driver/src/output/detail/DisplayController.h +++ b/FlippR-Driver/src/output/detail/DisplayController.h @@ -25,7 +25,10 @@ namespace detail class DisplayController : public output::DisplayController { public: - DisplayController(std::map> &displays, std::shared_ptr pin_controller); + DisplayController(std::map> &displays, + std::shared_ptr pin_controller, + std::chrono::microseconds update_frequency); + ~DisplayController() override; void activate_displays() const override; @@ -41,6 +44,7 @@ private: std::thread display_cycle_thread; bool is_running; + std::chrono::microseconds update_frequency }; }