Lamp factory adaption

This commit is contained in:
Johannes Wendel
2020-01-15 16:17:06 +01:00
parent e32659a3e6
commit a4ccf2103d
7 changed files with 60 additions and 6 deletions

View File

@@ -47,14 +47,18 @@ std::shared_ptr<OutputDriver> get_OutputDriver(const std::string & solenoid_conf
auto display_board_pin_controller = std::make_shared<detail::DisplayBoardPinController>();
auto displays = get_items<DisplayFactory, detail::DisplayBoardPinController, items::Display>(display_config_path, 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<uint>());
auto display_controller = std::make_unique<detail::DisplayController>(displays, display_board_pin_controller, update_frequency);
auto display_controller = std::make_unique<detail::DisplayController>(displays, display_board_pin_controller, get_update_frequency(display_config_path));
return std::make_shared<OutputDriver>(std::move(display_controller), solenoids, lamps, sounds, flippers, displays);
}
std::chrono::seconds get_update_frequency(const std::string & display_config_path)
{
nlohmann::json display_config;
std::ifstream(display_config_path) >> display_config;
return std::chrono::seconds{1/display_config.at(config_path::display_update_frequency).get<uint>()};
}
template<typename FactoryType, typename ControllerType, typename ItemType>
std::map<std::string, std::shared_ptr<ItemType>> get_items(const std::string &config_path, std::shared_ptr<PinController> pin_controller)
{