Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

ttyintf.hh File Reference

#include "rcs_defs.hh"

Include dependency graph for ttyintf.hh:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Data Structures

struct  rcs_serial_port_setting

Functions

char * clean_string (char *string, int len)
int print_serial_port_configuration (RCS_SERIAL_PORT_HANDLE _handle)
int set_serial_port_configuration (RCS_SERIAL_PORT_HANDLE _handle, rcs_serial_port_setting *_settings)
RCS_SERIAL_PORT_HANDLE open_serial_communications_port (const char *name)
int read_serial_communications_port (RCS_SERIAL_PORT_HANDLE _handle, char *buf, int maxlen)
int readn_serial_communications_port (RCS_SERIAL_PORT_HANDLE _handle, char *buf, int maxlen)
int write_serial_communications_port (RCS_SERIAL_PORT_HANDLE _handle, char *buf, int maxlen)
int close_serial_communications_port (RCS_SERIAL_PORT_HANDLE _handle)


Function Documentation

char* clean_string char *    string,
int    len
 

Definition at line 116 of file ttyintf.cc.

00117 {
00118   int i = 0;
00119   char *cptr = string;
00120   char c = *cptr;
00121   if (len > 256)
00122     {
00123       len = 256;
00124     }
00125   while (i < len
00126          && (c == ' ' || c == '\t' || c == '=' || c == '\r' || c == '\n')
00127          && c != 0)
00128     {
00129       cptr++;
00130       c = *cptr;
00131       i++;
00132     }
00133   memset (clean_string_buf, 0, 256);
00134   if (c == 0 || i > len)
00135     {
00136       return clean_string_buf;
00137     }
00138   c = *cptr;
00139   char *dptr = clean_string_buf;
00140   while (i < len && c != 0 && c != ' ' && c != '\t' && c != '\r' && c != '\n')
00141     {
00142       *dptr = *cptr;
00143       cptr++;
00144       dptr++;
00145       i++;
00146       c = *cptr;
00147     }
00148   return clean_string_buf;
00149 }

int print_serial_port_configuration RCS_SERIAL_PORT_HANDLE    _handle
 

Definition at line 28 of file _tty.c.

