| #pragma once | 
 |  | 
 | #include "common/include/device.hpp" | 
 | #include "common/include/software_config.hpp" | 
 | #include "common/include/software_manager.hpp" | 
 | #include "vr.hpp" | 
 |  | 
 | namespace SoftwareInf = phosphor::software; | 
 | namespace ManagerInf = SoftwareInf::manager; | 
 | namespace DeviceInf = SoftwareInf::device; | 
 | namespace ConfigInf = SoftwareInf::config; | 
 |  | 
 | namespace VRInf = SoftwareInf::VR; | 
 |  | 
 | namespace SDBusPlusSoftware = sdbusplus::common::xyz::openbmc_project::software; | 
 |  | 
 | namespace phosphor::software::i2c_vr::device | 
 | { | 
 |  | 
 | class I2CVRDevice : public DeviceInf::Device | 
 | { | 
 |   public: | 
 |     using DeviceInf::Device::softwareCurrent; | 
 |     I2CVRDevice(sdbusplus::async::context& ctx, enum VRInf::VRType vrType, | 
 |                 const uint16_t& bus, const uint8_t& address, | 
 |                 ConfigInf::SoftwareConfig& config, | 
 |                 ManagerInf::SoftwareManager* parent) : | 
 |         DeviceInf::Device( | 
 |             ctx, config, parent, | 
 |             {SDBusPlusSoftware::ApplyTime::RequestedApplyTimes::Immediate, | 
 |              SDBusPlusSoftware::ApplyTime::RequestedApplyTimes::OnReset}), | 
 |         vrInterface(VRInf::create(ctx, vrType, bus, address)) | 
 |     {} | 
 |  | 
 |     std::unique_ptr<VRInf::VoltageRegulator> vrInterface; | 
 |  | 
 |     sdbusplus::async::task<bool> updateDevice(const uint8_t* image, | 
 |                                               size_t image_size) final; | 
 |  | 
 |     sdbusplus::async::task<bool> getVersion(uint32_t* sum) const; | 
 | }; | 
 |  | 
 | } // namespace phosphor::software::i2c_vr::device |