MdePkg/IndustryStandard/Ipmi: Use union for bitmap fields

This commit enhances the bitmap fields defined in the IPMI header files,
union types will be used to provide the users with both the individual
bitmap access and the whole byte/word access.

Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Hao Wu
2018-04-28 13:48:06 +08:00
parent 25517f7ce3
commit aeb6f57625
5 changed files with 1079 additions and 539 deletions

View File

@@ -26,31 +26,57 @@
#pragma pack(1)
//
// Structure definition for FRU Common Header
// Structure definitions for FRU Common Header
//
typedef union {
///
/// Individual bit fields
///
struct {
UINT8 FormatVersionNumber:4;
UINT8 Reserved:4;
} Bits;
///
/// All bit fields as a 8-bit value
///
UINT8 Uint8;
} IPMI_FRU_COMMON_HEADER_FORMAT_VERSION;
typedef struct {
UINT8 FormatVersionNumber:4;
UINT8 Reserved:4;
UINT8 InternalUseStartingOffset;
UINT8 ChassisInfoStartingOffset;
UINT8 BoardAreaStartingOffset;
UINT8 ProductInfoStartingOffset;
UINT8 MultiRecInfoStartingOffset;
UINT8 Pad;
UINT8 Checksum;
IPMI_FRU_COMMON_HEADER_FORMAT_VERSION FormatVersion;
UINT8 InternalUseStartingOffset;
UINT8 ChassisInfoStartingOffset;
UINT8 BoardAreaStartingOffset;
UINT8 ProductInfoStartingOffset;
UINT8 MultiRecInfoStartingOffset;
UINT8 Pad;
UINT8 Checksum;
} IPMI_FRU_COMMON_HEADER;
//
// Structure definition for FRU MultiRecord Header
//
typedef union {
///
/// Individual bit fields
///
struct {
UINT8 RecordFormatVersion:4;
UINT8 Reserved:3;
UINT8 EndofList:1;
} Bits;
///
/// All bit fields as a 8-bit value
///
UINT8 Uint8;
} IPMI_FRU_MULTI_RECORD_HEADER_FORMAT_VERSION;
typedef struct {
UINT8 RecordTypeId;
UINT8 RecordFormatVersion:4;
UINT8 Reserved:3;
UINT8 EndofList:1;
UINT8 RecordLength;
UINT8 RecordChecksum;
UINT8 HeaderChecksum;
UINT8 RecordTypeId;
IPMI_FRU_MULTI_RECORD_HEADER_FORMAT_VERSION FormatVersion;
UINT8 RecordLength;
UINT8 RecordChecksum;
UINT8 HeaderChecksum;
} IPMI_FRU_MULTI_RECORD_HEADER;
//