diff --git a/FlippR-Driver/src/output/OutputDriverFactory.cpp b/FlippR-Driver/src/output/OutputDriverFactory.cpp index cce5089..55f3278 100644 --- a/FlippR-Driver/src/output/OutputDriverFactory.cpp +++ b/FlippR-Driver/src/output/OutputDriverFactory.cpp @@ -4,6 +4,7 @@ #include #include +#include #include "OutputDriverFactory.h" #include "utility/LoggerFactory.h" @@ -49,8 +50,16 @@ 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);*/ + FlipperFactory flipper_factory{config::solenoids, driver_board_pin_controller}; + try + { + auto flippers = flipper_factory.getItemMap(); + } + catch(json::exception &e) + { + CLOG(INFO, OUTPUT_LOGGER) << "File " << "solenoid_config.json" << " seems to be corrupted: " << ": " << e.what(); + exit(EXIT_FAILURE); + } LampFactory lamp_factory(config::lamps, driver_board_pin_controller); try @@ -58,14 +67,24 @@ std::shared_ptr get_OutputDriver(std::istream& solenoid_config, auto lamps = lamp_factory.getItemMap(); } catch(json::exception &e) + { + CLOG(INFO, OUTPUT_LOGGER) << "File " << "lamp_config.json" << " seems to be corrupted: " << ": " << e.what(); + exit(EXIT_FAILURE); + } + + + auto sound_board_pin_controller = create_SoundBoardPinController(); + SoundFactory sound_factory{config::sounds, sound_board_pin_controller}; + try + { + auto sounds = sound_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(); - SoundFactory sound_factory{config::sounds, sound_board_pin_controller}; - auto sounds = sound_factory.getItemMap(); /*std::unique_ptr display_board_pin_controller(new detail::DisplayBoardPinController(parse_pins_display_board(display_config))); auto displays = create_displays(); diff --git a/FlippR-Driver/src/output/factories/Factory.h b/FlippR-Driver/src/output/factories/Factory.h index 7c4177c..1cc902a 100644 --- a/FlippR-Driver/src/output/factories/Factory.h +++ b/FlippR-Driver/src/output/factories/Factory.h @@ -24,8 +24,11 @@ namespace config_path const char item_address[] = "address"; const char item_extender[] = "extender"; const char item_identifier[] = "id"; + const char deactivation_time[] = "deactivation_time_milliseconds"; const char sound_path[] = "sounds"; + + const char flipper_path[] = "flippers"; } class Factory diff --git a/FlippR-Driver/src/output/factories/FlipperFactory.cpp b/FlippR-Driver/src/output/factories/FlipperFactory.cpp index 1a2de1c..bd612f1 100644 --- a/FlippR-Driver/src/output/factories/FlipperFactory.cpp +++ b/FlippR-Driver/src/output/factories/FlipperFactory.cpp @@ -6,6 +6,7 @@ */ #include +#include #include "FlipperFactory.h" namespace flippR_driver @@ -15,13 +16,23 @@ namespace output FlipperFactory::FlipperFactory(nlohmann::json &object, std::shared_ptr pin_controller) : Factory{object, pin_controller} -{ - -} +{} std::map> FlipperFactory::getItemMap() { - return std::map>(); + auto flippers = this->object.at(config_path::flipper_path); + std::map> flipper_map; + for (auto lamp : flippers) + { + auto name = lamp.at(config_path::item_name).get(); + auto address = lamp.at(config_path::item_address).get(); + auto extender = lamp.at(config_path::item_extender).get(); + auto pin_base = this->get_extender_pin_base(extender); + + auto flipper_item = std::make_shared(std::static_pointer_cast(this->pin_controller), address, pin_base, name); + flipper_map.emplace(name, flipper_item); + } + return flipper_map; } } diff --git a/FlippR-Driver/src/output/items/detail/Flipper.cpp b/FlippR-Driver/src/output/items/detail/Flipper.cpp index 2ca9852..4fb5541 100644 --- a/FlippR-Driver/src/output/items/detail/Flipper.cpp +++ b/FlippR-Driver/src/output/items/detail/Flipper.cpp @@ -23,7 +23,7 @@ namespace detail Flipper::Flipper(std::shared_ptr pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name) : Item(std::move(name)), DriverBoardItem(pin_controller, address, pin_base), pin_controller(std::move(pin_controller)) { - //CLOG(INFO , OUTPUT_LOGGER) << "Created flipper \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address); + CLOG(INFO , OUTPUT_LOGGER) << "Created flipper \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address); } Flipper::~Flipper() diff --git a/FlippR-Driver/src/output/items/detail/Sound.cpp b/FlippR-Driver/src/output/items/detail/Sound.cpp index 374da14..943467d 100644 --- a/FlippR-Driver/src/output/items/detail/Sound.cpp +++ b/FlippR-Driver/src/output/items/detail/Sound.cpp @@ -23,7 +23,7 @@ namespace detail Sound::Sound(std::shared_ptr pin_controller, const uint8_t & address, const uint8_t & pin_base, const std::string & name, const std::chrono::milliseconds & deactivation_time, const u_int id) : detail::Item(std::move(name)), DriverBoardItem(pin_controller, address, pin_base), pin_controller(std::move(pin_controller)), deactivation_time(deactivation_time), id(id) { - CLOG(INFO , OUTPUT_LOGGER) << "Created sound " << id << " \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address) << ". Deactivation time is: " << deactivation_time.count(); + //CLOG(INFO , OUTPUT_LOGGER) << "Created sound " << id << " \"" << name << "\" with pin-base " << int(pin_base) << " and address " << int(address) << ". Deactivation time is: " << deactivation_time.count(); } void Sound::play()