diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dc15081..ebfcf34 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -12,8 +12,8 @@ include_directories( set(SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/imodbusport.h - ${CMAKE_CURRENT_SOURCE_DIR}/modbus.h - ${CMAKE_CURRENT_SOURCE_DIR}/modbus.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modbusbase.h + ${CMAKE_CURRENT_SOURCE_DIR}/modbusbase.cpp ${CMAKE_CURRENT_SOURCE_DIR}/modbustcp.h ${CMAKE_CURRENT_SOURCE_DIR}/modbustcp.cpp ${CMAKE_CURRENT_SOURCE_DIR}/modbusrtu.h diff --git a/src/modbus.cpp b/src/modbusbase.cpp index 2565a3e..b88bba3 100644 --- a/src/modbus.cpp +++ b/src/modbusbase.cpp @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -#include "modbus.h" +#include "modbusbase.h" using namespace osdev::components::modbus; @@ -352,21 +352,6 @@ int ModbusBase::modbusWrite(uint16_t address, uint16_t amount, int function_code return status; } -ssize_t ModbusBase::modbusSend(uint8_t *to_send, size_t length) -{ - (void)to_send; - (void)length; - - return 0; -} - -ssize_t ModbusBase::modbusReceive(uint8_t *buffer) const -{ - (void)buffer; - - return 0; -} - void ModbusBase::modbusErrorHandle(const uint8_t *msg, int function_code) { (void)msg; diff --git a/src/modbus.h b/src/modbusbase.h index 9514a98..f13e087 100644 --- a/src/modbus.h +++ b/src/modbusbase.h @@ -50,15 +50,30 @@ namespace components { namespace modbus { // Modbus base class. Providing all Modbus PDUs without transport implementation -class Modbus +class ModbusBase { public: - Modbus(); - virtual ~Modbus(); + ModbusBase(); + virtual ~ModbusBase(); // Pure virtuals. Override when inherited. virtual bool Connect() = 0; - virtual void Close() = 0; + virtual bool Close() = 0; + + /*! + * \brief modbusSend + * \param to_send + * \param length + * \return + */ + virtual ssize_t modbusSend(uint8_t *to_send, size_t length) = 0; + + /*! + * \brief modbusReceive + * \param buffer + * \return + */ + virtual ssize_t modbusReceive(uint8_t *buffer) = 0; // Modbus implementation(s) /*! @@ -173,21 +188,6 @@ private: // Methods int modbusWrite(uint16_t address, uint16_t amount, int function_code, const uint16_t *value); /*! - * \brief modbusSend - * \param to_send - * \param length - * \return - */ - virtual ssize_t modbusSend(uint8_t *to_send, size_t length) = 0; - - /*! - * \brief modbusReceive - * \param buffer - * \return - */ - virtual ssize_t modbusReceive(uint8_t *buffer) const = 0; - - /*! * \brief modbusErrorHandle * \param msg * \param function_code diff --git a/src/modbustcp.h b/src/modbustcp.h index f3b49bb..3807e31 100644 --- a/src/modbustcp.h +++ b/src/modbustcp.h @@ -6,7 +6,8 @@ */ #pragma once -#include "imodbusport.h" +#include "modbusbase.h" +#include "connectionconfig.h" #include #include @@ -21,18 +22,29 @@ using X_SOCKET = int; using SOCKADDR = struct sockaddr; using SOCKADDR_IN = struct sockaddr_in; -class ModbusTcp : public IModbusPort +class ModbusTcp : public ModbusBase { public: explicit ModbusTcp(const ConnectionConfig &con_config); virtual ~ModbusTcp() {} - // The standard device interface. - // Implementation of IModbusPort - virtual bool Open() const override; - virtual bool Close() const override; - virtual int Read(uint8_t *buffer) const override; - virtual int Write(uint8_t *buffer, size_t length) const override; + virtual bool Connect() override; + virtual bool Close() override; + + /*! + * \brief modbusSend + * \param to_send + * \param length + * \return + */ + virtual ssize_t mmodbusSend(uint8_t *to_send, size_t length) override; + + /*! + * \brief modbusReceive + * \param buffer + * \return + */ + virtual ssize_t modbusReceive(uint8_t *buffer) const override; private: uint16_t m_port {502};