sysfs_class/hwmon/
mod.rs

1use crate::SysClass;
2use std::io::Result;
3use std::path::{Path, PathBuf};
4
5pub use self::fan::HwMonFan;
6mod fan;
7
8pub use self::pwm::HwMonPwm;
9mod pwm;
10
11pub use self::temp::HwMonTemp;
12mod temp;
13
14/// A hardware monitoring device in /sys/class/hwmon
15#[derive(Clone)]
16pub struct HwMon {
17    path: PathBuf,
18}
19
20impl SysClass for HwMon {
21    fn class() -> &'static str {
22        "hwmon"
23    }
24
25    unsafe fn from_path_unchecked(path: PathBuf) -> Self {
26        Self { path }
27    }
28
29    fn path(&self) -> &Path {
30        &self.path
31    }
32}
33
34impl HwMon {
35    pub fn name(&self) -> Result<String> {
36        self.trim_file("name")
37    }
38
39    pub fn fan<'a>(&'a self, id: u64) -> Result<HwMonFan<'a>> {
40        HwMonFan::new(self, id)
41    }
42
43    pub fn pwm<'a>(&'a self, id: u64) -> Result<HwMonPwm<'a>> {
44        HwMonPwm::new(self, id)
45    }
46
47    pub fn temp<'a>(&'a self, id: u64) -> Result<HwMonTemp<'a>> {
48        HwMonTemp::new(self, id)
49    }
50}