Files
flippr-code/FlippR-Driver/src/output/factories/Factory.cpp
2019-12-29 15:55:43 +01:00

52 lines
1.1 KiB
C++

/*
* Factory.cpp
*
* Created on: December 28, 2019
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
*/
#include "Factory.h"
namespace flippR_driver
{
namespace output
{
Factory::Factory(nlohmann::json &object, std::shared_ptr<PinController> pin_controller) :
pin_controller{pin_controller}
{
this->object = object;
this->initialize_port_extenders();
this->port_extenders = object.at("port_extenders");
}
void Factory::initialize_port_extender(nlohmann::json &extender)
{
auto i2c_address = extender.at("i2c_address").get<uint8_t>();
auto pin_base = extender.at("pin_base").get<uint8_t>();
this->pin_controller->initialize_port_expander(i2c_address, pin_base);
}
void Factory::initialize_port_extenders()
{
for (auto extender : port_extenders)
{
this->initialize_port_extender(extender);
}
}
uint8_t Factory::get_extender_pin_base(std::string &name)
{
for (auto extender : port_extenders)
{
if (extender.at("name").get<std::string>() == name)
{
return extender.at("pin_base").get<uint8_t>();
}
}
return 0;
}
}
}