==============================================================
(Unreleased) Apache PLC4X 0.11.0-SNAPSHOT
==============================================================

New Features
------------

Incompatible changes
--------------------

Bug Fixes
---------

==============================================================
Apache PLC4X 0.10.0
==============================================================

A lot of the work in this version went into refactoring and
cleaning up our code generation. The code generation itself is
now a lot cleaner and simpler as well as the code generated
for Java. We also added a number of new field-types to allow
implementing more sophisticated protocols. PLC4C now should
also support all of the constructs mspec has to offer.

New Features
------------

- Implemented a `PLC4X-Server` and `PLC4X-Driver` that allows
  using the server as a proxy for communicating with PLCs.

- The Modbus driver is now also available in the variants:
  "modbus-rtu" and "modbus-ascii" (Both using Serial
  communication, which however can be tunneled through a
  "tcp" and "udp" transport)

- The KNX driver in Java now supports reading "knxproj" files
  exported from the new ETS version 6.

Incompatible changes
--------------------

- The name of the Modbus TCP driver was changed from "modbus"
  to "modbus-tcp".

- Removed the Apache Edgent (incubating) integration and
  examples related, as Edgent is abandoned and there were
  CVEs reported, which will not be fixed.

- We have replaced the BitString types with BYTE, WORD, DWORD,
  and LWORD which generally match their unsigned integer
  counterparts. So we are no longer returning lists of boolean
  values for any of these types.

Bug Fixes
---------

- Fixed a big bug in the KNX Datapoint decoding, which caused
  byte-aligned data types to parse with an offset of 8 bit.
  (This bug affected both the Java and the Go driver)

==============================================================
Apache PLC4X 0.9.0
==============================================================

New Features
------------

- The OPC UA driver has been replaced with a native driver. Previously
  Eclipse Milo was being used.

- Permit customized package names for code generation

- Added an initial draft of a Discover and Browse API to PLC4J

- PLC4Go now supports many more drivers

- PLC4Go received a huge internal refactoring and cleanup

- Major cleanup of PLC4C

- S7 Driver now supports event and alarm handling on some S7 models

Incompatible changes
--------------------

Bug Fixes
---------

PLC4X-200   OPC-UA Driver not connecting if params string is not provided
PLC4X-201   OPC-UA PlcList underlying type not compatible with Eclipse Milo
PLC4X-202   OPC-UA Driver cannot write Unsigned Types
PLC4X-276   [S7] The most of the supported types don't work correctly
PLC4X-278   Double Reading Error
PLC4X-279   nioEventLoopGroup thread proliferation
PLC4X-280   ADS route request swapped positions of route name and address
PLC4X-291   DefaultPlcSubscriptionField cannot be cast to class OpcuaField
PLC4X-298   [S7] When writing REAL values the Write
            operation fails with an internal error
PLC4X-299   Modbus - Kafka Connect Configuration
PLC4X-312   CAN NOT READ STRING FROM S7 PLC
PLC4X-314   CAN NOT WRITING MANY DATA TO S7 ONE TIME

==============================================================
Apache PLC4X 0.8.0
==============================================================

This is an ordinary PLC4X release, containing changes that
accumulated over time. It doesn't have an explicit focus on
a particular topic.

New Features
------------

- The KNXnet/IP Driver now supports writing of values.

- The Modbus driver now supports more common notations of
  Modbus addresses using a pure-numeric notation.

- The ADS, KNX, Modbus, S7 and simulated drivers have been
  updated to support the IEC 61131-3 data-types.

- We are now including PLC4Go as PLC4X implementation in
  the programming language Go(lang)

- Integration with the Milo OPC UA Server is now available.

- Kafka Connect workers have been updated source and sink connectors
  are now included.

Incompatible changes
--------------------

- The syntax of the S7 addresses changed slightly allowing to
  provide a string length. Without this, a STRING datatype will
  read 254 characters, by adding the size in round brackets to
  the type name will use the specified number.

  Examples:

  Read one String which is max 10 chars long:
  %DB2:30:STRING(10)

  Read an array of 3 Strings where each is max 10 chars long:
  %DB2:30:STRING(10)[3]

