ChimeraTK-DeviceAccess 03.20.00
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Technical specification: Mapping of DataConsistencyKeys to VersionNumbers V0.0WIP

A. Introduction

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.

B. Behavioural specification

Comments

  • 3.1.3.2 This can happen since the first time a particular key is encountered may happen on different variables and even backends each time.
  • 3.1.4 Giving out a VersionNumber{nullptr} would violate the DeviceAccess TransferElement specification.
  • 3.3.3.1 This is the case for VersionNumber{nullptr} and valid VersionNumber's which have been created before calling open() of the backend.

C. Implementation for the AsyncNDRegisterAccessor

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.)