Commit 86fed624d1b71db343893ef83b94726266c74253

Authored by Peter M. Groen
1 parent a576ff0b

Add TCP connection

src/CMakeLists.txt
@@ -12,8 +12,8 @@ include_directories( @@ -12,8 +12,8 @@ include_directories(
12 12
13 set(SRC_LIST 13 set(SRC_LIST
14 ${CMAKE_CURRENT_SOURCE_DIR}/imodbusport.h 14 ${CMAKE_CURRENT_SOURCE_DIR}/imodbusport.h
15 - ${CMAKE_CURRENT_SOURCE_DIR}/modbus.h  
16 - ${CMAKE_CURRENT_SOURCE_DIR}/modbus.cpp 15 + ${CMAKE_CURRENT_SOURCE_DIR}/modbusbase.h
  16 + ${CMAKE_CURRENT_SOURCE_DIR}/modbusbase.cpp
17 ${CMAKE_CURRENT_SOURCE_DIR}/modbustcp.h 17 ${CMAKE_CURRENT_SOURCE_DIR}/modbustcp.h
18 ${CMAKE_CURRENT_SOURCE_DIR}/modbustcp.cpp 18 ${CMAKE_CURRENT_SOURCE_DIR}/modbustcp.cpp
19 ${CMAKE_CURRENT_SOURCE_DIR}/modbusrtu.h 19 ${CMAKE_CURRENT_SOURCE_DIR}/modbusrtu.h
src/modbus.cpp renamed to src/modbusbase.cpp
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 * LICENSE file in the root directory of this source tree. 5 * LICENSE file in the root directory of this source tree.
6 */ 6 */
7 7
8 -#include "modbus.h" 8 +#include "modbusbase.h"
9 9
10 using namespace osdev::components::modbus; 10 using namespace osdev::components::modbus;
11 11
@@ -352,21 +352,6 @@ int ModbusBase::modbusWrite(uint16_t address, uint16_t amount, int function_code @@ -352,21 +352,6 @@ int ModbusBase::modbusWrite(uint16_t address, uint16_t amount, int function_code
352 return status; 352 return status;
353 } 353 }
354 354
355 -ssize_t ModbusBase::modbusSend(uint8_t *to_send, size_t length)  
356 -{  
357 - (void)to_send;  
358 - (void)length;  
359 -  
360 - return 0;  
361 -}  
362 -  
363 -ssize_t ModbusBase::modbusReceive(uint8_t *buffer) const  
364 -{  
365 - (void)buffer;  
366 -  
367 - return 0;  
368 -}  
369 -  
370 void ModbusBase::modbusErrorHandle(const uint8_t *msg, int function_code) 355 void ModbusBase::modbusErrorHandle(const uint8_t *msg, int function_code)
371 { 356 {
372 (void)msg; 357 (void)msg;
src/modbus.h renamed to src/modbusbase.h
@@ -50,15 +50,30 @@ namespace components { @@ -50,15 +50,30 @@ namespace components {
50 namespace modbus { 50 namespace modbus {
51 51
52 // Modbus base class. Providing all Modbus PDUs without transport implementation 52 // Modbus base class. Providing all Modbus PDUs without transport implementation
53 -class Modbus 53 +class ModbusBase
54 { 54 {
55 public: 55 public:
56 - Modbus();  
57 - virtual ~Modbus(); 56 + ModbusBase();
  57 + virtual ~ModbusBase();
58 58
59 // Pure virtuals. Override when inherited. 59 // Pure virtuals. Override when inherited.
60 virtual bool Connect() = 0; 60 virtual bool Connect() = 0;
61 - virtual void Close() = 0; 61 + virtual bool Close() = 0;
  62 +
  63 + /*!
  64 + * \brief modbusSend
  65 + * \param to_send
  66 + * \param length
  67 + * \return
  68 + */
  69 + virtual ssize_t modbusSend(uint8_t *to_send, size_t length) = 0;
  70 +
  71 + /*!
  72 + * \brief modbusReceive
  73 + * \param buffer
  74 + * \return
  75 + */
  76 + virtual ssize_t modbusReceive(uint8_t *buffer) = 0;
62 77
63 // Modbus implementation(s) 78 // Modbus implementation(s)
64 /*! 79 /*!
@@ -173,21 +188,6 @@ private: // Methods @@ -173,21 +188,6 @@ private: // Methods
173 int modbusWrite(uint16_t address, uint16_t amount, int function_code, const uint16_t *value); 188 int modbusWrite(uint16_t address, uint16_t amount, int function_code, const uint16_t *value);
174 189
175 /*! 190 /*!
176 - * \brief modbusSend  
177 - * \param to_send  
178 - * \param length  
179 - * \return  
180 - */  
181 - virtual ssize_t modbusSend(uint8_t *to_send, size_t length) = 0;  
182 -  
183 - /*!  
184 - * \brief modbusReceive  
185 - * \param buffer  
186 - * \return  
187 - */  
188 - virtual ssize_t modbusReceive(uint8_t *buffer) const = 0;  
189 -  
190 - /*!  
191 * \brief modbusErrorHandle 191 * \brief modbusErrorHandle
192 * \param msg 192 * \param msg
193 * \param function_code 193 * \param function_code
src/modbustcp.h
@@ -6,7 +6,8 @@ @@ -6,7 +6,8 @@
6 */ 6 */
7 #pragma once 7 #pragma once
8 8
9 -#include "imodbusport.h" 9 +#include "modbusbase.h"
  10 +#include "connectionconfig.h"
10 11
11 #include <unistd.h> 12 #include <unistd.h>
12 #include <sys/socket.h> 13 #include <sys/socket.h>
@@ -21,18 +22,29 @@ using X_SOCKET = int; @@ -21,18 +22,29 @@ using X_SOCKET = int;
21 using SOCKADDR = struct sockaddr; 22 using SOCKADDR = struct sockaddr;
22 using SOCKADDR_IN = struct sockaddr_in; 23 using SOCKADDR_IN = struct sockaddr_in;
23 24
24 -class ModbusTcp : public IModbusPort 25 +class ModbusTcp : public ModbusBase
25 { 26 {
26 public: 27 public:
27 explicit ModbusTcp(const ConnectionConfig &con_config); 28 explicit ModbusTcp(const ConnectionConfig &con_config);
28 virtual ~ModbusTcp() {} 29 virtual ~ModbusTcp() {}
29 30
30 - // The standard device interface.  
31 - // Implementation of IModbusPort  
32 - virtual bool Open() const override;  
33 - virtual bool Close() const override;  
34 - virtual int Read(uint8_t *buffer) const override;  
35 - virtual int Write(uint8_t *buffer, size_t length) const override; 31 + virtual bool Connect() override;
  32 + virtual bool Close() override;
  33 +
  34 + /*!
  35 + * \brief modbusSend
  36 + * \param to_send
  37 + * \param length
  38 + * \return
  39 + */
  40 + virtual ssize_t mmodbusSend(uint8_t *to_send, size_t length) override;
  41 +
  42 + /*!
  43 + * \brief modbusReceive
  44 + * \param buffer
  45 + * \return
  46 + */
  47 + virtual ssize_t modbusReceive(uint8_t *buffer) const override;
36 48
37 private: 49 private:
38 uint16_t m_port {502}; 50 uint16_t m_port {502};