xref: /openbmc/phosphor-bmc-code-mgmt/eeprom-device/eeprom_device_version.hpp (revision 975fbbeb3f11e01a2ba4bcad5213935019e2568b)
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