]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/EventLogInfo.c
add comments to function declarations and definitions and updated to match coding...
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / SmbiosView / EventLogInfo.c
CommitLineData
a1d4bfcc 1/** @file\r
5d73d92f 2 Module for clarifying the content of the smbios structure element info.\r
3\r
a1d4bfcc 4 Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved. <BR>\r
5d73d92f 5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#include "../UefiShellDebug1CommandsLib.h"\r
16#include "PrintInfo.h"\r
17#include "QueryTable.h"\r
18#include "EventLogInfo.h"\r
19\r
20/**\r
21 Function to display system event log access information.\r
22\r
23 @param[in] Key Additional information to print.\r
24 @param[in] Option Whether to print the additional information.\r
25**/\r
26VOID\r
27EFIAPI\r
28DisplaySELAccessMethod (\r
29 IN CONST UINT8 Key,\r
30 IN CONST UINT8 Option\r
31 )\r
32{\r
33 //\r
34 // Print prompt\r
35 //\r
36 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ACCESS_METHOD), gShellDebug1HiiHandle);\r
37 PRINT_INFO_OPTION (Key, Option);\r
38\r
39 //\r
40 // Print value info\r
41 //\r
42 switch (Key) {\r
43 case 0:\r
44 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_EIGHT_BIT), gShellDebug1HiiHandle);\r
45 break;\r
46\r
47 case 1:\r
48 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TWO_EIGHT_BITS), gShellDebug1HiiHandle);\r
49 break;\r
50\r
51 case 2:\r
52 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_SIXTEEN_BIT), gShellDebug1HiiHandle);\r
53 break;\r
54\r
55 case 3:\r
56 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MEM_MAPPED_PHYS), gShellDebug1HiiHandle);\r
57 break;\r
58\r
59 case 4:\r
60 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_VIA_GENERAL), gShellDebug1HiiHandle);\r
61 break;\r
62\r
63 default:\r
64 if (Key <= 0x7f) {\r
65 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_FUTURE_ASSIGN), gShellDebug1HiiHandle);\r
66 } else {\r
67 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR_OEM), gShellDebug1HiiHandle);\r
68 }\r
69 }\r
70}\r
71\r
72/**\r
73 Function to display system event log status information.\r
74\r
75 @param[in] Key Additional information to print.\r
76 @param[in] Option Whether to print the additional information.\r
77**/\r
78VOID\r
79EFIAPI\r
80DisplaySELLogStatus (\r
81 UINT8 Key,\r
82 UINT8 Option\r
83 )\r
84{\r
85 //\r
86 // Print prompt\r
87 //\r
88 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_STATUS), gShellDebug1HiiHandle);\r
89 PRINT_INFO_OPTION (Key, Option);\r
90\r
91 //\r
92 // Print value info\r
93 //\r
94 if ((Key & 0x01) != 0) {\r
95 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_VALID), gShellDebug1HiiHandle);\r
96 } else {\r
97 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_VALID), gShellDebug1HiiHandle);\r
98 }\r
99\r
100 if ((Key & 0x02) != 0) {\r
101 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_FULL), gShellDebug1HiiHandle);\r
102 } else {\r
103 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_NOT_FULL), gShellDebug1HiiHandle);\r
104 }\r
105\r
106 if ((Key & 0xFC) != 0) {\r
107 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_RES_BITS_NOT_ZERO), gShellDebug1HiiHandle, Key & 0xFC);\r
108 }\r
109}\r
110\r
111/**\r
112 Function to display system event log header format information.\r
113\r
114 @param[in] Key Additional information to print.\r
115 @param[in] Option Whether to print the additional information.\r
116**/\r
117VOID\r
118EFIAPI\r
119DisplaySysEventLogHeaderFormat (\r
120 UINT8 Key,\r
121 UINT8 Option\r
122 )\r
123{\r
124 //\r
125 // Print prompt\r
126 //\r
127 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER_FORMAT), gShellDebug1HiiHandle);\r
128 PRINT_INFO_OPTION (Key, Option);\r
129\r
130 //\r
131 // Print value info\r
132 //\r
133 if (Key == 0x00) {\r
134 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_HEADER), gShellDebug1HiiHandle);\r
135 } else if (Key == 0x01) {\r
136 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TYPE_LOG_HEADER), gShellDebug1HiiHandle);\r
137 } else if (Key <= 0x7f) {\r
138 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_FUTURE), gShellDebug1HiiHandle);\r
139 } else {\r
140 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR), gShellDebug1HiiHandle);\r
141 }\r
142}\r
143\r
a1d4bfcc 144/**\r
145 Display the header information for SEL log items.\r
146\r
147 @param[in] Key The information key.\r
148 @param[in] Option The option index.\r
149**/\r
5d73d92f 150VOID\r
151DisplaySELLogHeaderLen (\r
152 UINT8 Key,\r
153 UINT8 Option\r
154 )\r
155{\r
156 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER_LEN), gShellDebug1HiiHandle);\r
157 PRINT_INFO_OPTION (Key, Option);\r
158\r
159 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_VAR_D), gShellDebug1HiiHandle, Key & 0x7F);\r
160\r
161 //\r
162 // The most-significant bit of the field specifies\r
163 // whether (0) or not (1) the record has been read\r
164 //\r
165 if ((Key & 0x80) != 0) {\r
166 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_THIS_RECORD_READ), gShellDebug1HiiHandle);\r
167 } else {\r
168 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_THIS_RECORD_NOT_READ), gShellDebug1HiiHandle);\r
169 }\r
170}\r
171\r
a1d4bfcc 172/**\r
173 Display the header information for type 1 items.\r
174\r
175 @param[in] LogHeader The buffer with the information.\r
176**/\r
5d73d92f 177VOID\r
178DisplaySysEventLogHeaderType1 (\r
a1d4bfcc 179 IN UINT8 *LogHeader\r
5d73d92f 180 )\r
181{\r
182 LOG_HEADER_TYPE1_FORMAT *Header;\r
183\r
184 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SYSTEM_EVENT_LOG), gShellDebug1HiiHandle);\r
185\r
186 //\r
187 // Print Log Header Type1 Format info\r
188 //\r
189 Header = (LOG_HEADER_TYPE1_FORMAT *) (LogHeader);\r
190\r
191 ShellPrintHiiEx(-1,-1,NULL,\r
192 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_OEM_RESERVED),\r
193 gShellDebug1HiiHandle,\r
194 Header->OEMReserved[0],\r
195 Header->OEMReserved[1],\r
196 Header->OEMReserved[2],\r
197 Header->OEMReserved[3],\r
198 Header->OEMReserved[4]\r
199 );\r
a1d4bfcc 200 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULTIPLE_EVENT_TIME), gShellDebug1HiiHandle, Header->Metw);\r
201 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULTIPLE_EVENT_COUNT), gShellDebug1HiiHandle, Header->Meci);\r
5d73d92f 202 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_PREBOOT_ADDRESS), gShellDebug1HiiHandle, Header->CMOSAddress);\r
203 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_PREBOOT_INDEX), gShellDebug1HiiHandle, Header->CMOSBitIndex);\r
204 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_CHECKSUM_STARTING_OFF), gShellDebug1HiiHandle, Header->StartingOffset);\r
205 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_CHECKSUN_BYTE_COUNT), gShellDebug1HiiHandle, Header->ChecksumOffset);\r
206 ShellPrintHiiEx(-1,-1,NULL,\r
207 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_RESERVED),\r
208 gShellDebug1HiiHandle,\r
209 Header->OEMReserved[0],\r
210 Header->OEMReserved[1],\r
211 Header->OEMReserved[2]\r
212 );\r
213 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_HEADER_REVISION), gShellDebug1HiiHandle, Header->HeaderRevision);\r
214}\r
215\r
216/**\r
217 Function to display system event log header information.\r
218\r
219 @param[in] LogHeaderFormat Format identifier.\r
220 @param[in] LogHeader Format informcation.\r
221**/\r
222VOID\r
223EFIAPI\r
224DisplaySysEventLogHeader (\r
225 UINT8 LogHeaderFormat,\r
226 UINT8 *LogHeader\r
227 )\r
228{\r
229 //\r
230 // Print prompt\r
231 //\r
232 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER), gShellDebug1HiiHandle);\r
233\r
234 //\r
235 // Print value info\r
236 //\r
237 if (LogHeaderFormat == 0x00) {\r
238 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_HEADER), gShellDebug1HiiHandle);\r
239 } else if (LogHeaderFormat == 0x01) {\r
240 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TYPE_LOG_HEADER), gShellDebug1HiiHandle);\r
241 DisplaySysEventLogHeaderType1 (LogHeader);\r
242 } else if (LogHeaderFormat <= 0x7f) {\r
243 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FUTURE_ASSIGN), gShellDebug1HiiHandle);\r
244 } else {\r
245 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR), gShellDebug1HiiHandle);\r
246 }\r
247}\r
248\r
a1d4bfcc 249/**\r
250 Display the El Vdf information.\r
251\r
252 @param[in] ElVdfType The information type.\r
253 @param[in] VarData The information buffer.\r
254**/\r
5d73d92f 255VOID\r
256DisplayElVdfInfo (\r
257 UINT8 ElVdfType,\r
258 UINT8 *VarData\r
259 )\r
260{\r
261 UINT16 *Word;\r
262 UINT32 *Dword;\r
263\r
264 //\r
265 // Display Type Name\r
266 //\r
267 DisplaySELVarDataFormatType (ElVdfType, SHOW_DETAIL);\r
268\r
269 //\r
270 // Display Type description\r
271 //\r
272 switch (ElVdfType) {\r
273 case 0:\r
274 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_STD_FORMAT), gShellDebug1HiiHandle);\r
275 break;\r
276\r
277 case 1:\r
278 Word = (UINT16 *) (VarData + 1);\r
279 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SMBIOS_STRUCT_ASSOC), gShellDebug1HiiHandle);\r
280 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_STRUCT_HANDLE), gShellDebug1HiiHandle, *Word);\r
281 break;\r
282\r
283 case 2:\r
284 Dword = (UINT32 *) (VarData + 1);\r
285 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER), gShellDebug1HiiHandle, *Dword);\r
286 break;\r
287\r
288 case 3:\r
289 Word = (UINT16 *) (VarData + 1);\r
290 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SMBIOS_STRUCT_ASSOC), gShellDebug1HiiHandle);\r
291 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_STRUCT_HANDLE), gShellDebug1HiiHandle, *Word);\r
292 //\r
293 // Followed by a multiple-event counter\r
294 //\r
295 Dword = (UINT32 *) (VarData + 1);\r
296 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER), gShellDebug1HiiHandle, *Dword);\r
297 break;\r
298\r
299 case 4:\r
300 Dword = (UINT32 *) (VarData + 1);\r
301 DisplayPostResultsBitmapDw1 (*Dword, SHOW_DETAIL);\r
302 Dword++;\r
303 DisplayPostResultsBitmapDw2 (*Dword, SHOW_DETAIL);\r
304 break;\r
305\r
306 case 5:\r
307 Dword = (UINT32 *) (VarData + 1);\r
308 DisplaySELSysManagementTypes (*Dword, SHOW_DETAIL);\r
309 break;\r
310\r
311 case 6:\r
312 Dword = (UINT32 *) (VarData + 1);\r
313 DisplaySELSysManagementTypes (*Dword, SHOW_DETAIL);\r
314 //\r
315 // Followed by a multiple-event counter\r
316 //\r
317 Dword = (UINT32 *) (VarData + 1);\r
318 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER), gShellDebug1HiiHandle, *Dword);\r
319 break;\r
320\r
321 default:\r
322 if (ElVdfType <= 0x7F) {\r
323 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_UNUSED_AVAIL_FOR_ASSIGN), gShellDebug1HiiHandle);\r
324 } else {\r
325 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_SYSTEM), gShellDebug1HiiHandle);\r
326 }\r
327 }\r
328}\r
329\r
330/**\r
331 Function to display system event log data.\r
332\r
333 @param[in] LogData The data information.\r
334 @param[in] LogAreaLength Length of the data.\r
335**/\r
336VOID\r
337EFIAPI\r
338DisplaySysEventLogData (\r
339 UINT8 *LogData,\r
340 UINT16 LogAreaLength\r
341 )\r
342{\r
343 LOG_RECORD_FORMAT *Log;\r
344 UINT8 ElVdfType;\r
345 //\r
346 // Event Log Variable Data Format Types\r
347 //\r
348 UINTN Offset;\r
349\r
350 //\r
351 // Print prompt\r
352 //\r
353 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SYSTEM_EVENT_LOG_2), gShellDebug1HiiHandle);\r
354\r
355 //\r
356 // Print Log info\r
357 //\r
358 Offset = 0;\r
359 Log = (LOG_RECORD_FORMAT *) LogData;\r
33c031ee 360 while (Log != NULL && Log->Type != END_OF_LOG && Offset < LogAreaLength) {\r
5d73d92f 361 //\r
362 // Get a Event Log Record\r
363 //\r
364 Log = (LOG_RECORD_FORMAT *) (LogData + Offset);\r
365\r
33c031ee 366 if (Log != NULL) {\r
367 //\r
368 // Display Event Log Record Information\r
369 //\r
370 DisplaySELVarDataFormatType (Log->Type, SHOW_DETAIL);\r
371 DisplaySELLogHeaderLen (Log->Length, SHOW_DETAIL);\r
372\r
373 Offset += Log->Length;\r
374 //\r
375 // Display Log Header Date/Time Fields\r
376 // These fields contain the BCD representation of the date and time\r
377 // (as read from CMOS) of the occurrence of the event\r
378 // So Print as hex and represent decimal\r
379 //\r
380 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_DATE), gShellDebug1HiiHandle);\r
381 if (Log != NULL && Log->Year >= 80 && Log->Year <= 99) {\r
382 Print (L"19");\r
383 } else if (Log != NULL && Log->Year <= 79) {\r
384 Print (L"20");\r
385 } else {\r
386 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ERROR), gShellDebug1HiiHandle);\r
387 continue;\r
388 }\r
389\r
390 ShellPrintHiiEx(-1,-1,NULL,\r
391 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TIME_SIX_VARS),\r
392 gShellDebug1HiiHandle,\r
393 Log->Year,\r
394 Log->Month,\r
395 Log->Day,\r
396 Log->Hour,\r
397 Log->Minute,\r
398 Log->Second\r
399 );\r
400\r
401 //\r
402 // Display Variable Data Format\r
403 //\r
404 if (Log->Length <= (sizeof (LOG_RECORD_FORMAT) - 1)) {\r
405 continue;\r
406 }\r
407\r
408 ElVdfType = Log->LogVariableData[0];\r
409 DisplayElVdfInfo (ElVdfType, Log->LogVariableData);\r
5d73d92f 410 }\r
5d73d92f 411 }\r
412}\r