add: update_frequency

This commit is contained in:
Jonas Zeunert
2022-02-24 21:21:10 +01:00
parent 6a403d2218
commit 0846ae3753
3 changed files with 11 additions and 5 deletions

View File

@@ -49,7 +49,8 @@ std::shared_ptr<OutputDriver> get_OutputDriver(const std::string & solenoid_conf
auto display_board_pin_controller = std::make_shared<detail::DisplayBoardPinController>(get_update_frequency(display_config_path)); auto display_board_pin_controller = std::make_shared<detail::DisplayBoardPinController>(get_update_frequency(display_config_path));
auto displays = get_items<DisplayFactory, detail::DisplayBoardPinController, items::Display>(display_config_path, display_board_pin_controller); auto displays = get_items<DisplayFactory, detail::DisplayBoardPinController, items::Display>(display_config_path, display_board_pin_controller);
auto display_controller = std::make_unique<detail::DisplayController>(displays, display_board_pin_controller); auto update_frequency = get_update_frequency(display_config_path);
auto display_controller = std::make_unique<detail::DisplayController>(displays, display_board_pin_controller, update_frequency);
return std::make_shared<OutputDriver>(std::move(display_controller), solenoids, lamps, sounds, flippers, displays); return std::make_shared<OutputDriver>(std::move(display_controller), solenoids, lamps, sounds, flippers, displays);
} }

View File

@@ -19,9 +19,10 @@ namespace detail
{ {
DisplayController::DisplayController(std::map<std::string, std::shared_ptr<items::Display>> & displays, DisplayController::DisplayController(std::map<std::string, std::shared_ptr<items::Display>> & displays,
std::shared_ptr<DisplayBoardPinController> pin_controller std::shared_ptr<DisplayBoardPinController> 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) for (const auto& display : displays)
{ {
@@ -50,7 +51,7 @@ void DisplayController::cycle_displays() const
while (is_running) while (is_running)
{ {
std::this_thread::sleep_for(std::chrono::microseconds(10000)); std::this_thread::sleep_for(update_frequency);
for (auto &display : this->displays) for (auto &display : this->displays)
{ {
pin_controller->write_display(*display); pin_controller->write_display(*display);

View File

@@ -25,7 +25,10 @@ namespace detail
class DisplayController : public output::DisplayController class DisplayController : public output::DisplayController
{ {
public: public:
DisplayController(std::map<std::string, std::shared_ptr<items::Display>> &displays, std::shared_ptr<DisplayBoardPinController> pin_controller); DisplayController(std::map<std::string, std::shared_ptr<items::Display>> &displays,
std::shared_ptr<DisplayBoardPinController> pin_controller,
std::chrono::microseconds update_frequency);
~DisplayController() override; ~DisplayController() override;
void activate_displays() const override; void activate_displays() const override;
@@ -41,6 +44,7 @@ private:
std::thread display_cycle_thread; std::thread display_cycle_thread;
bool is_running; bool is_running;
std::chrono::microseconds update_frequency
}; };
} }