summaryrefslogtreecommitdiffstats
path: root/src/serialportengine_unix_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/serialportengine_unix_p.h')
-rw-r--r--src/serialportengine_unix_p.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/serialportengine_unix_p.h b/src/serialportengine_unix_p.h
new file mode 100644
index 00000000..78af7b76
--- /dev/null
+++ b/src/serialportengine_unix_p.h
@@ -0,0 +1,91 @@
+/*
+ License...
+*/
+
+#ifndef SERIALPORTENGINE_UNIX_P_H
+#define SERIALPORTENGINE_UNIX_P_H
+
+#include "serialport.h"
+#include "serialportengine_p.h"
+
+#include <termios.h>
+//# undef CMSPAR
+
+class QSocketNotifier;
+
+QT_BEGIN_NAMESPACE_SERIALPORT
+
+class UnixSerialPortEngine : public QObject, public SerialPortEngine
+{
+ Q_OBJECT
+public:
+ UnixSerialPortEngine(SerialPortPrivate *parent);
+ virtual ~UnixSerialPortEngine();
+
+ virtual bool open(const QString &location, QIODevice::OpenMode mode);
+ virtual void close(const QString &location);
+
+ virtual SerialPort::Lines lines() const;
+
+ virtual bool setDtr(bool set);
+ virtual bool setRts(bool set);
+
+ virtual bool flush();
+ virtual bool reset();
+
+ virtual bool sendBreak(int duration);
+ virtual bool setBreak(bool set);
+
+ virtual qint64 bytesAvailable() const;
+ virtual qint64 bytesToWrite() const;
+
+ virtual qint64 read(char *data, qint64 len);
+ virtual qint64 write(const char *data, qint64 len);
+ virtual bool select(int timeout,
+ bool checkRead, bool checkWrite,
+ bool *selectForRead, bool *selectForWrite);
+
+ virtual QString toSystemLocation(const QString &port) const;
+ virtual QString fromSystemLocation(const QString &location) const;
+
+ virtual bool setRate(qint32 rate, SerialPort::Directions dir);
+ virtual bool setDataBits(SerialPort::DataBits dataBits);
+ virtual bool setParity(SerialPort::Parity parity);
+ virtual bool setStopBits(SerialPort::StopBits stopBits);
+ virtual bool setFlowControl(SerialPort::FlowControl flowControl);
+
+ virtual bool setDataErrorPolicy(SerialPort::DataErrorPolicy policy);
+
+ virtual bool isReadNotificationEnabled() const;
+ virtual void setReadNotificationEnabled(bool enable);
+ virtual bool isWriteNotificationEnabled() const;
+ virtual void setWriteNotificationEnabled(bool enable);
+
+ virtual bool processIOErrors();
+
+protected:
+ virtual void detectDefaultSettings();
+ virtual bool eventFilter(QObject *obj, QEvent *e);
+
+private:
+ struct termios m_currTermios;
+ struct termios m_oldTermios;
+ int m_descriptor;
+
+ QSocketNotifier *m_readNotifier;
+ QSocketNotifier *m_writeNotifier;
+ QSocketNotifier *m_exceptionNotifier;
+
+ bool updateTermios();
+ bool setStandartRate(SerialPort::Directions dir, speed_t rate);
+ bool setCustomRate(qint32 rate);
+
+#if !defined (CMSPAR)
+ qint64 writePerChar(const char *data, qint64 maxSize);
+#endif
+ qint64 readPerChar(char *data, qint64 maxSize);
+};
+
+QT_END_NAMESPACE_SERIALPORT
+
+#endif // SERIALPORTENGINE_UNIX_P_H