adapted factory 😄
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user