Skip to content

v2.4.6

@kyle-github kyle-github tagged this 04 Dec 21:07
* Bump version for next release.

* Initial add of condition vars to POSIX platform.

* Add initial Windows condition var implementation.

* Need to clear the condition variable flag when leaving wait successfully.

* Add timeout to socket read/write.

* Fix up calls to socket read/write for new timeout parameter.

* Condition variable waits use absolute time, not relative time!

* Complete rewrite of the state machine to use condition vars and socket timeouts.

* Handle socket timeouts.

* Fix up debugging.

* Adding thread_stress to test like async_stress, but multithreaded.

* Clear the tag ID when starting plc_tag_create() as there is no ID at this point.

* Add caller informatio to condition variable functions.

* Clearing the tag ID for debugging happens whether or not the tag is being destroyed.

* Separate out clean up stages for clarity and debugging.

* Change modbus to use fair queuing and fix exposed race condition in run_tags.

Calling rc_dec on the tag could result in the PLC destructor being called but the call to rc_dec is within the PLC mutex.

* Simplify run_tags() tag list handling.

* Added debugging output and fixed compilation warnings on conditional variable functions.

* Added thread_stress.c to Windows build.

* Oops, add the port for the default.

* Add function to clear a condition variable.

Needed for making sure that the cond var is clear before starting to wait for read/write to complete.

* Add constant for the maximum event ID.

* Add condition var to tag.  Add new public functions for waking and base class initialization.

* Whitespace.

* Call base class initialization.

* Call base class initialization.

* Add condition var to session structure.

* Recoding to use condition vars and socket timeouts.

* Comment out timeBeginPeriod() call as it is no longer needed.

The condition variable and socket waits seem to be working well.

* Add time in debugging output.

* Adde thread _stress test.

* On reconnect or initial connect we want to make sure that the session handle is zero.

* Add delay response option to allows test_callback.c to succeed on faster machines.

* Add delay response param to allow callback tests to pass.

* Add response delay in tests for all platforms.

* Bump the delay to 20ms to allow the test to complete correctly.

* Print out milliseconds on timeout failure.

* Set timeout to 50ms to handle really bad CI test VMs.

* Silence warnings about unitialized variables by setting pointers to null.

* Debugging 200 tag stress test results.  PLC overrun?

* Drop log level down to a more reasonable level for production. (#289)

* Fix #264 (#292)

* Change how PCCC/DF1 tag names are parsed to use a struct for the data.

* Add bit tag handling.

* Output which bit is selected on bit tags.

* Tested support for bit tags with N and B files.

* Removing Windows multimedia library since we do not call timeBeginPeriod().

* Support more PCCC data file names (#296)

* Change PCCC types to be the actual byte type value.  Why translate this?

* Set the element size and type based on the decoding of the PCCC data file name.

* Remove unused commented out code.

* fix incorrect use of address.bit instead of address.is_bit.   Fix type case now that bit is an integer.

* add is_bit flag and bit number.

* Support field names including bits for common data file types.

* Fixed check for single bits.  They are allowed if the element size is 2 bytes.

* Fixed logic on tag timeout.   It was treated as a fatal failure.

* Changed data timeout to 5 seconds.   Network is really bad.

* Support plc_tag_set_debug_level() and change library load path support on Linux. (#301)

* Hide internal library symbols. (#302)

* Next version.

* Add modbus test server to test code.

* Add script to run multiple tests.

* Adding macOS ARM binaries to build.  Removed most EXPERIMENTAL names.

* Noting Arm support for macOS.

* Fix 308 - Omron performance (#313)

* Add more tests for Omron.

* Add Omron support for larger packets and attempt to support Omron strings.

* Fix 312 - add connection grouping. (#314)

* Add connection group support.

* Fix incorrect checks when searching for an existing Modbus PLC connection.

* Modbus emulator is very slow to start up, add a sleep to wait for it.

* If there is no port open locally, we will get a ECONNREFUSED error.

* Remove duplicate code.

* Merge Modbus perf updates (#315)

* Initial add of sock_wait_event() and sock_wake().

* Add socket wake pipe constructor.  Need two fds.

* Add start of Windows implementation for socket_wait_event() and socket_wake().

* Disconnect and close are the same event?

* Removed duplicate event type, DISCONNECT vs. CLOSE.

* Move wake pipe creation to first part of connection process instead of doing it on demand.

* Cobble together code to do a wake socket instead of using Windows events.

* Minor compilation fixes.

* Add wrapper function to wake tags.

* Oops, forgot to export plc_tag_generic_wake_tag_impl()!

* Fix typo in debug output.

* Move wake channel set up earlier so that the status does not poison the final return status.

* Move wake channel creation earlier so that the status does not poison the return status.

* Refactor to use socket events.  Basic read and write for single tags works.

* Rework error path clean up of sockets to properly clean up new wake sockets.

* Fix clean up on error path.   Rework receive_response() to lower latency and make sure that we only read exactly the right amount.

* Add new vtable entry for waking the PLC.

* Cleanup some FIXMEs.

* Clean up more FIXMEs.

* Start to include stand enough headers for stand-along compilation.

* Add vtable entry and implementation for waking plc through tag.

* More FIXME cleanups.

* Compilation fixes for socket events.

* Remove unused state enum.

* Try to fix some macOS compilation errors.

* More macOS compilation fixes.

* Set debugging output to debug macOS test failure.

* More macOS.   SIGPIPE suppression is annoying.

* Change to using socketpair() instead of pipe() for better macOS behavior.   MacOS really wants to generate SIGPIPE.

* Removed old, commented out code.

* Clean up calculation of Forward Open packet size.
Assets 2