L2SS-1151: Implement control hierarchy for device proxies
This patch implements the control hierarchy by having it composited into LOFARDevice
. Due to the nature of integration tests that dynamically modify the control_children
property the hierarchy has to initialized as part of _Initialise
otherwise it would not be updated for tests utilizing the .off(); .put_property(); .boot(); test()
pattern. Ideally we reduce these dynamic property changes as much as possible.
This patch adds an aps
device but it is not started / stopped for the integration tests as that is not needed to iterate over the properties.
Parent properties are no longer necessary and the parent(s) are determined automatically from the children. Ideally each control device has only one parent but this is not the case. At least SDP, APS and Beamlet can have multiple parents.
Several devices are not configured to use the control hierarchy for their functionality these include: calibration, boot, observation and temperaturemanager. Boot will be replaced and become part of stationmanager while calibration always needs to access every SDP and every RECV device so the hierarchy is not needed.
Observation and temperaturemanager can not use the control hierarchy directly as setting the control_children
property on those would lead to invalid parent detection. For instance the antennafield would have both observations and stationmanager as parent.
Several devices break the hierarchy by requiring to change attributes or call commands on devices. The following ticket has been opened to address this: https://support.astron.nl/jira/browse/L2SS-1364
The key problem areas include:
- xst -> sdpfirmware
- sst -> sdpfirmware
- bst -> sdpfirmware
- beamlet -> sdp
- beamlet -> sdpdfirmware
- tilebeam -> antennafield
- digitalbeam -> antennafield
- sdp -> sdpfirmware
Closes L2SS-1151