diff --git a/FlippR-Driver/src/output/factories/ItemFactory.h b/FlippR-Driver/src/output/factories/ItemFactory.h index fc520e5..2225f4c 100644 --- a/FlippR-Driver/src/output/factories/ItemFactory.h +++ b/FlippR-Driver/src/output/factories/ItemFactory.h @@ -31,6 +31,7 @@ namespace config_path const char sound_path[] = "sounds"; const char fire_pin[] = "fire_pin"; const char address_pins[] = "address_pins"; + const char enable_pins[] = "enable_pins"; const char flipper_path[] = "flippers"; diff --git a/FlippR-Driver/src/output/factories/LampFactory.cpp b/FlippR-Driver/src/output/factories/LampFactory.cpp index d57fde4..3247c78 100644 --- a/FlippR-Driver/src/output/factories/LampFactory.cpp +++ b/FlippR-Driver/src/output/factories/LampFactory.cpp @@ -19,6 +19,7 @@ LampFactory::LampFactory(nlohmann::json &object, std::shared_ptrset_address_pins(); + this->set_mux_pins(); } std::map> LampFactory::getItemMap() @@ -44,9 +45,9 @@ void LampFactory::set_address_pins() std::array pins; - pins.at(0) = address_pins.at("A0"); - pins.at(1) = address_pins.at("A1"); - pins.at(2) = address_pins.at("A2"); + pins.at(0) = this->get_address_pin(address_pins.at("A0")); + pins.at(1) = this->get_address_pin(address_pins.at("A1")); + pins.at(2) = this->get_address_pin(address_pins.at("A2")); std::dynamic_pointer_cast(this->pin_controller)->set_address_pins(pins); } @@ -60,6 +61,20 @@ uint8_t LampFactory::get_address_pin(nlohmann::json & pin_object) return address + pin_base; } +void LampFactory::set_mux_pins() +{ + auto address_pins = this->object.at(config_path::address_pins); + + std::array pins; + + for(int i = 1; i < 14; i++) + { + pins.at(i) = this->get_address_pin(address_pins.at("E" + std::string{i})); + } + + std::dynamic_pointer_cast(this->pin_controller)->set_mux_pins(pins); +} + } } diff --git a/FlippR-Driver/src/output/factories/LampFactory.h b/FlippR-Driver/src/output/factories/LampFactory.h index a071a45..7d18546 100644 --- a/FlippR-Driver/src/output/factories/LampFactory.h +++ b/FlippR-Driver/src/output/factories/LampFactory.h @@ -25,6 +25,8 @@ public: private: void set_address_pins(); + void set_mux_pins(); + uint8_t get_address_pin(nlohmann::json & pin_object); };