adds set mux pins

This commit is contained in:
Johannes Wendel
2020-01-15 16:32:25 +01:00
parent 62601c8b0f
commit a389574283
3 changed files with 21 additions and 3 deletions

View File

@@ -31,6 +31,7 @@ namespace config_path
const char sound_path[] = "sounds"; const char sound_path[] = "sounds";
const char fire_pin[] = "fire_pin"; const char fire_pin[] = "fire_pin";
const char address_pins[] = "address_pins"; const char address_pins[] = "address_pins";
const char enable_pins[] = "enable_pins";
const char flipper_path[] = "flippers"; const char flipper_path[] = "flippers";

View File

@@ -19,6 +19,7 @@ LampFactory::LampFactory(nlohmann::json &object, std::shared_ptr<DriverBoardPinC
ItemFactory{object, pin_controller} ItemFactory{object, pin_controller}
{ {
this->set_address_pins(); this->set_address_pins();
this->set_mux_pins();
} }
std::map<std::string, std::shared_ptr<items::Lamp>> LampFactory::getItemMap() std::map<std::string, std::shared_ptr<items::Lamp>> LampFactory::getItemMap()
@@ -44,9 +45,9 @@ void LampFactory::set_address_pins()
std::array<uint8_t, 3> pins; std::array<uint8_t, 3> pins;
pins.at(0) = address_pins.at("A0"); pins.at(0) = this->get_address_pin(address_pins.at("A0"));
pins.at(1) = address_pins.at("A1"); pins.at(1) = this->get_address_pin(address_pins.at("A1"));
pins.at(2) = address_pins.at("A2"); pins.at(2) = this->get_address_pin(address_pins.at("A2"));
std::dynamic_pointer_cast<detail::DriverBoardPinController>(this->pin_controller)->set_address_pins(pins); std::dynamic_pointer_cast<detail::DriverBoardPinController>(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; return address + pin_base;
} }
void LampFactory::set_mux_pins()
{
auto address_pins = this->object.at(config_path::address_pins);
std::array<uint8_t, 13> 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<detail::DriverBoardPinController>(this->pin_controller)->set_mux_pins(pins);
}
} }
} }

View File

@@ -25,6 +25,8 @@ public:
private: private:
void set_address_pins(); void set_address_pins();
void set_mux_pins();
uint8_t get_address_pin(nlohmann::json & pin_object); uint8_t get_address_pin(nlohmann::json & pin_object);
}; };