summaryrefslogtreecommitdiff
path: root/include/ipmitool/ipmi_fru.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ipmitool/ipmi_fru.h')
-rw-r--r--include/ipmitool/ipmi_fru.h46
1 files changed, 26 insertions, 20 deletions
diff --git a/include/ipmitool/ipmi_fru.h b/include/ipmitool/ipmi_fru.h
index 65696ba..4d4d6c6 100644
--- a/include/ipmitool/ipmi_fru.h
+++ b/include/ipmitool/ipmi_fru.h
@@ -30,17 +30,19 @@
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
-#ifndef IPMI_FRU_H
-#define IPMI_FRU_H
+#pragma once
#include <inttypes.h>
#include <ipmitool/ipmi.h>
#include <ipmitool/ipmi_sdr.h>
+#include <ipmitool/ipmi_time.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
+#define FRU_END_OF_FIELDS 0xc1
+
#define GET_FRU_INFO 0x10
#define GET_FRU_DATA 0x11
#define SET_FRU_DATA 0x12
@@ -193,9 +195,6 @@ struct fru_multirec_powersupply {
#pragma pack(0)
#endif
-static const char * combined_voltage_desc[] __attribute__((unused)) = {
-"12 V", "-12 V", "5 V", "3.3 V"};
-
#ifdef HAVE_PRAGMA_PACK
#pragma pack(1)
#endif
@@ -590,20 +589,28 @@ struct fru_picmgext_amc_link_desc_record {
#pragma pack(0)
#endif
+/* IPMI Return codes for Get FRU Inventory Area and Write FRU Inventory Area */
+/* PROTECTED_OFFSET Only expected on write command failures. */
+#define IPMI_CC_FRU_WRITE_PROTECTED_OFFSET 0x80
+#define IPMI_CC_FRU_DEVICE_BUSY 0x81
+
/* FRU Board manufacturing date */
-static const uint64_t secs_from_1970_1996 = 820454400;
-static const char * chassis_type_desc[] __attribute__((unused)) = {
- "Unspecified", "Other", "Unknown",
- "Desktop", "Low Profile Desktop", "Pizza Box",
- "Mini Tower", "Tower",
- "Portable", "LapTop", "Notebook", "Hand Held",
- "Docking Station", "All in One", "Sub Notebook",
- "Space-saving", "Lunch Box", "Main Server Chassis",
- "Expansion Chassis", "SubChassis", "Bus Expansion Chassis",
- "Peripheral Chassis", "RAID Chassis", "Rack Mount Chassis",
- "Sealed-case PC", "Multi-system Chassis", "CompactPCI",
- "AdvancedTCA", "Blade", "Blade Enclosure"
-};
+#define FRU_BOARD_DATE_UNSPEC 0 /* IPMI FRU Information Storage Definition
+ v1.0 rev 1.3, Table 11-1 */
+static inline time_t ipmi_fru2time_t(void *mfg_date) {
+ const uint64_t secs_from_1970_1996 = 820454400;
+ uint32_t fru_ts = ipmi24toh(mfg_date);
+ time_t ts;
+
+ if (FRU_BOARD_DATE_UNSPEC == fru_ts) {
+ ts = IPMI_TIME_UNSPECIFIED;
+ }
+ else {
+ ts = fru_ts * 60 + secs_from_1970_1996;
+ }
+
+ return ts;
+}
typedef struct ipmi_fru_bloc {
struct ipmi_fru_bloc * next;
@@ -614,5 +621,4 @@ typedef struct ipmi_fru_bloc {
int ipmi_fru_main(struct ipmi_intf *intf, int argc, char **argv);
int ipmi_fru_print(struct ipmi_intf *intf, struct sdr_record_fru_locator *fru);
-
-#endif /* IPMI_FRU_H */
+char *get_fru_area_str(uint8_t *data, uint32_t *offset);