- The PLCValue types have been refactored to align with the types
  defined in IEC 61131-3 (https://en.wikipedia.org/wiki/IEC_61131-3)
  directly using the older Java types (PlcBoolean) is no longer
  possible.

Bug Fixes
---------

A lot of testing was done regarding the IEC 61131-3 data-types.
This resulted in numerous bugfixes in many protocols.

PLC4X-132   [S7] Communication to S7 PLC dies in some situations
PLC4X-206   When writing short values exceptions are thrown
            while preparing the write request.
PLC4X-207   No registered handler found for message TPKTPacket[],
            using default decode method - Communication with S7
            and Modbus device hangs
PLC4X-209   [S7] When writing INT and DINT values the Write
            operation fails with an internal error
PLC4X-210   [KNX] When running a KNX Tunneling Subscription
            for a longer time there are packets that kill
            the connection
PLC4X-211   PlcValues seem to always return "true" on the
            isXYZ" checks.
PLC4X-212   When writing multiple values in one request the
            item status is not correctly set
PLC4X-213   [Modbus] The Modbus driver doesn't handle error
            responses gracefully
PLC4X-214   [Modbus] Holding register addresses have an offset
            of 1 (Not reading the correct address)
PLC4X-215   Drivers using the BaseOptimizer
            (SingleFieldOptimizer) don't handle error responses
            gracefully
PLC4X-218   [Scraper] After stopping the scraper still the
            statistics are logged and the application doesn't
            terminate
PLC4X-239   Read DTL (Date and Time)
PLC4X-240   Protocol error in reading string
PLC4X-246	S7 driver hangs on read
PLC4X-245   [Modbus] Apache NiFi processor throws
            java.io.IOException after a while
PLC4X-255   Kafka Connector Source Task doesn't block within poll()
            resulting in high CPU usage.
PLC4X-261   Pooled connection manager returns a connection that isn't
            connected in some situations.
PLC4X-272   When splitting up large requests, too big sub-requests
            are generated (S7)
PLC4X-256	ReadBuffer truncate last byte of even small payloads
PLC4X-262	Error in reading Array
PLC4X-270	Ads driver does not accept double-digit array indexes

==============================================================
Apache PLC4X 0.7.0
==============================================================

This version is the first after a major refactoring of the driver
core. All previous driver versions are now considered deprecated
and have been replaced by versions using the new driver structure
and generated driver codebase.

New Features
------------

- Drivers now support structured types using PlcValues
- The EIP (EtherNet/IP) driver no longer requires an external
  library and is implemented fully in the PLC4X project
- The Modbus driver no longer requires an external library
  and is implemented fully in the PLC4X project
- The new S7 Driver supports writing multiple entries in one
  request (The API allowed this from the beginning now not
  every item is wrapped in a single request. It should bring
  significant performance gains when writing multiple values)
- S7 Driver now supports String datatypes.
- OSGi : Implementation of Drivers/Transports as OSGi services
  to be able to use them in an OSGi container.
- New Firmata protocol driver

Incompatible changes
--------------------

- Due to the refactoring of the driver core there might be issues
  running drivers built against older core versions.
- This version doesn't provide a Beckhoff AMS/ADS driver as this
  driver is still being ported to the new mspec format.
- All drivers connection strings now follow the same pattern:
  {protocol-code:(transport-code:)?//{transport-config}(?{params})?
  Please check the drivers documentation on our website:
  https://plc4x.apache.org/users/protocols/s7.html
- The karaf-feature modules are removed as the drivers now all
  provide both a feature.xml as well as a `kar` bundled archive

Bug Fixes
---------

PLC4X-174	UDP Transport does not accept ports containing 0
PLC4X-134   S7 is terminating the connection during handshake
PLC4X-192   Support for conversion of complex connection string
            parameters

==============================================================
Apache PLC4X 0.6.0
==============================================================

This is the last release of PLC4X with the "handwritten" drivers.
This Minor release will thus receive updates and fixes until
most users have switched to 0.7 and above (with generated drivers).

If you are using the S7 Driver you should update to this Version
as the critical (memory leak) bug PLC4X-163 is fixed.

New Features
------------
- PLC4X-168 A shorter S7 Field Syntax is Introduced.
This release contains no further features and mostly stabilization.

Incompatible changes
--------------------
- Moved the C++, C# and Python drivers into the `sandbox`

Bug Fixes
---------
- Fixed Promise Chain for InternalPlcWriteRequest
- PLC4X-45 Add float support to Modbus Protocol
- PLC4X-164 Fix wrong NOT FOUND exception in OPC UA Driver
- PLC4X-166 Fixed Download Page
- PLC4X-163 Fixed Netty ByteBuf Leaks for S7 Driver
- PLC4X-158 Added Warning if no Pooled Driver is used for Scraper

==============================================================
Apache PLC4X 0.5.0
==============================================================

This is the first release containing our new generated drivers (AB-ETH)

New Features
------------

- Implemented a new Apache Kafka Connect integration module
- Implemented a new Apache NiFi integration module
- Implemented a new Logstash integration module
- Implemented a driver for the AB-ETH protocol
- Implemented Apache Karaf features for S7 OSGI drivers
- PLC4X-121	Develop Code Generation to allow Generated Drivers in multiple Languages

Sandbox (Beta-Features)
- Implemented a new BACnet/IP passive mode driver
- Implemented a new Serial DF1 driver

Incompatible changes
--------------------

Bug Fixes
---------

- PLC4X-104	S7 Driver Datatype TIME_OF_DAY causes ArrayOutOfBoundException
- PLC4X-134	S7 is terminating the connection during handshake
- PLC4X-139	PLC4X leaks sockets in case of connection problems
- PLC4X-141	String with real length of greater 127 throw an exception
- PLC4X-144	When requesting invalid addresses, the DefaultS7MessageProcessor produces errors

==============================================================
Apache PLC4X 0.4.0
==============================================================

This is the first release of Apache PLC4X as top-level project.

New Features
------------

- The PlcConnection now supports a `ping` method to allow checking if an existing connection is still alive.
- Support of the OPC-UA protocol with the `opc-ua-driver`.
- Other Languages Support:
-- Added first versions of a C# .Net PLC4X API (`plc4net`)
-- Added first versions of a Python PLC4X API (`plc4py`)
- Added an Interop server which allows to relay requests from other languages to a Java Server

Incompatible changes
--------------------

- ElasticSearch example was updated to use ElasticSearch 7.0.1, this might cause problems with older Kibana versions.

Bug Fixes
---------


==============================================================
Apache PLC4X (incubating) 0.3.1
==============================================================

This is a bugfix-release, that fixes some problems with S7 driver.

Bug Fixes
---------

- The S7 driver didn't correctly handle "fill-bytes" in multi-item read-responses and multi-item write-requests
- PLC4X-83: fixed NPE when reading odd-length array of one-byte base types
- PLC4X-82: renamed flags "F" to Siemens Standard "M" (Marker)
- PLC4X-84: Fixed a bug in the DefaultS7MessageProcessor which didn't correctly merge together split up items


==============================================================
Apache PLC4X (incubating) 0.3.0
==============================================================

This is the third official release of Apache PLC4X.

Some new features have been added (e.g. plc-scraper) multiple
new integrations are included (apache-karaf, apache-calcite)
and a lot of (technical) refactoring has been done to prepare
future work on adapters in different languages.

New Features
------------

- Object PLC Mapping (OPM) now has a Alias Registry to allow
  variable substitution at runtime and write support
- New module `plc-scraper` for applications that have to
  scrape a lot of sps fields with high frequency
- New integration `apache-karaf` to enable plc4j in a karaf
  runtime environment

Incompatible changes
--------------------
- The 'plc4j-core' module has been merged into 'plc4j-api'.
  So there is no 'plc4j-core' module anymore. Just remove that
  dependency.
- The driver artifact names have changed so if you were using
  a `plc4j-protocol-{name}` you now need to change this to
  `plc4j-driver-{name}`

Bug Fixes
---------

PLC4X-75    Fixing dependency to the wrap url-handler
PLC4X-76    When receiving responses with more than 512 byte,
            the IsoOnTcp protocol doesn't work
PLC4X-77    When the last item in a request is a DINT, the
            DefaultS7MessageProcessor dies
PLC4X-78    Write operations seem to fail
-           Fixed a Bug where S7 was not able to read arrays.


==============================================================
Apache PLC4X (incubating) 0.2.0
==============================================================

This is the second official release of Apache PLC4X.

Especially have we addressed all issues reported during
our first release, that were of non-technical nature.
These were tracked in:

PLC4X-60	Fix findings by the last release

New Features
------------
A new connection-pool was added, which allows automatic
pooling and reuse of PLC connections.

A new OPM module was added, which allows JPA like read-
communication using POJOs, very similar to JPA.

A stub of a new driver for the Emerson DeltaV protocol
has been added, but is not yet a fully functional PLC4X
driver. This is also a first test of our new `passive-
mode-driver` concept.

Incompatible changes
--------------------

We have refactored the API in order to eliminate the
need of passing `x-requests` to `x-methods` and added
an `execute` method to each request type. This greatly
simplifies the client code. However this requires
refactoring of applications using the direct PLC4X API.

Miscellaneous changes
---------------------

We have increased the test coverage greatly and fixed
a lot of little errors we found on the way.

Known Issues
------------

Bug Fixes
---------

PLC4X-56	[S7] S7Field does not recognize addresses
            with numElements present
PLC4X-57	[S7] Response for address with numElements
            contains only first item
PLC4X-61	Installation fails plc4j-protocoll-ethernetip
            needs license
PLC4X-62	Modbus results deliver null-Value due to missing
            implementation of getShort, getLong ...



==============================================================
Apache PLC4X (incubating) 0.1.0
==============================================================

This is the first official release of Apache PLC4X.
It contains drivers for the following protocols:
- Siemens S7comm (0x32)
- Beckhoff ADS
- Modbus
- EtherNet/IP

However the Siemens driver definitely is the most
mature driver, the rest should be treated experimental.

New Features
------------

PLC4X-29	[S7] Implement PDU Fragmentation
PLC4X-39	Extend the Edgent integration with the new Subscription features of PLC4X

Incompatible changes
--------------------

- NONE -

Miscellaneous changes
---------------------

- NONE -

Known Issues
------------

- NONE -

Most drivers should be treated experimental and are not near production ready.
The S7 driver is probably the furthest implemented and tested driver and hereby can be
considered to be the most mature.

Bug Fixes
---------

PLC4X-20	Jacoco doesn't seem to be working at all
PLC4X-21	Code coverage doesn't seem to work
PLC4X-47	S7 driver silently ignores surplus ReadRequestItems
PLC4X-48	S7 driver fails to parse response with multiple items
