]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/Console/TerminalDxe/Ansi.c
MdeModulePkg: Apply uncrustify changes
[mirror_edk2.git] / MdeModulePkg / Universal / Console / TerminalDxe / Ansi.c
1 /** @file
2 Implementation of translation upon PC ANSI.
3
4 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 **/
8
9 #include "Terminal.h"
10
11 /**
12 Translate all raw data in the Raw FIFO into unicode, and insert
13 them into Unicode FIFO.
14
15 @param TerminalDevice The terminal device.
16
17 **/
18 VOID
19 AnsiRawDataToUnicode (
20 IN TERMINAL_DEV *TerminalDevice
21 )
22 {
23 UINT8 RawData;
24
25 //
26 // pop the raw data out from the raw fifo,
27 // and translate it into unicode, then push
28 // the unicode into unicode fifo, until the raw fifo is empty.
29 //
30 while (!IsRawFiFoEmpty (TerminalDevice) && !IsUnicodeFiFoFull (TerminalDevice)) {
31 RawFiFoRemoveOneKey (TerminalDevice, &RawData);
32
33 UnicodeFiFoInsertOneKey (TerminalDevice, (UINT16)RawData);
34 }
35 }
36
37 /**
38 Check if input string is valid Ascii string, valid EFI control characters
39 or valid text graphics.
40
41 @param TerminalDevice The terminal device.
42 @param WString The input string.
43
44 @retval EFI_UNSUPPORTED If not all input characters are valid.
45 @retval EFI_SUCCESS If all input characters are valid.
46
47 **/
48 EFI_STATUS
49 AnsiTestString (
50 IN TERMINAL_DEV *TerminalDevice,
51 IN CHAR16 *WString
52 )
53 {
54 CHAR8 GraphicChar;
55
56 //
57 // support three kind of character:
58 // valid ascii, valid efi control char, valid text graphics.
59 //
60 for ( ; *WString != CHAR_NULL; WString++) {
61 if ( !(TerminalIsValidAscii (*WString) ||
62 TerminalIsValidEfiCntlChar (*WString) ||
63 TerminalIsValidTextGraphics (*WString, &GraphicChar, NULL)))
64 {
65 return EFI_UNSUPPORTED;
66 }
67 }
68
69 return EFI_SUCCESS;
70 }