Did some further adaptions to new board layout.
This commit is contained in:
@@ -45,10 +45,8 @@ std::shared_ptr<OutputDriver> get_OutputDriver(std::istream& output_pin_config,
|
||||
json output_config;
|
||||
output_pin_config >> output_config;
|
||||
|
||||
|
||||
//TODO new board layout
|
||||
json driver_board_config = output_config.at("driver_board");
|
||||
std::shared_ptr<DriverBoardPinController> driver_board_pin_controller(new detail::DriverBoardPinController(parse_pins_driver_board(driver_board_config), output_pin_mutex));
|
||||
std::shared_ptr<DriverBoardPinController> driver_board_pin_controller(new detail::DriverBoardPinController(output_pin_mutex));
|
||||
auto solenoids = create_solenoids(solenoid_config, driver_board_pin_controller);
|
||||
auto lamps = create_lamps(lamp_config, driver_board_pin_controller);
|
||||
|
||||
@@ -67,37 +65,6 @@ std::shared_ptr<OutputDriver> get_OutputDriver(std::istream& output_pin_config,
|
||||
return std::make_shared<detail::OutputDriver>(std::move(display_controller), solenoids, lamps, sounds, display_map);
|
||||
}
|
||||
|
||||
std::map<std::string, uint8_t> parse_pins_driver_board(json &driver_board_config)
|
||||
{
|
||||
std::map<std::string, uint8_t> pins_driver_board;
|
||||
|
||||
try
|
||||
{
|
||||
pins_driver_board["i2c_address"] = driver_board_config.at("i2c_address").get<uint8_t>();
|
||||
pins_driver_board["pin_base"] = driver_board_config.at("pin_base").get<uint8_t>();
|
||||
pins_driver_board["data"] = driver_board_config.at("data").get<uint8_t>();
|
||||
pins_driver_board["CL"] = driver_board_config.at("CL").get<uint8_t>();
|
||||
|
||||
json pin_select = driver_board_config.at("pin-select");
|
||||
pins_driver_board["pin-select-A"] = pin_select.at("A").get<uint8_t>();
|
||||
pins_driver_board["pin-select-B"] = pin_select.at("B").get<uint8_t>();
|
||||
pins_driver_board["pin-select-C"] = pin_select.at("C").get<uint8_t>();
|
||||
|
||||
json latch_select = driver_board_config.at("latch-select");
|
||||
pins_driver_board["mux1"] = latch_select.at("mux1").get<uint8_t>();
|
||||
pins_driver_board["mux2"] = latch_select.at("mux2").get<uint8_t>();
|
||||
pins_driver_board["latch-select-A"] = latch_select.at("A").get<uint8_t>();
|
||||
pins_driver_board["latch-select-B"] = latch_select.at("B").get<uint8_t>();
|
||||
pins_driver_board["latch-select-C"] = latch_select.at("C").get<uint8_t>();
|
||||
}
|
||||
catch(json::exception &e)
|
||||
{
|
||||
CLOG(ERROR, OUTPUT_LOGGER) << "Output pin config file at driver_board corrupted: " << e.what();
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
return pins_driver_board;
|
||||
}
|
||||
|
||||
std::map<std::string, uint8_t> parse_pins_sound_board(json &sound_board_config)
|
||||
{
|
||||
std::map<std::string, uint8_t> pins_sound;
|
||||
@@ -166,6 +133,8 @@ std::map<std::string, std::shared_ptr<items::Solenoid>> create_solenoids(std::is
|
||||
|
||||
auto deactivation_time = get_deactivation_time(solenoid_config_json);
|
||||
|
||||
initialize_port_extenders(solenoid_config_json, output_gpio_interface);
|
||||
|
||||
json solenoids_json;
|
||||
|
||||
try
|
||||
@@ -291,6 +260,26 @@ std::map<std::string, std::shared_ptr<items::Sound>> create_sounds(std::istream
|
||||
return sounds;
|
||||
}
|
||||
|
||||
void initialize_port_extenders(nlohmann::json &json_stream, std::shared_ptr<DriverBoardPinController> &pin_controller)
|
||||
{
|
||||
json port_extenders;
|
||||
|
||||
try
|
||||
{
|
||||
port_extenders = json_stream.at("port_extenders");
|
||||
}
|
||||
catch (json::exception & e)
|
||||
{
|
||||
CLOG(ERROR, OUTPUT_LOGGER) << "Output solenoids config file corrupted: Key \"port_extenders\" of type array needed. \n" << e.what();
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
for (auto & extender_json : port_extenders)
|
||||
{
|
||||
pin_controller->initialize_port_expander(extender_json.at("i2c_address").get<uint8_t>(), extender_json.at("pin_base").get<uint8_t>());
|
||||
}
|
||||
}
|
||||
|
||||
std::chrono::milliseconds get_deactivation_time(nlohmann::json &json)
|
||||
{
|
||||
try
|
||||
@@ -309,8 +298,14 @@ std::shared_ptr<items::detail::Solenoid> create_solenoid(nlohmann::json &solenoi
|
||||
{
|
||||
try
|
||||
{
|
||||
uint8_t address = 0;
|
||||
if(solenoid_json.find("extender") != solenoid_json.end())
|
||||
{
|
||||
address += solenoid_json.at("extender").get<uint8_t>();
|
||||
}
|
||||
|
||||
std::string name = solenoid_json.at("name");
|
||||
auto address = solenoid_json.at("address").get<uint8_t>();
|
||||
address += solenoid_json.at("address").get<uint8_t>();
|
||||
|
||||
if(solenoid_json.find("deactivation_time_milliseconds") != solenoid_json.end())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user