1 #pragma once 2 3 #include "common/include/host_power.hpp" 4 5 #include <cstdint> 6 #include <memory> 7 #include <optional> 8 #include <string> 9 10 namespace HostPowerInf = phosphor::software::host_power; 11 12 class DeviceVersion 13 { 14 public: DeviceVersion(const std::string & chipModel,const uint16_t bus,const uint8_t address)15 DeviceVersion(const std::string& chipModel, const uint16_t bus, 16 const uint8_t address) : 17 chipModel(chipModel), bus(bus), address(address) 18 {} 19 isDeviceReady()20 virtual bool isDeviceReady() 21 { 22 return true; 23 } 24 virtual std::string getVersion() = 0; 25 virtual std::optional<HostPowerInf::HostState> 26 getHostStateToQueryVersion() = 0; 27 28 virtual ~DeviceVersion() = default; 29 DeviceVersion(const DeviceVersion&) = delete; 30 DeviceVersion& operator=(const DeviceVersion&) = delete; 31 DeviceVersion(DeviceVersion&&) = delete; 32 DeviceVersion& operator=(DeviceVersion&&) = delete; 33 34 protected: 35 std::string chipModel; 36 uint16_t bus; 37 uint8_t address; 38 }; 39 40 std::unique_ptr<DeviceVersion> getVersionProvider( 41 const std::string& chipModel, uint16_t bus, uint8_t address); 42