Skip to content
Snippets Groups Projects
Commit 5e2bff8a authored by Jan David Mol's avatar Jan David Mol
Browse files

Rollout fixes v0.27.1/v0.28

parent d9e3e931
No related branches found
No related tags found
1 merge request!850Rollout fixes v0.27.1
......@@ -166,6 +166,7 @@ Next change the version in the following places:
# Release Notes
* 0.28.1 Bugfixes / rollout fixes
* 0.28.0 Make `StationManager` device asynchronous
* 0.27.2 Add new attributes in OPCUA devices
* 0.27.1 Bugfixes / rollout fixes
......
......@@ -2,7 +2,7 @@ apiVersion: 1
providers:
# <string> an unique provider name. Required
- name: 'StationControl'
- name: 'StationControl (panels)'
# <int> Org id. Default to 1
orgId: 1
# <string> name of the dashboard folder.
......@@ -16,7 +16,28 @@ providers:
# <int> how often Grafana will scan for changed dashboards
updateIntervalSeconds: 60
# <bool> allow updating provisioned dashboards from the UI
allowUiUpdates: false
allowUiUpdates: true
options:
# <string, required> path to dashboard files on disk. Required when using the 'file' type
path: /var/lib/grafana/panels
# <bool> use folder names from filesystem to create folders in Grafana
foldersFromFilesStructure: true
# <string> an unique provider name. Required
- name: 'StationControl (dashboards)'
# <int> Org id. Default to 1
orgId: 1
# <string> name of the dashboard folder.
folder: ''
# <string> folder UID. will be automatically generated if not specified
folderUid: ''
# <string> provider type. Default to 'file'
type: file
# <bool> disable dashboard deletion
disableDeletion: true
# <int> how often Grafana will scan for changed dashboards
updateIntervalSeconds: 60
# <bool> allow updating provisioned dashboards from the UI
allowUiUpdates: true
options:
# <string, required> path to dashboard files on disk. Required when using the 'file' type
path: /var/lib/grafana/dashboards
......
0.28.0
0.28.1
......@@ -31,8 +31,8 @@ class PowerHierarchyDevice(AbstractHierarchyDevice):
POWER_CHILD_PROPERTY = "Power_Children"
HIBERNATE_TIMEOUT = 60.0
STANDBY_TIMEOUT = 60.0
ON_TIMEOUT = 60.0
STANDBY_TIMEOUT = 300.0
ON_TIMEOUT = 300.0
def init(
self,
......
......@@ -199,6 +199,7 @@ class Calibration(LOFARDevice):
Run whenever the following changes:
sdpfirmware.clock_RW
sdpfirmware.FPGA_boot_image_R
antennafield.RCU_band_select_RW
"""
......@@ -317,6 +318,17 @@ class Calibration(LOFARDevice):
),
)
)
self.event_subscriptions.append(
(
prx,
prx.subscribe_event(
"FPGA_boot_image_R",
EventType.CHANGE_EVENT,
self._clock_changed_event,
stateless=True,
),
)
)
def configure_for_on(self):
# Calibrate all antennafields, as we did not receive
......
......@@ -24,11 +24,7 @@ __all__ = ["EC"]
@device_logging_to_python()
@device_metrics(
exclude=[
"*_RW",
]
)
@device_metrics()
class EC(OPCUADevice):
"""EC Device Server for LOFAR2.0"""
......
......@@ -5,13 +5,12 @@ import logging
import numpy
from tango import (
DevState,
DebugIt,
Util,
DevBoolean,
DevString,
)
from tango.server import Device, command, attribute
from tango.server import command, attribute
from tangostationcontrol.observation.observation_controller import ObservationController
from tangostationcontrol.common.lofar_logging import (
device_logging_to_python,
......@@ -122,8 +121,7 @@ class ObservationControl(LOFARDevice):
@DebugIt()
def init_device(self):
logger.debug("[ObservationControl] init device")
Device.init_device(self)
self.set_state(DevState.OFF)
super().init_device()
# Increase the number of polling threads for this device server.
# NB: This server hosts both ObservationControl and Observation
......
......@@ -224,12 +224,20 @@ class Beamlet(OPCUADevice):
datatype=numpy.uint8,
dims=(N_pn,),
)
FPGA_beamlet_output_nof_destinations_RW = AttributeWrapper(
_FPGA_beamlet_output_nof_destinations_RW = AttributeWrapper(
doc="Number of UDP streams to create. NB: sdp.FPGA_processing_enable_R must be all False when setting this value! Use beamlet_output_nof_destinations_RW instead!",
comms_annotation=["FPGA_beamlet_output_nof_destinations_RW"],
datatype=numpy.uint8,
dims=(N_pn,),
access=AttrWriteType.READ_WRITE,
)
FPGA_beamlet_output_nof_destinations_RW = attribute(
doc="Number of UDP streams to create.",
dtype=(numpy.uint8,),
max_dim_x=N_pn,
access=AttrWriteType.READ_WRITE,
)
FPGA_beamlet_output_nof_destinations_act_R = AttributeWrapper(
comms_annotation=["FPGA_beamlet_output_nof_destinations_act_R"],
datatype=numpy.uint8,
......@@ -668,6 +676,23 @@ class Beamlet(OPCUADevice):
return default_settings
def read_FPGA_beamlet_output_nof_destinations_RW(self):
# report effective number of output destinations
return self.read_attribute("FPGA_beamlet_output_nof_destinations_act_R")
def write_FPGA_beamlet_output_nof_destinations_RW(self, value):
old_FPGA_processing_enable = self.sdp_proxy.FPGA_processing_enable_RW
try:
# need to turn off FPGA processing when setting this value
self.sdp_proxy.FPGA_processing_enable_RW = [False] * N_pn
self.proxy.write_attribute(
"_FPGA_beamlet_output_nof_destinations_RW", value
)
finally:
# restore previous setting
self.sdp_proxy.FPGA_processing_enable_RW = old_FPGA_processing_enable
def read_subband_select_RW(self):
# We can only return a single value, so we assume the FPGA is configured coherently.
# Which is something that is to be checked by an independent monitoring system anyway.
......@@ -730,12 +755,6 @@ class Beamlet(OPCUADevice):
)
)
def configure_for_on(self):
super().configure_for_on()
# after everything is configured, FPGA processing can be turned on
self.sdp_proxy.FPGA_processing_enable_RW = [True] * N_pn
def configure_for_off(self):
super().configure_for_off()
......
......@@ -37,8 +37,9 @@ __all__ = ["SDPFirmware"]
@device_logging_to_python()
@device_metrics(
exclude=[
"FPGA_boot_image_*",
"FPGA_scrap_*",
"FPGA_flash_*",
"FPGA_ucp_*",
"*_RW",
],
include=[
......@@ -131,6 +132,8 @@ class SDPFirmware(OPCUADevice):
datatype=numpy.int32,
dims=(N_pn,),
doc="Active FPGA image (0=factory, 1=user)",
polling_period=DEFAULT_POLLING_PERIOD,
abs_change=1,
)
FPGA_boot_image_RW = AttributeWrapper(
comms_annotation=["FPGA_boot_image_RW"],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment