Impelements and integrates DisplayFactory. Further does some refactoring
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
#include <output/factories/SoundFactory.h>
|
||||
#include <output/factories/FlipperFactory.h>
|
||||
#include <output/factories/SolenoidFactory.h>
|
||||
#include <output/factories/DisplayFactory.h>
|
||||
#include "OutputDriverFactory.h"
|
||||
|
||||
#include "utility/LoggerFactory.h"
|
||||
@@ -42,94 +43,15 @@ std::shared_ptr<OutputDriver> get_OutputDriver(const std::string & solenoid_conf
|
||||
auto solenoids = get_items<SolenoidFactory, detail::DriverBoardPinController>(solenoid_config_path, driver_board_pin_controller);
|
||||
auto lamps = get_items<LampFactory, detail::DriverBoardPinController>(lamp_config_path, driver_board_pin_controller);
|
||||
|
||||
auto sound_board_pin_controller = create_SoundBoardPinController();
|
||||
auto sound_board_pin_controller = std::make_shared<detail::SoundBoardPinController>(output_pin_mutex);
|
||||
auto sounds = get_items<SoundFactory, detail::SoundBoardPinController>(sound_config_path, sound_board_pin_controller);
|
||||
|
||||
auto display_board_pin_controller = std::make_shared<detail::DisplayBoardPinController>();
|
||||
auto displays = get_items<DisplayFactory, detail::DisplayBoardPinController>(display_config_path, display_board_pin_controller);
|
||||
|
||||
auto display_controller = std::make_unique<detail::DisplayController>(displays, display_board_pin_controller);
|
||||
|
||||
/*std::unique_ptr<DisplayBoardPinController> display_board_pin_controller(new detail::DisplayBoardPinController(parse_pins_display_board(display_config)));
|
||||
auto displays = create_displays();
|
||||
std::unique_ptr<DisplayController> display_controller(new detail::DisplayController(displays, std::move(display_board_pin_controller)));
|
||||
auto display_map = map_displays(displays);
|
||||
|
||||
return std::make_shared<OutputDriver>(std::move(display_controller), solenoids, lamps, sounds, flippers, display_map);*/
|
||||
}
|
||||
|
||||
std::map<std::string, uint8_t> parse_pins_display_board(std::istream &display_config)
|
||||
{
|
||||
/* std::string config_file = "display_config.json";
|
||||
|
||||
json display_board_config = get_element("display_board", config::displays, config_file);
|
||||
|
||||
std::map<std::string, uint8_t> pins_display;
|
||||
|
||||
pins_display["run"] = get_value<uint8_t>("run", display_board_config, config_file);
|
||||
|
||||
json display_select = display_board_config.at("display_select");
|
||||
for(int i = 1; i < 6; i++)
|
||||
{
|
||||
pins_display["display_select" + std::to_string(i)] = get_value<uint8_t>(std::to_string(i), display_select, config_file);
|
||||
}
|
||||
|
||||
json segment_select = display_board_config.at("segment_select");
|
||||
pins_display["segment_select_A"] = get_value<uint8_t>("A", segment_select, config_file);
|
||||
pins_display["segment_select_B"] = get_value<uint8_t>("B", segment_select, config_file);
|
||||
pins_display["segment_select_C"] = get_value<uint8_t>("C", segment_select, config_file);
|
||||
|
||||
json digit_select = display_board_config.at("digit_select");
|
||||
pins_display["digit_select_A"] = get_value<uint8_t>("A", digit_select, config_file);
|
||||
pins_display["digit_select_B"] = get_value<uint8_t>("B", digit_select, config_file);
|
||||
pins_display["digit_select_C"] = get_value<uint8_t>("C", digit_select, config_file);
|
||||
pins_display["digit_select_D"] = get_value<uint8_t>("D", digit_select, config_file);;
|
||||
|
||||
return pins_display;*/
|
||||
}
|
||||
|
||||
std::vector<std::shared_ptr<items::OutputDisplay>> create_displays(std::istream &display_config)
|
||||
{
|
||||
/* json displays_json = get_element("displays", config::displays, "display_config.json");
|
||||
|
||||
std::vector<std::shared_ptr<items::OutputDisplay>> displays;
|
||||
for(json &display_json : displays_json)
|
||||
{
|
||||
auto display = create_display(display_json);
|
||||
displays.push_back(display);
|
||||
}
|
||||
|
||||
return displays;*/
|
||||
}
|
||||
|
||||
std::shared_ptr<items::OutputDisplay> create_display(json & display_json)
|
||||
{
|
||||
/* std::string config_file = "display_config.json";
|
||||
auto id = get_value<uint8_t>("id", display_json, config_file);
|
||||
auto address = get_value<uint8_t>("address", display_json, config_file);
|
||||
auto digits = get_value<uint8_t>("digits", display_json, config_file);
|
||||
if(digits == 8)
|
||||
return std::make_shared<items::detail::EightDigitDisplay>(address, id);
|
||||
|
||||
else if(digits == 7)
|
||||
return std::make_shared<items::detail::SevenDigitDisplay>(address, id);
|
||||
|
||||
else
|
||||
throw new std::logic_error("Display digits can either be 7 or 8");*/
|
||||
}
|
||||
|
||||
std::map<uint8_t, std::shared_ptr<items::Display>> map_displays(const std::vector<std::shared_ptr<items::OutputDisplay>> &displays)
|
||||
{
|
||||
std::map<uint8_t, std::shared_ptr<items::Display>> display_map;
|
||||
|
||||
for(auto &display : displays)
|
||||
{
|
||||
display_map.emplace(display->get_address(), display);
|
||||
}
|
||||
|
||||
return display_map;
|
||||
}
|
||||
|
||||
std::shared_ptr<SoundBoardPinController> create_SoundBoardPinController()
|
||||
{
|
||||
return std::shared_ptr<SoundBoardPinController>();
|
||||
//return std::make_shared<OutputDriver>(std::move(display_controller), solenoids, lamps, sounds, flippers, displays);
|
||||
}
|
||||
|
||||
template<typename FactoryType, typename ControllerType>
|
||||
@@ -150,6 +72,8 @@ std::map<std::string, std::shared_ptr<items::Item>> get_items(const std::string
|
||||
CLOG(INFO, OUTPUT_LOGGER) << "File " << config_path << " seems to be corrupted: " << ": " << e.what();
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user