Skip to content
New MAJOR release 03.00.00

Changes since 02.08.00:
- ReadAnyGroup: Fixed thread leak caused by not suppressing boost::thread_terminate when peeking the read queue. (#253)
- ReadAnyGroup: Catch runtime_errors while peeking for DiscardValueExceptions (#251)
- xdma: _intfFromBar(): return reference, not pointer (#250)

- Wip/9621 math only write with all params (#247)
  -- The math plugin only writes the target accessor once all parameters and the accessor itself have been written at least once after opening the device.

- fix ReadAnyGroup::readAnyNonBlocking handling DiscardValueExceptions … (#249)
  -- The preRead/postRead calls were not properly matched before, resulting in subtle bugs (deadlocks) when combining with BidirectionalProcessArrays in ApplicatioCore's testable mode.
     (requires cppext 01.04.00)

- Implement new multiplexed syntax (#245)
  -- Initial version of parsing the new Multiplexed area syntax
  --  Unify register creation for multiplexed registers
  --  Update MultiplexedDataAccessorTest for new syntax
  --  Make the tests parametrized to work on files with old and new syntax for multiplexed areas
  -- Add simple test for individual channel names
  -- Add missing map file and dmap file sanity check
  -- Rename function and add description
  -- Remove full BAM map files
  -- Merge newMuxedDataAcessor with newSequences
  --- check the parsed registers in testMapFileNewStyleMuxed
  -- Add note to test files regarding alignment

- make VersionNumber trivially copyable (#248)
  Does not change any existing behaviour, since the copy constructor was actually already trivial. Now, VersionNumber can be e.g. used in an std::atomic.

- Extended the TransferElement specification with behaviour for ChimeraTK::Void
  -- Also added ChimeraTK::Boolean as data type

- Remove RegisterAccessor

- fixes for boolean and void (#244)

- Wip/9608 math plugin write on open (#243)
  -- MathPlugin parameter read loop: first wait for data, then write
  -- MathPlugin: Only write parameter changes after the register itself has been written.
     * Factored parameter read loop into separate function
     * Introduced _mainValueWrittenAfterOpen
     * Lock is acquited in preWrite() and only released in postWrite()
       to protect the writeTransfer from write operations in the thread.
     Resolves redmine ticket 9608

- Wip/tsan asan bugs (#240)
  -- fixed template bug in unified test (made clang compiles fails)
  -- resolved race confition issue in testLMapBackendUnified
  -- BackendRegisterCatalogue base has virtual destructor to avoid compiler warnings
  -- avoid complier warning about ignored return value

- SharedDummyBackend remote interrupt trigger (#236)
  -- implement semaphore-based triggering concept
  -- introduce interrupt dispatcher thread
  -- increase safety for InterruptDispatcherInterface
     * instantiation with unique_ptr - it is not indented to be handed out
     * make sure dispatcher thread is stopped first in destructor
  -- reduce locking time for global interprocess mutex
  -- improve clean-up/reinit of SHM
  -- do not remove global mutex while it is locked
  -- Although it works on linux, behavior is certainly implemenation-specific or even undefined.
  --  cleanup Semaphore array by comparison with PidSet
  --  Fix shared test to include async variables
  -- Use an explicit remotely triggered interrupt
  -- Fix typos
  -- Avoid copying shared pointer while iterating
  -- use scoped enum

- Wip/bug readable writeable plugins (#237)
  -- Added unified test to check isReadable() and isWriteable()
  -- Fixed implementation in math plugin
  -- fixed catalogue entries for SubDeviceBackend 2reg/3reg

- Fix transfer group invalid merge (#235)
  --  When adding a TransferElement to a TransferGroup using a temporary
      TransferElementAbstractor, in some rare cases it could happen that the
      transfer group assumed that this temporary accessor was already being
      taken care of and the original accessor only swapped in random data

- Multipexed 2D registers now working with IEEE754 data type.
  -- fixed catalogue info for IEEE754 in muxed accessors
  -- NumericAddressedBackendMuxedRegisterAccessor is now templated on the converter type.
  -- introduced muxed IEEE to numeric addressed unified test

- Refurbish catalogue API (#7425) (#227)
  -- This requires all backends to be updated (backends based on NumericAddressedBackend are usually fine).
     Also applications which are obtaining the catalogue have to be adapted for the slightly different API in some cases.

- Wip/9048 bug get as cooked (#226)

  -- unified test is doing raw read and write tests, incl. getAsCooked() and setAsCooked,
     which triggers the wanted exception descibed in redmine ticket 9048
     !! Interface change in descriptors for unified backend test !!
     * getRemoteValue() and generateValue() need argument 'bool raw = false' for accessors with capability 'enableRawTransferTest'
  -- NDRegisterAccessorDecorators now can do getAsCooked() and setAsCooked(). Solves #9048

- use weak_ptr for global ShareDummyBackend instance map
- testDummyBackend uses the factory to create different instances

- No more crtp (#224)
  Get rid of instance map in dummy backends.
  -- Solves cleanup issue in shared dummy backend tests.
  -- Gets rid of unnecessary CRTP. DummyBackendBase is no longer a template class.
  -- Functionality is already covered by the BackendFactory. No functional change.

- implement dummy interrupt x y (#223)
  -- Add DummInterruptAccessor DUMMY_INTERRUPT_X_Y

- Wip/9048 bug lmap and subdevice (#222)
  Started to extend UnifiedBackendTest with  tests for access mode raw.