Commit 4de88caad1eb49364d2b84172a2887d28c3565b3
1 parent
b50efff3
Removed api folder. Added CMakeLists.txt files for src. Added unit test folder.
Showing
9 changed files
with
165 additions
and
80 deletions
.gitignore
0 → 100644
CMakeLists.txt
0 → 100644
| 1 | +cmake_minimum_required(VERSION 3.1.0) | ||
| 2 | +project(CppLinuxSerial) | ||
| 3 | + | ||
| 4 | +add_definitions(-std=c++11) | ||
| 5 | + | ||
| 6 | +option(BUILD_TESTS "If set to true, unit tests will be build as part of make all." TRUE) | ||
| 7 | +if (BUILD_TESTS) | ||
| 8 | + message("BUILD_TESTS=TRUE, unit tests will be built.") | ||
| 9 | +else () | ||
| 10 | + message("BUILD_TESTS=FALSE, unit tests will NOT be built.") | ||
| 11 | +endif () | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | +#=================================================================================================# | ||
| 16 | +#========================================= This Project ==========================================# | ||
| 17 | +#=================================================================================================# | ||
| 18 | + | ||
| 19 | +# Now simply link your own targets against gtest, gmock, | ||
| 20 | +# etc. as appropriate | ||
| 21 | +include_directories(include) | ||
| 22 | + | ||
| 23 | +add_subdirectory(src) | ||
| 24 | +if(BUILD_TESTS) | ||
| 25 | + add_subdirectory(test/unit) | ||
| 26 | +endif() |
api/SerialPortApi.hpp deleted
| 1 | -//! | ||
| 2 | -//! @file SerialPortApi.hpp | ||
| 3 | -//! @author Geoffrey Hunter <gbmhunter@gmail.com> (www.cladlab.com) | ||
| 4 | -//! @created 2014/05/15 | ||
| 5 | -//! @last-modified 2014/05/15 | ||
| 6 | -//! @brief File which contains all the API definitions needed to use the serial-port-cpp library. | ||
| 7 | -//! @details | ||
| 8 | -//! See README.rst in repo root dir for more info. | ||
| 9 | - | ||
| 10 | -// Header guard | ||
| 11 | -#ifndef SERIAL_PORT_SERIAL_PORT_API_H | ||
| 12 | -#define SERIAL_PORT_SERIAL_PORT_API_H | ||
| 13 | - | ||
| 14 | -// User headers | ||
| 15 | -#include "../include/SerialPort.hpp" | ||
| 16 | - | ||
| 17 | -#endif // #ifndef SERIAL_PORT_SERIAL_PORT_API_H |
include/CppLinuxSerial/Exception.hpp
0 → 100644
include/SerialPort/SerialPort.hpp renamed to include/CppLinuxSerial/SerialPort.hpp
| @@ -12,89 +12,88 @@ | @@ -12,89 +12,88 @@ | ||
| 12 | #define SERIAL_PORT_SERIAL_PORT_H | 12 | #define SERIAL_PORT_SERIAL_PORT_H |
| 13 | 13 | ||
| 14 | // System headers | 14 | // System headers |
| 15 | -#include <fstream> // For file I/O (reading/writing to COM port) | 15 | +#include <fstream> // For file I/O (reading/writing to COM port) |
| 16 | #include <sstream> | 16 | #include <sstream> |
| 17 | -#include <termios.h> // POSIX terminal control definitions (struct termios) | 17 | +#include <termios.h> // POSIX terminal control definitions (struct termios) |
| 18 | 18 | ||
| 19 | // User headers | 19 | // User headers |
| 20 | 20 | ||
| 21 | -namespace mn { | ||
| 22 | -namespace SerialPort | 21 | +namespace mn |
| 22 | +{ | ||
| 23 | +namespace CppLinuxSerial | ||
| 23 | { | 24 | { |
| 24 | 25 | ||
| 25 | - /// \brief Strongly-typed enumeration of baud rates for use with the SerialPort class | ||
| 26 | - enum class BaudRates { | ||
| 27 | - none, | ||
| 28 | - b9600, | ||
| 29 | - b57600 | ||
| 30 | - }; | ||
| 31 | - | ||
| 32 | - //! @brief SerialPort object is used to perform rx/tx serial communication. | ||
| 33 | - class SerialPort | ||
| 34 | - { | ||
| 35 | - | ||
| 36 | - public: | ||
| 37 | - | ||
| 38 | - //! @brief Constructor | ||
| 39 | - SerialPort(); | 26 | +/// \brief Strongly-typed enumeration of baud rates for use with the SerialPort class |
| 27 | +enum class BaudRates | ||
| 28 | +{ | ||
| 29 | + none, | ||
| 30 | + b9600, | ||
| 31 | + b57600 | ||
| 32 | +}; | ||
| 40 | 33 | ||
| 41 | - //! @brief Destructor | ||
| 42 | - virtual ~SerialPort(); | 34 | +//! @brief SerialPort object is used to perform rx/tx serial communication. |
| 35 | +class SerialPort | ||
| 36 | +{ | ||
| 43 | 37 | ||
| 44 | - //! @brief Sets the file path to use for communications. The file path must be set before Open() is called, otherwise Open() will return an error. | ||
| 45 | - void SetFilePath(std::string filePath); | 38 | + public: |
| 39 | + //! @brief Constructor | ||
| 40 | + SerialPort(); | ||
| 46 | 41 | ||
| 47 | - void SetBaudRate(BaudRates baudRate); | 42 | + //! @brief Destructor |
| 43 | + virtual ~SerialPort(); | ||
| 48 | 44 | ||
| 49 | - //! @brief Controls what happens when Read() is called. | ||
| 50 | - //! @param numOfCharToWait Minimum number of characters to wait for before returning. Set to 0 for non-blocking mode. | ||
| 51 | - void SetNumCharsToWait(uint32_t numCharsToWait); | 45 | + //! @brief Sets the file path to use for communications. The file path must be set before Open() is called, otherwise Open() will return an error. |
| 46 | + void SetFilePath(std::string filePath); | ||
| 52 | 47 | ||
| 53 | - //! @brief Enables/disables echo. | ||
| 54 | - //! param echoOn Pass in true to enable echo, false to disable echo. | ||
| 55 | - void EnableEcho(bool echoOn); | 48 | + void SetBaudRate(BaudRates baudRate); |
| 56 | 49 | ||
| 57 | - //! @brief Opens the COM port for use. | ||
| 58 | - //! @throws {std::runtime_error} if filename has not been set. | ||
| 59 | - //! {std::system_error} if system open() operation fails. | ||
| 60 | - //! @note Must call this before you can configure the COM port. | ||
| 61 | - void Open(); | 50 | + //! @brief Controls what happens when Read() is called. |
| 51 | + //! @param numOfCharToWait Minimum number of characters to wait for before returning. Set to 0 for non-blocking mode. | ||
| 52 | + void SetNumCharsToWait(uint32_t numCharsToWait); | ||
| 62 | 53 | ||
| 63 | - //! @brief Sets all settings for the com port to common defaults. | ||
| 64 | - void SetEverythingToCommonDefaults(); | 54 | + //! @brief Enables/disables echo. |
| 55 | + //! param echoOn Pass in true to enable echo, false to disable echo. | ||
| 56 | + void EnableEcho(bool echoOn); | ||
| 65 | 57 | ||
| 66 | - //! @brief Closes the COM port. | ||
| 67 | - void Close(); | 58 | + //! @brief Opens the COM port for use. |
| 59 | + //! @throws {std::runtime_error} if filename has not been set. | ||
| 60 | + //! {std::system_error} if system open() operation fails. | ||
| 61 | + //! @note Must call this before you can configure the COM port. | ||
| 62 | + void Open(); | ||
| 68 | 63 | ||
| 69 | - //! @brief Sends a message over the com port. | ||
| 70 | - //! @param str Reference to an string containing the characters to write to the COM port. | ||
| 71 | - //! @throws {std::runtime_error} if filename has not been set. | ||
| 72 | - //! {std::system_error} if system write() operation fails. | ||
| 73 | - void Write(std::string* str); | 64 | + //! @brief Sets all settings for the com port to common defaults. |
| 65 | + void SetEverythingToCommonDefaults(); | ||
| 74 | 66 | ||
| 75 | - //! @brief Use to read from the COM port. | ||
| 76 | - //! @param str Reference to a string that the read characters from the COM port will be saved to. | ||
| 77 | - //! @throws {std::runtime_error} if filename has not been set. | ||
| 78 | - //! {std::system_error} if system read() operation fails. | ||
| 79 | - void Read(std::string* str); | 67 | + //! @brief Closes the COM port. |
| 68 | + void Close(); | ||
| 80 | 69 | ||
| 81 | - private: | 70 | + //! @brief Sends a message over the com port. |
| 71 | + //! @param str Reference to an string containing the characters to write to the COM port. | ||
| 72 | + //! @throws {std::runtime_error} if filename has not been set. | ||
| 73 | + //! {std::system_error} if system write() operation fails. | ||
| 74 | + void Write(std::string *str); | ||
| 82 | 75 | ||
| 83 | - std::string filePath; | 76 | + //! @brief Use to read from the COM port. |
| 77 | + //! @param str Reference to a string that the read characters from the COM port will be saved to. | ||
| 78 | + //! @throws {std::runtime_error} if filename has not been set. | ||
| 79 | + //! {std::system_error} if system read() operation fails. | ||
| 80 | + void Read(std::string *str); | ||
| 84 | 81 | ||
| 85 | - BaudRates baudRate; | 82 | + private: |
| 83 | + std::string filePath; | ||
| 86 | 84 | ||
| 87 | - //! @brief The file descriptor for the open file. This gets written to when Open() is called. | ||
| 88 | - int fileDesc; | 85 | + BaudRates baudRate; |
| 89 | 86 | ||
| 90 | - //! @brief Returns a populated termios structure for the passed in file descriptor. | ||
| 91 | - termios GetTermios(); | 87 | + //! @brief The file descriptor for the open file. This gets written to when Open() is called. |
| 88 | + int fileDesc; | ||
| 92 | 89 | ||
| 93 | - void SetTermios(termios myTermios); | 90 | + //! @brief Returns a populated termios structure for the passed in file descriptor. |
| 91 | + termios GetTermios(); | ||
| 94 | 92 | ||
| 95 | - }; | 93 | + void SetTermios(termios myTermios); |
| 94 | +}; | ||
| 96 | 95 | ||
| 97 | -} // namespace SerialPort | 96 | +} // namespace CppLinuxSerial |
| 98 | } // namespace mn | 97 | } // namespace mn |
| 99 | 98 | ||
| 100 | #endif // #ifndef SERIAL_PORT_SERIAL_PORT_H | 99 | #endif // #ifndef SERIAL_PORT_SERIAL_PORT_H |
src/CMakeLists.txt
0 → 100644
| 1 | + | ||
| 2 | + | ||
| 3 | +file(GLOB_RECURSE CppLinuxSerial_SRC | ||
| 4 | + "*.cpp") | ||
| 5 | + | ||
| 6 | +file(GLOB_RECURSE CppLinuxSerial_HEADERS | ||
| 7 | + "${CMAKE_SOURCE_DIR}/include/*.hpp") | ||
| 8 | + | ||
| 9 | +add_library(CppLinuxSerial ${CppLinuxSerial_SRC} ${CppLinuxSerial_HEADERS}) | ||
| 10 | + | ||
| 11 | +target_include_directories(CppLinuxSerial PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) | ||
| 12 | + | ||
| 13 | +# On Linux, "sudo make install" will typically copy the library | ||
| 14 | +# into the folder /usr/local/bin | ||
| 15 | +install(TARGETS CppLinuxSerial DESTINATION lib) | ||
| 16 | + | ||
| 17 | +# On Linux, "sudo make install" will typically copy the | ||
| 18 | +# folder into /usr/local/include | ||
| 19 | +install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/CppLinuxSerial DESTINATION include) | ||
| 0 | \ No newline at end of file | 20 | \ No newline at end of file |
src/SerialPort.cpp
| @@ -17,10 +17,10 @@ | @@ -17,10 +17,10 @@ | ||
| 17 | #include <termios.h> // POSIX terminal control definitions (struct termios) | 17 | #include <termios.h> // POSIX terminal control definitions (struct termios) |
| 18 | #include <system_error> // For throwing std::system_error | 18 | #include <system_error> // For throwing std::system_error |
| 19 | 19 | ||
| 20 | -#include "SerialPort/SerialPort.hpp" | 20 | +#include "CppLinuxSerial/SerialPort.hpp" |
| 21 | 21 | ||
| 22 | -namespace SerialPort | ||
| 23 | -{ | 22 | +namespace mn { |
| 23 | +namespace CppLinuxSerial { | ||
| 24 | 24 | ||
| 25 | SerialPort::SerialPort() : | 25 | SerialPort::SerialPort() : |
| 26 | filePath(std::string()), | 26 | filePath(std::string()), |
| @@ -325,4 +325,5 @@ namespace SerialPort | @@ -325,4 +325,5 @@ namespace SerialPort | ||
| 325 | // Successful! | 325 | // Successful! |
| 326 | } | 326 | } |
| 327 | 327 | ||
| 328 | -} // namespace ComPort | 328 | +} // namespace CppLinuxSerial |
| 329 | +} // namespace mn |
test/unit/BasicTests.cpp
0 → 100644
| 1 | +#include "gtest/gtest.h" | ||
| 2 | + | ||
| 3 | +#include "CppLinuxSerial/SerialPort.hpp" | ||
| 4 | + | ||
| 5 | +using namespace mn::CppLinuxSerial; | ||
| 6 | + | ||
| 7 | +namespace { | ||
| 8 | + | ||
| 9 | + class BasicTest : public ::testing::Test { | ||
| 10 | + protected: | ||
| 11 | + | ||
| 12 | + BasicTest() { | ||
| 13 | + } | ||
| 14 | + | ||
| 15 | + virtual ~BasicTest() { | ||
| 16 | + } | ||
| 17 | + }; | ||
| 18 | + | ||
| 19 | + TEST_F(BasicTest, SimplePacket) { | ||
| 20 | + EXPECT_EQ(true, true); | ||
| 21 | + } | ||
| 22 | + | ||
| 23 | +} // namespace | ||
| 0 | \ No newline at end of file | 24 | \ No newline at end of file |
test/unit/CMakeLists.txt
0 → 100644
| 1 | +# | ||
| 2 | +# \file CMakeLists.txt | ||
| 3 | +# \author Geoffrey Hunter <gbmhunter@gmail.com> (www.mbedded.ninja) | ||
| 4 | +# \edited n/a | ||
| 5 | +# \created 2017-11-24 | ||
| 6 | +# \last-modified 2017-11-24 | ||
| 7 | +# \brief Contains instructions for building the unit tests. | ||
| 8 | +# \details | ||
| 9 | +# See README.md in root dir for more info. | ||
| 10 | + | ||
| 11 | +enable_testing() | ||
| 12 | +find_package (Threads) | ||
| 13 | +find_package(GTest REQUIRED) | ||
| 14 | +message("gtest libraries found at ${GTEST_BOTH_LIBRARIES}") | ||
| 15 | + | ||
| 16 | +file(GLOB_RECURSE CppLinuxSerialUnitTests_SRC | ||
| 17 | + "*.cpp" | ||
| 18 | + "*.hpp") | ||
| 19 | + | ||
| 20 | +add_executable(CppLinuxSerialUnitTests ${CppLinuxSerialUnitTests_SRC}) | ||
| 21 | + | ||
| 22 | +target_link_libraries(CppLinuxSerialUnitTests LINK_PUBLIC CppLinuxSerial ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) | ||
| 23 | + | ||
| 24 | +# The custom target and custom command below allow the unit tests | ||
| 25 | +# to be run. | ||
| 26 | +# If you want them to run automatically by CMake, uncomment #ALL | ||
| 27 | +add_custom_target( | ||
| 28 | + run_unit_tests #ALL | ||
| 29 | + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/CppLinuxSerialUnitTests.touch CppLinuxSerialUnitTests) | ||
| 30 | + | ||
| 31 | +add_custom_command( | ||
| 32 | + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/CppLinuxSerialUnitTests.touch | ||
| 33 | + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/CppLinuxSerialUnitTests) | ||
| 0 | \ No newline at end of file | 34 | \ No newline at end of file |