blob: 0e78432910d50e3591059cffa8f4f3e02a3cc1d8 [file] [log] [blame]
#pragma once
#include <xyz/openbmc_project/Time/Owner/server.hpp>
#include <xyz/openbmc_project/Time/Synchronization/server.hpp>
namespace phosphor
{
namespace time
{
/** @brief Alias to time sync mode class */
using ModeSetting =
sdbusplus::xyz::openbmc_project::Time::server::Synchronization;
/** @brief Alias to time owner class */
using OwnerSetting = sdbusplus::xyz::openbmc_project::Time::server::Owner;
/** @brief Supported time sync modes
* NTP Time sourced by Network Time Server
* Manual User of the system need to set the time
*/
using Mode = ModeSetting::Method;
/** @brief Supported time owners
* BMC Time source may be NTP or Manual but it has to be set natively
* on the BMC. Meaning, host can not set the time. What it also
* means is that when BMC gets IPMI_SET_SEL_TIME, then its ignored.
* similarly, when BMC gets IPMI_GET_SEL_TIME, then the BMC's time
* is returned.
*
* Host Its only IPMI_SEL_SEL_TIME that will set the time on BMC.
* Meaning, IPMI_GET_SEL_TIME and request to get BMC time will
* result in same value.
*
* Split Both BMC and Host will maintain their individual clocks but then
* the time information is stored in BMC. BMC can have either NTP
* or Manual as it's source of time and will set the time directly
* on the BMC. When IPMI_SET_SEL_TIME is received, then the delta
* between that and BMC's time is calculated and is stored.
* When BMC reads the time, the current time is returned.
* When IPMI_GET_SEL_TIME is received, BMC's time is retrieved and
* then the delta offset is factored in prior to returning.
*
* Both: BMC's time is set with whoever that sets the time. Similarly,
* BMC's time is returned to whoever that asks the time.
*/
using Owner = OwnerSetting::Owners;
} // namespace time
} // namespace phosphor