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#[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}