PEL: Get BCD time from epoch milliseconds
Add a new BCD time conversion function which will be used in a future
commit to convert an OpenBMC event log timestamp into BCD time.
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I08f585d1663bf2d2f73d42b8716756d8c7e3559e
diff --git a/extensions/openpower-pels/bcd_time.cpp b/extensions/openpower-pels/bcd_time.cpp
index bb80f1a..675b625 100644
--- a/extensions/openpower-pels/bcd_time.cpp
+++ b/extensions/openpower-pels/bcd_time.cpp
@@ -43,6 +43,14 @@
return bcd;
}
+BCDTime getBCDTime(uint64_t epochMS)
+{
+ std::chrono::milliseconds ms{epochMS};
+ std::chrono::time_point<std::chrono::system_clock> time{ms};
+
+ return getBCDTime(time);
+}
+
Stream& operator>>(Stream& s, BCDTime& time)
{
s >> time.yearMSB >> time.yearLSB >> time.month >> time.day >> time.hour;
diff --git a/extensions/openpower-pels/bcd_time.hpp b/extensions/openpower-pels/bcd_time.hpp
index e218756..86d9f4e 100644
--- a/extensions/openpower-pels/bcd_time.hpp
+++ b/extensions/openpower-pels/bcd_time.hpp
@@ -36,6 +36,14 @@
BCDTime getBCDTime(std::chrono::time_point<std::chrono::system_clock>& time);
/**
+ * @brief Converts the number of milliseconds since the epoch into BCD time
+ *
+ * @param[in] milliseconds - Number of milliseconds since the epoch
+ * @return BCDTime - the BCD time
+ */
+BCDTime getBCDTime(uint64_t milliseconds);
+
+/**
* @brief Converts a number to a BCD.
*
* For example 32 -> 0x32.