Build a table, each item is (Key, Info) pair.\r
And give a interface of query a string out of a table.\r
\r
- Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2005 - 2015, Intel Corporation. All rights reserved.<BR>\r
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
}\r
};\r
\r
+TABLE_ITEM BaseBoardFeatureFlagsTable[] = {\r
+ {\r
+ 0,\r
+ L" Hosting board"\r
+ },\r
+ {\r
+ 1,\r
+ L" Requires at least one daughter board or auxiliary card"\r
+ },\r
+ {\r
+ 2,\r
+ L" Removable"\r
+ },\r
+ {\r
+ 3,\r
+ L" Replaceable"\r
+ },\r
+ {\r
+ 4,\r
+ L" Hot swappable"\r
+ }\r
+};\r
+\r
+TABLE_ITEM BaseBoardBoardTypeTable[] = {\r
+ {\r
+ 0x01,\r
+ L" Unknown"\r
+ },\r
+ {\r
+ 0x02,\r
+ L" Other"\r
+ },\r
+ {\r
+ 0x03,\r
+ L" Server Blade"\r
+ },\r
+ {\r
+ 0x04,\r
+ L" Connectivity Switch"\r
+ },\r
+ {\r
+ 0x05,\r
+ L" System Management Module"\r
+ },\r
+ {\r
+ 0x06,\r
+ L" Processor Module"\r
+ },\r
+ {\r
+ 0x07,\r
+ L" I/O Module"\r
+ },\r
+ {\r
+ 0x08,\r
+ L" Memory Module"\r
+ },\r
+ {\r
+ 0x09,\r
+ L" Daughter board"\r
+ },\r
+ {\r
+ 0x0A,\r
+ L" Motherboard"\r
+ },\r
+ {\r
+ 0x0B,\r
+ L" Processor/Memory Module"\r
+ },\r
+ {\r
+ 0x0C,\r
+ L" Processor/IO Module"\r
+ },\r
+ {\r
+ 0x0D,\r
+ L" Interconnect Board"\r
+ }\r
+};\r
+\r
TABLE_ITEM SystemEnclosureTypeTable[] = {\r
{\r
0x01,\r
- L" None"\r
+ L" Other"\r
},\r
{\r
0x02,\r
{\r
0x19,\r
L"Socket LGA1366"\r
- }\\r
+ },\r
+ {\r
+ 0x1A,\r
+ L"Socket G34"\r
+ },\r
+ {\r
+ 0x1B,\r
+ L"Socket AM3"\r
+ },\r
+ {\r
+ 0x1C,\r
+ L"Socket C32"\r
+ },\r
+ {\r
+ 0x1D,\r
+ L"Socket LGA1156"\r
+ },\r
+ {\r
+ 0x1E,\r
+ L"Socket LGA1567"\r
+ },\r
+ {\r
+ 0x1F,\r
+ L"Socket PGA988A"\r
+ },\r
+ {\r
+ 0x20,\r
+ L"Socket BGA1288"\r
+ },\r
+ {\r
+ 0x21,\r
+ L"Socket rPGA988B"\r
+ },\r
+ {\r
+ 0x22,\r
+ L"Socket BGA1023"\r
+ },\r
+ {\r
+ 0x23,\r
+ L"Socket BGA1224"\r
+ },\r
+ {\r
+ 0x24,\r
+ L"Socket LGA1155"\r
+ },\r
+ {\r
+ 0x25,\r
+ L"Socket LGA1356"\r
+ },\r
+ {\r
+ 0x26,\r
+ L"Socket LGA2011"\r
+ },\r
+ {\r
+ 0x27,\r
+ L"Socket FS1"\r
+ },\r
+ {\r
+ 0x28,\r
+ L"Socket FS2"\r
+ },\r
+ {\r
+ 0x29,\r
+ L"Socket FM1"\r
+ },\r
+ {\r
+ 0x2A,\r
+ L"Socket FM2"\r
+ },\r
+ {\r
+ 0x2B,\r
+ L"Socket LGA2011-3"\r
+ },\r
+ {\r
+ 0x2C,\r
+ L"Socket LGA1356-3"\r
+ }\r
+};\r
+\r
+TABLE_ITEM ProcessorCharacteristicsTable[] = {\r
+ {\r
+ 1,\r
+ L" Unknown"\r
+ },\r
+ {\r
+ 2,\r
+ L" 64-bit Capable"\r
+ },\r
+ {\r
+ 3,\r
+ L" Multi-Core"\r
+ },\r
+ {\r
+ 4,\r
+ L" Hardware Thread"\r
+ },\r
+ {\r
+ 5,\r
+ L" Execute Protection"\r
+ },\r
+ {\r
+ 6,\r
+ L" Enhanced Virtualization"\r
+ },\r
+ {\r
+ 7,\r
+ L" Power/Performance Control"\r
+ }\r
};\r
\r
+\r
TABLE_ITEM McErrorDetectMethodTable[] = {\r
{\r
0x01,\r
{\r
0x06,\r
L"Multi-bit ECC"\r
- },\r
- {\r
- 0x07,\r
- L"Sixteen Way Interleave"\r
}\r
};\r
\r
{\r
0x0D,\r
L"64-way Set-Associative"\r
+ },\r
+ {\r
+ 0x0E,\r
+ L"20-way Set-Associative"\r
}\r
};\r
\r
},\r
{\r
0xAB,\r
- L"PCI Express Gen 26"\r
+ L"PCI Express Gen 2"\r
},\r
{\r
0xAC,\r
{\r
0xB0,\r
L"PCI Express Gen 2 X16"\r
+ },\r
+ {\r
+ 0xB1,\r
+ L"PCI Express Gen 3"\r
+ },\r
+ {\r
+ 0xB2,\r
+ L"PCI Express Gen 3 X1"\r
+ },\r
+ {\r
+ 0xB3,\r
+ L"PCI Express Gen 3 X2"\r
+ },\r
+ {\r
+ 0xB4,\r
+ L"PCI Express Gen 3 X4"\r
+ },\r
+ {\r
+ 0xB5,\r
+ L"PCI Express Gen 3 X8"\r
+ },\r
+ {\r
+ 0xB6,\r
+ L"PCI Express Gen 3 X16"\r
}\r
};\r
\r
0x07,\r
L" 128 bit"\r
},\r
+ {\r
+ 0x08,\r
+ L" 1x or x1"\r
+ },\r
+ {\r
+ 0x09,\r
+ L" 2x or x2"\r
+ },\r
+ {\r
+ 0x0A,\r
+ L" 4x or x4"\r
+ },\r
+ {\r
+ 0x0B,\r
+ L" 8x or x8"\r
+ },\r
+ {\r
+ 0x0C,\r
+ L" 12x or x12"\r
+ },\r
+ {\r
+ 0x0D,\r
+ L" 16x or x16"\r
+ },\r
+ {\r
+ 0x0E,\r
+ L" 32x or x32"\r
+ }\r
};\r
\r
TABLE_ITEM SystemSlotCurrentUsageTable[] = {\r
{\r
0x19,\r
L" FBD2"\r
+ },\r
+ {\r
+ 0x1A,\r
+ L" DDR4"\r
+ },\r
+ {\r
+ 0x1B,\r
+ L" LPDDR"\r
+ },\r
+ {\r
+ 0x1C,\r
+ L" LPDDR2"\r
+ },\r
+ {\r
+ 0x1D,\r
+ L" LPDDR3"\r
+ },\r
+ {\r
+ 0x1E,\r
+ L" LPDDR4"\r
}\r
};\r
\r
12,\r
L" Non-volatile"\r
},\r
+ {\r
+ 13,\r
+ L" Registered(Buffered)"\r
+ },\r
+ {\r
+ 14,\r
+ L" Unbuffered(Unregistered)"\r
+ }\r
};\r
\r
TABLE_ITEM MemoryErrorTypeTable[] = {\r
L" Integrated Refrigeration "\r
},\r
{\r
- 0x0A,\r
+ 0x10,\r
L" Active Cooling "\r
},\r
{\r
- 0x0B,\r
+ 0x11,\r
L" Passive Cooling "\r
},\r
};\r
39,\r
L" System Power Supply"\r
},\r
+ {\r
+ 40,\r
+ L" Additional Information"\r
+ },\r
+ {\r
+ 41,\r
+ L" Onboard Devices Extended Information"\r
+ },\r
+ {\r
+ 42,\r
+ L" Management Controller Host Interface"\r
+ },\r
{\r
0x7E,\r
L" Inactive"\r
Then all the Key Value between Low and High gets the same string\r
L"Unused".\r
\r
- @param[in] Table The begin address of table.\r
- @param[in] Number The number of table items.\r
- @param[in] Key The query Key.\r
- @param[in,out] Info Input as empty buffer; output as data buffer.\r
- @param[in] InfoLen The max number of characters for Info.\r
+ @param[in] Table The begin address of table.\r
+ @param[in] Number The number of table items.\r
+ @param[in] Key The query Key.\r
+ @param[in, out] Info Input as empty buffer; output as data buffer.\r
+ @param[in] InfoLen The max number of characters for Info.\r
\r
@return the found Key and Info is valid.\r
@retval QUERY_TABLE_UNFOUND and Info should be NULL.\r
for (Index = 0; Index < Number; Index++) {\r
High = (UINT8) (Table[Index].Key >> 8);\r
Low = (UINT8) (Table[Index].Key & 0x00FF);\r
+\r
//\r
// Check if Key is in the range\r
+ // or if Key == Value in the table\r
//\r
- if (High > Low && Key >= Low && Key <= High) {\r
- StrnCpy (Info, Table[Index].Info, InfoLen-1);\r
- StrnCat (Info, L"\n", InfoLen - StrLen(Info));\r
- return Key;\r
- }\r
- //\r
- // Check if Key == Value in the table\r
- //\r
- if (Table[Index].Key == Key) {\r
- StrnCpy (Info, Table[Index].Info, InfoLen-1);\r
- StrnCat (Info, L"\n", InfoLen - StrLen(Info));\r
+ if ((High > Low && Key >= Low && Key <= High) \r
+ || (Table[Index].Key == Key)) {\r
+ StrnCpyS (Info, InfoLen, Table[Index].Info, InfoLen - 1);\r
+ StrnCatS (Info, InfoLen, L"\n", InfoLen - 1 - StrLen(Info));\r
return Key;\r
}\r
}\r
\r
- StrnCpy (Info, L"Undefined Value\n", InfoLen);\r
+ StrCpyS (Info, InfoLen, L"Undefined Value\n");\r
return QUERY_TABLE_UNFOUND;\r
}\r
\r
PRINT_TABLE_ITEM (SystemWakeupTypeTable, Type);\r
}\r
\r
+/**\r
+ Display Base Board (Type 2) Feature Flags.\r
+\r
+ @param[in] FeatureFlags The key of the structure.\r
+ @param[in] Option The optional information.\r
+**/\r
+VOID\r
+DisplayBaseBoardFeatureFlags (\r
+ IN UINT8 FeatureFlags,\r
+ IN UINT8 Option\r
+ )\r
+{\r
+ ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_BASE_BOARD_FEATURE_FLAGS), gShellDebug1HiiHandle);\r
+ PRINT_INFO_OPTION (FeatureFlags, Option);\r
+ PRINT_BITS_INFO (BaseBoardFeatureFlagsTable, FeatureFlags);\r
+}\r
+\r
+/**\r
+ Display Base Board (Type 2) Board Type.\r
+\r
+ @param[in] Type The key of the structure.\r
+ @param[in] Option The optional information.\r
+**/\r
+VOID\r
+DisplayBaseBoardBoardType(\r
+ IN UINT8 Type,\r
+ IN UINT8 Option\r
+ )\r
+{\r
+ ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_BASE_BOARD_BOARD_TYPE), gShellDebug1HiiHandle);\r
+ PRINT_INFO_OPTION (Type, Option);\r
+ PRINT_TABLE_ITEM (BaseBoardBoardTypeTable, Type);\r
+}\r
+\r
/**\r
Display System Enclosure (Type 3) Enclosure Type.\r
\r
PRINT_TABLE_ITEM (ProcessorUpgradeTable, Upgrade);\r
}\r
\r
+/**\r
+ Display Processor Information (Type 4) Characteristics.\r
+\r
+ @param[in] Type The key of the structure.\r
+ @param[in] Option The optional information.\r
+**/\r
+VOID\r
+DisplayProcessorCharacteristics (\r
+ IN UINT16 Type,\r
+ IN UINT8 Option\r
+ )\r
+{\r
+ ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PROC_CHARACTERISTICS), gShellDebug1HiiHandle);\r
+ PRINT_INFO_OPTION (Type, Option);\r
+ PRINT_BITS_INFO (ProcessorCharacteristicsTable, Type);\r
+}\r
+\r
/**\r
Display Memory Controller Information (Type 5) method.\r
\r
IN UINT8 Option\r
)\r
{\r
- ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_LOCATION), gShellDebug1HiiHandle);\r
+ ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_USE), gShellDebug1HiiHandle);\r
PRINT_INFO_OPTION (Use, Option);\r
PRINT_TABLE_ITEM (PMAUseTable, Use);\r
}\r
}\r
\r
/**\r
- Display Management Device (Type 34) information.\r
+ Display Management Device (Type 34) Type.\r
\r
@param[in] Key The key of the structure.\r
@param[in] Option The optional information.\r
PRINT_TABLE_ITEM (MDTypeTable, Key);\r
}\r
\r
+/**\r
+ Display Management Device (Type 34) Address Type.\r
+\r
+ @param[in] Key The key of the structure.\r
+ @param[in] Option The optional information.\r
+**/\r
+VOID\r
+DisplayMDAddressType (\r
+ IN UINT8 Key,\r
+ IN UINT8 Option\r
+ )\r
+{\r
+ ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MANAGEMENT_DEV_ADDR_TYPE), gShellDebug1HiiHandle);\r
+ PRINT_INFO_OPTION (Key, Option);\r
+ PRINT_TABLE_ITEM (MDAddressTypeTable, Key);\r
+}\r
+\r
/**\r
Display Memory Channel (Type 37) information.\r
\r