blob: fa0e23844b510075998d227bf8e5f74b1a8cade6 [file] [log] [blame] [edit]
#include "eeprom_device_version.hpp"
#include "pt5161l/pt5161l.hpp"
#include <functional>
#include <unordered_map>
using ProviderFactory = std::function<std::unique_ptr<DeviceVersion>(
const std::string&, const uint16_t, const uint8_t)>;
template <typename ProviderType>
std::unique_ptr<DeviceVersion> createProvider(
const std::string& chipModel, const uint16_t bus, const uint8_t address)
{
return std::make_unique<ProviderType>(chipModel, bus, address);
}
static const std::unordered_map<std::string, ProviderFactory> providerMap = {
{"PT5161L", createProvider<PT5161LDeviceVersion>}};
std::unique_ptr<DeviceVersion> getVersionProvider(
const std::string& chipModel, const uint16_t bus, const uint8_t address)
{
auto it = providerMap.find(chipModel);
if (it != providerMap.end())
{
return it->second(chipModel, bus, address);
}
return nullptr;
}