diff --git a/FlippR-Driver/contrib/json_example/output/Lamp_Config.json b/FlippR-Driver/contrib/json_example/output/Lamp_Config.json index 74b301d..d5e87db 100644 --- a/FlippR-Driver/contrib/json_example/output/Lamp_Config.json +++ b/FlippR-Driver/contrib/json_example/output/Lamp_Config.json @@ -401,7 +401,8 @@ }, { "address" : 78, - "name" : "100000 Points" + "name" : "100000 Points", + "extender" : "extender_1" } ] } diff --git a/FlippR-Driver/src/output/OutputDriverFactory.cpp b/FlippR-Driver/src/output/OutputDriverFactory.cpp index 210d5d7..eddb686 100644 --- a/FlippR-Driver/src/output/OutputDriverFactory.cpp +++ b/FlippR-Driver/src/output/OutputDriverFactory.cpp @@ -2,6 +2,7 @@ // Created by rhetenor on 04.10.18. // +#include #include "OutputDriverFactory.h" #include "utility/LoggerFactory.h" @@ -37,7 +38,7 @@ std::shared_ptr get_OutputDriver(std::istream& solenoid_config, std::istream& sound_config, std::istream& display_config) { -/* utility::LoggerFactory::CreateOutputLogger(); + utility::LoggerFactory::CreateOutputLogger(); solenoid_config >> config::solenoids; lamp_config >> config::lamps; @@ -47,11 +48,21 @@ std::shared_ptr get_OutputDriver(std::istream& solenoid_config, auto output_pin_mutex = std::make_shared(); std::shared_ptr driver_board_pin_controller(new detail::DriverBoardPinController(output_pin_mutex)); - auto solenoids = create_solenoids(driver_board_pin_controller); - auto flippers = create_flippers(driver_board_pin_controller); - auto lamps = create_lamps(driver_board_pin_controller); +/* auto solenoids = create_solenoids(driver_board_pin_controller); + auto flippers = create_flippers(driver_board_pin_controller);*/ - auto sound_board_pin_controller = create_SoundBoardPinController(); + LampFactory lamp_factory(config::lamps, driver_board_pin_controller); + try + { + auto lamps = lamp_factory.getItemMap(); + } + catch(json::exception &e) + { + CLOG(INFO, OUTPUT_LOGGER) << "File " << "sound_config.json" << " seems to be corrupted: " << ": " << e.what(); + exit(EXIT_FAILURE); + } + + /*auto sound_board_pin_controller = create_SoundBoardPinController(); auto sounds = create_sounds(sound_board_pin_controller); std::unique_ptr display_board_pin_controller(new detail::DisplayBoardPinController(parse_pins_display_board(display_config))); @@ -124,32 +135,6 @@ std::shared_ptr create_flipper(nlohmann::json &flipper_j return std::make_shared(pin_controller, address, pin_base, name); } -std::map> create_lamps(std::istream &lamp_config, std::shared_ptr &pin_controller) -{ - json port_extenders = get_element("port_extenders", config::lamps, "lamp_config.json"); - initialize_port_extenders(port_extenders, pin_controller.get(), "lamp_config.json"); - json lamps_json = get_element("lamps", config::lamps, "lamp_config.json"); - - std::map> lamps; - for(auto &lamp_json : lamps_json) - { - auto lamp = create_lamp(lamp_json, port_extenders, pin_controller); - lamps.emplace(lamp->get_name(), lamp); - } - return lamps; -} - -std::shared_ptr create_lamp(json &lamp_json, json & port_extenders, std::shared_ptr &pin_controller) -{ - std::string config_file_name = "lamps_config.json"; - - uint8_t pin_base = get_pin_base(lamp_json, port_extenders, config_file_name); - auto address = get_value("address", lamp_json, config_file_name); - auto name = get_value("name", lamp_json, config_file_name); - - return std::make_shared(pin_controller, address, pin_base, name); -} - std::map> create_sounds(std::istream &sound_config, std::shared_ptr &pin_controller) { json port_extenders = get_element("port_extenders", config::sounds, "sound_config.json"); diff --git a/FlippR-Driver/src/output/OutputDriverFactory.h b/FlippR-Driver/src/output/OutputDriverFactory.h index 66da63c..c013216 100644 --- a/FlippR-Driver/src/output/OutputDriverFactory.h +++ b/FlippR-Driver/src/output/OutputDriverFactory.h @@ -34,9 +34,6 @@ std::shared_ptr create_solenoid(nlohmann::json &solenoi std::map> create_flippers(std::shared_ptr &pin_controller); std::shared_ptr create_flipper(nlohmann::json &flipper_json, nlohmann::json &port_extenders, std::shared_ptr &pin_controller); -std::map> create_lamps(std::shared_ptr &pin_controller); -std::shared_ptr create_lamp(nlohmann::json &lamp_json, nlohmann::json & port_extenders, std::shared_ptr &pin_controller); - std::shared_ptr create_SoundBoardPinController(); std::map> create_sounds(std::shared_ptr &pin_controller); std::shared_ptr create_sound(nlohmann::json &sound_json, nlohmann::json &port_extenders, std::shared_ptr &pin_controller, std::chrono::milliseconds &deactivation_time); diff --git a/FlippR-Driver/src/output/factories/DisplayFactory.cpp b/FlippR-Driver/src/output/factories/DisplayFactory.cpp index 2efc087..21858d4 100644 --- a/FlippR-Driver/src/output/factories/DisplayFactory.cpp +++ b/FlippR-Driver/src/output/factories/DisplayFactory.cpp @@ -5,6 +5,7 @@ * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert */ +#include #include "DisplayFactory.h" @@ -13,7 +14,8 @@ namespace flippR_driver namespace output { -DisplayFactory::DisplayFactory(nlohmann::json &object) : Factory(object) +DisplayFactory::DisplayFactory(nlohmann::json &object, std::shared_ptr pin_controller) : + Factory{object, pin_controller} { } diff --git a/FlippR-Driver/src/output/factories/DisplayFactory.h b/FlippR-Driver/src/output/factories/DisplayFactory.h index fc84e1f..7a196ae 100644 --- a/FlippR-Driver/src/output/factories/DisplayFactory.h +++ b/FlippR-Driver/src/output/factories/DisplayFactory.h @@ -18,7 +18,7 @@ namespace output class DisplayFactory : Factory { public: - explicit DisplayFactory(nlohmann::json & object); + explicit DisplayFactory(nlohmann::json & object, std::shared_ptr pin_controller); std::map> getItemMap() override; }; diff --git a/FlippR-Driver/src/output/factories/Factory.cpp b/FlippR-Driver/src/output/factories/Factory.cpp index c47f422..00443ab 100644 --- a/FlippR-Driver/src/output/factories/Factory.cpp +++ b/FlippR-Driver/src/output/factories/Factory.cpp @@ -12,11 +12,12 @@ namespace flippR_driver namespace output { -Factory::Factory(nlohmann::json &object) : - object{object} +Factory::Factory(nlohmann::json &object, std::shared_ptr pin_controller) : + pin_controller{pin_controller} { + this->object = object; this->initialize_port_extenders(); - this->port_extenders = this->object.at("port_extenders"); + this->port_extenders = object.at("port_extenders"); } void Factory::initialize_port_extender(nlohmann::json &extender) diff --git a/FlippR-Driver/src/output/factories/Factory.h b/FlippR-Driver/src/output/factories/Factory.h index fba33e8..cd28921 100644 --- a/FlippR-Driver/src/output/factories/Factory.h +++ b/FlippR-Driver/src/output/factories/Factory.h @@ -21,7 +21,7 @@ namespace output class Factory { public: - Factory(nlohmann::json &object); + Factory(nlohmann::json &object, std::shared_ptr pin_controller); virtual std::map> getItemMap() = 0; diff --git a/FlippR-Driver/src/output/factories/FlipperFactory.cpp b/FlippR-Driver/src/output/factories/FlipperFactory.cpp index 3545c8a..1a2de1c 100644 --- a/FlippR-Driver/src/output/factories/FlipperFactory.cpp +++ b/FlippR-Driver/src/output/factories/FlipperFactory.cpp @@ -5,6 +5,7 @@ * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert */ +#include #include "FlipperFactory.h" namespace flippR_driver @@ -12,7 +13,8 @@ namespace flippR_driver namespace output { -FlipperFactory::FlipperFactory(nlohmann::json &object) : Factory(object) +FlipperFactory::FlipperFactory(nlohmann::json &object, std::shared_ptr pin_controller) : + Factory{object, pin_controller} { } diff --git a/FlippR-Driver/src/output/factories/FlipperFactory.h b/FlippR-Driver/src/output/factories/FlipperFactory.h index 373a695..f461442 100644 --- a/FlippR-Driver/src/output/factories/FlipperFactory.h +++ b/FlippR-Driver/src/output/factories/FlipperFactory.h @@ -19,7 +19,7 @@ namespace output class FlipperFactory : Factory { public: - explicit FlipperFactory(nlohmann::json & object); + explicit FlipperFactory(nlohmann::json & object, std::shared_ptr pin_controller); std::map > getItemMap() override; }; diff --git a/FlippR-Driver/src/output/factories/LampFactory.cpp b/FlippR-Driver/src/output/factories/LampFactory.cpp index 472cd76..8d35a95 100644 --- a/FlippR-Driver/src/output/factories/LampFactory.cpp +++ b/FlippR-Driver/src/output/factories/LampFactory.cpp @@ -14,13 +14,13 @@ namespace flippR_driver namespace output { -LampFactory::LampFactory(nlohmann::json &object) : - Factory(object) +LampFactory::LampFactory(nlohmann::json &object, std::shared_ptr pin_controller) : + Factory{object, pin_controller} {} std::map> LampFactory::getItemMap() { - auto lamps = object.at("lamps"); + auto lamps = this->object.at("lamps"); std::map> lamp_map; for (auto lamp : lamps) { diff --git a/FlippR-Driver/src/output/factories/LampFactory.h b/FlippR-Driver/src/output/factories/LampFactory.h index cd1adb3..c3ad065 100644 --- a/FlippR-Driver/src/output/factories/LampFactory.h +++ b/FlippR-Driver/src/output/factories/LampFactory.h @@ -8,6 +8,7 @@ #ifndef FLIPPR_DRIVER_LAMPFACTORY_H #define FLIPPR_DRIVER_LAMPFACTORY_H +#include #include "Factory.h" namespace flippR_driver @@ -18,7 +19,7 @@ namespace output class LampFactory : Factory { public: - explicit LampFactory(nlohmann::json & object); + explicit LampFactory(nlohmann::json & object, std::shared_ptr pin_controller); std::map> getItemMap() override; }; diff --git a/FlippR-Driver/src/output/factories/SoundFactory.cpp b/FlippR-Driver/src/output/factories/SoundFactory.cpp index 8dbb6c9..de05f88 100644 --- a/FlippR-Driver/src/output/factories/SoundFactory.cpp +++ b/FlippR-Driver/src/output/factories/SoundFactory.cpp @@ -4,13 +4,15 @@ * Created on: December 28, 2019 * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert */ +#include #include "SoundFactory.h" namespace flippR_driver { namespace output { -SoundFactory::SoundFactory(nlohmann::json &object) : Factory(object) +SoundFactory::SoundFactory(nlohmann::json &object, std::shared_ptr pin_controller) : + Factory{object, pin_controller} { } diff --git a/FlippR-Driver/src/output/factories/SoundFactory.h b/FlippR-Driver/src/output/factories/SoundFactory.h index 2db516e..ec912cb 100644 --- a/FlippR-Driver/src/output/factories/SoundFactory.h +++ b/FlippR-Driver/src/output/factories/SoundFactory.h @@ -18,7 +18,7 @@ namespace output class SoundFactory : Factory { public: - explicit SoundFactory(nlohmann::json & object); + explicit SoundFactory(nlohmann::json & object, std::shared_ptr pin_controller); std::map> getItemMap() override; }; diff --git a/FlippR-Driver/src/output/items/detail/Lamp.cpp b/FlippR-Driver/src/output/items/detail/Lamp.cpp index 6f6e77a..a8636bd 100644 --- a/FlippR-Driver/src/output/items/detail/Lamp.cpp +++ b/FlippR-Driver/src/output/items/detail/Lamp.cpp @@ -26,7 +26,7 @@ Lamp::Lamp(std::shared_ptr pin_controller, const uint8 activated(false), activation_time(10) { - //CLOG(INFO , OUTPUT_LOGGER) << "Created lamp \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address); + CLOG(INFO , OUTPUT_LOGGER) << "Created lamp \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address); } void Lamp::activate()