00029 {
00030 #ifdef UNIX_LIKE_PLAT
00031   int ttyFileFd = _handle;
00032   struct termios ttysettings;
00033   if (tcgetattr (ttyFileFd, &ttysettings) < 0)
00034     {
00035       rcs_print ("tcgetattr failed.\n");
00036       return -1;
00037     }
00038   rcs_print ("c_iflag: %x ", ttysettings.c_iflag);
00039   if (ttysettings.c_iflag & BRKINT)
00040     rcs_print ("BRKINT ");
00041   if (ttysettings.c_iflag & ICRNL)
00042     rcs_print ("ICRNL ");
00043   if (ttysettings.c_iflag & IGNBRK)
00044     rcs_print ("IGNBRK ");
00045   if (ttysettings.c_iflag & IGNCR)
00046     rcs_print ("IGNCR ");
00047   if (ttysettings.c_iflag & IMAXBEL)
00048     rcs_print ("IMAXBEL ");
00049   if (ttysettings.c_iflag & INLCR)
00050     rcs_print ("INLCR ");
00051   if (ttysettings.c_iflag & INPCK)
00052     rcs_print ("INPCK ");
00053   if (ttysettings.c_iflag & IUCLC)
00054     rcs_print ("IUCLC ");
00055   if (ttysettings.c_iflag & IXANY)
00056     rcs_print ("IXANY ");
00057   if (ttysettings.c_iflag & IXOFF)
00058     rcs_print ("IXOFF ");
00059   if (ttysettings.c_iflag & IXON)
00060     rcs_print ("IXON ");
00061   if (ttysettings.c_iflag & PARMRK)
00062     rcs_print ("PARMRK ");
00063   rcs_print ("\n");
00064   rcs_print ("c_oflag: %x ", ttysettings.c_oflag);
00065   if (ttysettings.c_oflag & BSDLY)
00066     rcs_print ("BSDLY ");
00067   if (ttysettings.c_oflag & CRDLY)
00068     rcs_print ("CRDLY ");
00069   if (ttysettings.c_oflag & FFDLY)
00070     rcs_print ("FFDLY ");
00071   if (ttysettings.c_oflag & NLDLY)
00072     rcs_print ("NLDLY ");
00073   if (ttysettings.c_oflag & OCRNL)
00074     rcs_print ("OCRNL ");
00075   if (ttysettings.c_oflag & OFDEL)
00076     rcs_print ("OFDEL ");
00077   if (ttysettings.c_oflag & OFILL)
00078     rcs_print ("OFILL ");
00079   if (ttysettings.c_oflag & OLCUC)
00080     rcs_print ("OLCUC ");
00081   if (ttysettings.c_oflag & ONLCR)
00082     rcs_print ("ONLCR ");
00083   if (ttysettings.c_oflag & ONLRET)
00084     rcs_print ("ONLRET ");
00085   if (ttysettings.c_oflag & ONOCR)
00086     rcs_print ("ONOCR ");
00087   /*  if(ttysettings.c_oflag & ONOEOT) rcs_print("ONEOT "); */
00088   if (ttysettings.c_oflag & OPOST)
00089     rcs_print ("OPOST ");
00090   /*  if(ttysettings.c_oflag & OXTABS) rcs_print("OXTABS "); */
00091   if (ttysettings.c_oflag & TABDLY)
00092     rcs_print ("TABDLY ");
00093   if (ttysettings.c_oflag & VTDLY)
00094     rcs_print ("VTDLY ");
00095   rcs_print ("\n");
00096   rcs_print ("c_cflag: %x ", ttysettings.c_cflag);
00097 #ifndef LINUX
00098   if (ttysettings.c_cflag & CCTS_OFLOW)
00099     rcs_print ("CCTS_OFLOW ");
00100 #endif
00101   /*  if(ttysettings.c_cflag & CIGNORE) rcs_print("CIGNORE "); */
00102   if (ttysettings.c_cflag & CLOCAL)
00103     rcs_print ("CLOCAL ");
00104   if (ttysettings.c_cflag & CREAD)
00105     rcs_print ("CREAD ");
00106 #ifndef LINUX
00107   if (ttysettings.c_cflag & CRTS_IFLOW)
00108     rcs_print ("CRTS_IFLOW ");
00109 #endif
00110   if ((ttysettings.c_cflag & CSIZE) == CS5)
00111     rcs_print ("CS5 ");
00112   if ((ttysettings.c_cflag & CSIZE) == CS6)
00113     rcs_print ("CS6 ");
00114   if ((ttysettings.c_cflag & CSIZE) == CS7)
00115     rcs_print ("CS7 ");
00116   if ((ttysettings.c_cflag & CSIZE) == CS8)
00117     rcs_print ("CS8 ");
00118   if (ttysettings.c_cflag & CSTOPB)
00119     rcs_print ("CSTOPB ");
00120   if (ttysettings.c_cflag & HUPCL)
00121     rcs_print ("HUPCL ");
00122   /*  if(ttysettings.c_cflag & MDMBUF) rcs_print("MDMBUF "); */
00123   if (ttysettings.c_cflag & PARENB)
00124     rcs_print ("PARENB ");
00125   if (ttysettings.c_cflag & PARODD)
00126     rcs_print ("PARODD ");
00127   rcs_print ("\n");
00128   rcs_print ("c_lflag: %x ", ttysettings.c_lflag);
00129   /*if(ttysettings.c_cflag & ALTWERASE) rcs_print("ALTWERASE "); */
00130   if (ttysettings.c_cflag & ECHO)
00131     rcs_print ("ECHO ");
00132   if (ttysettings.c_cflag & ECHOCTL)
00133     rcs_print ("ECHOCTL ");
00134   if (ttysettings.c_cflag & ECHOE)
00135     rcs_print ("ECHOE ");
00136   if (ttysettings.c_cflag & ECHOK)
00137     rcs_print ("ECHOK ");
00138   if (ttysettings.c_cflag & ECHOKE)
00139     rcs_print ("ECHOKE ");
00140   if (ttysettings.c_cflag & ECHONL)
00141     rcs_print ("ECHONL ");
00142   if (ttysettings.c_cflag & ECHOPRT)
00143     rcs_print ("ECHOPRT ");
00144   if (ttysettings.c_cflag & FLUSHO)
00145     rcs_print ("FLUSHO ");
00146   if (ttysettings.c_cflag & ICANON)
00147     rcs_print ("ICANON ");
00148   if (ttysettings.c_cflag & IEXTEN)
00149     rcs_print ("IEXTEN ");
00150   if (ttysettings.c_cflag & ISIG)
00151     rcs_print ("ISIG ");
00152   if (ttysettings.c_cflag & NOFLSH)
00153     rcs_print ("NOFLSH ");
00154   /*  if(ttysettings.c_cflag & NOKERNINFO) rcs_print("NOKERNINFO "); */
00155   if (ttysettings.c_cflag & PENDIN)
00156     rcs_print ("PENDIN ");
00157   if (ttysettings.c_cflag & TOSTOP)
00158     rcs_print ("TOSTOP ");
00159   if (ttysettings.c_cflag & XCASE)
00160     rcs_print ("XCASE ");
00161   rcs_print ("\n");
00162 #endif
00163 
00164 #ifdef WIN32
00165   DCB dcb;
00166   if (!GetCommState (_handle, &dcb))
00167     {
00168       return -1;
00169     }
00170   rcs_print ("DCBlength=%d\n", dcb.DCBlength);  /* sizeof(DCB)  */
00171 
00172   rcs_print ("BaudRate=%d\n", dcb.BaudRate);    /* current baud rate  */
00173   rcs_print ("fBinary=%d\n", dcb.fBinary);      /* binary mode, no EOF check  */
00174   rcs_print ("fParity=%d\n", dcb.fParity);      /* enable parity checking  */
00175   rcs_print ("fOutxCtsFlow=%d\n", dcb.fOutxCtsFlow);    /* CTS output flow control  */
00176   rcs_print ("fOutxDsrFlow=%d\n", dcb.fOutxDsrFlow);    /* DSR output flow control  */
00177   rcs_print ("fDtrControl=%d\n", dcb.fDsrSensitivity);  /* DTR flow control type  */
00178   rcs_print ("fDsrSensitivity=%d\n", dcb.fDsrSensitivity);      /* DSR sensitivity  */
00179   rcs_print ("fTXContinueOnXoff=%d\n", dcb.fTXContinueOnXoff);  /* XOFF continues Tx  */
00180   rcs_print ("fOutX=%d\n", dcb.fOutX);  /* XON/XOFF out flow control  */
00181   rcs_print ("fInX=%d\n", dcb.fInX);    /* XON/XOFF in flow control  */
00182   rcs_print ("fErrorChar=%d\n", dcb.fErrorChar);        /* enable error replacement  */
00183   rcs_print ("fNull=%d\n", dcb.fNull);  /* enable null stripping  */
00184   rcs_print ("fRtsControl=%d\n", dcb.fRtsControl);      /* RTS flow control  */
00185   rcs_print ("fAbortOnError=%d\n", dcb.fAbortOnError);  /* abort reads/writes on error  */
00186   rcs_print ("XonLim=%d\n", dcb.XonLim);        /* transmit XON threshold  */
00187   rcs_print ("XoffLim=%d\n", dcb.XoffLim);      /* transmit XOFF threshold  */
00188   rcs_print ("ByteSize=%d\n", dcb.ByteSize);    /* number of bits/byte, 4-8  */
00189   rcs_print ("Parity=%d\n", dcb.Parity);        /* 0-4=no,odd,even,mark,space  */
00190   rcs_print ("StopBits=%d\n", dcb.StopBits);    /* 0,1,2 = 1, 1.5, 2  */
00191   rcs_print ("XonChar=%x %c\n", dcb.XoffChar, dcb.XoffChar);    /* Tx and Rx XON character  */
00192   rcs_print ("XoffChar=%x %c\n", dcb.XoffChar, dcb.XoffChar);   /* Tx and Rx XOFF character  */
00193   rcs_print ("ErrorChar=%x %c\n", dcb.ErrorChar, dcb.ErrorChar);        /* error replacement character  */
00194   rcs_print ("EofChar=%x %c\n", dcb.EofChar, dcb.EofChar);      /* end of input character  */
00195   rcs_print ("EvtChar=%x %c\n", dcb.EvtChar, dcb.EvtChar);      /* received event character  */
00196   return 0;
00197 #endif
00198 }

