diff options
| author | Serhii Voloshynov <serhii.voloshynov@globallogic.com> | 2020-02-28 10:07:39 +0200 | 
|---|---|---|
| committer | Serhii Voloshynov <serhii.voloshynov@globallogic.com> | 2020-02-28 15:09:43 +0200 | 
| commit | 4d6fe7516f8469062a063cd36c6ceff0c6b446da (patch) | |
| tree | ec6550a0f0aa4e8ed688a58992f84a3ef1bd5206 | |
| parent | 7e44d14074eef23a8532f3e1070cdd51779428b1 (diff) | |
| download | libmts-io-4d6fe7516f8469062a063cd36c6ceff0c6b446da.tar.gz libmts-io-4d6fe7516f8469062a063cd36c6ceff0c6b446da.tar.bz2 libmts-io-4d6fe7516f8469062a063cd36c6ceff0c6b446da.zip | |
add debug info to SerialConnection::doOpen
| -rw-r--r-- | include/mts/MTS_IO_SerialConnection.h | 2 | ||||
| -rw-r--r-- | src/MTS_IO_SerialConnection.cpp | 74 | 
2 files changed, 75 insertions, 1 deletions
| diff --git a/include/mts/MTS_IO_SerialConnection.h b/include/mts/MTS_IO_SerialConnection.h index a4ca011..b0ce663 100644 --- a/include/mts/MTS_IO_SerialConnection.h +++ b/include/mts/MTS_IO_SerialConnection.h @@ -173,6 +173,8 @@ namespace MTS {                  virtual int doWrite(const char* pBuffer, const uint32_t& iSize, int32_t& timeoutMillis);                  void cleanup(); +                void printPortSetting(const termios *options); +                const char* humanSpeed(speed_t speed);          };      }  } diff --git a/src/MTS_IO_SerialConnection.cpp b/src/MTS_IO_SerialConnection.cpp index a9f3d6e..c91f5d5 100644 --- a/src/MTS_IO_SerialConnection.cpp +++ b/src/MTS_IO_SerialConnection.cpp @@ -254,6 +254,77 @@ int SerialConnection::getFileDescriptor() {      return h;  } +const char* SerialConnection::humanSpeed(speed_t speed) { +  const char *hspeed; +  switch (speed) { +    case B0:       hspeed = "B0"; +                   break; +    case B50:      hspeed = "B50"; +                   break; +    case B75:      hspeed = "B75"; +                   break; +    case B110:     hspeed = "B110"; +                   break; +    case B134:     hspeed = "B134"; +                   break; +    case B150:     hspeed = "B150"; +                   break; +    case B200:     hspeed = "B200"; +                   break; +    case B300:     hspeed = "B300"; +                   break; +    case B600:     hspeed = "B600"; +                   break; +    case B1200:    hspeed = "B1200"; +                   break; +    case B1800:    hspeed = "B1800"; +                   break; +    case B2400:    hspeed = "B2400"; +                   break; +    case B4800:    hspeed = "B4800"; +                   break; +    case B9600:    hspeed = "B9600"; +                   break; +    case B19200:   hspeed = "B19200"; +                   break; +    case B57600:   hspeed = "B57600"; +                   break; +    case B115200:  hspeed = "B115200"; +                   break; +    default:       hspeed = "unknown"; +  } +  return hspeed; +} + +void SerialConnection::printPortSetting(const termios *options){ +    printDebug("SERIAL| port settings:"); +    printDebug("SERIAL| in speed:%s out speed:%s", +               humanSpeed(cfgetispeed(options)), +               humanSpeed(cfgetospeed(options))); +    int data_length=0; +    if ((options->c_cflag&CSIZE) == CS5) { +        data_length = 5; +    } +    if ((options->c_cflag&CSIZE) == CS6) { +        data_length = 6; +    } +    if ((options->c_cflag&CSIZE) == CS7) { +        data_length = 7; +    } +    if ((options->c_cflag&CSIZE) == CS8) { +        data_length = 8; +    } +    printDebug("SERIAL| data:%d stop bits:%d", data_length,options->c_cflag&CSTOPB?2:1); +    if (!(options->c_cflag&PARENB)) { +        printDebug("SERIAL| parity: NONE"); +    } else if (options->c_cflag&PARODD) { +        printDebug("SERIAL| parity: ODD"); +    } else { +        printDebug("SERIAL| parity: EVEN"); +    } +    printDebug("SERIAL| CRTSCTS:%d", options->c_cflag&CRTSCTS?1:0); +} +  bool SerialConnection::doOpen(const int32_t& timeoutMillis) {      m_apHandleLock->lock(); @@ -412,8 +483,9 @@ bool SerialConnection::doOpen(const int32_t& timeoutMillis) {  	//Set Control Modes      options.c_cc[VMIN] = 0;      options.c_cc[VTIME] = 2; // tenths of seconds - +    printPortSetting(&options);      result = tcsetattr(m_iHandle, TCSANOW, &options); +      if (result == -1) {          printWarning("SERIAL| Failed to set configurations on port [%s] [%d]%s", m_sPortName.c_str(), errno,                       errno == 13 ? " (Permission Denied)" : ""); | 
