Skip to content
This repository has been archived by the owner on Sep 1, 2022. It is now read-only.

3.0.0

Compare
Choose a tag to compare
@emgre emgre released this 15 May 20:53
· 71 commits to release since this release

New features:

  • ⭐ Add support for Immediate Freeze (0x07), Immediate Freeze No Ack
    (0x08), Freeze-and-Clear (0x09), Freeze-and-Clear No Ack (0x10). See PR #320.
  • Add support for broadcast. See PR #312.
  • ⭐ Add UDP support. See PR #314.
  • ⭐ Add unsolicited fixed number of retries See PR
    #323.
  • ⭐ Add support for timestamp quality and g51v2 (CTO Unsynchronized). See
    PR #316.
  • ⭐ Add support for TLS 1.3 (requires OpenSSL 1.1.1). See PR
    #372.

API changes:

  • ⭐ Complete reorganization of the code to produce a single library.
    Properly separate the public header files from the private ones. Refactor the
    CMake to use modern practices.
  • ⭐ Outstation database points are now specified using a map instead of a
    sorted array. See PR #296.
  • ICommandHandler now includes a Begin and a End callback to know
    which commands were grouped together in a single APDU. See PR
    #341.
  • ISOEHandler now includes a BeginFragment and EndFragment to help
    determine if it's a multi-fragment response or an unsolicited response. See PR
    #298.
  • ⭐ When sending requests, a distinct SOEHandler can be specified to help
    associate the response with the request. To keep the old behaviour, simply
    pass the same SOEHandler on each request. See PR
    #339.
  • ⭐ All public enumerations used by the library exposes a to_string and a
    from_string method. They also expose a to_type and a from_type method to
    convert to and from the underlying integer value. See PR
    #308.
  • ⭐ Control Relay Output Block now expose each field individually. See PR
    #349.
  • ⭐ Instead of relying on an output parameter, DNP3Manager now throws an
    exception on misconfiguration. This also includes if a server was not able to
    bind to a port. See issue
    #293 and PR
    #367.
  • ❌ Remove sending data-link confirmation support. It still supports
    receiving confirmed data to interoperability. See issue
    #364 and PR
    #367.
  • 🪲 TaskConfig now takes a std::shared_ptr instead of a reference. See
    issue #238 and PR
    #367.

Bindings changes:

  • ⭐ Add typed flag handling in Java and C#. See PR
    #342.
  • ⭐ In the Java bindings, when DNP3Manager fails, an descriptive
    exception is thrown instead of returning a null. See PR
    #367.
  • ⭐ Published NuGet packages now include both x86 and x64 binaries.
  • 🪲 Provide IDnpTimeSource interface in Java and C#. See issue
    #353 and PR
    #357.
  • 🪲 Add typesAllowedInClass0 in Java bindings. See PR
    #360.

CI:

Other:

  • 🪲 Fix few minor conformance issues. See PR
    #356.
  • 🪲 Fix issue in data-link state machine. See issue
    #138 and PR
    #367.
  • ⏫ Update ASIO dependency to 1.16. See PR
    #365.