use crate::NanExt;
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct PowerLimitReading {
pub limit: Option<f32>,
pub measured: Option<f32>,
}
impl PowerLimitReading {
pub(crate) fn from_raw(limit: f32, measured: f32) -> Self {
Self {
limit: limit.none_if_nan(),
measured: measured.none_if_nan(),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct TemperatureLimitReading {
pub limit: Option<f32>,
pub measured: Option<f32>,
}
impl TemperatureLimitReading {
pub(crate) fn from_raw(limit: f32, measured: f32) -> Self {
Self {
limit: limit.none_if_nan(),
measured: measured.none_if_nan(),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct CurrentLimitReading {
pub limit: Option<f32>,
pub measured: Option<f32>,
}
impl CurrentLimitReading {
pub(crate) fn from_raw(limit: f32, measured: f32) -> Self {
Self {
limit: limit.none_if_nan(),
measured: measured.none_if_nan(),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct CoreReading {
pub clock: Option<f32>,
pub voltage: Option<f32>,
pub power: Option<f32>,
pub temperature: Option<f32>,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct GfxReading {
pub clock: Option<f32>,
pub voltage: Option<f32>,
pub temperature: Option<f32>,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct SocReading {
pub power: Option<f32>,
pub voltage: Option<f32>,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct L3Reading {
pub clock: Option<f32>,
pub logic: Option<f32>,
pub vddm: Option<f32>,
pub temperature: Option<f32>,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct FabricMemoryReading {
pub fabric_clock: Option<f32>,
pub memory_clock: Option<f32>,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct CclkReading {
pub setpoint: Option<f32>,
pub busy: Option<f32>,
}