From 9a84e4475cb4fb1399c51bb9b9582f8e0e769164 Mon Sep 17 00:00:00 2001 From: Jonas Zeunert Date: Fri, 10 Jan 2020 22:02:07 +0100 Subject: [PATCH] added update_frequency --- .../contrib/json_example/input/Input_Pin_Config.json | 1 + .../contrib/json_example/output/Display_Config.json | 1 + FlippR-Driver/src/output/OutputDriverFactory.cpp | 5 ++++- FlippR-Driver/src/output/detail/DisplayController.cpp | 5 +++-- FlippR-Driver/src/output/detail/DisplayController.h | 3 ++- FlippR-Driver/src/output/factories/ItemFactory.h | 1 + 6 files changed, 12 insertions(+), 4 deletions(-) diff --git a/FlippR-Driver/contrib/json_example/input/Input_Pin_Config.json b/FlippR-Driver/contrib/json_example/input/Input_Pin_Config.json index 0c91fde..303c4a8 100644 --- a/FlippR-Driver/contrib/json_example/input/Input_Pin_Config.json +++ b/FlippR-Driver/contrib/json_example/input/Input_Pin_Config.json @@ -1,4 +1,5 @@ { + "update_frequency": 1000, "row": { "A": 15, "B": 16, diff --git a/FlippR-Driver/contrib/json_example/output/Display_Config.json b/FlippR-Driver/contrib/json_example/output/Display_Config.json index 22c45b9..2998018 100644 --- a/FlippR-Driver/contrib/json_example/output/Display_Config.json +++ b/FlippR-Driver/contrib/json_example/output/Display_Config.json @@ -1,4 +1,5 @@ { + "update_frequency": 1000, "display_board" : { "segment_select" : diff --git a/FlippR-Driver/src/output/OutputDriverFactory.cpp b/FlippR-Driver/src/output/OutputDriverFactory.cpp index c11ade6..bd4711c 100644 --- a/FlippR-Driver/src/output/OutputDriverFactory.cpp +++ b/FlippR-Driver/src/output/OutputDriverFactory.cpp @@ -47,7 +47,10 @@ std::shared_ptr get_OutputDriver(const std::string & solenoid_conf auto display_board_pin_controller = std::make_shared(); auto displays = get_items(display_config_path, display_board_pin_controller); - auto display_controller = std::make_unique(displays, display_board_pin_controller); + nlohmann::json display_config; + std::ifstream(display_config_path) >> display_config; + std::chrono::milliseconds update_frequency(1/display_config.at(config_path::display_update_frequency).get()); + 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 28bcf0c..b879f2a 100644 --- a/FlippR-Driver/src/output/detail/DisplayController.cpp +++ b/FlippR-Driver/src/output/detail/DisplayController.cpp @@ -19,9 +19,9 @@ namespace detail { DisplayController::DisplayController(std::map> & displays, - std::shared_ptr pin_controller + std::shared_ptr pin_controller, std::chrono::milliseconds update_frequency ) - : pin_controller{pin_controller}, is_running(true) + : pin_controller{pin_controller}, update_frequency(update_frequency), is_running(true) { for (auto display : displays) { @@ -45,6 +45,7 @@ void DisplayController::cycle_displays() const { while (is_running) { + 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 4879e61..a78b1f1 100644 --- a/FlippR-Driver/src/output/detail/DisplayController.h +++ b/FlippR-Driver/src/output/detail/DisplayController.h @@ -25,7 +25,7 @@ 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::milliseconds update_frequency); ~DisplayController() override; void activate_displays() const override; @@ -40,6 +40,7 @@ private: const std::shared_ptr pin_controller; std::thread display_cycle_thread; + std::chrono::milliseconds update_frequency; bool is_running; }; diff --git a/FlippR-Driver/src/output/factories/ItemFactory.h b/FlippR-Driver/src/output/factories/ItemFactory.h index 84c9ce4..f492213 100644 --- a/FlippR-Driver/src/output/factories/ItemFactory.h +++ b/FlippR-Driver/src/output/factories/ItemFactory.h @@ -40,6 +40,7 @@ namespace config_path const char display_board[] = "display_board"; const char run_pin[] = "run"; + const char display_update_frequency[] = "update_frequency"; const char display_select[] = "display_select"; const char display_segement_select[] = "segment_select"; const char display_digit_select[] = "digit_select";