| #pragma once |
| |
| #include "config.h" |
| #include "epoch_base.hpp" |
| |
| #include <chrono> |
| |
| namespace phosphor |
| { |
| namespace time |
| { |
| |
| /** @class HostEpoch |
| * @brief OpenBMC HOST EpochTime implementation. |
| * @details A concrete implementation for xyz.openbmc_project.Time.EpochTime |
| * DBus API for HOST's epoch time. |
| */ |
| class HostEpoch : public EpochBase |
| { |
| public: |
| friend class TestHostEpoch; |
| HostEpoch(sdbusplus::bus::bus& bus, |
| const char* objPath); |
| |
| /** |
| * @brief Get value of Elapsed property |
| * |
| * @return The elapsed microseconds since UTC |
| **/ |
| uint64_t elapsed() const override; |
| |
| /** |
| * @brief Set value of Elapsed property |
| * |
| * @param[in] value - The microseconds since UTC to set |
| * |
| * @return The updated elapsed microseconds since UTC |
| **/ |
| uint64_t elapsed(uint64_t value) override; |
| |
| private: |
| /** @brief The diff between BMC and Host time */ |
| std::chrono::microseconds offset; |
| |
| /** @brief The file to store the offset in File System. |
| * Read back when starts |
| **/ |
| static constexpr auto offsetFile = HOST_OFFSET_FILE; |
| |
| /** @brief Read data with type T from file |
| * |
| * @param[in] fileName - The name of file to read from |
| * |
| * @return The data with type T |
| */ |
| template <typename T> |
| static T readData(const char* fileName); |
| |
| /** @brief Write data with type T to file |
| * |
| * @param[in] fileName - The name of file to write to |
| * @param[in] data - The data with type T to write to file |
| */ |
| template <typename T> |
| static void writeData(const char* fileName, T&& data); |
| }; |
| |
| } // namespace time |
| } // namespace phosphor |