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)