This commit is contained in:
Jonas Zeunert
2019-05-06 20:54:01 +02:00
12 changed files with 57 additions and 1006 deletions

View File

@@ -1,3 +0,0 @@
<component name="ProjectDictionaryState">
<dictionary name="rhetenor" />
</component>

View File

@@ -1,11 +1,18 @@
{
"deactivation_time_milliseconds" : 10,
"solenoids" :
"flippers" :
[
{ // todo is this solenoid?
{
"address" : 61,
"name" : "Flipper Relay"
},
{
"address" : 91,
"name" : "Top Flipper Relay"
}
],
"solenoids" :
[
{
"address" : 79,
"name" : "Out Hole",
@@ -15,10 +22,6 @@
"address" : 82,
"name" : "Bottom Right Pop"
},
{ // todo
"address" : 91,
"name" : "Top Flipper Relay"
},
{
"address" : 92,
"name" : "Right Kicker"

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;

View File

@@ -14,7 +14,7 @@ namespace detail
{
Item::Item(uint8_t address, std::string name) :
address(address), name(std::move(name))
address(address), name(std::move(name))
{}
uint8_t Item::get_address() const