Added some functions header.
[people/mcb30/edk2.git] / edk2 / MdeModulePkg / Universal / Console / TerminalDxe / Ansi.c
1 /** @file\r
2   Implementation of translation upon PC ANSI.\r
3 \r
4 Copyright (c) 2006 - 2008, Intel Corporation. <BR>\r
5 All rights reserved. This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution.  The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9 \r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12 \r
13 **/\r
14 \r
15 \r
16 #include "Terminal.h"\r
17 \r
18 /**\r
19   Translate all raw data in the Raw FIFI into unicode, and insert\r
20   them into Unicode FIFO.\r
21 \r
22   @param TerminalDevice          The terminal device.\r
23 \r
24   @return None.\r
25 \r
26 **/\r
27 VOID\r
28 AnsiRawDataToUnicode (\r
29   IN  TERMINAL_DEV    *TerminalDevice\r
30   )\r
31 {\r
32   UINT8 RawData;\r
33 \r
34   //\r
35   // pop the raw data out from the raw fifo,\r
36   // and translate it into unicode, then push\r
37   // the unicode into unicode fifo, until the raw fifo is empty.\r
38   //\r
39   while (!IsRawFiFoEmpty (TerminalDevice)) {\r
40 \r
41     RawFiFoRemoveOneKey (TerminalDevice, &RawData);\r
42 \r
43     UnicodeFiFoInsertOneKey (TerminalDevice, (UINT16) RawData);\r
44   }\r
45 }\r
46 \r
47 /**\r
48   Check if input string is valid Ascii string, valid EFI control characters\r
49   or valid text graphics.\r
50 \r
51   @param  TerminalDevice          The terminal device.\r
52   @param  WString                 The input string.          \r
53  \r
54   @retval EFI_UNSUPPORTED         If not all input characters are valid.\r
55   @retval EFI_SUCCESS             If all input characters are valid.\r
56 \r
57 **/\r
58 EFI_STATUS\r
59 AnsiTestString (\r
60   IN  TERMINAL_DEV    *TerminalDevice,\r
61   IN  CHAR16          *WString\r
62   )\r
63 {\r
64   CHAR8 GraphicChar;\r
65 \r
66   //\r
67   // support three kind of character:\r
68   // valid ascii, valid efi control char, valid text graphics.\r
69   //\r
70   for (; *WString != CHAR_NULL; WString++) {\r
71 \r
72     if ( !(TerminalIsValidAscii (*WString) ||\r
73         TerminalIsValidEfiCntlChar (*WString) ||\r
74         TerminalIsValidTextGraphics (*WString, &GraphicChar, NULL) )) {\r
75 \r
76       return EFI_UNSUPPORTED;\r
77     }\r
78   }\r
79 \r
80   return EFI_SUCCESS;\r
81 }\r