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