Commit 21acd1402bb64ccb2dc37625f4e8cf61d76d89f6

Authored by Peter M. Groen
1 parent 5718c325

Minor fixes

src/modbus.h
... ... @@ -7,6 +7,8 @@
7 7 #pragma once
8 8  
9 9 #include "imodbus.h"
  10 +#include "modbusbase.h"
  11 +#include <memory>
10 12  
11 13 namespace osdev {
12 14 namespace components {
... ... @@ -19,10 +21,14 @@ public:
19 21  
20 22 virtual ~ModBus() {}
21 23  
  24 + // Implementation
22 25 virtual bool Open(const ConnectionConfig &connection_config) override;
23 26 virtual bool Close() override;
24 27 virtual std::vector<uint8_t> Read(const Request &request) override;
25 28 virtual std::vector<uint8_t> Write(const Request &request) override;
  29 +
  30 +private:
  31 + std::unique_ptr<ModbusBase> m_modbus;
26 32 };
27 33  
28 34 } /* End namespace modbus */
... ...
src/modbustcp.cpp
... ... @@ -6,6 +6,8 @@
6 6 */
7 7 #include "modbustcp.h"
8 8  
  9 +#include <netinet/tcp.h>
  10 +
9 11 using namespace osdev::components::modbus;
10 12  
11 13 ModbusTcp::ModbusTcp(const ConnectionConfig &con_config)
... ... @@ -44,9 +46,13 @@ bool ModbusTcp::Connect()
44 46 timeout.tv_sec = 20; // after 20 seconds connect() will timeout
45 47 timeout.tv_usec = 0;
46 48  
  49 + // Set the socket options..
  50 + int l_flag = 1;
47 51  
48 52 setsockopt(m_socket, SOL_SOCKET, SO_SNDTIMEO, reinterpret_cast<const char *>(&timeout), sizeof(timeout));
49 53 setsockopt(m_socket, SOL_SOCKET, SO_RCVTIMEO, reinterpret_cast<const char *>(&timeout), sizeof(timeout));
  54 + setsockopt(m_socket, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast<const char *>(&l_flag), sizeof(int));
  55 +
50 56 m_server.sin_family = AF_INET;
51 57 m_server.sin_addr.s_addr = inet_addr(m_host.c_str());
52 58 m_server.sin_port = htons(m_port);
... ...