/* * LampFactory.cpp * * Created on: December 28, 2019 * Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert */ #include #include "LampFactory.h" #include "output/items/detail/Lamp.h" namespace flippR_driver { namespace output { LampFactory::LampFactory(nlohmann::json &object, std::shared_ptr pin_controller) : ItemFactory{object, pin_controller} {} std::map> LampFactory::getItemMap() { auto lamps = this->object.at(config_path::lamps_path); std::map> lamp_map; for (auto lamp : lamps) { 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 lamp_item = std::make_shared(std::static_pointer_cast(this->pin_controller), address + pin_base, name); lamp_map.emplace(name, lamp_item); } return lamp_map; } } }