int set_serial_port_configuration RCS_SERIAL_PORT_HANDLE    _handle,
rcs_serial_port_setting   _settings
 

RCS_SERIAL_PORT_HANDLE open_serial_communications_port const char *    name
 

int read_serial_communications_port RCS_SERIAL_PORT_HANDLE    _handle,
char *    buf,
int    maxlen
 

Definition at line 372 of file _tty.c.

00374 {
00375 #ifdef UNIX_LIKE_PLAT
00376   int ttyFileFd = _handle;
00377   int bytes_read = read (ttyFileFd, buf, maxlen);
00378   return bytes_read;
00379 #endif
00380 #ifdef WIN32
00381   unsigned long bytes_read = 0;
00382   if (!ReadFile (_handle, buf, maxlen, &bytes_read, NULL))
00383     {
00384       return -1;
00385     }
00386   return bytes_read;
00387 #endif
00388 }

int readn_serial_communications_port RCS_SERIAL_PORT_HANDLE    _handle,
char *    buf,
int    maxlen
 

Definition at line 687 of file ttyintf.cc.

Referenced by TTYMEM::check_if_read(), TTYMEM::clear(), TTYMEM::peek(), TTYMEM::read(), CMS_SERVER_REMOTE_TTY_PORT::run(), TTYMEM::verify_bufname(), TTYMEM::write(), and TTYMEM::write_if_read().

