Skip to content
Tags give the ability to mark specific points in history as being important
  • 01.00.05
    New PATCH release 01.00.05
    
    Changes since 01.00.04:
    
    - BUG FIX: pre 01.00 versions were behaving differently when trying to load a backend plugin which has been compiled against the wrong DeviceAccess version. The indended behaviour is that no exception is thrown upon loading the dmap file (and thus trying to load the backend plugin) and the exception comes only when trying to use the backend. This behaviour is now restored (an exception was thrown immediatly, which breaks current uses).
    - load plugins from dmap file already in setDmapFilePath, to avoid trying to load all plugins on every open (i.e. multiple times), which creates warning messages
  • 01.00.04
    2553fc36 · increased patch level ·
    New PATCH release 01.00.04
    
    Changes since 01.00.03:
    - Example source code is again installed to the doc directory
    - Added CMakeLists.txt for the examples
    - Improved docu
    
    No changes to the library itself.
  • 01.00.03
    2e959552 · increaed patch level ·
    New PATCH release 01.00.03
    
    Changes since 01.00.02:
    
    - Fixed tests: due to recent changes in CMakeLists.txt, test binaries are now put all into <build_directory>/tests (instead of bin and lib). This seems more logical, but tests needed to be updated for
    - Fixed not installing DeviceAccessVersion.h
  • 01.00.02
    New PATCH release 01.00.02
    
    Changes since 01.00.01:
    
    - fix and clean the build environment
  • 01.00.01
    New PATCH release 01.00.01
    
    Changes since 01.00.00:
    
    - renamed mtca4u_lmap_editor.py -> chimeratk-lmap-editor
    - changed some remaining "mtca4u-deviceaccess" names into the new ChimeraTK-DeviceAccess
    - removed old debian package tools
  • 01.00.00
    afaeb965 · fixed a doxygen warning ·
    New MAJOR release 01.00.00
    
    ATTENTION, this release is NOT FULLY BACKWARDS COMPATIBLE with the previous one! Please check carfully your libraries and applications after upgrading.
    
    Changes since 00.33.00:
    
    - Implement the new exception scheme:
    
      Instead of having many exceptions (which breaks even the abstraction), we now have only two exceptions:
        - ChimeraTK::logic_error
        - ChimeraTK::runtime_error
    
      All other exceptions are replaces with typedefs to ChimeraTK::runtime_error.
    
      IMPORTANT: Backend developers *must* neccessarily update their code! No backend must throw its own exceptions. Only the two mentioned exceptions may be thrown!
    
    - Introduce the ChimeraTK device descriptor, which replaces the SDM URI (e.g. in the dmap files)
    - Allow DMAP file entries without 3rd column (old-style map file name)
    - Changed project name into ChimeraTK-DeviceAccess (with compatibility layer)
    - Fully changed mtca4u namespace into ChimeraTK (with compatibility layer)
    - Integrated the TimeStamp into the VersionNumber object
    - Update documentation and examples
    - Improved detection of broken backend plugins
    
    - Changes in the logical name mapper backend:
      - added support for array constants and variables
      - introduce accessor for single bits of a register
      - removed two unused features in logical name mapper
      - fill the catalogue with extra information from the target devices only when the catalogue is obtained
    
    - Deprecated API:
      - added runtime deprecation warning to the RegisterAccessor to prepare its removal
      - disabled the MultiplexedDataAccessor class completely so it can be removed soon
      - added C++ compiler warnings for deprecated functions in Device
      - removed some long-deprecated functions of the backend interface
      - no longer use deprecated api in the tests
  • 00.33.00
    New MINOR release 00.33.00
    
    Changes since 00.32.00:
    
    Note: This release contains an incompatible interface change in an experimental feature (readAsync/readAny)!
    
    Rework of readAsync / readAny:
    
    - Replace the boost::future<void> inside the TransferFuture with a cppext::future_queue<void>
    - Introduce ReadAnyGroup replacing the previous readAny() function. Note that this is an incompatible interface change, but the old interface was marked as experimental.
    - No longer mark readAsync/readAny as experimental
    
    Other changes:
    
    - Improvements to the sharedMemoryBackend
    - Introducing TransferElementAbstractor base class which allows to hold accessors of unknown user type without the need for exposed shared pointers
    - Fixed/improved some tests
  • 00.32.00
    3d2fee20 · increased minor version ·
    New MINOR release 00.32.00
    
    Changes since 00.31.00:
    
    Bug fixes:
    
    - Fixed getAsCooked()/setAsCooked() for the SubdeviceBackend - this is used by QtHardMon
    - Make dummy backend thread safe
    
    New features:
    
    - Add register access flags (read-only/write-only/read-write) to the catalogue and read it from the map file for NumericAddressedBackends
    
    Internal interfaces:
    
    - NumericAddressedBackend: Add possibility to disable request merging (as done in TransferGroups), see canMergeRequests()
    - AccessMode: getString() is now static; added functions to add and remove flags
  • 00.31.00
    New MINOR release 00.31.00
    
    Changes since 00.30.00:
    
    Features:
    - Using C++14 compiler flags (needed for some lambda expressions)
    - New FILL_VIRTUAL_FUNCTION_TEMPLATE_VTABLE_STANDALONE macro which works like FILL_VIRTUAL_FUNCTION_TEMPLATE_VTABLE but does not require the DEFINE_VIRTUAL_FUNCTION_TEMPLATE_VTABLE_FILLER
    - Introduced DataType class to provide runtime information about the used implementation data type.
    - Added callForType() function which allows to "convert" from a runtime type_info to a compile-time type (available for std::type_info and ChimeraTK::DataType)
    - Added SharedDummyBackend
    - Added access mode flags to Device::getTwoDRegisterAccessor. Now raw 2D accessors can be created.
    - Added setAsCoocked() and getAsCoocked() to abstractor accessors.
    - New macros DECLARE_TEMPLATE_FOR_CHIMERATK_USER_TYPES and INSTANTIATE_TEMPLATE_FOR_CHIMERATK_USER_TYPES to speed up compilation by providing instances of template classes already in the library.
    - Added rawDataType() (and currently unused transportLayerDataType()) to the RegisterInfo class.
    - Data members of RegisterInfoMap are now const, so they cannot be modified after creation of the object.
    - The Linux-specific PCIe backend now is optional in the compilation. DeviceAccess now also compliles on MacOS.
    
    Bug fixes:
    - Raw transfer type now set correctly for numerically addressed backends.
    - ScalarRegisterAccessor also works for strings.
    - Fixed register catalogue entry for multiplexed 2D registers
  • 00.30.00
    7f3ee12a · increased minor version ·
    New MINOR release 00.30.00
    
    Changes since 00.29.00:
    
    - Moved namespace from mtca4u to ChimeraTK. The header files are now installed in .../include/ChimeraTK/... and only contain the new namespace. For backwards compatibility, header files are still installed in the old place .../include/mtca4u/... which also allow using the old namespace.
    - Added a Subdevice backend which allows to open a device with a map file passed through a 1D register of another device.
    - Include Utilities.h in Device.h to make setDMapFilePath() automatically available, as this function is basically needed whenever Device is used.
    - Some code cleaning
  • 00.13.02
    424bfef2 · increased patch level ·
    New PATCH release 00.13.02
    
    Changes since 00.13.01:
    
    MicroDAQ module:
    
    - Added tag "MicroDAQ.CONFIG" to all configuration variables, to make it easier to publish only them into the control system
  • 00.13.01
    6d346a9b · increased patch level ·
    New PATCH release 00.13.01
    
    Changes since 00.13.00:
    
    - bug fix: ArrayPipe was only working for Type = int
  • 00.11.00
    New MINOR release 00.11.00
    
    Changes since 00.10.00:
    
    - required updates for the latest changes in DeviceAccess
    
    - improved tests
  • 00.29.00
    New MINOR release 00.29.00
    
    Changes since 00.28.00:
    
    Important note: This release does significant changes to the internal structure. Although no changes to the public (non-experimental) API has been introduced, some corner use-cases could be affected. Please check your application/library carefully against this version before releasing it into production!
    
    * Major bug fix for the TransferGroup and readAsync() logic. This commit involves slight behavioral changes of the TransferGroup (only corner cases with previously undefined/strange behaviour) as well as a change of the internal backend interface (only those backends not based on the NumericAddressedBackend).
      Notable changes are:
    
      - preRead(), postRead(), preWrite() and postWrite() are now protected against multiple calls. To achieve this, the function implemented by the backends has been renamed into doPostRead() etc.
      - TransferGroup logic was completely reworked. Copies are now properly done where necessary, so user buffers will never be shared after merging identical registers into the same TransferGroup.
      - TransferGroups are now set to read-only if copies will be made - in which case writing would result in undefined behaviour.
    
    * Interface change in experimental feature: readAsync() no longer returns a reference to a TransferFuture. Instead the TransferFuture is now copyable and no longer polymorphic.
    
    * Introduced a base class for decorators of NDRegisterAccessor - NDRegisterAccessorDecorator - and use it in various places
    
    * Introduced a doReadTransferAsync() and doWriteTransfer() similar to the other doReadTransfer...() functions. This affects any implementations of NDRegisterAccessor (read documentation of the functions)!
    
    * Split the TransferElement base class into TransferElement and TransferElementAbstractor, to properly seperate the two parts of the bridge coding pattern. Along side with this change goes a rename of NDRegisterAccessorBridge into NDRegisterAccessorAbstractor. Users should mostly not see this change, since they should only use concrete implementations of the classes, which were effectively not changed.
    
    * Extended the tests
    
    * Some improvements to the build environment and removal of warnings etc.
  • 00.28.00
    New MINOR release 00.28.00
    
    Changes since 00.27.01:
    
    - fixed mixing of readAsync() with other types of read
    - removed conceptually not working move constructor/move assignment of TransferFuture, and replaced it with a reset() function.
    
    - improved tests for readAsync
    - improved documentation
    
    - added utility function to print a stack trace with demanged C++ names - usefull for debugging but normally not used.
  • 00.27.01
    2e867dfe · increased patch level ·
    New PATCH release 00.27.01
    
    Changes since 00.27.00:
    
    - Extended the messages of exceptions thrown by the NumericAddressedBackendRegisterAccessor to simplify debugging. They now include the register names.
    - Prevent warning on older compilers
  • 00.27.00
    78b0d0e2 · increased minor version ·
    New MINOR release 00.27.00
    
    Changes since 00.26.00:
    
    - Introduced a DataDescriptor as part of the RegisterInfo structure destribing the data content of a register in an abstract manner
      This change presents a change of the internal backend interface. All backends which are not based on the numeric addressed backend must be updated!
  • 00.26.00
    ca909113 · increased minor version ·
    New MINOR release 00.26.00
    
    Changes since 00.25.00:
    
    - Change in the internal backend interface:
      * Require to specify a name in the NDRegisterAccessor constructor.
      This change may affect custom backends, but backends based on the NumericAddressedBackend are not affected.
    
    - Introduce a unique ID for each register accessor (TransferElement::ID)
    
    - Change in the interface of an experimental feature:
      * Change return type of TransferElement::readAny() into TransferElement::ID.
    
    - Minor bug fixes
  • 00.25.00
    353c2542 · increased minor version ·
    New MINOR release 00.25.00
    
    NOTE: This release introduces a change in the backend interface! All implementations of the NDRegisterAccessor must be updated! Backends deriving from the NumericAddressedBackend do NOT need updating.
    
    Changes since 00.24.00:
    
    Features:
    
    - readAny() now guarantees to read the oldest data first.
    - made the conversion operator T() const for the DummyRegisterAccessor, so when having a const register accessor one can still convert into the data type.
    
    Bug fixes:
    
    - fixed bug in readAsync(), which could lead to calling a virtual function in the destructor of a base class (which is illegal). To circumvent this problem, the function NDRegisterAccessor::shutdown() must be called in all implementations of the NDRegisterAccessor in their destructor. See the description of shutdown() for more details (there are more details, so please do read it!).
    - the LogicalNameMappingBackend was not setting the openend flag correctly, so Device::isOpenend() always returned false.
    - fix build on MacOS
    - fixed performance bug in raw accessor (was copying instead of swapping)
    
    Other:
    
    - Improved documentation on plugin loading
    - Moved class VersionNumber from the ControlSystemAdapter to the DeviceAccess library
  • 00.24.00
    fe2303ea · increased minor version ·
    New MINOR release 00.24.00
    
    Changes since 00.23.01:
    
    - New feature: Allow testing the TransferFuture (as returned by readAsync()) for new data without blocking.