diff options
Diffstat (limited to 'include/ipmitool/ipmi_sdr.h')
-rw-r--r-- | include/ipmitool/ipmi_sdr.h | 101 |
1 files changed, 36 insertions, 65 deletions
diff --git a/include/ipmitool/ipmi_sdr.h b/include/ipmitool/ipmi_sdr.h index 41bb533..85231c6 100644 --- a/include/ipmitool/ipmi_sdr.h +++ b/include/ipmitool/ipmi_sdr.h @@ -30,13 +30,13 @@ * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. */ -#ifndef IPMI_SDR_H -#define IPMI_SDR_H +#pragma once #if HAVE_CONFIG_H # include <config.h> #endif +#include <stdbool.h> #include <inttypes.h> #include <math.h> #include <ipmitool/bswap.h> @@ -381,6 +381,29 @@ struct sdr_record_common_sensor { struct sdr_record_mask mask; +/* IPMI 2.0, Table 43-1, byte 21[7:6] Analog (numeric) Data Format */ +#define SDR_UNIT_FMT_UNSIGNED 0 /* unsigned */ +#define SDR_UNIT_FMT_1S_COMPL 1 /* 1's complement (signed) */ +#define SDR_UNIT_FMT_2S_COMPL 2 /* 2's complement (signed) */ +#define SDR_UNIT_FMT_NA 3 /* does not return analog (numeric) reading */ +/* IPMI 2.0, Table 43-1, byte 21[5:3] Rate */ +#define SDR_UNIT_RATE_NONE 0 /* none */ +#define SDR_UNIT_RATE_MICROSEC 1 /* per us */ +#define SDR_UNIT_RATE_MILLISEC 2 /* per ms */ +#define SDR_UNIT_RATE_SEC 3 /* per s */ +#define SDR_UNIT_RATE_MIN 4 /* per min */ +#define SDR_UNIT_RATE_HR 5 /* per hour */ +#define SDR_UNIT_RATE_DAY 6 /* per day */ +#define SDR_UNIT_RATE_RSVD 7 /* reserved */ +/* IPMI 2.0, Table 43-1, byte 21[2:1] Modifier Unit */ +#define SDR_UNIT_MOD_NONE 0 /* none */ +#define SDR_UNIT_MOD_DIV 1 /* Basic Unit / Modifier Unit */ +#define SDR_UNIT_MOD_MUL 2 /* Basic Unit * Mofifier Unit */ +#define SDR_UNIT_MOD_RSVD 3 /* Reserved */ +/* IPMI 2.0, Table 43-1, byte 21[0] Percentage */ +#define SDR_UNIT_PCT_NO 0 +#define SDR_UNIT_PCT_YES 1 + struct { #if WORDS_BIGENDIAN uint8_t analog:2; @@ -394,8 +417,8 @@ struct sdr_record_common_sensor { uint8_t analog:2; #endif struct { - uint8_t base; - uint8_t modifier; + uint8_t base; /* Base unit type code per IPMI 2.0 Table 43-15 */ + uint8_t modifier; /* Modifier unit type code per Table 43-15 */ } ATTRIBUTE_PACKING type; } ATTRIBUTE_PACKING unit; } ATTRIBUTE_PACKING; @@ -773,50 +796,7 @@ struct sdr_record_list { #pragma pack(0) #endif - -/* unit description codes (IPMI v1.5 section 37.16) */ -#define UNIT_MAX 0x90 -static const char *unit_desc[] __attribute__ ((unused)) = { -"unspecified", - "degrees C", "degrees F", "degrees K", - "Volts", "Amps", "Watts", "Joules", - "Coulombs", "VA", "Nits", - "lumen", "lux", "Candela", - "kPa", "PSI", "Newton", - "CFM", "RPM", "Hz", - "microsecond", "millisecond", "second", "minute", "hour", - "day", "week", "mil", "inches", "feet", "cu in", "cu feet", - "mm", "cm", "m", "cu cm", "cu m", "liters", "fluid ounce", - "radians", "steradians", "revolutions", "cycles", - "gravities", "ounce", "pound", "ft-lb", "oz-in", "gauss", - "gilberts", "henry", "millihenry", "farad", "microfarad", - "ohms", "siemens", "mole", "becquerel", "PPM", "reserved", - "Decibels", "DbA", "DbC", "gray", "sievert", - "color temp deg K", "bit", "kilobit", "megabit", "gigabit", - "byte", "kilobyte", "megabyte", "gigabyte", "word", "dword", - "qword", "line", "hit", "miss", "retry", "reset", - "overflow", "underrun", "collision", "packets", "messages", - "characters", "error", "correctable error", "uncorrectable error",}; - -/* sensor type codes (IPMI v1.5 table 36.3) - / Updated to v2.0 Table 42-3, Sensor Type Codes */ #define SENSOR_TYPE_MAX 0x2C -static const char *sensor_type_desc[] __attribute__ ((unused)) = { -"reserved", - "Temperature", "Voltage", "Current", "Fan", - "Physical Security", "Platform Security", "Processor", - "Power Supply", "Power Unit", "Cooling Device", "Other", - "Memory", "Drive Slot / Bay", "POST Memory Resize", - "System Firmwares", "Event Logging Disabled", "Watchdog1", - "System Event", "Critical Interrupt", "Button", - "Module / Board", "Microcontroller", "Add-in Card", - "Chassis", "Chip Set", "Other FRU", "Cable / Interconnect", - "Terminator", "System Boot Initiated", "Boot Error", - "OS Boot", "OS Critical Stop", "Slot / Connector", - "System ACPI Power State", "Watchdog2", "Platform Alert", - "Entity Presence", "Monitor ASIC", "LAN", - "Management Subsys Health", "Battery", "Session Audit", - "Version Change", "FRU State" }; struct sensor_reading { char s_id[17]; /* name of the sensor */ @@ -864,11 +844,10 @@ struct sdr_get_rs *ipmi_sdr_get_next_header(struct ipmi_intf *intf, struct ipmi_sdr_iterator *i); uint8_t *ipmi_sdr_get_record(struct ipmi_intf *intf, struct sdr_get_rs *header, struct ipmi_sdr_iterator *i); -void ipmi_sdr_end(struct ipmi_intf *intf, struct ipmi_sdr_iterator *i); +void ipmi_sdr_end(struct ipmi_sdr_iterator *i); int ipmi_sdr_print_sdr(struct ipmi_intf *intf, uint8_t type); -int ipmi_sdr_print_name_from_rawentry(struct ipmi_intf *intf,uint16_t id, - uint8_t type,uint8_t * raw); +int ipmi_sdr_print_name_from_rawentry(uint16_t id, uint8_t type,uint8_t * raw); int ipmi_sdr_print_rawentry(struct ipmi_intf *intf, uint8_t type, uint8_t * raw, int len); int ipmi_sdr_print_listentry(struct ipmi_intf *intf, @@ -877,8 +856,8 @@ void ipmi_sdr_print_sensor_hysteresis(struct sdr_record_common_sensor *sensor, struct sdr_record_full_sensor *full, uint8_t hysteresis_value, const char *hdrstr); -const char *ipmi_sdr_get_unit_string(uint8_t pct, uint8_t type, - uint8_t base, uint8_t modifier); +const char *ipmi_sdr_get_unit_string(bool pct, uint8_t type, + uint8_t base, uint8_t modifier); struct sensor_reading * ipmi_sdr_read_sensor_value(struct ipmi_intf *intf, struct sdr_record_common_sensor *sensor, @@ -912,15 +891,9 @@ int ipmi_sdr_get_reservation(struct ipmi_intf *intf, int use_builtin, int ipmi_sdr_print_sensor_eventonly(struct ipmi_intf *intf, struct sdr_record_eventonly_sensor *sensor); -int ipmi_sdr_print_sensor_generic_locator(struct ipmi_intf *intf, - struct sdr_record_generic_locator - *fru); -int ipmi_sdr_print_sensor_fru_locator(struct ipmi_intf *intf, - struct sdr_record_fru_locator *fru); -int ipmi_sdr_print_sensor_mc_locator(struct ipmi_intf *intf, - struct sdr_record_mc_locator *mc); -int ipmi_sdr_print_sensor_entity_assoc(struct ipmi_intf *intf, - struct sdr_record_entity_assoc *assoc); +int ipmi_sdr_print_sensor_generic_locator(struct sdr_record_generic_locator *fru); +int ipmi_sdr_print_sensor_fru_locator(struct sdr_record_fru_locator *fru); +int ipmi_sdr_print_sensor_mc_locator(struct sdr_record_mc_locator *mc); struct sdr_record_list *ipmi_sdr_find_sdr_byentity(struct ipmi_intf *intf, struct entity_id *entity); @@ -933,8 +906,8 @@ struct sdr_record_list *ipmi_sdr_find_sdr_byid(struct ipmi_intf *intf, struct sdr_record_list *ipmi_sdr_find_sdr_bytype(struct ipmi_intf *intf, uint8_t type); int ipmi_sdr_list_cache(struct ipmi_intf *intf); -int ipmi_sdr_list_cache_fromfile(struct ipmi_intf *intf, const char *ifile); -void ipmi_sdr_list_empty(struct ipmi_intf *intf); +int ipmi_sdr_list_cache_fromfile(const char *ifile); +void ipmi_sdr_list_empty(void); int ipmi_sdr_print_info(struct ipmi_intf *intf); void ipmi_sdr_print_discrete_state(struct ipmi_intf *intf, const char *desc, uint8_t sensor_type, @@ -952,5 +925,3 @@ int ipmi_sdr_print_sensor_event_enable(struct ipmi_intf *intf, uint8_t sensor_num, uint8_t sensor_type, uint8_t event_type, int numeric_fmt, uint8_t target, uint8_t lun, uint8_t channel); - -#endif /* IPMI_SDR_H */ |