Skip to content
New MAJOR release 02.00.00

Changes since 01.11.00:

Note: There are API breaking changes introduced with this release, mainly breaking the backend interface and the asynchronous read API!

- Introduce specification for TransferElement, with requirements from ApplicationCore exception handling
- Change implementation according to the new specification
  - Quick summary of API breaking changes (maybe incomplete):
    - preXxx/xxxTransferYyy/postXxx functions have changed interface
    - strict requirements when to throw which exception
    - strict requirement that VersionNumber is not counting backwards
    - rework interface of asyncRead, removal of TransferFuture and SyncNDRegisterAccessor
    - introduce DeviceBackend::reportException()
    - TransferElement::interrupt() is changed

- Introduce UnifiedBackendTest which allows to test backends according to specifications

- ReadAnyGroup: added readAnyNonBlocking()
- TransferGroup: ignore exceptions from CopyRegisterDecorators
- TwoDRegisterAccessor: allow assignment of 2D vector

- LNMBackendChannelAccessor: allow use with wait_for_new_data

- TransferGroup no longer allows to add accessors with wait_for_new_data

- Fix several size and offset checks missing in register accessors of several backends
- Fix several thread safety issues in LNMBackendBitAccessor

- Fix LNM variables filling the application data buffer too early

- PcieBackend: fix throwing exception for small DMA transfers

- Fix several race conditions in tests
- Fix several issues reported by clang address/thread sanitizers

- ExceptionDummyBackend: add support for push-type dummy registers
- DummyBackend: do not clear list of write-callbacks and readonly-addresses in close()
- Add convenience function to the DummyRegisterAccessor to register write callbacks
- Allow getting the backend and the path from the DummyRegisterAccessor and DummyMultiplexedRegisterAccessor for convenience

- Remove some of the compatibility layer for long deprecated API (e.g. exception typedefs)