Return to ING home page2.1  Object architecture

This page is part of the ING document INS-DAS-31 Design notes for UltraDAS

This section introduces some of the relationships between objects in the udas_camera programme.
 

Creation of Fixed Plant objects

Figure 2.1.1 shows the composition of the programme, considered as an object, in terms of the Fixed Plant objects. The objects in the left-hand column are Singletons, and those in the right-hand column are Planned Families. (In fact, in the current release, Camera-i/f and Pixel-stream are Singletons too, but this may have to change in future if ING ever gets a camera that needs  more than one detector-controller.) The Camera-facade Singleton is special in that it is created once when the programme starts and is never destroyed until the programme exists. The other Fixed-Plant objects are all destroyed and replaced if the programe is reset.


Figure 2.1.1: composition of the programme from Fixed-plant objects.
 

Objects that can talk to the camera

Figure 2.1.2 shows command paths from the Facade down to the Camera-i/f. Each of these paths represents the execution of one DRAMA action that affects the camera.


Figure 2.1.2: objects that talk to the camera.

Cryostat, Integrator and Run objects are active (i.e. employ worker threads), so may use the camera-i/f to poll for telemetry independently of any command from the Facade.
 

Telemetry

Figure 2.1.3 shows the passing of telemetry to the Facade. Note how the sub-classing of Facade affects the interactions: the Fixed Plant objects know how to talk to a generic Facade, and do so, but only the specialised Camera-facade knows how to extract the telemetry. The objects producing the telemetry are a sub-set of the Fixed plant objects plus the Run objects held at ranks zero and one in the Run-file object (i.e. the two most-recent runs; see the Run-file class for details). The Camera-facade can find the Fixed-plant objects because they are all Singletons and can be accessed through a selector method. The Camera-facade can find the Run objects via the Run-file object by quoting the ranks of hte runs; only the two lowest ranks are of interest.


Figure 2.1.3: telemetry.