summaryrefslogtreecommitdiff
path: root/ArmPlatformPkg/Bds/BdsHelper.c
diff options
context:
space:
mode:
Diffstat (limited to 'ArmPlatformPkg/Bds/BdsHelper.c')
-rw-r--r--ArmPlatformPkg/Bds/BdsHelper.c90
1 files changed, 64 insertions, 26 deletions
diff --git a/ArmPlatformPkg/Bds/BdsHelper.c b/ArmPlatformPkg/Bds/BdsHelper.c
index 2f0cb31d39..0a6961183a 100644
--- a/ArmPlatformPkg/Bds/BdsHelper.c
+++ b/ArmPlatformPkg/Bds/BdsHelper.c
@@ -68,8 +68,8 @@ GetEnvironmentVariable (
}
EFI_STATUS
-EditHIInputAscii (
- IN OUT CHAR8 *CmdLine,
+EditHIInputStr (
+ IN OUT CHAR16 *CmdLine,
IN UINTN MaxCmdLine
)
{
@@ -79,9 +79,9 @@ EditHIInputAscii (
EFI_INPUT_KEY Key;
EFI_STATUS Status;
- AsciiPrint (CmdLine);
+ Print (CmdLine);
- for (CmdLineIndex = AsciiStrLen(CmdLine); CmdLineIndex < MaxCmdLine; ) {
+ for (CmdLineIndex = StrLen (CmdLine); CmdLineIndex < MaxCmdLine; ) {
Status = gBS->WaitForEvent (1, &gST->ConIn->WaitForKey, &WaitIndex);
ASSERT_EFI_ERROR (Status);
@@ -98,19 +98,19 @@ EditHIInputAscii (
if ((Char == CHAR_LINEFEED) || (Char == CHAR_CARRIAGE_RETURN) || (Char == 0x7f)) {
CmdLine[CmdLineIndex] = '\0';
- AsciiPrint ("\n\r");
+ Print (L"\n\r");
return EFI_SUCCESS;
- } else if ((Char == '\b') || (Key.ScanCode == SCAN_LEFT) || (Key.ScanCode == SCAN_DELETE)){
+ } else if ((Key.UnicodeChar == L'\b') || (Key.ScanCode == SCAN_LEFT) || (Key.ScanCode == SCAN_DELETE)){
if (CmdLineIndex != 0) {
CmdLineIndex--;
- AsciiPrint ("\b \b");
+ Print (L"\b \b");
}
} else if ((Key.ScanCode == SCAN_ESC) || (Char == 0x1B) || (Char == 0x0)) {
return EFI_INVALID_PARAMETER;
} else {
- CmdLine[CmdLineIndex++] = Char;
- AsciiPrint ("%c", Char);
+ CmdLine[CmdLineIndex++] = Key.UnicodeChar;
+ Print (L"%c", Key.UnicodeChar);
}
}
@@ -118,6 +118,44 @@ EditHIInputAscii (
}
EFI_STATUS
+GetHIInputStr (
+ IN OUT CHAR16 *CmdLine,
+ IN UINTN MaxCmdLine
+ )
+{
+ EFI_STATUS Status;
+
+ // For a new input just passed an empty string
+ CmdLine[0] = L'\0';
+
+ Status = EditHIInputStr (CmdLine, MaxCmdLine);
+
+ return Status;
+}
+
+EFI_STATUS
+EditHIInputAscii (
+ IN OUT CHAR8 *CmdLine,
+ IN UINTN MaxCmdLine
+ )
+{
+ CHAR16* Str;
+ EFI_STATUS Status;
+
+ Str = (CHAR16*)AllocatePool (MaxCmdLine * sizeof(CHAR16));
+ AsciiStrToUnicodeStr (CmdLine, Str);
+
+ Status = EditHIInputStr (Str, MaxCmdLine);
+
+ if (!EFI_ERROR(Status)) {
+ UnicodeStrToAsciiStr (Str, CmdLine);
+ }
+ FreePool (Str);
+
+ return Status;
+}
+
+EFI_STATUS
GetHIInputAscii (
IN OUT CHAR8 *CmdLine,
IN UINTN MaxCmdLine
@@ -134,13 +172,13 @@ GetHIInputInteger (
OUT UINTN *Integer
)
{
- CHAR8 CmdLine[255];
+ CHAR16 CmdLine[255];
EFI_STATUS Status;
CmdLine[0] = '\0';
- Status = EditHIInputAscii (CmdLine,255);
+ Status = EditHIInputStr (CmdLine, 255);
if (!EFI_ERROR(Status)) {
- *Integer = AsciiStrDecimalToUintn (CmdLine);
+ *Integer = StrDecimalToUintn (CmdLine);
}
return Status;
@@ -151,36 +189,36 @@ GetHIInputIP (
OUT EFI_IP_ADDRESS *Ip
)
{
- CHAR8 CmdLine[255];
- CHAR8 *Str;
+ CHAR16 CmdLine[255];
+ CHAR16 *Str;
EFI_STATUS Status;
CmdLine[0] = '\0';
- Status = EditHIInputAscii (CmdLine,255);
+ Status = EditHIInputStr (CmdLine,255);
if (!EFI_ERROR(Status)) {
Str = CmdLine;
- Ip->v4.Addr[0] = (UINT8)AsciiStrDecimalToUintn (Str);
+ Ip->v4.Addr[0] = (UINT8)StrDecimalToUintn (Str);
- Str = AsciiStrStr (Str, ".");
+ Str = StrStr (Str, L".");
if (Str == NULL) {
return EFI_INVALID_PARAMETER;
}
- Ip->v4.Addr[1] = (UINT8)AsciiStrDecimalToUintn (++Str);
+ Ip->v4.Addr[1] = (UINT8)StrDecimalToUintn (++Str);
- Str = AsciiStrStr (Str, ".");
+ Str = StrStr (Str, L".");
if (Str == NULL) {
return EFI_INVALID_PARAMETER;
}
- Ip->v4.Addr[2] = (UINT8)AsciiStrDecimalToUintn (++Str);
+ Ip->v4.Addr[2] = (UINT8)StrDecimalToUintn (++Str);
- Str = AsciiStrStr (Str, ".");
+ Str = StrStr (Str, L".");
if (Str == NULL) {
return EFI_INVALID_PARAMETER;
}
- Ip->v4.Addr[3] = (UINT8)AsciiStrDecimalToUintn (++Str);
+ Ip->v4.Addr[3] = (UINT8)StrDecimalToUintn (++Str);
}
return Status;
@@ -191,18 +229,18 @@ GetHIInputBoolean (
OUT BOOLEAN *Value
)
{
- CHAR8 CmdBoolean[2];
+ CHAR16 CmdBoolean[2];
EFI_STATUS Status;
while(1) {
Print (L"[y/n] ");
- Status = GetHIInputAscii (CmdBoolean,2);
+ Status = GetHIInputStr (CmdBoolean,2);
if (EFI_ERROR(Status)) {
return Status;
- } else if ((CmdBoolean[0] == 'y') || (CmdBoolean[0] == 'Y')) {
+ } else if ((CmdBoolean[0] == L'y') || (CmdBoolean[0] == L'Y')) {
if (Value) *Value = TRUE;
return EFI_SUCCESS;
- } else if ((CmdBoolean[0] == 'n') || (CmdBoolean[0] == 'N')) {
+ } else if ((CmdBoolean[0] == L'n') || (CmdBoolean[0] == L'N')) {
if (Value) *Value = FALSE;
return EFI_SUCCESS;
}