diff --git a/CDB/stations/DTS_ConfigDb.json b/CDB/stations/DTS_ConfigDb.json index c5bbf009334e47e2dd0eed89dbddea6889f83933..741d9dc910e6ff35d04e993dab21dbd3eb08cc01 100644 --- a/CDB/stations/DTS_ConfigDb.json +++ b/CDB/stations/DTS_ConfigDb.json @@ -1,5 +1,18 @@ { "servers": { + "boot": { + "STAT": { + "Boot": { + "STAT/Boot/1": { + "properties": { + "Initialise_Hardware": [ + "True" + ] + } + } + } + } + }, "APSCT": { "STAT": { "APSCT": { diff --git a/CDB/stations/LTS_ConfigDb.json b/CDB/stations/LTS_ConfigDb.json index 7c03ff1434f5e88860d6d174ad7ce952750606b6..faa42937967fe6e1514414d4606556033fcf1959 100644 --- a/CDB/stations/LTS_ConfigDb.json +++ b/CDB/stations/LTS_ConfigDb.json @@ -1,5 +1,18 @@ { "servers": { + "boot": { + "STAT": { + "Boot": { + "STAT/Boot/1": { + "properties": { + "Initialise_Hardware": [ + "True" + ] + } + } + } + } + }, "RECV": { "STAT": { "RECV": { diff --git a/CDB/stations/simulators_ConfigDb.json b/CDB/stations/simulators_ConfigDb.json index df2ffc1c1194282f7cc92cd0e7df1e5eb90b3a58..c9c1b8135f389e8df23b266fbda4246139590a22 100644 --- a/CDB/stations/simulators_ConfigDb.json +++ b/CDB/stations/simulators_ConfigDb.json @@ -1,5 +1,18 @@ { "servers": { + "boot": { + "STAT": { + "Boot": { + "STAT/Boot/1": { + "properties": { + "Initialise_Hardware": [ + "False" + ] + } + } + } + } + }, "APSCT": { "STAT": { "APSCT": { diff --git a/tangostationcontrol/tangostationcontrol/devices/boot.py b/tangostationcontrol/tangostationcontrol/devices/boot.py index 574464d6cbc611375ee497bc1700a9ff55ce426a..c4df70bf5027a8068a1e58326c5ad442e63ad4fc 100644 --- a/tangostationcontrol/tangostationcontrol/devices/boot.py +++ b/tangostationcontrol/tangostationcontrol/devices/boot.py @@ -49,8 +49,9 @@ class DevicesInitialiser(object): the start() method, and progress can be followed by inspecting the members progress (0-100), status (string), and is_running() (bool). """ - def __init__(self, device_names, ignore_unavailable_devices=True, proxy_timeout=10.0): + def __init__(self, device_names, ignore_unavailable_devices=True, initialise_hardware=True, proxy_timeout=10.0): self.ignore_unavailable_devices = ignore_unavailable_devices + self.initialise_hardware = initialise_hardware self.device_names = device_names self.proxy_timeout = proxy_timeout @@ -207,8 +208,9 @@ class DevicesInitialiser(object): self.set_status(f"[restarting {device_name}] Setting defaults.") proxy.set_defaults() - self.set_status(f"[restarting {device_name}] Initialising hardware.") - proxy.initialise_hardware() + if self.initialise_hardware: + self.set_status(f"[restarting {device_name}] Initialising hardware.") + proxy.initialise_hardware() # mark as ready for service self.set_status(f"[restarting {device_name}] Turning on device.") @@ -230,6 +232,13 @@ class Boot(lofar_device): default_value=10.0, ) + # Initialise the hardware when initialising a station. Can end badly when using simulators. + Initialise_Hardware = device_property( + dtype='DevBoolean', + mandatory=False, + default_value=True, + ) + # Which devices to initialise, and in which order Device_Names = device_property( dtype='DevVarStringArray', @@ -291,7 +300,7 @@ class Boot(lofar_device): @log_exceptions() def configure_for_initialise(self): # create an initialiser object so we can query it even before starting the (first) initialisation - self.initialiser = DevicesInitialiser(self.Device_Names, self.Ignore_Unavailable_Devices, self.DeviceProxy_Time_Out) + self.initialiser = DevicesInitialiser(self.Device_Names, self.Ignore_Unavailable_Devices, self.Initialise_Hardware, self.DeviceProxy_Time_Out) @command() @DebugIt() @@ -322,7 +331,7 @@ class Boot(lofar_device): pass # start new initialisation attempt - self.initialiser = DevicesInitialiser(self.Device_Names, self.Ignore_Unavailable_Devices, self.DeviceProxy_Time_Out) + self.initialiser = DevicesInitialiser(self.Device_Names, self.Ignore_Unavailable_Devices, self.Initialise_Hardware, self.DeviceProxy_Time_Out) self.initialiser.start() @command()