// -*- C++ -*- //============================================================================= /** * @file TTY_IO.h * * $Id$ * * @author Douglas C. Schmidt */ //============================================================================= #ifndef ACE_TTY_IO_H #define ACE_TTY_IO_H #include "ace/DEV_IO.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ #if !defined (VMIN) #define ACE_VMIN 4 #else #define ACE_VMIN VMIN #endif /* VMIN */ #if !defined (VTIME) #define ACE_VTIME 5 #else #define ACE_VTIME VTIME #endif /* VTIME */ /** * @class ACE_TTY_IO * * @brief Class definitions for platform specific TTY features. * * This class represents an example interface for a specific * device (a serial line) It extends the capability of the * underlying DEV_IO class by adding a control method that takes * a special structure (Serial_Params) as argument to allow a * comfortable user interface (away from that annoying termios * structure, which is very specific to UNIX). */ class ACE_Export ACE_TTY_IO : public ACE_DEV_IO { public: enum Control_Mode { /// Set control parameters. SETPARAMS, /// Get control parameters. GETPARAMS }; struct ACE_Export Serial_Params { Serial_Params (void); // Common params int baudrate; int parityenb; const char *paritymode; int databits; int stopbits; /// Minimum number of characters for non-canonical read int readmincharacters; int readtimeoutmsec; /// CTS & RTS are the same under unix int ctsenb; /// enable & set rts mode (win32) int rtsenb; /// enable xon/xoff reception int xinenb; /// enable xon/xoff transmission int xoutenb; // Posix - unix variant int modem; int rcvenb; //Win32 int dsrenb; // SadreevAA /// min bytes in input buffer before xon int xonlim; /// max bytes in input buffer before xoff int xofflim; /// Controls whether DTR is disabled or not. int dtrdisable; }; /// Interface for reading/writing serial device parameters. int control (Control_Mode cmd, Serial_Params *arg) const; #if defined (ACE_NEEDS_DEV_IO_CONVERSION) /// This is necessary to pass ACE_TTY_IO as parameter to DEV_Connector. operator ACE_DEV_IO &(); #endif /* ACE_NEEDS_DEV_IO_CONVERSION */ }; #endif /* ACE_TTY_IO_H */