@ -42,224 +42,224 @@
@@ -42,224 +42,224 @@
# endif
namespace TNX {
enum ChangeApplyTypes { AllAppTy , PortAttrOnlyAppTy , CommTimeoutsOnlyAppTy } ;
/**
* Communication timeout values for Win32 / CE and Posix platforms .
* @ see www . unixwiz . net / techtips / termios - vmin - vtime . html
*/
struct CommTimeouts {
enum ChangeApplyTypes { AllAppTy , PortAttrOnlyAppTy , CommTimeoutsOnlyAppTy } ;
/**
* Communication timeout values for Win32 / CE and Posix platforms .
* @ see www . unixwiz . net / techtips / termios - vmin - vtime . html
*/
struct CommTimeouts {
# ifdef TNX_WINDOWS_SERIAL_PORT
typedef DWORD commt_t ;
static const DWORD NoTimeout = MAXDWORD ;
typedef DWORD commt_t ;
static const DWORD NoTimeout = MAXDWORD ;
# else
typedef quint8 commt_t ;
static const qint8 NoTimeout = - 1 ;
typedef quint8 commt_t ;
static const qint8 NoTimeout = - 1 ;
# endif
// Win32 only section
commt_t Win32ReadIntervalTimeout ; ///< Maximum time between read chars. Win32 only.
commt_t Win32ReadTotalTimeoutMultiplier ; ///< Multiplier of characters. Win32 only.
commt_t Win32ReadTotalTimeoutConstant ; ///< Constant in milliseconds. Win32 only.
commt_t Win32WriteTotalTimeoutMultiplier ; ///< Multiplier of characters. Win32 only.
commt_t Win32WriteTotalTimeoutConstant ; ///< Constant in milliseconds. Win32 only.
// Posix only section
commt_t PosixVTIME ; ///< Read timeout. Posix only.
commt_t PosixVMIN ; ///< Minimum number of bytes before returning from
///< read operation. Posix only.
CommTimeouts ( )
: Win32ReadIntervalTimeout ( NoTimeout ) , Win32ReadTotalTimeoutMultiplier ( 0 ) , Win32ReadTotalTimeoutConstant ( 0 ) ,
Win32WriteTotalTimeoutMultiplier ( 25 ) , Win32WriteTotalTimeoutConstant ( 250 ) ,
PosixVTIME ( 0 ) , PosixVMIN ( 1 )
{
}
} ;
/**
* Wrapper class for serial port settings .
*/
class TONIX_EXPORT QPortSettings
{
public :
enum BaudRate {
BAUDR_UNKNOWN = 0 ,
// Win32 only section
commt_t Win32ReadIntervalTimeout ; ///< Maximum time between read chars. Win32 only.
commt_t Win32ReadTotalTimeoutMultiplier ; ///< Multiplier of characters. Win32 only.
commt_t Win32ReadTotalTimeoutConstant ; ///< Constant in milliseconds. Win32 only.
commt_t Win32WriteTotalTimeoutMultiplier ; ///< Multiplier of characters. Win32 only.
commt_t Win32WriteTotalTimeoutConstant ; ///< Constant in milliseconds. Win32 only.
// Posix only section
commt_t PosixVTIME ; ///< Read timeout. Posix only.
commt_t PosixVMIN ; ///< Minimum number of bytes before returning from
///< read operation. Posix only.
CommTimeouts ( )
: Win32ReadIntervalTimeout ( NoTimeout ) , Win32ReadTotalTimeoutMultiplier ( 0 ) , Win32ReadTotalTimeoutConstant ( 0 ) ,
Win32WriteTotalTimeoutMultiplier ( 25 ) , Win32WriteTotalTimeoutConstant ( 250 ) ,
PosixVTIME ( 0 ) , PosixVMIN ( 1 )
{
}
} ;
/**
* Wrapper class for serial port settings .
*/
class TONIX_EXPORT QPortSettings
{
public :
enum BaudRate {
BAUDR_UNKNOWN = 0 ,
# ifdef TNX_POSIX_SERIAL_PORT
BAUDR_50 ,
BAUDR_75 ,
BAUDR_134 ,
BAUDR_150 ,
BAUDR_200 ,
BAUDR_1800 ,
//BAUDR_76800,
BAUDR_50 ,
BAUDR_75 ,
BAUDR_134 ,
BAUDR_150 ,
BAUDR_200 ,
BAUDR_1800 ,
//BAUDR_76800,
# endif
# ifdef Q_OS_LINUX
BAUDR_230400 ,
BAUDR_460800 ,
BAUDR_500000 ,
BAUDR_576000 ,
BAUDR_230400 ,
BAUDR_460800 ,
BAUDR_500000 ,
BAUDR_576000 ,
# endif
# ifdef TNX_WINDOWS_SERIAL_PORT
BAUDR_14400 ,
BAUDR_56000 ,
BAUDR_128000 ,
BAUDR_230400 ,
BAUDR_256000 ,
BAUDR_460800 ,
BAUDR_14400 ,
BAUDR_56000 ,
BAUDR_128000 ,
BAUDR_230400 ,
BAUDR_256000 ,
BAUDR_460800 ,
# endif
// baud rates supported by all OSs
BAUDR_110 ,
BAUDR_300 ,
BAUDR_600 ,
BAUDR_1200 ,
BAUDR_2400 ,
BAUDR_4800 ,
BAUDR_9600 ,
BAUDR_19200 ,
BAUDR_38400 ,
BAUDR_57600 ,
BAUDR_115200 ,
BAUDR_921600
} ;
enum DataBits {
DB_5 , // simulated in POSIX
DB_6 ,
DB_7 ,
DB_8 ,
DB_UNKNOWN
} ;
enum Parity {
PAR_NONE ,
PAR_ODD ,
PAR_EVEN ,
// baud rates supported by all OSs
BAUDR_110 ,
BAUDR_300 ,
BAUDR_600 ,
BAUDR_1200 ,
BAUDR_2400 ,
BAUDR_4800 ,
BAUDR_9600 ,
BAUDR_19200 ,
BAUDR_38400 ,
BAUDR_57600 ,
BAUDR_115200 ,
BAUDR_921600
} ;
enum DataBits {
DB_5 , // simulated in POSIX
DB_6 ,
DB_7 ,
DB_8 ,
DB_UNKNOWN
} ;
enum Parity {
PAR_NONE ,
PAR_ODD ,
PAR_EVEN ,
# ifdef TNX_WINDOWS_SERIAL_PORT
PAR_MARK ,
PAR_MARK ,
# endif
PAR_SPACE , // simulated in POSIX
PAR_UNKNOWN
} ;
enum StopBits {
STOP_1 ,
PAR_SPACE , // simulated in POSIX
PAR_UNKNOWN
} ;
enum StopBits {
STOP_1 ,
# ifdef TNX_WINDOWS_SERIAL_PORT
STOP_1_5 ,
STOP_1_5 ,
# endif
STOP_2 ,
STOP_UNKNOWN
} ;
enum FlowControl {
FLOW_OFF ,
FLOW_HARDWARE ,
FLOW_XONXOFF ,
FLOW_UNKNOWN
} ;
QPortSettings ( ) ;
QPortSettings ( const QString & settings ) ;
// port configuration methods
bool set ( const QString & settings ) ;
inline BaudRate baudRate ( ) const {
return baudRate_ ;
}
void setBaudRate ( BaudRate baudRate ) {
baudRate_ = baudRate ;
switch ( baudRate_ ) {
# ifdef TNX_POSIX_SERIAL_PORT
case BAUDR_50 : baudRateInt_ = 50 ; break ;
case BAUDR_75 : baudRateInt_ = 75 ; break ;
case BAUDR_134 : baudRateInt_ = 134 ; break ;
case BAUDR_150 : baudRateInt_ = 150 ; break ;
case BAUDR_200 : baudRateInt_ = 200 ; break ;
case BAUDR_1800 : baudRateInt_ = 1800 ; break ;
//case 76800: baudRateInt_=76800; break;
# endif
# ifdef TNX_WINDOWS_SERIAL_PORT
case BAUDR_14400 : baudRateInt_ = 14400 ; break ;
case BAUDR_56000 : baudRateInt_ = 56000 ; break ;
case BAUDR_128000 : baudRateInt_ = 128000 ; break ;
case BAUDR_256000 : baudRateInt_ = 256000 ; break ;
case BAUDR_230400 : baudRateInt_ = 230400 ; break ;
case BAUDR_460800 : baudRateInt_ = 460800 ; break ;
# endif
# if defined(Q_OS_LINUX)
case BAUDR_230400 : baudRateInt_ = 230400 ; break ;
case BAUDR_460800 : baudRateInt_ = 460800 ; break ;
case BAUDR_500000 : baudRateInt_ = 500000 ; break ;
case BAUDR_576000 : baudRateInt_ = 576000 ; break ;
# endif
// baud rates supported by all platforms
case BAUDR_110 : baudRateInt_ = 110 ; break ;
case BAUDR_300 : baudRateInt_ = 300 ; break ;
case BAUDR_600 : baudRateInt_ = 600 ; break ;
case BAUDR_1200 : baudRateInt_ = 1200 ; break ;
case BAUDR_2400 : baudRateInt_ = 2400 ; break ;
case BAUDR_4800 : baudRateInt_ = 4800 ; break ;
case BAUDR_9600 : baudRateInt_ = 9600 ; break ;
case BAUDR_19200 : baudRateInt_ = 19200 ; break ;
case BAUDR_38400 : baudRateInt_ = 38400 ; break ;
case BAUDR_57600 : baudRateInt_ = 57600 ; break ;
case BAUDR_115200 : baudRateInt_ = 115200 ; break ;
case BAUDR_921600 : baudRateInt_ = 921600 ; break ;
default :
baudRateInt_ = 0 ; // unknown baudrate
}
}
inline Parity parity ( ) const {
return parity_ ;
}
inline void setParity ( Parity parity ) {
parity_ = parity ;
}
inline StopBits stopBits ( ) const {
return stopBits_ ;
}
inline void setStopBits ( StopBits stopBits ) {
stopBits_ = stopBits ;
}
inline DataBits dataBits ( ) const {
return dataBits_ ;
}
inline void setDataBits ( DataBits dataBits ) {
dataBits_ = dataBits ;
}
inline FlowControl flowControl ( ) const {
return flowControl_ ;
}
inline void setFlowControl ( FlowControl flowControl ) {
flowControl_ = flowControl ;
}
QString toString ( ) const ;
// helper methods to configure port settings
private :
static BaudRate baudRateFromInt ( int baud , bool & ok ) ;
static DataBits dataBitsFromString ( const QString & databits , bool & ok ) ;
static Parity parityFromString ( const QString & parity , bool & ok ) ;
static StopBits stopBitsFromString ( const QString & stopbits , bool & ok ) ;
static FlowControl flowControlFromString ( const QString & flow , bool & ok ) ;
private :
BaudRate baudRate_ ;
DataBits dataBits_ ;
Parity parity_ ;
StopBits stopBits_ ;
FlowControl flowControl_ ;
qint32 baudRateInt_ ;
} ;
STOP_2 ,
STOP_UNKNOWN
} ;
enum FlowControl {
FLOW_OFF ,
FLOW_HARDWARE ,
FLOW_XONXOFF ,
FLOW_UNKNOWN
} ;
QPortSettings ( ) ;
QPortSettings ( const QString & settings ) ;
// port configuration methods
bool set ( const QString & settings ) ;
inline BaudRate baudRate ( ) const {
return baudRate_ ;
}
void setBaudRate ( BaudRate baudRate ) {
baudRate_ = baudRate ;
switch ( baudRate_ ) {
# ifdef TNX_POSIX_SERIAL_PORT
case BAUDR_50 : baudRateInt_ = 50 ; break ;
case BAUDR_75 : baudRateInt_ = 75 ; break ;
case BAUDR_134 : baudRateInt_ = 134 ; break ;
case BAUDR_150 : baudRateInt_ = 150 ; break ;
case BAUDR_200 : baudRateInt_ = 200 ; break ;
case BAUDR_1800 : baudRateInt_ = 1800 ; break ;
//case 76800: baudRateInt_=76800; break;
# endif
# ifdef TNX_WINDOWS_SERIAL_PORT
case BAUDR_14400 : baudRateInt_ = 14400 ; break ;
case BAUDR_56000 : baudRateInt_ = 56000 ; break ;
case BAUDR_128000 : baudRateInt_ = 128000 ; break ;
case BAUDR_256000 : baudRateInt_ = 256000 ; break ;
case BAUDR_230400 : baudRateInt_ = 230400 ; break ;
case BAUDR_460800 : baudRateInt_ = 460800 ; break ;
# endif
# if defined(Q_OS_LINUX)
case BAUDR_230400 : baudRateInt_ = 230400 ; break ;
case BAUDR_460800 : baudRateInt_ = 460800 ; break ;
case BAUDR_500000 : baudRateInt_ = 500000 ; break ;
case BAUDR_576000 : baudRateInt_ = 576000 ; break ;
# endif
// baud rates supported by all platforms
case BAUDR_110 : baudRateInt_ = 110 ; break ;
case BAUDR_300 : baudRateInt_ = 300 ; break ;
case BAUDR_600 : baudRateInt_ = 600 ; break ;
case BAUDR_1200 : baudRateInt_ = 1200 ; break ;
case BAUDR_2400 : baudRateInt_ = 2400 ; break ;
case BAUDR_4800 : baudRateInt_ = 4800 ; break ;
case BAUDR_9600 : baudRateInt_ = 9600 ; break ;
case BAUDR_19200 : baudRateInt_ = 19200 ; break ;
case BAUDR_38400 : baudRateInt_ = 38400 ; break ;
case BAUDR_57600 : baudRateInt_ = 57600 ; break ;
case BAUDR_115200 : baudRateInt_ = 115200 ; break ;
case BAUDR_921600 : baudRateInt_ = 921600 ; break ;
default :
baudRateInt_ = 0 ; // unknown baudrate
}
}
inline Parity parity ( ) const {
return parity_ ;
}
inline void setParity ( Parity parity ) {
parity_ = parity ;
}
inline StopBits stopBits ( ) const {
return stopBits_ ;
}
inline void setStopBits ( StopBits stopBits ) {
stopBits_ = stopBits ;
}
inline DataBits dataBits ( ) const {
return dataBits_ ;
}
inline void setDataBits ( DataBits dataBits ) {
dataBits_ = dataBits ;
}
inline FlowControl flowControl ( ) const {
return flowControl_ ;
}
inline void setFlowControl ( FlowControl flowControl ) {
flowControl_ = flowControl ;
}
QString toString ( ) const ;
// helper methods to configure port settings
private :
static BaudRate baudRateFromInt ( int baud , bool & ok ) ;
static DataBits dataBitsFromString ( const QString & databits , bool & ok ) ;
static Parity parityFromString ( const QString & parity , bool & ok ) ;
static StopBits stopBitsFromString ( const QString & stopbits , bool & ok ) ;
static FlowControl flowControlFromString ( const QString & flow , bool & ok ) ;
private :
BaudRate baudRate_ ;
DataBits dataBits_ ;
Parity parity_ ;
StopBits stopBits_ ;
FlowControl flowControl_ ;
qint32 baudRateInt_ ;
} ;
}
# endif // TNX_QSERIALPORTSETTINGS_H__