#include "eeprom_device_version.hpp" #include "pt5161l/pt5161l.hpp" #include #include using ProviderFactory = std::function( const std::string&, const uint16_t, const uint8_t)>; template std::unique_ptr createProvider( const std::string& chipModel, const uint16_t bus, const uint8_t address) { return std::make_unique(chipModel, bus, address); } static const std::unordered_map providerMap = { {"PT5161LFirmware", createProvider}}; std::unique_ptr 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; }