Commit 0df27b07164d4e4c69b39b3617151596b2009563
1 parent
91724967
Added doxygen comments
Showing
5 changed files
with
150 additions
and
107 deletions
CMakeLists.txt
src/ConnectionConfig.h
| 1 | +/**************************************************************************** | ||
| 2 | + * Copyright (c) 2022 Priva b.v. | ||
| 3 | + ****************************************************************************/ | ||
| 1 | #pragma once | 4 | #pragma once |
| 2 | 5 | ||
| 3 | #include <string> | 6 | #include <string> |
| 4 | #include <unordered_map> | 7 | #include <unordered_map> |
| 5 | 8 | ||
| 6 | /*! | 9 | /*! |
| 7 | - * \brief The ConnectionPort enum | 10 | + * \brief The ConnectionPort enum. |
| 11 | + * CP_EXTERNAL - the first serial port | ||
| 12 | + * CP_IOBUS - The second serial port through RJ45 connector | ||
| 13 | + * CP_TCP - TCP Connections | ||
| 8 | */ | 14 | */ |
| 9 | enum class ConnectionPort : unsigned int | 15 | enum class ConnectionPort : unsigned int |
| 10 | { | 16 | { |
| @@ -14,7 +20,8 @@ enum class ConnectionPort : unsigned int | @@ -14,7 +20,8 @@ enum class ConnectionPort : unsigned int | ||
| 14 | }; | 20 | }; |
| 15 | 21 | ||
| 16 | /*! | 22 | /*! |
| 17 | - * \brief The Parity enum | 23 | + * \brief The Parity enum. |
| 24 | + * Used in a serial port context | ||
| 18 | */ | 25 | */ |
| 19 | enum class Parity : unsigned int | 26 | enum class Parity : unsigned int |
| 20 | { | 27 | { |
| @@ -24,7 +31,8 @@ enum class Parity : unsigned int | @@ -24,7 +31,8 @@ enum class Parity : unsigned int | ||
| 24 | }; | 31 | }; |
| 25 | 32 | ||
| 26 | /*! | 33 | /*! |
| 27 | - * \brief The ConnectionType enum | 34 | + * \brief The ConnectionType enum. |
| 35 | + * Added for convenience, to distinguish between types. | ||
| 28 | */ | 36 | */ |
| 29 | enum class ConnectionType : unsigned int | 37 | enum class ConnectionType : unsigned int |
| 30 | { | 38 | { |
| @@ -33,17 +41,25 @@ enum class ConnectionType : unsigned int | @@ -33,17 +41,25 @@ enum class ConnectionType : unsigned int | ||
| 33 | CT_UNKNOWN | 41 | CT_UNKNOWN |
| 34 | }; | 42 | }; |
| 35 | 43 | ||
| 44 | +/*! | ||
| 45 | + * \brief The ConnectionConfig class holds all the information we need to establish a proper connection. | ||
| 46 | + * It can be created by a configuration object and passed on to the ModBus stack. | ||
| 47 | + * By using this class, all the connectioninfo is within its context for convenience. | ||
| 48 | + * | ||
| 49 | + * Data can be accessed by their resp. getter-methods to avoid internal data-exposure | ||
| 50 | + * according to the basic principles of object oriented programming. ( Abstraction, Encapsulation, Inheritance, and Polymorphism ) | ||
| 51 | + */ | ||
| 36 | class ConnectionConfig | 52 | class ConnectionConfig |
| 37 | { | 53 | { |
| 38 | public: | 54 | public: |
| 39 | /*! | 55 | /*! |
| 40 | - * \brief ConnectionConfig | ||
| 41 | - * \param port | ||
| 42 | - * \param baud | ||
| 43 | - * \param parity | ||
| 44 | - * \param dataBits | ||
| 45 | - * \param stopBits | ||
| 46 | - * \param timeOut | 56 | + * \brief ConnectionConfig Constructor. Used to create a new serial connection. |
| 57 | + * \param port - The portname given by its enum. | ||
| 58 | + * \param baud - The port speed in a serial port context ( default = 115200 ) | ||
| 59 | + * \param parity - The parity. ( Default : None, no parity ) | ||
| 60 | + * \param dataBits - The number of databits. RTU uses 8 (0 - 255), ASCII uses 7 (0 - 127). Default is RTU | ||
| 61 | + * \param stopBits - The number of stopbits used to detect the end of the frame. ( Default = 1 ) | ||
| 62 | + * \param timeOut - Timeout in .1 secs. See the termios documentation for deviations on this. | ||
| 47 | */ | 63 | */ |
| 48 | ConnectionConfig( ConnectionPort port, int baud = 115200, Parity parity = Parity::PAR_NONE, int dataBits = 8, int stopBits = 1, int timeOut = -1 ) | 64 | ConnectionConfig( ConnectionPort port, int baud = 115200, Parity parity = Parity::PAR_NONE, int dataBits = 8, int stopBits = 1, int timeOut = -1 ) |
| 49 | : m_port( port ) | 65 | : m_port( port ) |
| @@ -58,11 +74,11 @@ public: | @@ -58,11 +74,11 @@ public: | ||
| 58 | {} | 74 | {} |
| 59 | 75 | ||
| 60 | /*! | 76 | /*! |
| 61 | - * \brief ConnectionConfig | ||
| 62 | - * \param port | ||
| 63 | - * \param ip | ||
| 64 | - * \param portnum | ||
| 65 | - * \param timeOut | 77 | + * \brief ConnectionConfig Constructor. Used to create a new TCP connection. |
| 78 | + * \param port - The portname given by its enaum. ( Should be CP_TCP ) | ||
| 79 | + * \param ip - The ip address of the ModBus device we want to connect to. | ||
| 80 | + * \param portnum - The portnumber the ModBus device is using | ||
| 81 | + * \param timeOut - Timeout in which a modbus device should respond. | ||
| 66 | */ | 82 | */ |
| 67 | ConnectionConfig( ConnectionPort port, const std::string &ip, int portnum, int timeOut = -1 ) | 83 | ConnectionConfig( ConnectionPort port, const std::string &ip, int portnum, int timeOut = -1 ) |
| 68 | : m_port( port ) | 84 | : m_port( port ) |
| @@ -81,6 +97,7 @@ public: | @@ -81,6 +97,7 @@ public: | ||
| 81 | ConnectionPort getPortEnum() const { return m_port; } ///< Get the portname Enum | 97 | ConnectionPort getPortEnum() const { return m_port; } ///< Get the portname Enum |
| 82 | int getBaudRate() const { return m_baudRate; } ///< Get the given baudrate as int. | 98 | int getBaudRate() const { return m_baudRate; } ///< Get the given baudrate as int. |
| 83 | char getParity() const { return m_parityMap.at(m_parity); } ///< Get the translated parity. | 99 | char getParity() const { return m_parityMap.at(m_parity); } ///< Get the translated parity. |
| 100 | + Parity getParityEnum() const { return m_parity; } ///< Get the parity Enum | ||
| 84 | int getDataBits() const { return m_dataBits; } ///< Get the number of databits ( 7 for ASCII, 8 for RTU ) | 101 | int getDataBits() const { return m_dataBits; } ///< Get the number of databits ( 7 for ASCII, 8 for RTU ) |
| 85 | int getStopBits() const { return m_stopBits; } ///< Get the number of stopBits. ( de-facto = 1 ) | 102 | int getStopBits() const { return m_stopBits; } ///< Get the number of stopBits. ( de-facto = 1 ) |
| 86 | 103 | ||
| @@ -93,20 +110,21 @@ public: | @@ -93,20 +110,21 @@ public: | ||
| 93 | private: | 110 | private: |
| 94 | 111 | ||
| 95 | /// Serial connections | 112 | /// Serial connections |
| 96 | - ConnectionPort m_port; | ||
| 97 | - int m_baudRate; | ||
| 98 | - Parity m_parity; | ||
| 99 | - int m_dataBits; | ||
| 100 | - int m_stopBits; | 113 | + ConnectionPort m_port; ///< Member variable holding the portName Enum |
| 114 | + int m_baudRate; ///< Member variable holding the Serial port Baudrate | ||
| 115 | + Parity m_parity; ///< Member variable holding the Serial port Parity | ||
| 116 | + int m_dataBits; ///< Member variable holding the number of databits | ||
| 117 | + int m_stopBits; ///< Member variable holding the number of stopbits | ||
| 101 | 118 | ||
| 102 | /// TCP connections | 119 | /// TCP connections |
| 103 | - std::string m_ipaddress; | ||
| 104 | - int m_portnumber; | 120 | + std::string m_ipaddress; ///< Member variable holding the ip-address of the TCP-connection |
| 121 | + int m_portnumber; ///< Member variable holding the portnumber of the TCP-connection | ||
| 105 | 122 | ||
| 106 | /// Generic | 123 | /// Generic |
| 107 | - int m_timeOut; | ||
| 108 | - ConnectionType m_conType; | 124 | + int m_timeOut; ///< Member variable holding the timeOut value |
| 125 | + ConnectionType m_conType; ///< Member variable holding the connection type. | ||
| 109 | 126 | ||
| 127 | + /// Translation tables for portnames and parity. | ||
| 110 | // ============================================================ | 128 | // ============================================================ |
| 111 | // == Change accordingly to the devicenames on your platform == | 129 | // == Change accordingly to the devicenames on your platform == |
| 112 | // ============================================================ | 130 | // ============================================================ |
src/IModbusAdapter.h
| @@ -15,58 +15,70 @@ using modbusData = std::vector<std::variant<uint8_t, uint16_t>>; | @@ -15,58 +15,70 @@ using modbusData = std::vector<std::variant<uint8_t, uint16_t>>; | ||
| 15 | class ConnectionConfig; | 15 | class ConnectionConfig; |
| 16 | 16 | ||
| 17 | /*! | 17 | /*! |
| 18 | - * \brief The IModbusAdapter class | 18 | + * \brief The IModbusAdapter class provides an abstract way of using |
| 19 | + * the modbus stack. Implemented as a pure virtual, it cannot be instantiated. | ||
| 20 | + * This represents a unique connection to either a serial bus or a TCP connection. | ||
| 19 | */ | 21 | */ |
| 20 | class IModbusAdapter | 22 | class IModbusAdapter |
| 21 | { | 23 | { |
| 22 | 24 | ||
| 23 | public: | 25 | public: |
| 24 | - virtual ~IModbusAdapter() {} | 26 | + /// Default DTor. |
| 27 | + virtual ~IModbusAdapter() = default; | ||
| 25 | 28 | ||
| 29 | + /// Create a modbus connection, accepting a configuration object. | ||
| 26 | virtual bool ModbusConnect( const ConnectionConfig &conncfg ) = 0; | 30 | virtual bool ModbusConnect( const ConnectionConfig &conncfg ) = 0; |
| 27 | 31 | ||
| 28 | /*! | 32 | /*! |
| 29 | - * \brief ModbusDisconnect | 33 | + * \brief ModbusDisconnect |
| 34 | + * Disconnect from the serial bus or the TCP connection, freeing its resources | ||
| 30 | */ | 35 | */ |
| 31 | virtual bool ModbusDisconnect() = 0; | 36 | virtual bool ModbusDisconnect() = 0; |
| 32 | 37 | ||
| 33 | /*! | 38 | /*! |
| 34 | - * \brief ModbusReadData | ||
| 35 | - * \param slaveId | ||
| 36 | - * \param startAddress | ||
| 37 | - * \param noOfItems | 39 | + * \brief Read data from a modbus device given by its parameters. |
| 40 | + * \param slaveId - The Id of the ModbusDevice. | ||
| 41 | + * \param functionCode - The code describing the action we want to perform on the device. | ||
| 42 | + * Given by an enum, provided by the modbus-stack. | ||
| 43 | + * \param startAddress - Startaddres of the register we want to read. | ||
| 44 | + * \param noOfItems - The number of items we expect back. | ||
| 45 | + * \returns modbusData - A vector holding each register in an entry in the same order as they are received. | ||
| 46 | + * Empty if no data was received. | ||
| 38 | */ | 47 | */ |
| 39 | virtual modbusData ModbusReadData( int slaveId, int functionCode, int startAddress, int noOfItems ) = 0; | 48 | virtual modbusData ModbusReadData( int slaveId, int functionCode, int startAddress, int noOfItems ) = 0; |
| 40 | 49 | ||
| 41 | /*! | 50 | /*! |
| 42 | - * \brief ModbusReadHoldReg | ||
| 43 | - * \param slaveId | ||
| 44 | - * \param startAddress | ||
| 45 | - * \param noOfItems | ||
| 46 | - * \return | 51 | + * \brief Read data from the holdregisters ( or keep-registers ) of a modbus device. |
| 52 | + * \param slaveId - The Id of the ModbusDevice. | ||
| 53 | + * \param startAddress - Startaddres of the register we want to read. | ||
| 54 | + * \param noOfItems - The number of items we expect back. | ||
| 55 | + * \returns modbusData - A vector holding each register in an entry in the same order as they are received. | ||
| 56 | + * Empty if no data was received. | ||
| 47 | */ | 57 | */ |
| 48 | virtual modbusData ModbusReadHoldReg( int slaveId, int startAddress, int noOfItems ) = 0; | 58 | virtual modbusData ModbusReadHoldReg( int slaveId, int startAddress, int noOfItems ) = 0; |
| 49 | 59 | ||
| 50 | /*! | 60 | /*! |
| 51 | - * \brief ModBusWriteData | ||
| 52 | - * \param slaveId | ||
| 53 | - * \param funtionCode | ||
| 54 | - * \param startAddress | ||
| 55 | - * \param noOfItems | ||
| 56 | - * \param values | 61 | + * \brief Write data to the device. |
| 62 | + * \param slaveId - The Id of the Modbus device | ||
| 63 | + * \param funtionCode - The code describing the action we want to perform on the device | ||
| 64 | + * given by an enum, provided by the modbus-stack. | ||
| 65 | + * \param startAddress - Startaddres of the register we want to read. | ||
| 66 | + * \param noOfItems - The number of items we expect to be written | ||
| 67 | + * \param values - The values we want to write to the given device. Each vector-entry represents a single byte | ||
| 68 | + * and they will be sent in sequence. | ||
| 57 | */ | 69 | */ |
| 58 | virtual void ModBusWriteData( int slaveId, int functionCode, int startAddress, int noOfItems, std::vector<int>values ) = 0; | 70 | virtual void ModBusWriteData( int slaveId, int functionCode, int startAddress, int noOfItems, std::vector<int>values ) = 0; |
| 59 | 71 | ||
| 60 | /*! | 72 | /*! |
| 61 | - * \brief isConnected | ||
| 62 | - * \return | 73 | + * \brief Indicates if this connection is alive. |
| 74 | + * \return True if alive, false if not. | ||
| 63 | */ | 75 | */ |
| 64 | virtual bool isConnected() const = 0; | 76 | virtual bool isConnected() const = 0; |
| 65 | 77 | ||
| 66 | /*! | 78 | /*! |
| 67 | - * \brief ErrorString | ||
| 68 | - * \param errnum | ||
| 69 | - * \return | 79 | + * \brief returns the translated error code coming from the modbus stack. |
| 80 | + * \param errnum - error Number coming from the stack. | ||
| 81 | + * \return The translated error as a string. Empty if not resolvable. | ||
| 70 | */ | 82 | */ |
| 71 | virtual std::string ErrorString( int errnum ) const = 0; | 83 | virtual std::string ErrorString( int errnum ) const = 0; |
| 72 | }; | 84 | }; |
src/ModbusAdapter.h
| @@ -21,63 +21,70 @@ class ModbusAdapter : public IModbusAdapter | @@ -21,63 +21,70 @@ class ModbusAdapter : public IModbusAdapter | ||
| 21 | { | 21 | { |
| 22 | public: | 22 | public: |
| 23 | /*! | 23 | /*! |
| 24 | - * \brief ModbusAdapter | 24 | + * \brief Default constructor |
| 25 | */ | 25 | */ |
| 26 | explicit ModbusAdapter(); | 26 | explicit ModbusAdapter(); |
| 27 | 27 | ||
| 28 | /*! | 28 | /*! |
| 29 | - * \brief ~ModbusAdapter | 29 | + * \brief Default destructor |
| 30 | */ | 30 | */ |
| 31 | virtual ~ModbusAdapter(); | 31 | virtual ~ModbusAdapter(); |
| 32 | 32 | ||
| 33 | /*! | 33 | /*! |
| 34 | - * \brief ModbusConnect | ||
| 35 | - * \param conncfg | 34 | + * \brief /// Create a modbus connection, accepting a configuration object. |
| 36 | */ | 35 | */ |
| 37 | bool ModbusConnect( const ConnectionConfig &conncfg ) override; | 36 | bool ModbusConnect( const ConnectionConfig &conncfg ) override; |
| 38 | 37 | ||
| 39 | /*! | 38 | /*! |
| 40 | - * \brief ModbusDisconnect | 39 | + * \brief ModbusDisconnect |
| 40 | + * Disconnect from the serial bus or the TCP connection, freeing its resources | ||
| 41 | */ | 41 | */ |
| 42 | bool ModbusDisconnect() override; | 42 | bool ModbusDisconnect() override; |
| 43 | 43 | ||
| 44 | /*! | 44 | /*! |
| 45 | - * \brief ModbusReadData | ||
| 46 | - * \param slaveId | ||
| 47 | - * \param startAddress | ||
| 48 | - * \param noOfItems | 45 | + * \brief Read data from a modbus device given by its parameters. |
| 46 | + * \param slaveId - The Id of the ModbusDevice. | ||
| 47 | + * \param functionCode - The code describing the action we want to perform on the device. | ||
| 48 | + * Given by an enum, provided by the modbus-stack. | ||
| 49 | + * \param startAddress - Startaddres of the register we want to read. | ||
| 50 | + * \param noOfItems - The number of items we expect back. | ||
| 51 | + * \returns modbusData - A vector holding each register in an entry in the same order as they are received. | ||
| 52 | + * Empty if no data was received. | ||
| 49 | */ | 53 | */ |
| 50 | modbusData ModbusReadData( int slaveId, int functionCode, int startAddress, int noOfItems ) override; | 54 | modbusData ModbusReadData( int slaveId, int functionCode, int startAddress, int noOfItems ) override; |
| 51 | 55 | ||
| 52 | /*! | 56 | /*! |
| 53 | - * \brief ModbusReadHoldReg | ||
| 54 | - * \param slaveId | ||
| 55 | - * \param startAddress | ||
| 56 | - * \param noOfItems | ||
| 57 | - * \return | 57 | + * \brief Read data from the holdregisters ( or keep-registers ) of a modbus device. |
| 58 | + * \param slaveId - The Id of the ModbusDevice. | ||
| 59 | + * \param startAddress - Startaddres of the register we want to read. | ||
| 60 | + * \param noOfItems - The number of items we expect back. | ||
| 61 | + * \returns modbusData - A vector holding each register in an entry in the same order as they are received. | ||
| 62 | + * Empty if no data was received. | ||
| 58 | */ | 63 | */ |
| 59 | modbusData ModbusReadHoldReg( int slaveId, int startAddress, int noOfItems ) override; | 64 | modbusData ModbusReadHoldReg( int slaveId, int startAddress, int noOfItems ) override; |
| 60 | 65 | ||
| 61 | /*! | 66 | /*! |
| 62 | - * \brief ModBusWriteData | ||
| 63 | - * \param slaveId | ||
| 64 | - * \param funtionCode | ||
| 65 | - * \param startAddress | ||
| 66 | - * \param noOfItems | ||
| 67 | - * \param values | 67 | + * \brief Write data to the device. |
| 68 | + * \param slaveId - The Id of the Modbus device | ||
| 69 | + * \param funtionCode - The code describing the action we want to perform on the device | ||
| 70 | + * given by an enum, provided by the modbus-stack. | ||
| 71 | + * \param startAddress - Startaddres of the register we want to read. | ||
| 72 | + * \param noOfItems - The number of items we expect to be written | ||
| 73 | + * \param values - The values we want to write to the given device. Each vector-entry represents a single byte | ||
| 74 | + * and they will be sent in sequence. | ||
| 68 | */ | 75 | */ |
| 69 | void ModBusWriteData( int slaveId, int functionCode, int startAddress, int noOfItems, std::vector<int>values ) override; | 76 | void ModBusWriteData( int slaveId, int functionCode, int startAddress, int noOfItems, std::vector<int>values ) override; |
| 70 | 77 | ||
| 71 | /*! | 78 | /*! |
| 72 | - * \brief isConnected | ||
| 73 | - * \return | 79 | + * \brief Indicates if this connection is alive. |
| 80 | + * \return True if alive, false if not. | ||
| 74 | */ | 81 | */ |
| 75 | bool isConnected() const override; | 82 | bool isConnected() const override; |
| 76 | 83 | ||
| 77 | /*! | 84 | /*! |
| 78 | - * \brief ErrorString | ||
| 79 | - * \param errnum | ||
| 80 | - * \return | 85 | + * \brief returns the translated error code coming from the modbus stack. |
| 86 | + * \param errnum - error Number coming from the stack. | ||
| 87 | + * \return The translated error as a string. Empty if not resolvable. | ||
| 81 | */ | 88 | */ |
| 82 | std::string ErrorString( int errnum ) const override; | 89 | std::string ErrorString( int errnum ) const override; |
| 83 | 90 |
src/ModbusConnections.h
| @@ -13,91 +13,97 @@ | @@ -13,91 +13,97 @@ | ||
| 13 | #include <string> | 13 | #include <string> |
| 14 | #include <unordered_map> | 14 | #include <unordered_map> |
| 15 | 15 | ||
| 16 | -/// | 16 | +/// Easy replacement of template construction |
| 17 | using AdapterList = std::vector<std::shared_ptr<IModbusAdapter>>; | 17 | using AdapterList = std::vector<std::shared_ptr<IModbusAdapter>>; |
| 18 | 18 | ||
| 19 | /*! | 19 | /*! |
| 20 | - * \brief The ModbusConnections class | 20 | + * \brief The ModbusConnections class conatins a list of all modbus connections, Serial and TCP. |
| 21 | + * To access a specific connection, use its portname and / or endpoint to return it's interface. | ||
| 21 | */ | 22 | */ |
| 22 | class ModbusConnections | 23 | class ModbusConnections |
| 23 | { | 24 | { |
| 24 | public: | 25 | public: |
| 25 | /*! | 26 | /*! |
| 26 | - * \brief ModbusConnections | 27 | + * \brief Default CTor |
| 27 | */ | 28 | */ |
| 28 | explicit ModbusConnections(); | 29 | explicit ModbusConnections(); |
| 29 | 30 | ||
| 30 | /*! | 31 | /*! |
| 31 | - * \brief ~ModbusConnections | 32 | + * \brief Default DTor |
| 32 | */ | 33 | */ |
| 33 | virtual ~ModbusConnections(); | 34 | virtual ~ModbusConnections(); |
| 34 | 35 | ||
| 35 | /*! | 36 | /*! |
| 36 | - * \brief CreateConnection | ||
| 37 | - * \param config | ||
| 38 | - * \return | 37 | + * \brief Create a modbus connection as described by the connection object. |
| 38 | + * \param config - The connection object describing the connection in detail. | ||
| 39 | + * \return The result of the creation. | ||
| 40 | + * True = succesful. | ||
| 41 | + * False = Failed. | ||
| 39 | */ | 42 | */ |
| 40 | bool CreateConnection( const ConnectionConfig &config ); | 43 | bool CreateConnection( const ConnectionConfig &config ); |
| 41 | 44 | ||
| 42 | /*! | 45 | /*! |
| 43 | - * \brief DeleteConnection | ||
| 44 | - * \param portName | ||
| 45 | - * \param endpoint | 46 | + * \brief Remove the connection described by its portname and/or endpoint. |
| 47 | + * \param portName - The portname as its enum | ||
| 48 | + * \param endpoint - combination of ip-address and portname in endpoint-format | ||
| 49 | + * ( tcp://<ip_address>:<portNumber> ) | ||
| 50 | + * ( i.e. tcp://127.0.0.1:501 ) | ||
| 46 | * \return | 51 | * \return |
| 47 | */ | 52 | */ |
| 48 | bool DeleteConnection( const ConnectionPort portName, const std::string &endpoint = std::string() ); | 53 | bool DeleteConnection( const ConnectionPort portName, const std::string &endpoint = std::string() ); |
| 49 | 54 | ||
| 50 | /*! | 55 | /*! |
| 51 | - * \brief ConnectionCount | ||
| 52 | - * \return | 56 | + * \brief Give the number of registered serial and tcp-connections combined. |
| 53 | */ | 57 | */ |
| 54 | int ConnectionCount(); | 58 | int ConnectionCount(); |
| 55 | 59 | ||
| 56 | /*! | 60 | /*! |
| 57 | - * \brief getConnection | ||
| 58 | - * \param portName | ||
| 59 | - * \param endpoint | ||
| 60 | - * \return | 61 | + * \brief Get the connection give by its parameters. |
| 62 | + * \param portName - The portname by its enum | ||
| 63 | + * \param endpoint - combination of ip-address and portname in endpoint-format | ||
| 64 | + * ( tcp://<ip_address>:<portNumber> ) | ||
| 65 | + * ( i.e. tcp://127.0.0.1:501 ) | ||
| 66 | + * \return Valid Pointer to the Modbus Connection Interface. nullptr if the connection wasn't found. | ||
| 61 | */ | 67 | */ |
| 62 | std::shared_ptr<IModbusAdapter> getConnection( const ConnectionPort portName, const std::string &endpoint = std::string() ); | 68 | std::shared_ptr<IModbusAdapter> getConnection( const ConnectionPort portName, const std::string &endpoint = std::string() ); |
| 63 | 69 | ||
| 64 | // Convenient functions | 70 | // Convenient functions |
| 65 | /*! | 71 | /*! |
| 66 | - * \brief getConnection | ||
| 67 | - * \param portName | ||
| 68 | - * \param ipAddress | ||
| 69 | - * \param tcpPortNumber | ||
| 70 | - * \return | 72 | + * \brief Get the connection given by its parameters. If applicable, ipaddress and portnumber will be used to create the endpoint. |
| 73 | + * \param portName - The portname by its enum | ||
| 74 | + * \param ipAddress - The ipaddress of the TCP-connection | ||
| 75 | + * \param tcpPortNumber - The portnumber of the TCP-connection | ||
| 76 | + * \return Valid Pointer to the Modbus Connection Interface. nullptr if the connection wasn't found. | ||
| 71 | */ | 77 | */ |
| 72 | std::shared_ptr<IModbusAdapter> getConnection( const ConnectionPort portName, const std::string &ipAddress, int tcpPortNumber ); | 78 | std::shared_ptr<IModbusAdapter> getConnection( const ConnectionPort portName, const std::string &ipAddress, int tcpPortNumber ); |
| 73 | 79 | ||
| 74 | /*! | 80 | /*! |
| 75 | - * \brief getConnections | ||
| 76 | - * \return | 81 | + * \brief Returns a list of all registered connections by their interfaces. This is a mix of Serial and TCP-connections. |
| 77 | */ | 82 | */ |
| 78 | AdapterList getConnections(); | 83 | AdapterList getConnections(); |
| 79 | 84 | ||
| 80 | private: | 85 | private: |
| 81 | /*! | 86 | /*! |
| 82 | - * \brief connectionExist | ||
| 83 | - * \param portName | ||
| 84 | - * \param endpoint | ||
| 85 | - * \return | 87 | + * \brief Check if a connection already exist. |
| 88 | + * \param portName - The portName by its enum | ||
| 89 | + * \param endpoint - The endpoint this connection was registered with. | ||
| 90 | + * \return A valid pointer to the Interface if the connection exist. If the connection is unknown, it will return a nullptr. | ||
| 91 | + * shared_ptr can manifest themselves as booleans, so "!ptr" is sufficient to check. | ||
| 86 | */ | 92 | */ |
| 87 | std::shared_ptr<IModbusAdapter> connectionExist( const ConnectionPort portName, const std::string &endpoint = std::string() ); | 93 | std::shared_ptr<IModbusAdapter> connectionExist( const ConnectionPort portName, const std::string &endpoint = std::string() ); |
| 88 | 94 | ||
| 89 | /*! | 95 | /*! |
| 90 | - * \brief createEndPoint | ||
| 91 | - * \param ipAddress | ||
| 92 | - * \param portNumber | ||
| 93 | - * \return | 96 | + * \brief Create the TCP endpoint based on the connections IP-address and portnumber |
| 97 | + * \param ipAddress - The ipAddress as string. | ||
| 98 | + * \param portNumber - The portnumber as integer. | ||
| 99 | + * \return The endpoint in format : tcp://<ip_address>:<portNumber> i.e. tcp://127.0.0.1:501 | ||
| 94 | */ | 100 | */ |
| 95 | std::string createEndPoint( const std::string &ipAddress, int portNumber ); | 101 | std::string createEndPoint( const std::string &ipAddress, int portNumber ); |
| 96 | 102 | ||
| 97 | /*! | 103 | /*! |
| 98 | - * \brief createEndPoint | ||
| 99 | - * \param config | ||
| 100 | - * \return | 104 | + * \brief Create the TCP endpoint based on the connections IP-address and portnumber extracted from the connection configuration. |
| 105 | + * \param config - The configuration object used to create the connection. | ||
| 106 | + * \return The endpoint in format : tcp://<ip_address>:<portNumber> i.e. tcp://127.0.0.1:501 | ||
| 101 | */ | 107 | */ |
| 102 | std::string createEndPoint( const ConnectionConfig &config ); | 108 | std::string createEndPoint( const ConnectionConfig &config ); |
| 103 | 109 |