From 31bb486c913795c8b67d1c4dbaae2bdec4943fc9 Mon Sep 17 00:00:00 2001 From: raywu Date: Thu, 13 Sep 2018 16:11:56 +0800 Subject: SLP1.0 / SLP2.0 / Default Password / Logo / Fix Boot Order --- EDK/MiniSetup/BootOnly/hiistring.c | 251 +++++++++++++++++++++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 EDK/MiniSetup/BootOnly/hiistring.c (limited to 'EDK/MiniSetup/BootOnly/hiistring.c') diff --git a/EDK/MiniSetup/BootOnly/hiistring.c b/EDK/MiniSetup/BootOnly/hiistring.c new file mode 100644 index 0000000..7fab2ae --- /dev/null +++ b/EDK/MiniSetup/BootOnly/hiistring.c @@ -0,0 +1,251 @@ +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 2010, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy, Building 200,Norcross, Georgia 30093 **// +//** **// +//** Phone (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +// $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/BootOnly/hiistring.c $ +// +// $Author: Arunsb $ +// +// $Revision: 5 $ +// +// $Date: 10/18/12 5:58a $ +// +//*****************************************************************// +//*****************************************************************// +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/BootOnly/hiistring.c $ +// +// 5 10/18/12 5:58a Arunsb +// Updated for 2.16.1235 QA submission +// +// 9 10/10/12 12:36p Arunsb +// Synched the source for v2.16.1232, backup with Aptio +// +// 4 12/02/10 2:33p Madhans +// [TAG] - EIP 48169 +// [Category]- Enhancement +// [Severity]- Mordarate +// [Symptom]- Code Cleanup and Compiler Warning need to resolved. +// [Rootcause] Warnings reported when we build AMI higher Warning level. +// [Solution]- 1. Fix the warnings and do the code cleanup. +// 2. Introduce proper checks. +// 3. change the popupSel.c to not change the Option/variable +// cache to default or first option +// when the variable cache is not matching with any of +// option. +// [Files] - commonoem.c bbs.c boot.c hiistring.c resource.c +// popuppassword.c popupsel.c +// expression.c hii.c parse.c +// +// 3 2/19/10 1:01p Madhans +// Updated for TSE 2.01. Refer Changelog.log for File change history. +// +// 5 2/19/10 8:14a Mallikarjunanv +// updated year in copyright message +// +// 4 6/23/09 6:56p Blaines +// Coding standard update, +// Remove spaces from file header to allow proper chm function list +// creation. +// +// 3 6/12/09 7:41p Presannar +// Initial implementation of coding standards +// +// 2 6/08/09 5:35p Madhans +// Functionality moved to CommonHelper. +// +// 1 6/04/09 8:05p Madhans +// +// 1 4/28/09 11:11p Madhans +// Tse 2.0 Code complete Checkin. +// +// 4 4/28/09 9:39p Madhans +// Tse 2.0 Code complete Checkin. +// +// 3 3/31/09 3:34p Madhans +// Hii string support for UEFI 2.0 or UEFI 2.1 +// +// 1 12/18/08 7:58p Madhans +// Intial version of TSE Lite sources +// +//*****************************************************************// +//*****************************************************************// + +// +//---------------------------------------------------------------------------- +// +// Name: hiistring.c +// +// Description: file contains code to handle the hii sting operations +// +//---------------------------------------------------------------------------- +// + +#include "minisetup.h" + +#define VARIABLE_NAME_LENGTH 40 + +// +//---------------------------------------------------------------------------- +// Procedure: HiiFindStrPrintBoundary +// +// Description: function to check the boundary of the print stirng. +// Find out the index of the character from where the print boundry will be met +// +// Input: IN CHAR16 *String, IN UINTN PrintWidth +// +// Output: count +// +//---------------------------------------------------------------------------- +// +UINTN HiiFindStrPrintBoundary ( IN CHAR16 *String, IN UINTN PrintWidth ) +{ + UINTN Length = 0; + UINT16 Count = 0; + CHAR16 TempString[10]; + + while (String[Count]) { + TempString[0] = String[Count]; + TempString[1] = 0; + + if((Length + TestPrintLength(TempString) / NG_SIZE) > PrintWidth) + break; + + Length += TestPrintLength(TempString) / NG_SIZE; + + Count++; + } + return Count; +} + +// +//---------------------------------------------------------------------------- +// Procedure: IsCharWide +// +// Description: function to check the given character is wide +// +// Input: CHAR16 strWide +// +// Output: TRUE/FALSE +// +//---------------------------------------------------------------------------- +// +UINTN IsCharWide( CHAR16 strWide) +{ + UINTN Length = 0; + CHAR16 TempString[10]; + + TempString[0] = strWide; + TempString[1] = 0; + Length = 0; + Length = TestPrintLength( TempString ) / (NG_SIZE); + if(2 == Length) + return TRUE; + else + return FALSE; +} + +CHAR16 *HiiGetString( VOID* handle, UINT16 token ) +{ + if(INVALID_TOKEN != token) + return HiiGetStringLanguage( handle, token, NULL ); + else + return NULL; +} + +// +//---------------------------------------------------------------------------- +// Procedure: HiiAddString +// +// Description: function to add a string +// +// Input: VOID* handle, CHAR16 *string +// +// Output: token +// +//---------------------------------------------------------------------------- +// + +UINT16 HiiAddString( VOID* handle, CHAR16 *string ) +{ + UINT16 token = 0; + + if(ItkSupport()) + { + token = HiiChangeStringLanguage( handle, 0, gLanguages[0].Unicode, string ); + } + else + { + UINT16 FirstToken; + UINTN i, j; + + FirstToken = token = HiiChangeStringLanguage( handle, 0, gLanguages[0].Unicode, string ); + if ( token == INVALID_TOKEN ) + return token; + for ( j = 0, i = 1; i < gLangCount; i++ ) + { + if ( i != j ) + token = HiiChangeStringLanguage( handle, token, gLanguages[i].Unicode, string ); + if ( token == INVALID_TOKEN ) + { + token = HiiChangeStringLanguage( handle, 0, gLanguages[i].Unicode, string ); + if ( token == INVALID_TOKEN ) + return FirstToken; //token; + j = i; + i = 0; + } + } + } + return token; +} + +// +//---------------------------------------------------------------------------- +// Procedure: EfiTestPrintLength +// +// Description: function to get the printable lenght of the string +// +// Input: CHAR16 *string +// +// Output: Size of string +// +//---------------------------------------------------------------------------- +// +UINTN EfiTestPrintLength ( IN CHAR16 *String ) +{ + UINTN Size; + + if(String == NULL) + return 0; + + String = (UINT16* )TseSkipEscCode(String); + Size = (EfiStrLen(String) * NG_SIZE); + gBS->FreePool( String ); + return Size; +} +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2010, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Pkwy, Building 200,Norcross, Georgia 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** + -- cgit v1.2.3