diff options
author | Matthew Barth <msbarth@us.ibm.com> | 2019-01-21 11:35:27 -0600 |
---|---|---|
committer | Matthew Barth <msbarth@us.ibm.com> | 2019-02-13 14:31:44 -0600 |
commit | cc8912e93eb55e938b5cdb189a70d1f342fb49ea (patch) | |
tree | 7ec29cb03f91c91e00197eb97c7ee0158a34e35c /control/zone.cpp | |
parent | 93af41944aa471840e1ea5a7e2ad465635faa7f0 (diff) | |
download | phosphor-fan-presence-cc8912e93eb55e938b5cdb189a70d1f342fb49ea.tar.gz phosphor-fan-presence-cc8912e93eb55e938b5cdb189a70d1f342fb49ea.zip |
Persist current mode property framework
Add the ability to save the current mode property value to
persisted storage.
Change-Id: I354fce7c11a61871a49c9b205dc79ee598f8b1c8
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
Diffstat (limited to 'control/zone.cpp')
-rw-r--r-- | control/zone.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/control/zone.cpp b/control/zone.cpp index 9333daa..7d836ba 100644 --- a/control/zone.cpp +++ b/control/zone.cpp @@ -15,11 +15,16 @@ */ #include <chrono> #include <functional> +#include <fstream> +#include <cereal/cereal.hpp> +#include <cereal/archives/json.hpp> +#include <experimental/filesystem> #include <phosphor-logging/log.hpp> #include <phosphor-logging/elog.hpp> #include <phosphor-logging/elog-errors.hpp> #include <stdexcept> #include <xyz/openbmc_project/Common/error.hpp> +#include "config.h" #include "zone.hpp" #include "utility.hpp" #include "sdbusplus.hpp" @@ -34,6 +39,7 @@ namespace control using namespace std::chrono; using namespace phosphor::fan; using namespace phosphor::logging; +namespace fs = std::experimental::filesystem; using InternalFailure = sdbusplus::xyz::openbmc_project::Common:: Error::InternalFailure; @@ -597,6 +603,17 @@ const std::string& Zone::addServices(const std::string& path, return empty; } +void Zone::saveCurrentMode() +{ + fs::path path{CONTROL_PERSIST_ROOT_PATH}; + // Append zone and property description + path /= std::to_string(_zoneNum); + path /= "CurrentMode"; + std::ofstream ofs(path.c_str(), std::ios::binary); + cereal::JSONOutputArchive oArch(ofs); + oArch(ThermalObject::current()); +} + } } } |