# -*- coding: utf-8 -*-
#
# Copyright (c) 2023 CSIRO Space and Astronomy.
#
# Distributed under the terms of the CSIRO Open Source Software Licence
# Agreement. See LICENSE for more info.
"""
Hardware monitoring interface
"""
from abc import ABC, abstractmethod
from ska_low_cbf_fpga.icl_field import IclField
[docs]
class FpgaHardwareInfo(ABC):
"""
Hardware monitoring interface definition.
The properties defined here must be implemented in driver-specific derived classes.
"""
@property
@abstractmethod
def fpga_power(self) -> IclField[float]:
"""
Get FPGA power consumption in Watts.
"""
raise NotImplementedError
@property
@abstractmethod
def fpga_temperature(self) -> IclField[int]:
"""
Get FPGA temperature in degrees Celsius.
"""
raise NotImplementedError
@property
@abstractmethod
def hbm_temperature(self) -> IclField[int]:
"""
Get HBM temperature in degrees Celsius.
"""
raise NotImplementedError
@property
@abstractmethod
def mac_addresses(self) -> IclField[str]:
"""
Get Ethernet MAC addresses.
:returns: Array of str, formatted like "00:01:02:03:04:05".
"""
raise NotImplementedError
@property
@abstractmethod
def pcie_12v_current(self) -> IclField[float]:
"""
Get PCIe 12V power rail's current.
"""
raise NotImplementedError
@property
@abstractmethod
def pcie_12v_voltage(self) -> IclField[float]:
"""
Get PCIe 12V power rail voltage reading.
"""
raise NotImplementedError
@property
@abstractmethod
def power_supply_12v_current(self) -> IclField[float]:
"""
Get 12V power rail's current.
"""
raise NotImplementedError
@property
@abstractmethod
def power_supply_12v_voltage(self) -> IclField[float]:
"""
Get power rail 12 volt reading.
"""
raise NotImplementedError