adapted factory 😄

This commit is contained in:
Johannes Wendel
2019-05-06 20:52:16 +02:00
parent c92d0736a6
commit 4aeebb9291
12 changed files with 57 additions and 1006 deletions

View File

@@ -4,6 +4,8 @@
#include <boost/range/algorithm/copy.hpp>
#include <boost/range/adaptor/map.hpp>
#include <output/items/Flipper.h>
#include <output/items/detail/Flipper.h>
#include "OutputDriverFactory.h"
#include "utility/LoggerFactory.h"
@@ -179,6 +181,51 @@ std::map<std::string, std::shared_ptr<items::Solenoid>> create_solenoids(std::is
return solenoids;
}
std::map<std::string, std::shared_ptr<items::Flipper>> create_flippers(std::istream &flipper_config, std::shared_ptr<DriverBoardPinController> &output_gpio_interface)
{
std::map<std::string, std::shared_ptr<items::Flipper>> flippers;
json flipper_config_json;
flipper_config >> flipper_config_json;
json flippers_json;
try
{
flippers_json = flipper_config_json.at("flippers");
}
catch(json::exception &e)
{
CLOG(ERROR, OUTPUT_LOGGER) << "Output solenoids config file corrupted: Key \"flippers\" of type array needed. \n" << e.what();
exit(EXIT_FAILURE);
}
for(auto &flipper_json : flippers_json)
{
auto flipper = create_flipper(flipper_json, output_gpio_interface);
flippers.emplace(flipper->get_name(), flipper);
}
return flippers;
}
std::shared_ptr<items::detail::Flipper> create_flipper(nlohmann::json &flipper_json, std::shared_ptr<DriverBoardPinController> &pin_controller)
{
try
{
std::string name = flipper_json.at("name");
auto address = flipper_json.at("address").get<uint8_t>();
return std::make_shared<items::detail::Flipper>(pin_controller, address, name);
}
catch(json::exception &e)
{
CLOG(ERROR, OUTPUT_LOGGER) << "Output solenoid config file corrupted: " << e.what();
exit(EXIT_FAILURE);
}
}
std::map<std::string, std::shared_ptr<items::Lamp>> create_lamps(std::istream &lamp_config, std::shared_ptr<DriverBoardPinController> &output_gpio_interface)
{
std::map<std::string, std::shared_ptr<items::Lamp>> lamps;