1 #pragma once 2 3 namespace phosphor 4 { 5 namespace time 6 { 7 /** @brief Supported time modes 8 * NTP Time sourced by Network Time Server 9 * MANUAL User of the system need to set the time 10 */ 11 enum class Mode 12 { 13 NTP, 14 MANUAL, 15 }; 16 17 /** @brief Supported time owners 18 * BMC Time source may be NTP or MANUAL but it has to be set natively 19 * on the BMC. Meaning, host can not set the time. What it also 20 * means is that when BMC gets IPMI_SET_SEL_TIME, then its ignored. 21 * similarly, when BMC gets IPMI_GET_SEL_TIME, then the BMC's time 22 * is returned. 23 * 24 * HOST Its only IPMI_SEL_SEL_TIME that will set the time on BMC. 25 * Meaning, IPMI_GET_SEL_TIME and request to get BMC time will 26 * result in same value. 27 * 28 * SPLIT Both BMC and HOST will maintain their individual clocks but then 29 * the time information is stored in BMC. BMC can have either NTP 30 * or MANUAL as it's source of time and will set the time directly 31 * on the BMC. When IPMI_SET_SEL_TIME is received, then the delta 32 * between that and BMC's time is calculated and is stored. 33 * When BMC reads the time, the current time is returned. 34 * When IPMI_GET_SEL_TIME is received, BMC's time is retrieved and 35 * then the delta offset is factored in prior to returning. 36 * 37 * BOTH: BMC's time is set with whoever that sets the time. Similarly, 38 * BMC's time is returned to whoever that asks the time. 39 */ 40 enum class Owner 41 { 42 BMC, 43 HOST, 44 SPLIT, 45 BOTH, 46 }; 47 } 48 } 49 50