diff options
| -rw-r--r-- | frup.c | 27 |
1 files changed, 25 insertions, 2 deletions
@@ -175,6 +175,25 @@ const char* vpd_key_names [] = * * -------------------------------------------------------------------- */ + +static size_t _to_time_str (uint32_t mfg_date_time, char* timestr, uint32_t len) +{ + struct tm tm; + time_t t; + size_t s; + + ASSERT (timestr); + ASSERT (len); + + memset (&tm, '\0', sizeof (struct tm)); + + t = mfg_date_time; + gmtime_r (&t, &tm); + s = strftime (timestr, len, "%F - %H:%M:%S", &tm); + + return s; +} + /* private method to parse type/length */ static int _parse_type_length (const void *areabuf, @@ -716,6 +735,7 @@ parse_fru (const void* msgbuf, sd_bus_message* vpdtbl) ipmi_fru_area_info_t fru_area_info [ IPMI_FRU_AREA_TYPE_MAX ]; ipmi_fru_common_hdr_t* chdr = NULL; uint8_t* hdr = NULL; + char timestr [ OPENBMC_VPD_VAL_LEN ]; ipmi_fru_field_t vpd_info [ OPENBMC_VPD_KEY_MAX ]; @@ -836,7 +856,8 @@ parse_fru (const void* msgbuf, sd_bus_message* vpdtbl) if (i==OPENBMC_VPD_KEY_BOARD_MFG_DATE) { - sd_bus_message_append (vpdtbl, "sa{y}", vpd_key_names[i], mfg_date_time); + _to_time_str (mfg_date_time, timestr, OPENBMC_VPD_VAL_LEN); + sd_bus_message_append (vpdtbl, "{sv}", vpd_key_names[i], "s", timestr); #if IPMI_FRU_PARSER_DEBUG printf ("[%s] = [%d]\n", vpd_key_names[i], mfg_date_time); #else @@ -873,6 +894,7 @@ int parse_fru_area (const uint8_t area, const void* msgbuf, const uint8_t len, s ipmi_fru_common_hdr_t* chdr = NULL; uint8_t* hdr = NULL; const uint8_t* ipmi_fru_field_str=NULL; + char timestr [ OPENBMC_VPD_VAL_LEN ]; ipmi_fru_field_t vpd_info [ OPENBMC_VPD_KEY_MAX ]; @@ -943,7 +965,8 @@ int parse_fru_area (const uint8_t area, const void* msgbuf, const uint8_t len, s { if (i==OPENBMC_VPD_KEY_BOARD_MFG_DATE) { - sd_bus_message_append (vpdtbl, "sa{y}", vpd_key_names[i], mfg_date_time); + _to_time_str (mfg_date_time, timestr, OPENBMC_VPD_VAL_LEN); + sd_bus_message_append (vpdtbl, "{sv}", vpd_key_names[i], "s", timestr); #if IPMI_FRU_PARSER_DEBUG printf ("Board : [%s] = [%d]\n", vpd_key_names[i], mfg_date_time); #else |

