diff --git a/include/CppLinuxSerial/SerialPort.hpp b/include/CppLinuxSerial/SerialPort.hpp index 7f4078f..b20dc01 100644 --- a/include/CppLinuxSerial/SerialPort.hpp +++ b/include/CppLinuxSerial/SerialPort.hpp @@ -168,6 +168,9 @@ namespace mn { /// \throws CppLinuxSerial::Exception if state != OPEN. void ReadBinary(std::vector& data); + /// \brief Use to get number of bytes available in buffer + /// \throws CppLinuxSerial::Exception if state != OPEN. + int32_t InWaiting(); private: /// \brief Returns a populated termios structure for the passed in file descriptor. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 43e5b94..83bdfde 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,7 +6,16 @@ file(GLOB_RECURSE CppLinuxSerial_SRC file(GLOB_RECURSE CppLinuxSerial_HEADERS "${CMAKE_SOURCE_DIR}/include/*.hpp") -add_library(CppLinuxSerial ${CppLinuxSerial_SRC} ${CppLinuxSerial_HEADERS}) +option(SERIAL_BUILD_SHARED_LIBS "Build CppLinuxSerial shared library" OFF) + +if (SERIAL_BUILD_SHARED_LIBS) + set(LibType SHARED) +else() + set(LibType STATIC) +endif() + +add_library(CppLinuxSerial ${LibType} ${CppLinuxSerial_SRC} ${CppLinuxSerial_HEADERS}) + target_include_directories(CppLinuxSerial PUBLIC "$" "$") diff --git a/src/SerialPort.cpp b/src/SerialPort.cpp index 33242c9..5980105 100644 --- a/src/SerialPort.cpp +++ b/src/SerialPort.cpp @@ -629,6 +629,15 @@ namespace CppLinuxSerial { THROW_EXCEPT(std::string() + __PRETTY_FUNCTION__ + " called while state == OPEN."); timeout_ms_ = timeout_ms; } + + int32_t SerialPort::InWaiting() { + if(state_ != State::OPEN) + THROW_EXCEPT(std::string() + __PRETTY_FUNCTION__ + " called but state != OPEN. Please call Open() first."); + int32_t ret = 0; + ioctl(fileDesc_, FIONREAD, &ret); + return ret; + + } } // namespace CppLinuxSerial } // namespace mn