Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: daryl.mcdaniel@intel.com Reviewed-by: erik.c.bjorge@intel.com Reviewed-by: leroy.p.leahy@intel.com Reviewed-by: lee.g.rosenbaum@intel.com Reviewed-by: jaben.carsey@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13988 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Constants and declarations for the Interactive IO library.
 | |
| 
 | |
|   Copyright (c) 2012, Intel Corporation. All rights reserved.<BR>
 | |
|   This program and the accompanying materials are licensed and made available
 | |
|   under the terms and conditions of the BSD License which accompanies this
 | |
|   distribution.  The full text of the license may be found at
 | |
|   http://opensource.org/licenses/bsd-license.php.
 | |
| 
 | |
|   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
|   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| **/
 | |
| #ifndef _INTERACTIVE_IO_H
 | |
| #define _INTERACTIVE_IO_H
 | |
| 
 | |
| #include  <sys/EfiSysCall.h>
 | |
| #include  <sys/termios.h>
 | |
| #include  <Containers/Fifo.h>
 | |
| #include  <kfile.h>
 | |
| 
 | |
| __BEGIN_DECLS
 | |
| 
 | |
| typedef struct _IIO_Instance  cIIO;
 | |
| 
 | |
| cIIO * EFIAPI New_cIIO(void);   // Creates a new cIIO structure
 | |
| 
 | |
| /*  Types of Member functions of the TTY I/O "class". */
 | |
| typedef void    (EFIAPI *cIIO_Delete)    (cIIO *This);
 | |
| 
 | |
| typedef ssize_t (EFIAPI *cIIO_Read)      (struct __filedes *filp, size_t BufferSize, VOID *Buffer);
 | |
| 
 | |
| typedef ssize_t (EFIAPI *cIIO_Write)     (struct __filedes *filp, const char *buf, ssize_t n);
 | |
| 
 | |
| typedef ssize_t (EFIAPI *cIIO_Echo)      (struct __filedes *filp, wchar_t EChar, BOOLEAN EchoIsOK);
 | |
| 
 | |
| /** Structure defining an instance of the Interactive I/O "class".  **/
 | |
| struct _IIO_Instance {
 | |
|   /* ######## Public Functions ######## */
 | |
|   cIIO_Delete      Delete;
 | |
|   cIIO_Read        Read;
 | |
|   cIIO_Write       Write;
 | |
|   cIIO_Echo        Echo;
 | |
| 
 | |
|   /* ######## PRIVATE Data ######## */
 | |
| 
 | |
|   // Wide input buffer -- stdin
 | |
|   cFIFO          *InBuf;
 | |
| 
 | |
|   // Wide output buffer -- stdout
 | |
|   cFIFO          *OutBuf;
 | |
| 
 | |
|   // Attributes for characters in the output buffer
 | |
|   UINT8          *AttrBuf;
 | |
| 
 | |
|   // Wide output buffer -- stderr
 | |
|   cFIFO          *ErrBuf;
 | |
| 
 | |
|   // Character conversion states for the buffers
 | |
|   mbstate_t       OutState;
 | |
|   mbstate_t       ErrState;
 | |
| 
 | |
|   //  Cursor position at beginning of operation
 | |
|   //  and at each character thereafter.
 | |
|   CURSOR_XY       InitialXY;
 | |
|   CURSOR_XY       CurrentXY;
 | |
| 
 | |
|   UINTN           MaxColumn;    // Width of the output device
 | |
|   UINTN           MaxRow;       // Height of the output device
 | |
| 
 | |
|   // termios structure
 | |
|   struct termios  Termio;
 | |
| };
 | |
| 
 | |
| // Helper Functions
 | |
| ssize_t IIO_CanonRead     (struct __filedes *filp);
 | |
| ssize_t IIO_NonCanonRead  (struct __filedes *filp);
 | |
| ssize_t IIO_WriteOne      (struct __filedes *filp, cFIFO *Buf, wchar_t InCh);
 | |
| ssize_t IIO_EchoOne       (struct __filedes *filp, wchar_t InCh, BOOLEAN EchoIsOK);
 | |
| 
 | |
| __END_DECLS
 | |
| #endif  /* _INTERACTIVE_IO_H */
 |