diff --git a/devices/devices/sdp/sst.py b/devices/devices/sdp/sst.py index 2dc32c64a6fae3688d4ce78970490dafe0c618fd..1a62a4edcf28c84f7be865d38f7d5312417b497e 100644 --- a/devices/devices/sdp/sst.py +++ b/devices/devices/sdp/sst.py @@ -26,7 +26,7 @@ from tango import AttrWriteType from clients.attribute_wrapper import attribute_wrapper from clients.opcua_client import OPCUAConnection -from clients.StatisticsClient import StatisticsClient +from clients.statistics_client import StatisticsClient from devices.hardware_device import hardware_device diff --git a/devices/devices/sdp/statistics.py b/devices/devices/sdp/statistics.py index 2a9ddb9ec91e8f3bd55ef2d2d2fed50e1b637c9f..5d10aae8b866acc0b30598856cb63b1ecc6d233a 100644 --- a/devices/devices/sdp/statistics.py +++ b/devices/devices/sdp/statistics.py @@ -120,7 +120,7 @@ class Statistics(hardware_device, metaclass=ABCMeta): """ user code here. is called when the sate is set to INIT """ """Initialises the attributes and properties of the statistics device.""" - self.statistics_client = StasticsClient(self.STATISTICS_COLLECTOR_CLASS, "0.0.0.0", self.Statistics_Client_Port, self.Fault, self) + self.statistics_client = StatisticsClient(self.STATISTICS_COLLECTOR_CLASS, "0.0.0.0", self.Statistics_Client_Port, self.Fault, self) self.OPCUA_client = OPCUAConnection("opc.tcp://{}:{}/".format(self.OPC_Server_Name, self.OPC_Server_Port), "http://lofar.eu", self.OPC_Time_Out, self.Fault, self) diff --git a/devices/devices/sdp/statistics_collector.py b/devices/devices/sdp/statistics_collector.py index f7d01d2cb0615f157b2b6cc161cb199495d94a45..f3aac3c1982b03b169eaddedce52b50c939ddc45 100644 --- a/devices/devices/sdp/statistics_collector.py +++ b/devices/devices/sdp/statistics_collector.py @@ -23,7 +23,13 @@ class StatisticsCollector(Thread): self.queue = queue self.last_packet = None - self.parameters = { + self.parameters = self._default_parameters() + + super().__init__() + self.start() + + def _default_parameters(self): + return { "nof_packets": numpy.uint64(0), # Packet count for packets that could not be parsed @@ -33,9 +39,6 @@ class StatisticsCollector(Thread): "last_invalid_packet": numpy.zeros((9000,), dtype=numpy.uint8), } - super().__init__() - self.start() - def run(self): logger.info("Starting statistics thread") @@ -54,7 +57,7 @@ class StatisticsCollector(Thread): except Exception as e: logger.exception("Could not parse statistics UDP packet") - self.parameters["last_invalid_packet"] = numpy.frombuffer(packet, dtype=numpy.uint8) + self.parameters["last_invalid_packet"] = numpy.frombuffer(self.last_packet, dtype=numpy.uint8) self.parameters["nof_invalid_packets"] += numpy.uint64(1) logger.info("Stopped statistics thread") @@ -92,10 +95,10 @@ class SSTCollector(StatisticsCollector): # Maximum number of subbands we support (used to determine array sizes) MAX_SUBBANDS = 512 - def __init__(self, queue): - super().__init__(queue) + def _default_parameters(self): + defaults = super()._default_parameters() - self.parameters.extend({ + defaults.update({ # Number of packets received so far that we could parse correctly and do not have a payload error "nof_valid_payloads": numpy.zeros((self.MAX_INPUTS,), dtype=numpy.uint64), @@ -108,6 +111,8 @@ class SSTCollector(StatisticsCollector): "integration_intervals": numpy.zeros((self.MAX_INPUTS,), dtype=numpy.float32), }) + return defaults + def process_packet(self, packet): fields = SSTPacket(packet)