00689 {
00690   int bytes_read = 0;
00691   while (bytes_read < len)
00692     {
00693       int rval = read_serial_communications_port (_handle, buf + bytes_read,
00694                                                   len - bytes_read);
00695       if (rval < 0)
00696         {
00697           return rval;
00698         }
00699       bytes_read += rval;
00700     }
00701   return bytes_read;
00702 }

int write_serial_communications_port RCS_SERIAL_PORT_HANDLE    _handle,
char *    buf,
int    maxlen
 

Definition at line 391 of file _tty.c.

00393 {
00394 #ifdef UNIX_LIKE_PLAT
00395   int ttyFileFd = _handle;
00396   return write (ttyFileFd, buf, maxlen);
00397 #endif
00398 #ifdef WIN32
00399   unsigned long bytes_written = 0;
00400   if (!WriteFile (_handle, buf, maxlen, &bytes_written, NULL))
00401     {
00402       return -1;
00403     }
00404   return bytes_written;
00405 #endif
00406 }

int close_serial_communications_port RCS_SERIAL_PORT_HANDLE    _handle
 

Definition at line 649 of file ttyintf.cc.

Referenced by CMS_SERVER_REMOTE_TTY_PORT::unregister_port(), and TTYMEM::~TTYMEM().

00650 {
00651   if (removeHandle (_handle))
00652     {
00653       return 0;
00654     }
00655 #ifdef UNIX
00656   return close (_handle);
00657 #endif
00658 #ifdef WIN32
00659   return CloseHandle (_handle);
00660 #endif
00661 }


Generated on Sun Dec 2 15:58:03 2001 for rcslib by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001