Refactores item factories
This commit is contained in:
@@ -16,8 +16,6 @@
|
||||
#include "output/detail/DisplayBoardPinController.h"
|
||||
#include "output/detail/DriverBoardPinController.h"
|
||||
|
||||
#include "output/items/detail/EightDigitDisplay.h"
|
||||
#include "output/items/detail/SevenDigitDisplay.h"
|
||||
#include "output/items/Flipper.h"
|
||||
|
||||
namespace flippR_driver
|
||||
@@ -39,23 +37,23 @@ std::shared_ptr<OutputDriver> get_OutputDriver(const std::string & solenoid_conf
|
||||
auto output_pin_mutex = std::make_shared<std::mutex>();
|
||||
std::shared_ptr<DriverBoardPinController> driver_board_pin_controller(new detail::DriverBoardPinController(output_pin_mutex));
|
||||
|
||||
auto flippers = get_items<FlipperFactory, detail::DriverBoardPinController>(solenoid_config_path, driver_board_pin_controller);
|
||||
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 flippers = get_items<FlipperFactory, detail::DriverBoardPinController, items::Flipper>(solenoid_config_path, driver_board_pin_controller);
|
||||
auto solenoids = get_items<SolenoidFactory, detail::DriverBoardPinController, items::Solenoid>(solenoid_config_path, driver_board_pin_controller);
|
||||
auto lamps = get_items<LampFactory, detail::DriverBoardPinController, items::Lamp>(lamp_config_path, driver_board_pin_controller);
|
||||
|
||||
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 sounds = get_items<SoundFactory, detail::SoundBoardPinController, items::Sound>(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 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);
|
||||
|
||||
//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);
|
||||
}
|
||||
|
||||
template<typename FactoryType, typename ControllerType>
|
||||
std::map<std::string, std::shared_ptr<items::Item>> get_items(const std::string &config_path, std::shared_ptr<PinController> pin_controller)
|
||||
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)
|
||||
{
|
||||
std::ifstream config_stream{config_path};
|
||||
nlohmann::json config_json;
|
||||
@@ -63,7 +61,7 @@ std::map<std::string, std::shared_ptr<items::Item>> get_items(const std::string
|
||||
|
||||
FactoryType factory{config_json, std::static_pointer_cast<ControllerType>(pin_controller)};
|
||||
|
||||
std::map<std::string, std::shared_ptr<items::Item>> map;
|
||||
std::map<std::string, std::shared_ptr<ItemType>> map;
|
||||
try{
|
||||
map = factory.getItemMap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user