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.
28 DisplaySELAccessMethod (
36 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ACCESS_METHOD
), gShellDebug1HiiHandle
);
37 PRINT_INFO_OPTION (Key
, Option
);
44 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_EIGHT_BIT
), gShellDebug1HiiHandle
);
48 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TWO_EIGHT_BITS
), gShellDebug1HiiHandle
);
52 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_SIXTEEN_BIT
), gShellDebug1HiiHandle
);
56 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MEM_MAPPED_PHYS
), gShellDebug1HiiHandle
);
60 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_VIA_GENERAL
), gShellDebug1HiiHandle
);
65 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_FUTURE_ASSIGN
), gShellDebug1HiiHandle
);
67 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR_OEM
), gShellDebug1HiiHandle
);
73 Function to display system event log status information.
75 @param[in] Key Additional information to print.
76 @param[in] Option Whether to print the additional information.
88 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_STATUS
), gShellDebug1HiiHandle
);
89 PRINT_INFO_OPTION (Key
, Option
);
94 if ((Key
& 0x01) != 0) {
95 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_VALID
), gShellDebug1HiiHandle
);
97 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_VALID
), gShellDebug1HiiHandle
);
100 if ((Key
& 0x02) != 0) {
101 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_FULL
), gShellDebug1HiiHandle
);
103 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_NOT_FULL
), gShellDebug1HiiHandle
);
106 if ((Key
& 0xFC) != 0) {
107 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_RES_BITS_NOT_ZERO
), gShellDebug1HiiHandle
, Key
& 0xFC);
112 Function to display system event log header format information.
114 @param[in] Key Additional information to print.
115 @param[in] Option Whether to print the additional information.
119 DisplaySysEventLogHeaderFormat (
127 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER_FORMAT
), gShellDebug1HiiHandle
);
128 PRINT_INFO_OPTION (Key
, Option
);
134 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_HEADER
), gShellDebug1HiiHandle
);
135 } else if (Key
== 0x01) {
136 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TYPE_LOG_HEADER
), gShellDebug1HiiHandle
);
137 } else if (Key
<= 0x7f) {
138 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_FUTURE
), gShellDebug1HiiHandle
);
140 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR
), gShellDebug1HiiHandle
);
145 Display the header information for SEL log items.
147 @param[in] Key The information key.
148 @param[in] Option The option index.
151 DisplaySELLogHeaderLen (
156 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER_LEN
), gShellDebug1HiiHandle
);
157 PRINT_INFO_OPTION (Key
, Option
);
159 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_VAR_D
), gShellDebug1HiiHandle
, Key
& 0x7F);
162 // The most-significant bit of the field specifies
163 // whether (0) or not (1) the record has been read
165 if ((Key
& 0x80) != 0) {
166 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_THIS_RECORD_READ
), gShellDebug1HiiHandle
);
168 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_THIS_RECORD_NOT_READ
), gShellDebug1HiiHandle
);
173 Display the header information for type 1 items.
175 @param[in] LogHeader The buffer with the information.
178 DisplaySysEventLogHeaderType1 (
182 LOG_HEADER_TYPE1_FORMAT
*Header
;
184 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SYSTEM_EVENT_LOG
), gShellDebug1HiiHandle
);
187 // Print Log Header Type1 Format info
189 Header
= (LOG_HEADER_TYPE1_FORMAT
*) (LogHeader
);
191 ShellPrintHiiEx(-1,-1,NULL
,
192 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_OEM_RESERVED
),
193 gShellDebug1HiiHandle
,
194 Header
->OEMReserved
[0],
195 Header
->OEMReserved
[1],
196 Header
->OEMReserved
[2],
197 Header
->OEMReserved
[3],
198 Header
->OEMReserved
[4]
200 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULTIPLE_EVENT_TIME
), gShellDebug1HiiHandle
, Header
->Metw
);
201 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULTIPLE_EVENT_COUNT
), gShellDebug1HiiHandle
, Header
->Meci
);
202 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_PREBOOT_ADDRESS
), gShellDebug1HiiHandle
, Header
->CMOSAddress
);
203 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_PREBOOT_INDEX
), gShellDebug1HiiHandle
, Header
->CMOSBitIndex
);
204 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_CHECKSUM_STARTING_OFF
), gShellDebug1HiiHandle
, Header
->StartingOffset
);
205 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_CHECKSUN_BYTE_COUNT
), gShellDebug1HiiHandle
, Header
->ChecksumOffset
);
206 ShellPrintHiiEx(-1,-1,NULL
,
207 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_RESERVED
),
208 gShellDebug1HiiHandle
,
209 Header
->OEMReserved
[0],
210 Header
->OEMReserved
[1],
211 Header
->OEMReserved
[2]
213 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_HEADER_REVISION
), gShellDebug1HiiHandle
, Header
->HeaderRevision
);
217 Function to display system event log header information.
219 @param[in] LogHeaderFormat Format identifier.
220 @param[in] LogHeader Format informcation.
224 DisplaySysEventLogHeader (
225 UINT8 LogHeaderFormat
,
232 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER
), gShellDebug1HiiHandle
);
237 if (LogHeaderFormat
== 0x00) {
238 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_HEADER
), gShellDebug1HiiHandle
);
239 } else if (LogHeaderFormat
== 0x01) {
240 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TYPE_LOG_HEADER
), gShellDebug1HiiHandle
);
241 DisplaySysEventLogHeaderType1 (LogHeader
);
242 } else if (LogHeaderFormat
<= 0x7f) {
243 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FUTURE_ASSIGN
), gShellDebug1HiiHandle
);
245 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR
), gShellDebug1HiiHandle
);
250 Display the El Vdf information.
252 @param[in] ElVdfType The information type.
253 @param[in] VarData The information buffer.
267 DisplaySELVarDataFormatType (ElVdfType
, SHOW_DETAIL
);
270 // Display Type description
274 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_STD_FORMAT
), gShellDebug1HiiHandle
);
278 Word
= (UINT16
*) (VarData
+ 1);
279 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SMBIOS_STRUCT_ASSOC
), gShellDebug1HiiHandle
);
280 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_STRUCT_HANDLE
), gShellDebug1HiiHandle
, *Word
);
284 Dword
= (UINT32
*) (VarData
+ 1);
285 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
289 Word
= (UINT16
*) (VarData
+ 1);
290 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SMBIOS_STRUCT_ASSOC
), gShellDebug1HiiHandle
);
291 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_STRUCT_HANDLE
), gShellDebug1HiiHandle
, *Word
);
293 // Followed by a multiple-event counter
295 Dword
= (UINT32
*) (VarData
+ 1);
296 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
300 Dword
= (UINT32
*) (VarData
+ 1);
301 DisplayPostResultsBitmapDw1 (*Dword
, SHOW_DETAIL
);
303 DisplayPostResultsBitmapDw2 (*Dword
, SHOW_DETAIL
);
307 Dword
= (UINT32
*) (VarData
+ 1);
308 DisplaySELSysManagementTypes (*Dword
, SHOW_DETAIL
);
312 Dword
= (UINT32
*) (VarData
+ 1);
313 DisplaySELSysManagementTypes (*Dword
, SHOW_DETAIL
);
315 // Followed by a multiple-event counter
317 Dword
= (UINT32
*) (VarData
+ 1);
318 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
322 if (ElVdfType
<= 0x7F) {
323 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_UNUSED_AVAIL_FOR_ASSIGN
), gShellDebug1HiiHandle
);
325 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_SYSTEM
), gShellDebug1HiiHandle
);
331 Function to display system event log data.
333 @param[in] LogData The data information.
334 @param[in] LogAreaLength Length of the data.
338 DisplaySysEventLogData (
343 LOG_RECORD_FORMAT
*Log
;
346 // Event Log Variable Data Format Types
353 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SYSTEM_EVENT_LOG_2
), gShellDebug1HiiHandle
);
359 Log
= (LOG_RECORD_FORMAT
*) LogData
;
360 while (Log
!= NULL
&& Log
->Type
!= END_OF_LOG
&& Offset
< LogAreaLength
) {
362 // Get a Event Log Record
364 Log
= (LOG_RECORD_FORMAT
*) (LogData
+ Offset
);
368 // Display Event Log Record Information
370 DisplaySELVarDataFormatType (Log
->Type
, SHOW_DETAIL
);
371 DisplaySELLogHeaderLen (Log
->Length
, SHOW_DETAIL
);
373 Offset
+= Log
->Length
;
375 // Display Log Header Date/Time Fields
376 // These fields contain the BCD representation of the date and time
377 // (as read from CMOS) of the occurrence of the event
378 // So Print as hex and represent decimal
380 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_DATE
), gShellDebug1HiiHandle
);
381 if (Log
!= NULL
&& Log
->Year
>= 80 && Log
->Year
<= 99) {
383 } else if (Log
!= NULL
&& Log
->Year
<= 79) {
386 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ERROR
), gShellDebug1HiiHandle
);
390 ShellPrintHiiEx(-1,-1,NULL
,
391 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TIME_SIX_VARS
),
392 gShellDebug1HiiHandle
,
402 // Display Variable Data Format
404 if (Log
->Length
<= (sizeof (LOG_RECORD_FORMAT
) - 1)) {
408 ElVdfType
= Log
->LogVariableData
[0];
409 DisplayElVdfInfo (ElVdfType
, Log
->LogVariableData
);