2 Module for clarifying the content of the smbios structure element info.
4 Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved. <BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 #include "../UefiShellDebug1CommandsLib.h"
16 #include "PrintInfo.h"
17 #include "QueryTable.h"
18 #include "EventLogInfo.h"
21 Function to display system event log access information.
23 @param[in] Key Additional information to print.
24 @param[in] Option Whether to print the additional information.
27 DisplaySELAccessMethod (
35 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ACCESS_METHOD
), gShellDebug1HiiHandle
);
36 PRINT_INFO_OPTION (Key
, Option
);
43 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_EIGHT_BIT
), gShellDebug1HiiHandle
);
47 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TWO_EIGHT_BITS
), gShellDebug1HiiHandle
);
51 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_SIXTEEN_BIT
), gShellDebug1HiiHandle
);
55 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MEM_MAPPED_PHYS
), gShellDebug1HiiHandle
);
59 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_VIA_GENERAL
), gShellDebug1HiiHandle
);
64 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_FUTURE_ASSIGN
), gShellDebug1HiiHandle
);
66 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR_OEM
), gShellDebug1HiiHandle
);
72 Function to display system event log status information.
74 @param[in] Key Additional information to print.
75 @param[in] Option Whether to print the additional information.
86 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_STATUS
), gShellDebug1HiiHandle
);
87 PRINT_INFO_OPTION (Key
, Option
);
92 if ((Key
& 0x01) != 0) {
93 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_VALID
), gShellDebug1HiiHandle
);
95 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_VALID
), gShellDebug1HiiHandle
);
98 if ((Key
& 0x02) != 0) {
99 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_FULL
), gShellDebug1HiiHandle
);
101 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_NOT_FULL
), gShellDebug1HiiHandle
);
104 if ((Key
& 0xFC) != 0) {
105 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_RES_BITS_NOT_ZERO
), gShellDebug1HiiHandle
, Key
& 0xFC);
110 Function to display system event log header format information.
112 @param[in] Key Additional information to print.
113 @param[in] Option Whether to print the additional information.
116 DisplaySysEventLogHeaderFormat (
124 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER_FORMAT
), gShellDebug1HiiHandle
);
125 PRINT_INFO_OPTION (Key
, Option
);
131 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_HEADER
), gShellDebug1HiiHandle
);
132 } else if (Key
== 0x01) {
133 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TYPE_LOG_HEADER
), gShellDebug1HiiHandle
);
134 } else if (Key
<= 0x7f) {
135 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_FUTURE
), gShellDebug1HiiHandle
);
137 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR
), gShellDebug1HiiHandle
);
142 Display the header information for SEL log items.
144 @param[in] Key The information key.
145 @param[in] Option The option index.
148 DisplaySELLogHeaderLen (
153 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER_LEN
), gShellDebug1HiiHandle
);
154 PRINT_INFO_OPTION (Key
, Option
);
156 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_VAR_D
), gShellDebug1HiiHandle
, Key
& 0x7F);
159 // The most-significant bit of the field specifies
160 // whether (0) or not (1) the record has been read
162 if ((Key
& 0x80) != 0) {
163 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_THIS_RECORD_READ
), gShellDebug1HiiHandle
);
165 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_THIS_RECORD_NOT_READ
), gShellDebug1HiiHandle
);
170 Display the header information for type 1 items.
172 @param[in] LogHeader The buffer with the information.
175 DisplaySysEventLogHeaderType1 (
179 LOG_HEADER_TYPE1_FORMAT
*Header
;
181 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SYSTEM_EVENT_LOG
), gShellDebug1HiiHandle
);
184 // Print Log Header Type1 Format info
186 Header
= (LOG_HEADER_TYPE1_FORMAT
*) (LogHeader
);
188 ShellPrintHiiEx(-1,-1,NULL
,
189 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_OEM_RESERVED
),
190 gShellDebug1HiiHandle
,
191 Header
->OEMReserved
[0],
192 Header
->OEMReserved
[1],
193 Header
->OEMReserved
[2],
194 Header
->OEMReserved
[3],
195 Header
->OEMReserved
[4]
197 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULTIPLE_EVENT_TIME
), gShellDebug1HiiHandle
, Header
->Metw
);
198 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULTIPLE_EVENT_COUNT
), gShellDebug1HiiHandle
, Header
->Meci
);
199 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_PREBOOT_ADDRESS
), gShellDebug1HiiHandle
, Header
->CMOSAddress
);
200 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_PREBOOT_INDEX
), gShellDebug1HiiHandle
, Header
->CMOSBitIndex
);
201 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_CHECKSUM_STARTING_OFF
), gShellDebug1HiiHandle
, Header
->StartingOffset
);
202 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_CHECKSUN_BYTE_COUNT
), gShellDebug1HiiHandle
, Header
->ChecksumOffset
);
203 ShellPrintHiiEx(-1,-1,NULL
,
204 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_RESERVED
),
205 gShellDebug1HiiHandle
,
206 Header
->OEMReserved
[0],
207 Header
->OEMReserved
[1],
208 Header
->OEMReserved
[2]
210 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_HEADER_REVISION
), gShellDebug1HiiHandle
, Header
->HeaderRevision
);
214 Function to display system event log header information.
216 @param[in] LogHeaderFormat Format identifier.
217 @param[in] LogHeader Format informcation.
220 DisplaySysEventLogHeader (
221 UINT8 LogHeaderFormat
,
228 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER
), gShellDebug1HiiHandle
);
233 if (LogHeaderFormat
== 0x00) {
234 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_HEADER
), gShellDebug1HiiHandle
);
235 } else if (LogHeaderFormat
== 0x01) {
236 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TYPE_LOG_HEADER
), gShellDebug1HiiHandle
);
237 DisplaySysEventLogHeaderType1 (LogHeader
);
238 } else if (LogHeaderFormat
<= 0x7f) {
239 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FUTURE_ASSIGN
), gShellDebug1HiiHandle
);
241 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR
), gShellDebug1HiiHandle
);
246 Display the El Vdf information.
248 @param[in] ElVdfType The information type.
249 @param[in] VarData The information buffer.
263 DisplaySELVarDataFormatType (ElVdfType
, SHOW_DETAIL
);
266 // Display Type description
270 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_STD_FORMAT
), gShellDebug1HiiHandle
);
274 Word
= (UINT16
*) (VarData
+ 1);
275 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SMBIOS_STRUCT_ASSOC
), gShellDebug1HiiHandle
);
276 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_STRUCT_HANDLE
), gShellDebug1HiiHandle
, *Word
);
280 Dword
= (UINT32
*) (VarData
+ 1);
281 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
285 Word
= (UINT16
*) (VarData
+ 1);
286 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SMBIOS_STRUCT_ASSOC
), gShellDebug1HiiHandle
);
287 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_STRUCT_HANDLE
), gShellDebug1HiiHandle
, *Word
);
289 // Followed by a multiple-event counter
291 Dword
= (UINT32
*) (VarData
+ 1);
292 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
296 Dword
= (UINT32
*) (VarData
+ 1);
297 DisplayPostResultsBitmapDw1 (*Dword
, SHOW_DETAIL
);
299 DisplayPostResultsBitmapDw2 (*Dword
, SHOW_DETAIL
);
303 Dword
= (UINT32
*) (VarData
+ 1);
304 DisplaySELSysManagementTypes (*Dword
, SHOW_DETAIL
);
308 Dword
= (UINT32
*) (VarData
+ 1);
309 DisplaySELSysManagementTypes (*Dword
, SHOW_DETAIL
);
311 // Followed by a multiple-event counter
313 Dword
= (UINT32
*) (VarData
+ 1);
314 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
318 if (ElVdfType
<= 0x7F) {
319 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_UNUSED_AVAIL_FOR_ASSIGN
), gShellDebug1HiiHandle
);
321 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_SYSTEM
), gShellDebug1HiiHandle
);
327 Function to display system event log data.
329 @param[in] LogData The data information.
330 @param[in] LogAreaLength Length of the data.
333 DisplaySysEventLogData (
338 LOG_RECORD_FORMAT
*Log
;
341 // Event Log Variable Data Format Types
348 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SYSTEM_EVENT_LOG_2
), gShellDebug1HiiHandle
);
354 Log
= (LOG_RECORD_FORMAT
*) LogData
;
355 while (Log
!= NULL
&& Log
->Type
!= END_OF_LOG
&& Offset
< LogAreaLength
) {
357 // Get a Event Log Record
359 Log
= (LOG_RECORD_FORMAT
*) (LogData
+ Offset
);
363 // Display Event Log Record Information
365 DisplaySELVarDataFormatType (Log
->Type
, SHOW_DETAIL
);
366 DisplaySELLogHeaderLen (Log
->Length
, SHOW_DETAIL
);
368 Offset
+= Log
->Length
;
370 // Display Log Header Date/Time Fields
371 // These fields contain the BCD representation of the date and time
372 // (as read from CMOS) of the occurrence of the event
373 // So Print as hex and represent decimal
375 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_DATE
), gShellDebug1HiiHandle
);
376 if (Log
!= NULL
&& Log
->Year
>= 80 && Log
->Year
<= 99) {
378 } else if (Log
!= NULL
&& Log
->Year
<= 79) {
381 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ERROR
), gShellDebug1HiiHandle
);
385 ShellPrintHiiEx(-1,-1,NULL
,
386 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TIME_SIX_VARS
),
387 gShellDebug1HiiHandle
,
397 // Display Variable Data Format
399 if (Log
->Length
<= (sizeof (LOG_RECORD_FORMAT
) - 1)) {
403 ElVdfType
= Log
->LogVariableData
[0];
404 DisplayElVdfInfo (ElVdfType
, Log
->LogVariableData
);