Tech!

Kplex Home
Overview
Install
Config
Download
Changelog
Issues
Contact
top border

Kplex 1.3.2 beta

This release fixes some significant bugs in tcp and udp interfaces and expands debugging capabilities but only adds a minor new feature.

What's new?

Some significant bugs have been eliminated in this release.

UDP interfaces

kplex did not work correctly if a udp interface was specified with an associated interface name but no address option. In this release kplex should be able to work out an appropriate address from an interface name where this makes sense. There are many caveats to this which won't be of concern to the average user but may be discussed in the kplex google group.

TCP interfaces

Reconnection of persistent TCP interfaces contained a couple of bugs which could cause intermittent crashes. These have been fixed and the code which synchronises reconnection between reader and writer threads for bi-directional persistent interfaces has been re-written. This should mean that a connection which has been "fixed" by one thread is not "re-fixed" by its partner.

The re-written code is unpleasantly complex and will be simplified in a later version (2.0?).

Beta Caveats

This is pre-production software. It is more likely to have bugs than a full release. Features may change and options may change if ongoing testing suggests alternatives would be better. Please do leave feedback, if you are using this version, even if only "Works for me".

Obtaining and Installing the Beta Release

Both source and binaries for this beta are now available via the download page.

Or checkout the "1.3.2" branch on github.

For compiling and installing, just follow the normal kplex installation instructions.

New Features and How to Use Them

"gpsd" option

Setting "gpsd=yes" for a tcp connection has two effects. The preamble string which is sent to a remote tcp server on connection is set to: ?WATCH={"enable":true,"nmea":true} This tells gpsd output data in NMEA-0183 format. Setting "gpsd=yes" tells kplex to use tcp port 2947 (the gpsd default) by default although this can be changed by explicitly specifying a "port" option.

"gpsd=yes" cannot be used with the "preamble" or "mode=server" options.

Enhanced Debugging

Many more debugging statements have been added since 1.3.1 to report on interface initialisations, connections and reconnections. As a general rule level 1 debugging doesn't show much. Level 3 shows interface initialisation information and reconnections of persistent interfaces. Level 6 shows some events which may be repeated several times like reconnection attempts. Levels above that show decreasingly interesting information and most of the debugging added in this release is at level 3.

To aid debugging, all interfaces are now assigned a default name if one is not explicitly specified in the configuration. Automatically assigned interface names start with an underscore ("_") character, so this should be avoided at the beginning of user-specifed names.

Source TAGs generated when the "srctag=" option is specified will use the existing default "kplex" string rather than the autogenerated names if a "name" is not specified by the user.

Known Issues with Current Beta Version

  • Some async-unsafe code lurks in the signal handler which terminates threads. It could theoretically cause kplex to crash or hang on exit but this has never been reported.

Beta version history

  • 1.3.2rc2 released April 6th 2016: Fix preamble memory deallocation error
  • 1.3.2rc1 released March 24th 2016: First 1.3.2 release candidate
bottom border