Change timeout to uint32 and add 3 byte timeout tests
[libmodbus.git] / NEWS
blob715ed6b533f3f6e6d041022a8276fad7e8b86d16
1 libmodbus 3.1.2 (2013-XX-XX)
2 ============================
4 This release introduces API changes on modbus_get_byte_timeout,
5 modbus_get_response_timeout, modbus_set_byte_timeout,
6 modbus_set_response_timeout to ease writing of language bindings.
8 - New API to set/get response and byte timeouts.
9   New unit tests and updated documentation.
10 - Export Modbus function codes supported by libmodbus
11 - Fix bandwidth-server-one (closes #152)
12 - Check debug flag in RTU code
13 - Sync packaging with official from Debian (closes #134)
14 - Remove warnings caused by shadowed 'index' variable.
15   Thanks to Åke Forslund.
16 - Use accept4 in TCP PI if available
17 - Add documentation for tcp[_pi]_accept (closes #31)
18 - Fix mistake in modbus_tcp_listen documentation
19 - Add documentation for modbus_tcp_pi_listen
21 libmodbus 3.1.1 (2013-10-06)
22 ============================
24 More robust to exploits, more compliant and better handling of connect/close
25 sequences. Windows support still broken.
27 - New unit tests
28 - Fix remote buffer overflow vulnerability (closes #25, #105)
29 - Explain how to define response timeouts when many RTU slaves
30 - Fix receiving of incorrect queries in write_single and mask_write_register
31   Thanks to James Nutaro.
32 - Check return value of autoreconf.
33   Thanks to Lauri Nurmi
34 - Constant for broacast and test ordering
35 - Fix the fix of device string check
36 - Various changes to try to improve *broken* Windows support
37 - Try to fix MinGW compilation
38 - Portable use of bswap_32
39 - Improve support of MacOS X
40 - Fix socket value on init/close
41 - Returns -1 on invalid mode in modbus_rtu_set_rts
42 - Protect all public functions against invalid context
43 - Sleep for delay of response timeout before reconnect (closes #77).
44   Thanks to Karl Palsson.
45 - Baud rate until 4,000,000 (POSIX), 1,000,000 (Windows) (closes #93)
46 - New modbus_get|set_float_dcba to get|set float in inversed byte order
47 - Remove unsupported -Wtype-limits for GCC < 4.3.5 (closes #109)
48 - Enable out-of-source build. Thanks to Yegor Yefremov.
49 - Fix alignment problem on ARMv5 platform
50 - Improvement to Debian package. Thanks to Alexander Klauer.
51 - Improve support of VS 2005. Thanks to Petr Gladkiy.
52 - Add documentation for modbus_mask_write_register (closes #91).
53   Thanks to Martijn de Gouw.
54 - Avoid C99 declaration in win32 section code (closes #92).
55   Thanks to oldfaber and endrelovas.
56 - Add a windows scripting host configure file.
57   Thanks to oldfaber and Stéphane Raimbault.
58 - Fix typo in modbus_strerror documentation. Thanks to Mirko Rajkovaca.
59 - Rename reserved C++ keywords of modbus_mask_write_register.
60   Thanks Tobias Doerffel.
61 - Another quick workaround for deficient OS (closes #63)
62 - Add support for Mask Write Register
63 - Fix missing close on socket in random-test-server.
64   Thanks to Damian Zieliński.
65 - Use nonblocking sockets on Win32 and OS X/iOS too.
66   Thanks to Julian Raschke.
67 - Fix all compilations warnings spotted by new compilation flags
68 - Major update of build system
69 - Calculate RTS activation time by send length
70 - Dynamic memory allocation of device name (closes #11)
71 - Add unit tests for modbus_mapping_new
72 - Add Visual Studio 2008 project files by oldfaber
73 - Fix missing argument in synopsis section of modbus_rtu_set_serial_mode
74 - Fix wrong constant names to create version number
75 - More compilation fixes for Windows by oldfaber.
76 - Fix wrong constant names to create version number.
77   Thanks to Denis Davydov.
80 libmodbus 3.1.0 (2012-06-22)
81 ============================
83 Major changes to handle many slaves in RTU mode, non blocking connections and
84 RTS flow control.
86 - Fixes for Microsoft Visual C++ compiler
87 - Fixes for Windows. Thanks to oldfaber
88 - Return value of _modbus_tcp_pi_connect() on failure (closes #61)
89 - Avoid ioctl call on non-RS485 ports. Thanks to Michael Haberler
90 - Display node and service in PI and port in IPv4 at connection
91 - Return -1 on getaddrinfo error and print error in debug mode
92 - More robust way to establish the connection in non blocking mode
93 - TCP - Socket in non blocking mode by default. Thanks to Thomas Stalder
94 - Apply CLOEXEC flag for TCP protocol independent too (IPv6)
95 - New RTU receive() to ignore confirmation from other slaves (closes #18)
96 - Move RTU filtering in CRC check to avoid useless call to modbus_reply
97 - Unique transaction identifier by TCP connection
98 - Use accept4 with SOCK_CLOEXEC when available (Linux)
99 - Open fd and socket with the CLOEXEC flag when available
100 - Exception response on report slave ID wasn't detected (closes #27)
101 - Provides a way to disable the byte timeout (Alex Stapleton)
102 - Added slave ID check for response messages (Alex Stapleton)
103 - RTS flow control with modbus_rtu_set_rts and modbus_rtu_get_rts
104   functions by Torello Querci <tquerci@gmail.com> and Stéphane Raimbault.
106 libmodbus 3.0.4 (2012-05-08)
107 ============================
109 - autogen.sh creates symlinks instead of copies
110 - Add missing m4 directory (closes #103)
111 - Fix alignment problem on ARMv5 platform
112   Thanks to Alexander Dahl
113 - Remove useless test on error_recovery argument
114   Thanks to Carlos Tangerino
116 libmodbus 3.0.3 (2012-05-25)
117 ============================
119 - Fix another Visual C++ 2008/2010 deficiency (closes #53)
120 - Add -lsocket to compile on QNX
121 - Fix TCP PI init under Windows.
122   Thanks to oldfaber.
123 - Fix a missing free in random-test-client
124   Thanks again to Stefan Finzel.
125 - Fix OMG bug in modbus_mapping_free not freeing memory.
126   Thanks to Stefan Finzel for the bug report.
127 - Fix semicolon typo and unistd.h include under Windows.
128   Thanks to Andrew Kravchuk.
130 libmodbus 3.0.2 (2012-01-16)
131 ============================
133 - Update Debian package
134 - Documentation fixes and additions
135 - Add missing C++ macros in public headers.
136   Thanks to Bernhard Agthe.
137 - Protects modbus_mapping_free against NULL argument.
138   Thanks to Andrea Mattia
139 - Fix check on file doc/libmodbus.7 in acinclude.m4 (closes #28)
140 - Close file descriptor when the settings don't apply in RTU.
141   Original patch provided by Thomas Stalder.
142 - unit-test.h is now generated to avoid config.h dependency.
143 - Request for Windows Sockets specification version 2.2 instead of 2.0
144   Thanks to Pavel Mazniker for the report.
146 libmodbus 3.0.1 (2011-07-18)
147 ============================
149 - Avoid useless serial_mode integer when TIOCSRS485 isn't supported
150 - Fix compilation failure on Windows (RS485 support) by Tobias Doerffel
151   <tobias.doerffel@gmail.com>
152 - Properly check TIOCSRS485 define by Matthijs Kool
153 - Rename package to libmodbus5 to fix lintian warning
155 libmodbus 3.0.0 (2011-07-11)
156 ============================
158 - Revert libmodbus licence from LGPLv3 to LGPLv2.1 to avoid
159   incompatibility with GPLv2 program. This change has been approved
160   by Tobias Doerffel, Florian octo Forster and Hannu Vuolasaho.
161 - Enable RS485 support only when available
162 - Export modbus_set/get_serial_mode functions on all platforms
163 - API change for read/write multiple registers function:
164     * modbus_read_and_write_registers -> modbus_write_and_read_registers
165   The function name was confusing because the write operation is performed
166   before the read. Take care to swap the arguments in the migration process.
167 - Documentation of modbus_write_and_read_registers, modbus_mapping_new/free,
168   report_slave_id. modbus_get_byte_from_bits, modbus_set_bits_from_byte(s),
169   modbus_[gs]et_float, modbus_reply and modbus_reply_exception.
170 - Enhanced report slave ID
171 - New RPM spec file to package documentation and development files
173 libmodbus 2.9.4 (2011-06-05)
174 ============================
176 - IPv6 support
177   Make the TCP implementation "protocol independent" by Florian Forster
178   and Stéphane Raimbault.
179 - Fix compilation on Windows 7 (x64) with MinGW/MSYS and GCC 4.5
180   Reported by Patsy Kaye.
181 - Documentation of libmodbus functions with AsciiDoc (man and HTML) by Stéphane
182   Raimbault
183 - Avoid an iteration in flush function
184 - New functions to send and receive raw requests (modbus_send_raw_request,
185   modbus_receive_confirmation)
186 - Fix flush function of TCP backend on Windows
187 - API changes for server/slave:
188     * modbus_receive doesn't take socket/fd argument anymore
189     * new function modbus_set_socket to set socket/fd
190 - API changes for timeout functions:
191     * modbus_get_timeout_begin -> modbus_get_response_timeout
192     * modbus_set_timeout_begin -> modbus_set_response_timeout
193     * modbus_get_timeout_end -> modbus_get_byte_timeout
194     * modbus_set_timeout_end -> modbus_set_byte_timeout
195 - Fix longstanding limitation of server to wait forever
196 - New functions modbus_set/get_serial_mode by Manfred Gruber and Stéphane
197   Raimbault for RS485 communications
198 - Improved recovery mode (see modbus_set_error_recovery documentation) for
199   data link and protocol errors.
200 - Fix compilation issue with Microsoft Visual Studio 2008.
201   Reported by Allan Cornet.
203 libmodbus 2.9.3 (2011-01-14)
204 ============================
206 - Major rewriting of the message reading (no more timeouts on exception)
207   by Stéphane Raimbault
208 - New function to reply to an indication with an exception message
209   modbus_reply_exception()
210 - New function modbus_get_header_length(modbus_t *ctx)
211 - New functions to manipulate data:
212     * MODBUS_GET_INT32_FROM_INT16
213     * MODBUS_GET_INT16_FROM_INT8
214     * MODBUS_SET_INT16_TO_INT8
215 - Fix GH-2. Read/write were swapped in _FC_READ_AND_WRITE_REGISTERS
216 - Install an ignore handler for SIGPIPE on *BSD
217   Original patch by Jason Oster.
218 - Fix closing of Win32 socket.
219   Reported by Petr Parýzek.
220 - Fix unit identifier not copied by the TCP server.
221   Reported by Antti Manninen.
222 - Fix missing modbus_flush() in unit tests
223 - Fixes for OpenBSD by Barry Grumbine and Jason Oster
226 libmodbus 2.9.2 (2010-12-05)
227 ============================
229 - Win32 support by Tobias Doerffel
230 - Split source code around RTU and TCP (backends)
231 - Rename modbus_[listen|accept] to modbus_tcp_[listen|accept]
232 - Remove slave argument from modbus_new_rtu()
233 - Check received function code
234 - Fix segfault in bandwidth-server-many-up on inet_ntoa() call
235 - Fix unit test of report slave ID in RTU
236 - Fix GH-3. Remove inclusion of config.h in modbus.h
237 - Correctly detect if we are cross-compiling for win32 by Kirill Smelkov.
238 - Fix setting of the broadcast address
241 libmodbus 2.9.1 (2010-08-16)
242 ============================
244 - Brand new API (see MIGRATION notes)!
245 - Remove the internal function set_message_length_tcp
246 - Restore slave ID (server ID) argument in functions
247 - Error conventions of POSIX systems and error recover
248 - Parity setting is now a single char ('N', 'E' or 'O')
249 - Report slave ID server side
250 - OpenBSD support by Anibal Limón.
251 - New read and write registers function by Hannu Vuolasaho.
252 - Versioning infrastructure
253   Inspired by the Clutter project and the work done by Florian Forster.
254 - Fix the broadcast constant (255 -> 0)
255   Reported by David Olivari.
256 - Fix #463299 - New functions to define the timeouts of begin and end of trame
257   Original patch by Sisyph (eric-paul).
258 - Fix #591142 - Slave id check should be disabled in TCP connection
259   Reported by aladdinwu.
262 libmodbus 2.1.0 (2010-03-24)
263 ============================
265 - New API to read and write float values by Stéphane Raimbault and Florian
266   Forster.
267 - New API for slave server (see MIGRATION)
268 - New slave server able to handle multiple connections
269 - Slave only replies to broadcast queries or queries with its slave ID
270 - Improved Modbus protocol conformance
271 - modbus_param_t is smaller (2 int removed)
272 - Better error management and SIGPIPE signal is blocked
273 - Faster
274 - Fix #333455 - Cygwin IPTOS_LOWDELAY not supported on cygwin
275   Reported by Jeff Laughlin and Yishin Li.
276 - Fix #375926 - modbus.c:164: error: `MSG_DONTWAIT' undeclared
277   Reported and tested by Yishin Li.
278 - Fix #378981 - CRC error on RTU response doesn't return negative value
279   Reported by Henrik Munktell.
280 - Fix report slave ID request
281   Patch (bzr) provided by Paul Fertser.
282 - Fix #425604 - Conditional jump or move depends on uninitialised value(s)
283   Occurs on first occurence of slave timeout.
284   Reported by Henrik Munktell.
285 - Fix #457200 - FreeBSD support
286   Patch provided by Norbert Koch.
288 Other changes:
290 - The code is now published and developed on
291   http://github.com/stephane/libmodbus
292 - Waf support has been removed
295 libmodbus 2.0.3 (2009-03-22)
296 ============================
298 - Fix CRC error when a slave RTU send a response.
299   Thanks to Justin Carroll to have reported and tested my patch.
300 - Remove an assignment in compute_response_length()
301 - Remove duplicate counter in read_io_status()
302 - Fix #274511 reported by 'Kylesch'
303   Invalid error check in modbus_init_listen_tcp
306 libmodbus 2.0.2 (2008-08-10)
307 ============================
308 - Fix a bug reported by email by Davide Pippa
309   The function modbus_receive must check the number of values
310   indicated in the response accordingly to the query.
311 - Fix #241006 reported by Jesus Hernandez Tapia
312   modbus_check_response() crashes on an invalid exception code
313 - Reduce the number of function calls (read_reg_response and
314   preset_response have been removed)
315 - Add a new unit test for bad response
316 - Catch the timeout even if the length is equal to a exception trame
317 - Test only msg_length_computed on change
318 - Many comments and cleanups
321 libmodbus 2.0.1 (2008-07-02)
322 ============================
324 - Include libmodbus.spec in the tarball
325 - Fix #241006 reported by Jesus Hernandez Tapia
326   modbus_check_response() crashes on an invalid exception code
329 libmodbus 2.0.0 (2008-05-18)
330 ============================
332 - Slave API
333   https://blueprints.launchpad.net/libmodbus/+spec/slave-api
334 - No more glib dependency
335   https://blueprints.launchpad.net/libmodbus/+spec/glib-dependency
336 - Unit testing and many test programs
337 - Waf build support
338   https://blueprints.launchpad.net/libmodbus/+spec/waf-support
339 - MacOS X support by Matthew Butch
340   https://blueprints.launchpad.net/libmodbus/+spec/macosx-support
341 - Unit testing (unit-test-slave and unit-test-master)
342 - Port number is now defined at initialisation by Dirk Reusch
343 - Better memory management (uint8_t *data and packing of
344   modbus_param_t)
345 - Better error management
346 - Declare many static functions and const arrays
347 - Enhance an integer division
348 - The GNU licences LGPL and GPL are in version 3
349 - Debian and RPM packages (#224496)
350 - Many cleanups
351 - Fix #159443 reported by Stefan Bisanz
352   Index of incoming data in force multiple coils function
353 - Fix #161989 reported by Konstantinos Togias
354   Serial device paths more than 10 chars long (eg. /dev/ttyUSB0) don't
355   fit to modbus_param_t -> device char[11] var.
356 - Fix #188189 reported by Chris Hellyar
357   Compute_response_size() no entry for read_input_status()
358 - Fix #191039 reported by Todd Denniston
359   modbus.h is not installed at prefix.
360 - Fix #211460 reported by Todd Denniston
361   With TCP, automatic reconnect on error may not be desired.
362 - Fix #224485 reported by Todd Denniston
363   libmodbus does not link with c++ code.
364 - Fix #224496 reported by Todd Denniston
365   It is easier to install on rpm based systems with a spec file.
368 libmodbus 1.2.5 (2008-05-18)
369 ============================
371 - Fix #224485 reported by Todd Denniston
372   libmodbus does not link with c++ code.
375 libmodbus 1.2.4 (2008-03-14)
376 ============================
378 - Fix #191039 reported by Todd Denniston
379   modbus.h is not installed at prefix.
382 libmodbus 1.2.3 (2008-02-03)
383 ============================
385 - Fix #188189 reported by Chris Hellyar
386   Compute_response_size() no entry for read_input_status()
387 - Fix #181887 reported by Jesus Hernandez Tapia.
388   Slave address in build_request_packet_tcp() is hardcoded as 0xFF.
391 libmodbus 1.2.2 (2007-11-12)
392 ============================
394 - Fix #161989 reported by Konstantinos Togias
395   Serial device paths more than 10 chars long (eg. /dev/ttyUSB0) don't
396   fit to modbus_param_t -> device char[11] var.
397 - Structure is also bit better 'packed' to conserve memory (see the
398   trunk for a real enhancement).
401 libmodbus 1.2.1 (2007-11-02)
402 ============================
404 - Fix #159443 reported by Stefan Bisanz
405   Index of incoming data in force multiple coils function
406 - Deleted useless code in check_crc16()
407 - Untabify source code
408 - Changed author's email to Stéphane Raimbault
411 libmodbus 1.2.0 (2007-05-10)
412 ============================
414 - FIX Compilation GCC-4.0
415 - Project name in autogen.sh