/** @file\r
FrontPage routines to handle the callbacks and browser calls\r
\r
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<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
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
//\r
return EFI_UNSUPPORTED;\r
}\r
- \r
+\r
gCallbackKey = QuestionId;\r
\r
if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
// Allocate working buffer for RFC 4646 language in supported LanguageString.\r
//\r
Lang = AllocatePool (AsciiStrSize (mLanguageString));\r
- ASSERT (Lang != NULL); \r
+ ASSERT (Lang != NULL);\r
\r
Index = 0;\r
LangCode = mLanguageString;\r
}\r
}\r
\r
- return EFI_SUCCESS; \r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r
EFI_STATUS Status;\r
CHAR8 *LangCode;\r
CHAR8 *Lang;\r
+ UINTN LangSize;\r
CHAR8 *CurrentLang;\r
UINTN OptionCount;\r
CHAR16 *StringBuffer;\r
//\r
HiiHandle = gFrontPagePrivate.HiiHandle;\r
\r
- CurrentLang = GetEfiGlobalVariable (L"PlatformLang");\r
+ GetEfiGlobalVariable2 (L"PlatformLang", (VOID**)&CurrentLang, NULL);\r
\r
//\r
// Get Support language list from variable.\r
//\r
if (mLanguageString == NULL){\r
- mLanguageString = GetEfiGlobalVariable (L"PlatformLangCodes");\r
+ GetEfiGlobalVariable2 (L"PlatformLangCodes", (VOID**)&mLanguageString, NULL);\r
if (mLanguageString == NULL) {\r
mLanguageString = AllocateCopyPool (\r
AsciiStrSize ((CHAR8 *) PcdGetPtr (PcdUefiVariableDefaultPlatformLangCodes)),\r
if (gFrontPagePrivate.LanguageToken == NULL) {\r
//\r
// Count the language list number.\r
- // \r
+ //\r
LangCode = mLanguageString;\r
Lang = AllocatePool (AsciiStrSize (mLanguageString));\r
ASSERT (Lang != NULL);\r
}\r
\r
if (EFI_ERROR (Status)) {\r
- StringBuffer = AllocatePool (AsciiStrSize (Lang) * sizeof (CHAR16));\r
+ LangSize = AsciiStrSize (Lang);\r
+ StringBuffer = AllocatePool (LangSize * sizeof (CHAR16));\r
ASSERT (StringBuffer != NULL);\r
- AsciiStrToUnicodeStr (Lang, StringBuffer);\r
+ AsciiStrToUnicodeStrS (Lang, StringBuffer, LangSize);\r
}\r
\r
ASSERT (StringBuffer != NULL);\r
return Status;\r
}\r
\r
-/**\r
- Acquire the string associated with the ProducerGuid and return it.\r
-\r
-\r
- @param ProducerGuid The Guid to search the HII database for\r
- @param Token The token value of the string to extract\r
- @param String The string that is extracted\r
-\r
- @retval EFI_SUCCESS The function returns EFI_SUCCESS always.\r
-\r
-**/\r
-EFI_STATUS\r
-GetProducerString (\r
- IN EFI_GUID *ProducerGuid,\r
- IN EFI_STRING_ID Token,\r
- OUT CHAR16 **String\r
- )\r
-{\r
- EFI_STRING TmpString;\r
-\r
- TmpString = HiiGetPackageString (ProducerGuid, Token, NULL);\r
- if (TmpString == NULL) {\r
- *String = GetStringById (STRING_TOKEN (STR_MISSING_STRING));\r
- } else {\r
- *String = TmpString;\r
- }\r
-\r
- return EFI_SUCCESS;\r
-}\r
\r
/**\r
Convert Processor Frequency Data to a string.\r
\r
if (Base10Exponent >= 6) {\r
FreqMhz = ProcessorFrequency;\r
- for (Index = 0; Index < (UINTN) (Base10Exponent - 6); Index++) {\r
+ for (Index = 0; Index < ((UINT32)Base10Exponent - 6); Index++) {\r
FreqMhz *= 10;\r
}\r
} else {\r
\r
StringBuffer = AllocateZeroPool (0x20);\r
ASSERT (StringBuffer != NULL);\r
- Index = UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, FreqMhz / 1000, 3);\r
+ UnicodeValueToStringS (StringBuffer, 0x20, LEFT_JUSTIFY, FreqMhz / 1000, 3);\r
+ Index = StrnLenS (StringBuffer, 0x20 / sizeof (CHAR16));\r
StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L".");\r
- UnicodeValueToString (StringBuffer + Index + 1, PREFIX_ZERO, (FreqMhz % 1000) / 10, 2);\r
+ UnicodeValueToStringS (\r
+ StringBuffer + Index + 1,\r
+ 0x20 - sizeof (CHAR16) * (Index + 1),\r
+ PREFIX_ZERO,\r
+ (FreqMhz % 1000) / 10,\r
+ 2\r
+ );\r
StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L" GHz");\r
*String = (CHAR16 *) StringBuffer;\r
return ;\r
\r
StringBuffer = AllocateZeroPool (0x20);\r
ASSERT (StringBuffer != NULL);\r
- UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, MemorySize, 6);\r
+ UnicodeValueToStringS (StringBuffer, 0x20, LEFT_JUSTIFY, MemorySize, 6);\r
StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L" MB RAM");\r
\r
*String = (CHAR16 *) StringBuffer;\r
*String = GetStringById (STRING_TOKEN (STR_MISSING_STRING));\r
} else {\r
*String = AllocatePool (StrSize * sizeof (CHAR16));\r
- AsciiStrToUnicodeStr (OptionalStrStart, *String);\r
+ AsciiStrToUnicodeStrS (OptionalStrStart, *String, StrSize);\r
}\r
\r
return EFI_SUCCESS;\r
{\r
UINT8 StrIndex;\r
CHAR16 *NewString;\r
- BOOLEAN Find[5];\r
EFI_STATUS Status;\r
EFI_STRING_ID TokenToUpdate;\r
EFI_SMBIOS_HANDLE SmbiosHandle;\r
SMBIOS_TABLE_TYPE4 *Type4Record;\r
SMBIOS_TABLE_TYPE19 *Type19Record;\r
EFI_SMBIOS_TABLE_HEADER *Record;\r
+ UINT64 InstalledMemory;\r
\r
- ZeroMem (Find, sizeof (Find));\r
+ InstalledMemory = 0;\r
\r
//\r
// Update Front Page strings\r
);\r
if (!EFI_ERROR (Status)) {\r
SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;\r
- do {\r
- Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
- if (EFI_ERROR(Status)) {\r
- break;\r
- }\r
-\r
- if (Record->Type == EFI_SMBIOS_TYPE_BIOS_INFORMATION) {\r
+ Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
+ while (!EFI_ERROR(Status)) {\r
+ if (Record->Type == SMBIOS_TYPE_BIOS_INFORMATION) {\r
Type0Record = (SMBIOS_TABLE_TYPE0 *) Record;\r
StrIndex = Type0Record->BiosVersion;\r
GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type0Record + Type0Record->Hdr.Length), StrIndex, &NewString);\r
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION);\r
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
FreePool (NewString);\r
- Find[0] = TRUE;\r
}\r
\r
- if (Record->Type == EFI_SMBIOS_TYPE_SYSTEM_INFORMATION) {\r
+ if (Record->Type == SMBIOS_TYPE_SYSTEM_INFORMATION) {\r
Type1Record = (SMBIOS_TABLE_TYPE1 *) Record;\r
StrIndex = Type1Record->ProductName;\r
GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type1Record + Type1Record->Hdr.Length), StrIndex, &NewString);\r
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL);\r
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
FreePool (NewString);\r
- Find[1] = TRUE;\r
}\r
\r
- if (Record->Type == EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION) {\r
+ if (Record->Type == SMBIOS_TYPE_PROCESSOR_INFORMATION) {\r
Type4Record = (SMBIOS_TABLE_TYPE4 *) Record;\r
StrIndex = Type4Record->ProcessorVersion;\r
GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type4Record + Type4Record->Hdr.Length), StrIndex, &NewString);\r
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL);\r
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
FreePool (NewString);\r
- Find[2] = TRUE;\r
}\r
\r
- if (Record->Type == EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION) {\r
+ if (Record->Type == SMBIOS_TYPE_PROCESSOR_INFORMATION) {\r
Type4Record = (SMBIOS_TABLE_TYPE4 *) Record;\r
ConvertProcessorToString(Type4Record->CurrentSpeed, 6, &NewString);\r
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED);\r
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
FreePool (NewString);\r
- Find[3] = TRUE;\r
}\r
\r
- if ( Record->Type == EFI_SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS ) {\r
+ if ( Record->Type == SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS ) {\r
Type19Record = (SMBIOS_TABLE_TYPE19 *) Record;\r
- ConvertMemorySizeToString (\r
- (UINT32)(RShiftU64((Type19Record->EndingAddress - Type19Record->StartingAddress + 1), 10)),\r
- &NewString\r
- );\r
- TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE);\r
- HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
- FreePool (NewString);\r
- Find[4] = TRUE;\r
+ if (Type19Record->StartingAddress != 0xFFFFFFFF ) {\r
+ InstalledMemory += RShiftU64(Type19Record->EndingAddress -\r
+ Type19Record->StartingAddress + 1, 10);\r
+ } else {\r
+ InstalledMemory += RShiftU64(Type19Record->ExtendedEndingAddress -\r
+ Type19Record->ExtendedStartingAddress + 1, 20);\r
+ }\r
}\r
- } while ( !(Find[0] && Find[1] && Find[2] && Find[3] && Find[4]));\r
+\r
+ Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
+ }\r
+\r
+ // now update the total installed RAM size\r
+ ConvertMemorySizeToString ((UINT32)InstalledMemory, &NewString );\r
+ TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE);\r
+ HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+ FreePool (NewString);\r
}\r
+\r
return ;\r
}\r
\r
SetMem (&Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
SetMem (&Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0x0);\r
SetMem (&Color, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
- \r
+\r
TmpStr = GetStringById (STRING_TOKEN (STR_START_BOOT_OPTION));\r
\r
if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {\r
PlatformBdsShowProgress (Foreground, Background, TmpStr, Color, 0, 0);\r
}\r
}\r
- \r
+\r
\r
TimeoutRemain = TimeoutDefault;\r
while (TimeoutRemain != 0) {\r
break;\r
}\r
TimeoutRemain--;\r
- \r
+\r
if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {\r
//\r
// Show progress\r
}\r
}\r
}\r
- \r
+\r
if (TmpStr != NULL) {\r
gBS->FreePool (TmpStr);\r
}\r
)\r
{\r
EFI_STATUS Status;\r
- EFI_STATUS StatusHotkey; \r
+ EFI_STATUS StatusHotkey;\r
EFI_BOOT_LOGO_PROTOCOL *BootLogo;\r
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *SimpleTextOut;\r
\r
if (!mModeInitialized) {\r
//\r
- // After the console is ready, get current video resolution \r
+ // After the console is ready, get current video resolution\r
// and text mode before launching setup at first time.\r
//\r
Status = gBS->HandleProtocol (\r
if (EFI_ERROR (Status)) {\r
GraphicsOutput = NULL;\r
}\r
- \r
+\r
Status = gBS->HandleProtocol (\r
gST->ConsoleOutHandle,\r
&gEfiSimpleTextOutProtocolGuid,\r
);\r
if (EFI_ERROR (Status)) {\r
SimpleTextOut = NULL;\r
- } \r
+ }\r
\r
if (GraphicsOutput != NULL) {\r
//\r
\r
//\r
// Get user defined text mode for setup.\r
- // \r
+ //\r
mSetupHorizontalResolution = PcdGet32 (PcdSetupVideoHorizontalResolution);\r
- mSetupVerticalResolution = PcdGet32 (PcdSetupVideoVerticalResolution); \r
+ mSetupVerticalResolution = PcdGet32 (PcdSetupVideoVerticalResolution);\r
mSetupTextModeColumn = PcdGet32 (PcdSetupConOutColumn);\r
mSetupTextModeRow = PcdGet32 (PcdSetupConOutRow);\r
\r
if (!EFI_ERROR(Status) && ((OsIndication & EFI_OS_INDICATIONS_BOOT_TO_FW_UI) != 0)) {\r
//\r
// Clear EFI_OS_INDICATIONS_BOOT_TO_FW_UI to acknowledge OS\r
- // \r
+ //\r
OsIndication &= ~((UINT64)EFI_OS_INDICATIONS_BOOT_TO_FW_UI);\r
Status = gRT->SetVariable (\r
L"OsIndications",\r
if (!FeaturePcdGet(PcdBootlogoOnlyEnable) || !EFI_ERROR(Status) || !EFI_ERROR(StatusHotkey)){\r
//\r
// Ensure screen is clear when switch Console from Graphics mode to Text mode\r
- // Skip it in normal boot \r
+ // Skip it in normal boot\r
//\r
gST->ConOut->EnableCursor (gST->ConOut, TRUE);\r
gST->ConOut->ClearScreen (gST->ConOut);\r
}\r
\r
//\r
- // Install BM HiiPackages. \r
- // Keep BootMaint HiiPackage, so that it can be covered by global setting. \r
+ // Install BM HiiPackages.\r
+ // Keep BootMaint HiiPackage, so that it can be covered by global setting.\r
//\r
InitBMPackage ();\r
\r
// Set proper video resolution and text mode for setup\r
//\r
BdsSetConsoleMode (TRUE);\r
- \r
+\r
InitializeFrontPage (FALSE);\r
\r
//\r
\r
/**\r
This function will change video resolution and text mode\r
- according to defined setup mode or defined boot mode \r
+ according to defined setup mode or defined boot mode\r
\r
- @param IsSetupMode Indicate mode is changed to setup mode or boot mode. \r
+ @param IsSetupMode Indicate mode is changed to setup mode or boot mode.\r
\r
@retval EFI_SUCCESS Mode is changed successfully.\r
@retval Others Mode failed to be changed.\r
EFI_STATUS Status;\r
UINTN Index;\r
UINTN CurrentColumn;\r
- UINTN CurrentRow; \r
+ UINTN CurrentRow;\r
\r
MaxGopMode = 0;\r
MaxTextMode = 0;\r
\r
//\r
- // Get current video resolution and text mode \r
+ // Get current video resolution and text mode\r
//\r
Status = gBS->HandleProtocol (\r
gST->ConsoleOutHandle,\r
);\r
if (EFI_ERROR (Status)) {\r
SimpleTextOut = NULL;\r
- } \r
+ }\r
\r
if ((GraphicsOutput == NULL) || (SimpleTextOut == NULL)) {\r
return EFI_UNSUPPORTED;\r
\r
if (IsSetupMode) {\r
//\r
- // The requried resolution and text mode is setup mode.\r
+ // The required resolution and text mode is setup mode.\r
//\r
NewHorizontalResolution = mSetupHorizontalResolution;\r
NewVerticalResolution = mSetupVerticalResolution;\r
NewHorizontalResolution = mBootHorizontalResolution;\r
NewVerticalResolution = mBootVerticalResolution;\r
NewColumns = mBootTextModeColumn;\r
- NewRows = mBootTextModeRow; \r
+ NewRows = mBootTextModeRow;\r
}\r
- \r
+\r
if (GraphicsOutput != NULL) {\r
MaxGopMode = GraphicsOutput->Mode->MaxMode;\r
- } \r
+ }\r
\r
if (SimpleTextOut != NULL) {\r
MaxTextMode = SimpleTextOut->Mode->MaxMode;\r
return EFI_SUCCESS;\r
} else {\r
//\r
- // If current text mode is different from requried text mode. Set new video mode\r
+ // If current text mode is different from required text mode. Set new video mode\r
//\r
for (Index = 0; Index < MaxTextMode; Index++) {\r
Status = SimpleTextOut->QueryMode (SimpleTextOut, Index, &CurrentColumn, &CurrentRow);\r
//\r
// Update text mode PCD.\r
//\r
- PcdSet32 (PcdConOutColumn, mSetupTextModeColumn);\r
- PcdSet32 (PcdConOutRow, mSetupTextModeRow);\r
+ Status = PcdSet32S (PcdConOutColumn, mSetupTextModeColumn);\r
+ ASSERT_EFI_ERROR (Status);\r
+ Status = PcdSet32S (PcdConOutRow, mSetupTextModeRow);\r
+ ASSERT_EFI_ERROR (Status);\r
FreePool (Info);\r
return EFI_SUCCESS;\r
}\r
}\r
if (Index == MaxTextMode) {\r
//\r
- // If requried text mode is not supported, return error.\r
+ // If required text mode is not supported, return error.\r
//\r
FreePool (Info);\r
return EFI_UNSUPPORTED;\r
// Set PCD to Inform GraphicsConsole to change video resolution.\r
// Set PCD to Inform Consplitter to change text mode.\r
//\r
- PcdSet32 (PcdVideoHorizontalResolution, NewHorizontalResolution);\r
- PcdSet32 (PcdVideoVerticalResolution, NewVerticalResolution);\r
- PcdSet32 (PcdConOutColumn, NewColumns);\r
- PcdSet32 (PcdConOutRow, NewRows);\r
- \r
- \r
+ Status = PcdSet32S (PcdVideoHorizontalResolution, NewHorizontalResolution);\r
+ ASSERT_EFI_ERROR (Status);\r
+ Status = PcdSet32S (PcdVideoVerticalResolution, NewVerticalResolution);\r
+ ASSERT_EFI_ERROR (Status);\r
+ Status = PcdSet32S (PcdConOutColumn, NewColumns);\r
+ ASSERT_EFI_ERROR (Status);\r
+ Status = PcdSet32S (PcdConOutRow, NewRows);\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+\r
//\r
// Video mode is changed, so restart graphics console driver and higher level driver.\r
// Reconnect graphics console driver and higher level driver.\r