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 - 2015, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2005 - 2017, Intel Corporation. All rights reserved.<BR>\r
+ (C) Copyright 2016-2017 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
0x09,\r
- L" LapTop"\r
+ L" Laptop"\r
},\r
{\r
0x0A,\r
0x1D,\r
L" Blade Enclosure"\r
},\r
+ {\r
+ 0x1E,\r
+ L" Tablet"\r
+ },\r
+ {\r
+ 0x1F,\r
+ L" Convertible"\r
+ },\r
+ {\r
+ 0x20,\r
+ L" Detachable"\r
+ },\r
+ {\r
+ 0x21,\r
+ L" IoT Gateway"\r
+ },\r
+ {\r
+ 0x22,\r
+ L" Embedded PC"\r
+ },\r
+ {\r
+ 0x23,\r
+ L" Mini PC"\r
+ },\r
+ {\r
+ 0x24,\r
+ L" Stick PC"\r
+ },\r
};\r
\r
TABLE_ITEM SystemEnclosureStatusTable[] = {\r
{\r
0x2C,\r
L"Socket LGA1356-3"\r
+ },\r
+ {\r
+ 0x2D,\r
+ L"Socket LGA1150"\r
+ },\r
+ {\r
+ 0x2E,\r
+ L"Socket BGA1168"\r
+ },\r
+ {\r
+ 0x2F,\r
+ L"Socket BGA1234"\r
+ },\r
+ {\r
+ 0x30,\r
+ L"Socket BGA1364"\r
+ },\r
+ {\r
+ 0x31,\r
+ L"Socket AM4"\r
+ },\r
+ {\r
+ 0x32,\r
+ L"Socket LGA1151"\r
+ },\r
+ {\r
+ 0x33,\r
+ L"Socket BGA1356"\r
+ },\r
+ {\r
+ 0x34,\r
+ L"Socket BGA1440"\r
+ },\r
+ {\r
+ 0x35,\r
+ L"Socket BGA1515"\r
+ },\r
+ {\r
+ 0x36,\r
+ L"Socket LGA3647-1"\r
+ },\r
+ {\r
+ 0x37,\r
+ L"Socket SP3"\r
+ },\r
+ {\r
+ 0x38,\r
+ L"Socket SP3r2"\r
}\r
};\r
\r
0x12,\r
L"PCI-X"\r
},\r
+ {\r
+ 0x13,\r
+ L"AGP 8X"\r
+ },\r
+ {\r
+ 0x14,\r
+ L"M.2 Socket 1-DP (Mechanical Key A)"\r
+ },\r
+ {\r
+ 0x15,\r
+ L"M.2 Socket 1-SD (Mechanical Key E)"\r
+ },\r
+ {\r
+ 0x16,\r
+ L"M.2 Socket 2 (Mechanical Key B)"\r
+ },\r
+ {\r
+ 0x17,\r
+ L"M.2 Socket 3 (Mechanical Key M)"\r
+ },\r
+ {\r
+ 0x18,\r
+ L"MXM Type I"\r
+ },\r
+ {\r
+ 0x19,\r
+ L"MXM Type II"\r
+ },\r
+ {\r
+ 0x1A,\r
+ L"MXM Type III (standard connector)"\r
+ },\r
+ {\r
+ 0x1B,\r
+ L"MXM Type III (HE connector)"\r
+ },\r
+ {\r
+ 0x1C,\r
+ L"MXM Type IV"\r
+ },\r
+ {\r
+ 0x1D,\r
+ L"MXM 3.0 Type A"\r
+ },\r
+ {\r
+ 0x1E,\r
+ L"MXM 3.0 Type B"\r
+ },\r
+ {\r
+ 0x1F,\r
+ L"PCI Express Gen 2 SFF-8639"\r
+ },\r
+ {\r
+ 0x20,\r
+ L"PCI Express Gen 3 SFF-8639"\r
+ },\r
+ {\r
+ 0x21,\r
+ L"PCI Express Mini 52-pin (CEM spec. 2.0) with bottom-side keep-outs"\r
+ },\r
+ {\r
+ 0x22,\r
+ L"PCI Express Mini 52-pin (CEM spec. 2.0) without bottom-side keep-outs"\r
+ },\r
+ {\r
+ 0x23,\r
+ L"PCI Express Mini 76-pin (CEM spec. 2.0) Corresponds to Display-Mini card"\r
+ },\r
{\r
0xA0,\r
L"PC-98/C20 "\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
},\r
};\r
\r
+TABLE_ITEM MCHostInterfaceTypeTable[] = {\r
+ {\r
+ 0x3F00,\r
+ L" MCTP Host Interface "\r
+ },\r
+ {\r
+ 0x40,\r
+ L" Network Host Interface "\r
+ },\r
+ {\r
+ 0xF0,\r
+ L" OEM defined "\r
+ },\r
+};\r
+\r
+\r
TABLE_ITEM StructureTypeInfoTable[] = {\r
{\r
0,\r
42,\r
L" Management Controller Host Interface"\r
},\r
+ {\r
+ 43,\r
+ L" TPM Device"\r
+ },\r
{\r
0x7E,\r
L" Inactive"\r
//\r
if ((High > Low && Key >= Low && Key <= High) \r
|| (Table[Index].Key == Key)) {\r
- StrCpyS (Info, InfoLen, Table[Index].Info);\r
- StrCatS (Info, InfoLen, L"\n");\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
UINTN Index;\r
UINT32 Value;\r
- BOOLEAN NoInfo;\r
+ BOOLEAN FirstInfo;\r
\r
- NoInfo = TRUE;\r
+ FirstInfo = TRUE;\r
Value = Bits;\r
//\r
// query the table and print information\r
//\r
for (Index = 0; Index < Number; Index++) {\r
if (BIT (Value, Table[Index].Key) != 0) {\r
+ if (!FirstInfo) {\r
+ //\r
+ // If it is not first info, print the separator first.\r
+ //\r
+ Print (L" | ");\r
+ }\r
Print (Table[Index].Info);\r
- Print (L" | ");\r
\r
- NoInfo = FALSE;\r
+ FirstInfo = FALSE;\r
//\r
// clear the bit, for reserved bits test\r
//\r
}\r
}\r
\r
- if (NoInfo) {\r
+ //\r
+ // There is no any info if FirstInfo is still TRUE.\r
+ //\r
+ if (FirstInfo) {\r
ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_NO_INFO), gShellDebug1HiiHandle);\r
}\r
\r
PRINT_TABLE_ITEM (IPMIDIBMCInterfaceTypeTable, Key);\r
}\r
\r
+/**\r
+ Display Management Controller Host Interface (Type 42) information.\r
+\r
+ @param[in] Key The key of the structure.\r
+ @param[in] Option The optional information.\r
+**/\r
+VOID\r
+DisplayMCHostInterfaceType (\r
+ IN UINT8 Key,\r
+ IN UINT8 Option\r
+ )\r
+{\r
+ ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MC_HOST_INTERFACE_TYPE), gShellDebug1HiiHandle);\r
+ PRINT_INFO_OPTION (Key, Option);\r
+ PRINT_TABLE_ITEM (MCHostInterfaceTypeTable, Key);\r
+}\r
+\r
/**\r
Display the structure type information.\r
\r