Commit 21acd1402bb64ccb2dc37625f4e8cf61d76d89f6
1 parent
5718c325
Minor fixes
Showing
2 changed files
with
12 additions
and
0 deletions
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); | ... | ... |