# serial: include/serial/impl/unix.h Source File

serial 1.0 Cross-platform serial port library written in C++

- Main Page
- Namespaces
- Data Structures
- Files

- File List
- Globals

All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Defines
include/serial/impl/unix.h
Go to the documentation of this file.

    00001
    00038 #ifndef SERIAL_IMPL_UNIX_H
    00039 #define SERIAL_IMPL_UNIX_H
    00040
    00041 #include "serial/serial.h"
    00042
    00043 #include <pthread.h>
    00044
    00045 namespace serial {
    00046
    00047 using std::string;
    00048 using std::invalid_argument;
    00049
    00050 using serial::SerialExecption;
    00051 using serial::IOException;
    00052
    00053 class serial::Serial::SerialImpl {
    00054 public:
    00055   SerialImpl (const string &port,
    00056               unsigned long baudrate,
    00057               bytesize_t bytesize,
    00058               parity_t parity,
    00059               stopbits_t stopbits,
    00060               flowcontrol_t flowcontrol);
    00061
    00062   virtual ~SerialImpl ();
    00063
    00064   void
    00065   open ();
    00066
    00067   void
    00068   close ();
    00069
    00070   bool
    00071   isOpen () const;
    00072
    00073   size_t
    00074   available ();
    00075
    00076   size_t
    00077   read (uint8_t *buf, size_t size = 1);
    00078
    00079   size_t
    00080   write (const uint8_t *data, size_t length);
    00081
    00082   void
    00083   flush ();
    00084
    00085   void
    00086   flushInput ();
    00087
    00088   void
    00089   flushOutput ();
    00090
    00091   void
    00092   sendBreak (int duration);
    00093
    00094   void
    00095   setBreak (bool level);
    00096
    00097   void
    00098   setRTS (bool level);
    00099
    00100   void
    00101   setDTR (bool level);
    00102
    00103   bool
    00104   waitForChange ();
    00105
    00106   bool
    00107   getCTS ();
    00108
    00109   bool
    00110   getDSR ();
    00111
    00112   bool
    00113   getRI ();
    00114
    00115   bool
    00116   getCD ();
    00117
    00118   void
    00119   setPort (const string &port);
    00120
    00121   string
    00122   getPort () const;
    00123
    00124   void
    00125   setTimeout (Timeout &timeout);
    00126
    00127   Timeout
    00128   getTimeout () const;
    00129
    00130   void
    00131   setBaudrate (unsigned long baudrate);
    00132
    00133   unsigned long
    00134   getBaudrate () const;
    00135
    00136   void
    00137   setBytesize (bytesize_t bytesize);
    00138
    00139   bytesize_t
    00140   getBytesize () const;
    00141
    00142   void
    00143   setParity (parity_t parity);
    00144
    00145   parity_t
    00146   getParity () const;
    00147
    00148   void
    00149   setStopbits (stopbits_t stopbits);
    00150
    00151   stopbits_t
    00152   getStopbits () const;
    00153
    00154   void
    00155   setFlowcontrol (flowcontrol_t flowcontrol);
    00156
    00157   flowcontrol_t
    00158   getFlowcontrol () const;
    00159
    00160   void
    00161   readLock ();
    00162
    00163   void
    00164   readUnlock ();
    00165
    00166   void
    00167   writeLock ();
    00168
    00169   void
    00170   writeUnlock ();
    00171
    00172 protected:
    00173   void reconfigurePort ();
    00174
    00175 private:
    00176   string port_;               // Path to the file descriptor
    00177   int fd_;                    // The current file descriptor
    00178
    00179   bool is_open_;
    00180   bool xonxoff_;
    00181   bool rtscts_;
    00182
    00183   Timeout timeout_;         // Timeout for read operations
    00184   unsigned long baudrate_;    // Baudrate
    00185
    00186   parity_t parity_;           // Parity
    00187   bytesize_t bytesize_;       // Size of the bytes
    00188   stopbits_t stopbits_;       // Stop Bits
    00189   flowcontrol_t flowcontrol_; // Flow Control
    00190
    00191   // Mutex used to lock the read functions
    00192   pthread_mutex_t read_mutex;
    00193   // Mutex used to lock the write functions
    00194   pthread_mutex_t write_mutex;
    00195 };
    00196
    00197 }
    00198
    00199 #endif // SERIAL_IMPL_UNIX_H