![]() |
ChimeraTK-DeviceAccess 03.20.00
|
The DataConsistencyGroup allows to ensure consistency of the values read through different accessors. For this matching, the VersionNumber is used as a key. The VersionNumber is only valid within the same ChimeraTK application process, so when transporting data via a DeviceBackend, the VersionNumbers have to be mapped to/from some other key, such as the DOOCS Event ID or a timestamp. This key can either be shipped as metadata attached to the payload data, if this is foreseen in the protocol (as e.g. in the case of DOOCS), or it may be shipped in a separate register (as e.g. in case of an XDMA device with an interrupt).
In this document, the exact behaviour of this mapping is specified and the architecture of the implementation is laid out. Please note, only the read direction is for now covered by the implementation and this specification.
Note: Albeit gramatically incorrect, plural forms of class names are written with apostrophes throughout this document, so the class name is properly highlighted by Doxygen and linked to the class documentation.
DataConsistencyKey=0
is always VersionNumber{nullptr}. It is not added to the map.max(incomingVersionNumber,startVersionNumber)
is smaller than the last used VersionNumber:The following diagram shows the integration of the DataConsistencyRealm with the AsyncNDRegisterAccessor and AsyncAccessorManager concept. The diagram is not complete and shows only the relevant parts. New classes and new or modified class members are shown in red.
(Hint: Hover the mouse cursor over edge labels "see tooltip" to show the description.)
handleEvent()
in the above graph, although the naming and structure may be vastly different for actual implementations):