#ifndef __SDR_TYPE_H__ #define __SDR_TYPE_H__ #include #include "Types.h" #define FULL_SDR_REC 0x01 #define COMPACT_SDR_REC 0x02 #define EVENT_ONLY_SDR_REC 0x03 #define ENTITY_ASSOCIATION_SDR_REC 0x08 #define DEV_REL_ENTITY_ASSOCIATION_SDR_REC 0x09 #define GENERIC_DEVICE_LOCATOR_SDR_REC 0x10 #define FRU_DEVICE_LOCATOR_SDR_REC 0x11 #define MGMT_CTRL_DEV_LOCATOR_SDR_REC 0x12 #define MGMT_CTRL_CONFIRMATION_SDR_REC 0x13 #define BMC_MSG_CHANNEL_INFO_REC 0x14 #define OEM_SDRFRU_REC 0xD0 #define OEM_SDRNM_REC 0xC0 #define THRESHOLD_SENSOR_CLASS 0x01 /** * * @brief Maximum Length of the ID String * **/ #define MAX_ID_STR_LEN 16 #define MAX_FRU_SDR_STR_SIZE 40 /** * * @struct SDRRecHdr * * @brief SDR Record Header * **/ typedef struct { uint16_t ID; // uint8_t ID_H; uint8_t Version; uint8_t Type; uint8_t Len; } PACKED SDRRecHdr_T; /** ** @struct FullSensorRec_T ** @brief Full Sensor Record ** @SDRType = 0x01 ***/ typedef struct { /* SENSOR RECORD HEADER */ SDRRecHdr_T hdr; /* RECORD KEY BYTES */ uint8_t OwnerID; uint8_t OwnerLUN; uint8_t SensorNum; /* RECORD BODY BYTES */ uint8_t EntityID; uint8_t EntityIns; uint8_t SensorInit; uint8_t SensorCaps; uint8_t SensorType; uint8_t EventTypeCode; uint16_t AssertionEventMask; uint16_t DeAssertionEventMask; uint16_t DiscreteReadingMask; uint8_t Units1; uint8_t Units2; uint8_t Units3; uint8_t Linearization; uint8_t M; uint8_t M_Tolerance; uint8_t B; uint8_t B_Accuracy; uint8_t Accuracy; uint8_t R_B_Exp; uint8_t Flags; uint8_t NominalReading; uint8_t NormalMax; uint8_t NormalMin; uint8_t MaxReading; uint8_t MinReading; uint8_t UpperNonRecoverable; uint8_t UpperCritical; uint8_t UpperNonCritical; uint8_t LowerNonRecoverable; uint8_t LowerCritical; uint8_t LowerNonCritical; uint8_t PositiveHysterisis; uint8_t NegativeHysterisis; uint8_t Reserved1; uint8_t Reserved2; uint8_t OEMField; uint8_t IDStrTypeLen; int8_t IDStr [MAX_ID_STR_LEN]; } FullSensorRec_T; /** ** @struct CompactSensorRec_T ** @brief Compact Sensor Record ** @SDRType = 0x02 ***/ typedef struct { /* SENSOR RECORD HEADER */ SDRRecHdr_T hdr; /* RECORD KEY BYTES */ uint8_t OwnerID; uint8_t OwnerLUN; uint8_t SensorNum; /* RECORD BODY BYTES */ uint8_t EntityID; uint8_t EntityIns; uint8_t SensorInit; uint8_t SensorCaps; uint8_t SensorType; uint8_t EventTypeCode; uint16_t AssertionEventMask; uint16_t DeAssertionEventMask; uint16_t DiscreteReadingMask; uint8_t Units1; uint8_t Units2; uint8_t Units3; uint16_t RecordSharing; uint8_t PositiveHysteris; uint8_t NegativeHysterisis; uint8_t Reserved1; uint8_t Reserved2; uint8_t Reserved3; uint8_t OEMField; uint8_t IDStrTypeLen; int8_t IDStr [MAX_ID_STR_LEN]; } CompactSensorRec_T; /** ** @struct ** @brief Common structure for both Full and Compact sensor Record. **/ typedef struct { /* SENSOR RECORD HEADER */ SDRRecHdr_T hdr; /* RECORD KEY BYTES */ uint8_t OwnerID; uint8_t OwnerLUN; uint8_t SensorNum; /* RECORD BODY BYTES */ uint8_t EntityID; uint8_t EntityIns; uint8_t SensorInit; uint8_t SensorCaps; uint8_t SensorType; uint8_t EventTypeCode; uint16_t AssertionEventMask; uint16_t DeAssertionEventMask; uint16_t DiscreteReadingMask; uint8_t Units1; uint8_t Units2; uint8_t Units3; } CommonSensorRec_T; /** ** @struct EvtOnlySensorRec_T ** @brief Event only Sensor Record ** @SDRType = 0x03 ***/ typedef struct { /* SENSOR RECORD HEADER */ SDRRecHdr_T hdr; /* RECORD KEY BYTES */ uint8_t OwnerID; uint8_t OwnerLUN; uint8_t SensorNum; /* RECORD BODY BYTES */ uint8_t EntityID; uint8_t EntityIns; uint8_t SensorType; uint8_t EventTypeCode; uint16_t RecordSharing; uint8_t Reserved1; uint8_t OEMField; uint8_t IDStrTypeLen; char IDStr [MAX_ID_STR_LEN]; } EvtOnlySensorRec_T; /** ** @struct MgmtCtrlrConfirmRec_T ** @brief Management Controller Confirmation Record ** @SDRType = 0x13 ***/ typedef struct { /* SENSOR RECORD HEADER */ SDRRecHdr_T hdr; /* RECORD KEY BYTES */ uint8_t DevSlaveAddr; uint8_t DevID; uint8_t ChannelNum; /* RECORD BODY BYTES */ uint8_t FirmwareRev1; uint8_t FirmwareRev2; uint8_t IPMIVer; uint8_t MftrID [3]; uint8_t ProdID [2]; uint8_t DevGUID [MAX_ID_STR_LEN]; } MgmtCtrlrConfirmRec_T; /** ** @struct MgmtCtrlrDevLocator_T ** @brief Management Controller Device Locator Record ** @SDRType = 0x12 ***/ typedef struct { /* SENSOR RECORD HEADER */ SDRRecHdr_T hdr; /* RECORD KEY BYTES */ uint8_t DevSlaveAddr; uint8_t ChannelNum; /* RECORD BODY BYTES */ uint8_t PowerStateNotification; uint8_t DeviceCaps; uint8_t reserved [3]; uint8_t EntityID; uint8_t EntityIns; uint8_t OEMField; uint8_t IDStrLen; uint8_t DevIdStr [MAX_ID_STR_LEN]; } MgmtCtrlrDevLocator_T; /** ** @struct GnrcDevLocatorRec_T ** @brief Generic Device Locator Record ** @SDRType = 0x10 ***/ typedef struct { /* SENSOR RECORD HEADER */ SDRRecHdr_T hdr; /* RECORD KEY BYTES */ uint8_t DevAccessAddr; uint8_t DevSlaveAddr; uint8_t LUNBusID; /* RECORD BODY BYTES */ uint8_t AddrSpan; uint8_t Reserved; uint8_t DevType; uint8_t DevTypeModifier; uint8_t EntityID; uint8_t EntityIns; uint8_t OEMField; uint8_t IDStrLen; char DevIdStr [MAX_ID_STR_LEN]; } GnrcDevLocatorRec_T; /** ** @struct FRUcDevLocatorRec_T ** @brief FRU Device Locator Record ** @SDRType = 0x11 ***/ typedef struct { /* SENSOR RECORD HEADER */ SDRRecHdr_T hdr; /* RECORD KEY BYTES */ uint8_t DevAccessAddr; uint8_t FRUIDSlaveAddr; uint8_t AccessLUNBusID; uint8_t ChannelNumber; /* RECORD BODY BYTES */ uint8_t Reserved; uint8_t DevType; uint8_t DevTypeModifier; uint8_t EntityID; uint8_t EntityIns; uint8_t OEMField; uint8_t IDStrLen; int8_t DevIdStr [MAX_ID_STR_LEN]; } FRUDevLocatorRec_T; /** ** @struct OEM_FRURec_T ** @brief OEM FRU Record Info ***/ //typedef struct //{ // /*SENSOR RECORD HEADER*/ // SDRRecHdr_T hdr; // // /*RECORD BODY BYTES*/ // uint8_t Mfg_ID1; // uint8_t Mfg_ID2; // uint8_t Mfg_ID3; // uint8_t OEM_Fru; // uint8_t DeviceID; // uint16_t Size; // uint8_t AccessType; // uint8_t EntityID; // uint8_t EntityIns; // uint8_t IDStrLen; // INT8S FilePath[MAX_FRU_SDR_STR_SIZE]; // //} PACKED OEM_FRURec_T; /** * * @struct OEM_NMRec_T * * @brief OEM NM Record Info * **/ //typedef struct //{ // // /*SENSOR RECORD HEADER */ // SDRRecHdr_T hdr; // // /*RECORD BODY BYTES*/ // uint8_t Mfg_ID1; // uint8_t Mfg_ID2; // uint8_t Mfg_ID3; // uint8_t RecordSubType; // uint8_t VersionNo; // uint8_t NMDevSlaveAddress; // uint8_t ChannelNumber; // uint8_t NMHealthEvtSensor; // uint8_t NMExceptionEvtSensor; // uint8_t NMOpCapSensor; // uint8_t NMAlertThresExSensor; // //}PACKED OEM_NMRec_T; /** ** @struct BMCMsgChannelInfoRec_T ** @brief BMC Mesage Channel info Record ** @SDRType = 0x14 ***/ typedef struct { /* SENSOR RECORD HEADER */ SDRRecHdr_T hdr; /* RECORD BODY BYTES */ uint8_t MsgChannel0Info; uint8_t MsgChannel1Info; uint8_t MsgChannel2Info; uint8_t MsgChannel3Info; uint8_t MsgChannel4Info; uint8_t MsgChannel5Info; uint8_t MsgChannel6Info; uint8_t MsgChannel7Info; uint8_t MessagingINTType; uint8_t EvtMsgBufINTType; uint8_t Reserved; } BMCMsgChannelInfoRec_T; /** ** @struct SDRRec_T ** @brief Complete unionized record structure with unions for ** easy reference to different types ***/ typedef union { FullSensorRec_T full_sensor_rec; CompactSensorRec_T compact_sensor_rec; MgmtCtrlrConfirmRec_T mc_confim_rec; MgmtCtrlrDevLocator_T mc_dev_locator_rec; GnrcDevLocatorRec_T gen_dev_locator_rec; FRUDevLocatorRec_T fru_dev_locator_rec; BMCMsgChannelInfoRec_T bmc_msg_chnl_info_rec; char* Data; } SDRRec_T; #endif /* __SDR_TYPR_H__ */