/** @file
Build a table, each item is (key, info) pair.
and give a interface of query a string out of a table.
Copyright (c) 2005 - 2019, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _SMBIOS_QUERY_TABLE_H_
#define _SMBIOS_QUERY_TABLE_H_
#include
#define QUERY_TABLE_UNFOUND 0xFF
typedef struct TABLE_ITEM {
UINT16 Key;
CHAR16 *Info;
} TABLE_ITEM;
//
// Print info by option
//
#define PRINT_INFO_OPTION(Value, Option) \
do { \
if (Option == SHOW_NONE) { \
return ; \
} \
if (Option < SHOW_DETAIL) { \
Print (L"0x%x\n", Value); \
return ; \
} \
} while (0);
/**
Given a table and a Key, return the responding info.
Notes:
Table[Index].Key is change from UINT8 to UINT16,
in order to deal with "0xaa - 0xbb".
For example:
DisplaySELVariableDataFormatTypes(UINT8 Type, UINT8 Option)
has a item:
"0x07-0x7F, Unused"
Now define Key = 0x7F07, that is to say: High = 0x7F, Low = 0x07.
Then all the Key Value between Low and High gets the same string
L"Unused".
@param[in] Table The begin address of table.
@param[in] Number The number of table items.
@param[in] Key The query Key.
@param[in, out] Info Input as empty buffer; output as data buffer.
@param[in] InfoLen The max number of characters for Info.
@return the found Key and Info is valid.
@retval QUERY_TABLE_UNFOUND and Info should be NULL.
**/
UINT8
QueryTable (
IN TABLE_ITEM *Table,
IN UINTN Number,
IN UINT8 Key,
IN OUT CHAR16 *Info,
IN UINTN InfoLen
);
/**
Display the structure type information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayStructureTypeInfo (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display System Information (Type 1) Type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySystemWakeupType (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display Base Board (Type 2) Feature Flags.
@param[in] FeatureFlags The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayBaseBoardFeatureFlags (
IN UINT8 FeatureFlags,
IN UINT8 Option
);
/**
Display Base Board (Type 2) Board Type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayBaseBoardBoardType (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display System Enclosure (Type 3) Enclosure Type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySystemEnclosureType (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display System Enclosure (Type 3) Enclosure Status.
@param[in] Status The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySystemEnclosureStatus (
IN UINT8 Status,
IN UINT8 Option
);
/**
Display System Enclosure (Type 3) Security Status.
@param[in] Status The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySESecurityStatus (
IN UINT8 Status,
IN UINT8 Option
)
;
/**
Display Processor Information (Type 4) Type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayProcessorType (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display Processor Information (Type 4) Upgrade.
@param[in] Upgrade The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayProcessorUpgrade (
IN UINT8 Upgrade,
IN UINT8 Option
);
/**
Display Processor Information (Type 4) Characteristics.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayProcessorCharacteristics (
IN UINT16 Type,
IN UINT8 Option
);
/**
Display Memory Controller Information (Type 5) method.
@param[in] Method The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMcErrorDetectMethod (
IN UINT8 Method,
IN UINT8 Option
);
/**
Display Memory Controller Information (Type 5) Capability.
@param[in] Capability The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMcErrorCorrectCapability (
IN UINT8 Capability,
IN UINT8 Option
);
/**
Display Memory Controller Information (Type 5) Support.
@param[in] Support The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMcInterleaveSupport (
IN UINT8 Support,
IN UINT8 Option
);
/**
Display Memory Controller Information (Type 5) speeds.
@param[in] Speed The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMcMemorySpeeds (
IN UINT16 Speed,
IN UINT8 Option
);
/**
Display Memory Controller Information (Type 5) voltage.
@param[in] Voltage The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMemoryModuleVoltage (
IN UINT8 Voltage,
IN UINT8 Option
);
/**
Display Memory Module Information (Type 6) type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMmMemoryType (
IN UINT16 Type,
IN UINT8 Option
);
/**
Display Memory Module Information (Type 6) status.
@param[in] Status The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMmErrorStatus (
IN UINT8 Status,
IN UINT8 Option
);
/**
Display Cache Information (Type 7) SRAM Type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayCacheSRAMType (
IN UINT16 Type,
IN UINT8 Option
);
/**
Display Cache Information (Type 7) correcting Type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayCacheErrCorrectingType (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display Cache Information (Type 7) Type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayCacheSystemCacheType (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display Cache Information (Type 7) Associativity.
@param[in] Associativity The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayCacheAssociativity (
IN UINT8 Associativity,
IN UINT8 Option
);
/**
Display Port Connector Information (Type 8) type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayPortConnectorType (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display Port Connector Information (Type 8) port type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayPortType (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display System Slots (Type 9) slot type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySystemSlotType (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display System Slots (Type 9) data bus width.
@param[in] Width The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySystemSlotDataBusWidth (
IN UINT8 Width,
IN UINT8 Option
);
/**
Display System Slots (Type 9) usage information.
@param[in] Usage The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySystemSlotCurrentUsage (
IN UINT8 Usage,
IN UINT8 Option
);
/**
Display System Slots (Type 9) slot length.
@param[in] Length The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySystemSlotLength (
IN UINT8 Length,
IN UINT8 Option
);
/**
Display System Slots (Type 9) characteristics.
@param[in] Chara1 The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySlotCharacteristics1 (
IN UINT8 Chara1,
IN UINT8 Option
);
/**
Display System Slots (Type 9) characteristics.
@param[in] Chara2 The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySlotCharacteristics2 (
IN UINT8 Chara2,
IN UINT8 Option
);
/**
Display System Slots (Type 9) Information.
@param[in] Width The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySystemSlotInformation (
IN UINT8 Width,
IN UINT8 Option
);
/**
Display System Slots (Type 9) Physical Width.
@param[in] Width The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySystemSlotPhysicalWidth (
IN UINT8 Width,
IN UINT8 Option
);
/**
Display System Slots (Type 9) slot height.
@param[in] Length The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySystemSlotHeight (
IN UINT8 Length,
IN UINT8 Option
);
/**
Display On Board Devices Information (Type 10) types.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayOnboardDeviceTypes (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display System Event Log (Type 15) types.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySELTypes (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display System Event Log (Type 15) format type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySELVarDataFormatType (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display System Event Log (Type 15) dw1.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayPostResultsBitmapDw1 (
IN UINT32 Key,
IN UINT8 Option
);
/**
Display System Event Log (Type 15) dw2.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayPostResultsBitmapDw2 (
IN UINT32 Key,
IN UINT8 Option
);
/**
Display System Event Log (Type 15) type.
@param[in] SMType The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplaySELSysManagementTypes (
IN UINT32 SMType,
IN UINT8 Option
);
/**
Display Physical Memory Array (Type 16) Location.
@param[in] Location The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayPMALocation (
IN UINT8 Location,
IN UINT8 Option
);
/**
Display Physical Memory Array (Type 16) Use.
@param[in] Use The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayPMAUse (
IN UINT8 Use,
IN UINT8 Option
);
/**
Display Physical Memory Array (Type 16) Types.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayPMAErrorCorrectionTypes (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display Memory Device (Type 17) form factor.
@param[in] FormFactor The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMemoryDeviceFormFactor (
IN UINT8 FormFactor,
IN UINT8 Option
);
/**
Display Memory Device (Type 17) type.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMemoryDeviceType (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display Memory Device (Type 17) details.
@param[in] Para The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMemoryDeviceTypeDetail (
IN UINT16 Para,
IN UINT8 Option
);
/**
Display Memory Device (Type 17) memory technology.
@param[in] Para The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMemoryDeviceMemoryTechnology (
IN UINT8 Para,
IN UINT8 Option
);
/**
Display Memory Device (Type 17) memory operating mode capability.
@param[in] Para The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMemoryDeviceMemoryOperatingModeCapability (
IN UINT16 Para,
IN UINT8 Option
);
/**
Display 32-bit Memory Error Information (Type 18) type.
@param[in] ErrorType The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMemoryErrorType (
IN UINT8 ErrorType,
IN UINT8 Option
);
/**
Display 32-bit Memory Error Information (Type 18) error granularity.
@param[in] Granularity The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMemoryErrorGranularity (
IN UINT8 Granularity,
IN UINT8 Option
);
/**
Display 32-bit Memory Error Information (Type 18) error information.
@param[in] Operation The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMemoryErrorOperation (
IN UINT8 Operation,
IN UINT8 Option
);
/**
Display Built-in Pointing Device (Type 21) type information.
@param[in] Type The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayPointingDeviceType (
IN UINT8 Type,
IN UINT8 Option
);
/**
Display Built-in Pointing Device (Type 21) information.
@param[in] Interface The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayPointingDeviceInterface (
IN UINT8 Interface,
IN UINT8 Option
);
/**
Display Portable Battery (Type 22) information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayPBDeviceChemistry (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display Voltage Probe (Type 26) location information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayVPLocation (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display Voltage Probe (Type 26) status ype information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayVPStatus (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display Cooling (Type 27) status information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayCoolingDeviceStatus (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display Cooling (Type 27) type information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayCoolingDeviceType (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display Temperature Probe (Type 28) status information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayTemperatureProbeStatus (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display Temperature Probe (Type 28) location information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayTemperatureProbeLoc (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display Electrical Current Probe (Type 29) status information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayECPStatus (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display Electrical Current Probe (Type 29) location information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayECPLoc (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display Management Device (Type 34) Type.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMDType (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display Management Device (Type 34) Address Type.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMDAddressType (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display Memory Channel (Type 37) information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMemoryChannelType (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display IPMI Device Information (Type 38) information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayIPMIDIBMCInterfaceType (
IN UINT8 Key,
IN UINT8 Option
);
/**
Display Management Controller Host Interface (Type 42) information.
@param[in] Key The key of the structure.
@param[in] Option The optional information.
**/
VOID
DisplayMCHostInterfaceType (
IN UINT8 Key,
IN UINT8 Option
);
#endif