-
Reported by Allan Cornet.
-
- removed ENOTCONN errno not supported - set WINVER to Windows XP (and above) and add ws2_32.dll. So older Windows versions aren't supported.
-
Reported by Patsy Kaye. Removed useless asignment at the same time.
-
Inspired by the branch ff/ipv6 of Florian Forster but this version uses a specific PI backend to isolate the IPv4 and IPv6 implementations. The existing TCP/IPv4 implementation has been kept intact (not rebased on the PI one) because its data backend requires fewer bytes than the PI. New functions modbus_new_tcp_pi, modbus_tcp_pi_listen and modbus_tcp_pi_accept and new backend called modbus_tcp_pi_t.
-
In modbus-tcp.c: - Needed to include <signal.h> - Added Jay's fix for __OpenBSD__ - SIGPIPE ignore handler needs to return a pointer instead of an integer. Patch provided bu Barry Grumbine and Jason Oster.
-
Reported by Marco Sala.
-
Page 38 in the document Modbus_Application_Protocol_V1_1b.pdf: 6.17 23 (0x17) Read/Write Multiple registers This function code performs a combination of one read operation and one write operation in a single MODBUS transaction. The write operation is performed before the read. The unit test has been updated.
-
Original patch by Jason Oster
-
Win32 uses a specific function to close socket. Reported by Petr Parýzek.
-
Reported by Antti Manninen and according to Page6 in the document "MODBUS Messaging on TCP/IP Implementation Guide V1.0b", ------------------------ Unit Identifier – This field is used for intra-system routing purpose. It is typically used to communicate to a MODBUS+ or a MODBUS serial line slave through a gateway between an Ethernet TCP-IP network and a MODBUS serial line. This field is set by the MODBUS Client in the request and must be returned with the same value in the response by the server. ------------------------
-
Contributed by Dominic Storey. - new function modbus_reply_exception - unit test
-
- MODBUS_GET_INT32_FROM_INT16 - MODBUS_GET_INT16_FROM_INT8 - MODBUS_SET_INT16_TO_INT8 - check the trame length before indexing in unit-test-server
-
- new public function - change unit-test-server.c to be transport layer independant (query and header_length)
-
The goal of this rewriting is to avoid the timeouts on the receiving of exceptions and to be more robust on bad requests. Some devices use the exception MODBUS_EXCEPTION_ACKNOWLEDGE to response to some valid requests, so in this case, you'll really appreciate this change! - Slower! More system calls are used. - The code is cleaner and easier to understand. - Really faster when an exception occurs. - Fix unit test of bad request in RTU
-
Reported by Ivan Giuliani <giuliani.v@gmail.com> It was not possible to use libmodbus outside of projects without config.h file. The inclusion has been removed from the public header. Signed-off-by: Stéphane Raimbault <stephane.raimbault@gmail.com>
-
These functions have no meaning in RTU so it's better to specialize the names and remove them from the backend. - remove the functions from the backend - update tests to handle RTU mode (master and slave) - add command line options to tests (rtu or tcp)
-
- check strlcpy in configure.ac - test for empty device string - test truncated device string
-
When unitialized the socket can be 0 and write calls success.
-
modbus_set_slave must be used to set the slave ID of the remote device to talk in master mode and to set the internal slave ID in slave mode. If you talk to several devices, you need to call modbus_set_slave each time the following requests must be sent to another device.
-
- move termios header in RTU backend - move TCP headers in TCP backend - use native serial on Win32 for Cygwin - avoid too many defines
-
This change fixes a compilation problem in MinGW. As general rule, each header must be as independent as possible.
-
Rename the function _modbus_tcp_init to _modbus_tcp_init_win32 and warp the call with #ifdef.
-
Before using any functions of the Win32 Socket API we first have to initialise it by calling WSAStartup(). Fixes non-working tests on native Win32. Signed-off-by: Stéphane Raimbault <stephane.raimbault@gmail.com>
-
Some small modifications were neccessary to make libmodbus build using a MinGW (cross-)compiler. Libtool is now configured to build DLL files on Win32. The wsock32 library has been added to the list of libraries to link against. Signed-off-by: Stéphane Raimbault <stephane.raimbault@gmail.com>
-
Reported by Viet Nguyen Quoc.
-
Added support for native Win32 based on https://code.launchpad.net/~thepyper/libmodbus/win32-native This mainly affects the RTU implementation as the TCP/IP socket interface is the same thanks to the winsocks library. The interface for using the serial port is completely different on Win32 and is now implemented accordingly. Signed-off-by: Stéphane Raimbault <stephane.raimbault@gmail.com>
-
Introduced the select() operation for backends as the WAIT_DATA macro approach is not very extensible and causes trouble when adding platform- specific codepaths. Signed-off-by: Stéphane Raimbault <stephane.raimbault@gmail.com>
-
On Win32 the second argument to recv() and send() is not a void pointer but a char pointer, therefore cast the buffer from uint8_t to char. Signed-off-by: Stéphane Raimbault <stephane.raimbault@gmail.com>
-
There are several header files that are already included in modbus.h and thus do not have to be included in the C files. Signed-off-by: Stéphane Raimbault <stephane.raimbault@gmail.com>