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