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.