diff options
author | Clement Tsang <clementjhtsang@gmail.com> | 2019-09-25 00:27:43 -0400 |
---|---|---|
committer | ClementTsang <clementjhtsang@gmail.com> | 2019-09-25 01:59:47 -0400 |
commit | bc3169a4df3c0749f6ea08fbca7b235cce3f77d7 (patch) | |
tree | 7e9fc0aaf0fe187c73b7fb6fe811fd1a277239ac /src/app | |
parent | cb9ec2cdca7fe8d49a54d254bb590d23cf84229f (diff) |
Added some more support for windows.
Diffstat (limited to 'src/app')
-rw-r--r-- | src/app/data_collection.rs | 5 | ||||
-rw-r--r-- | src/app/data_collection/temperature.rs | 33 |
2 files changed, 29 insertions, 9 deletions
diff --git a/src/app/data_collection.rs b/src/app/data_collection.rs index 793d9e1b..642fc723 100644 --- a/src/app/data_collection.rs +++ b/src/app/data_collection.rs @@ -100,7 +100,10 @@ impl DataState { set_if_valid(&disks::get_disk_usage_list().await, &mut self.data.list_of_disks); push_if_valid(&disks::get_io_usage_list(false).await, &mut self.data.list_of_io); //push_if_valid(&disks::get_io_usage_list(true).await, &mut self.data.list_of_physical_io); // Removed, seems irrelevant for now... - set_if_valid(&temperature::get_temperature_data(&self.temperature_type).await, &mut self.data.list_of_temperature_sensor); + set_if_valid( + &temperature::get_temperature_data(&self.sys, &self.temperature_type).await, + &mut self.data.list_of_temperature_sensor, + ); if self.first_run { self.data = Data::default(); diff --git a/src/app/data_collection/temperature.rs b/src/app/data_collection/temperature.rs index f650592e..8c05a5f6 100644 --- a/src/app/data_collection/temperature.rs +++ b/src/app/data_collection/temperature.rs @@ -1,4 +1,5 @@ use heim_common::{prelude::StreamExt, units::thermodynamic_temperature}; +use sysinfo::{ComponentExt, System, SystemExt}; #[derive(Clone)] pub struct TempData { @@ -19,18 +20,34 @@ impl Default for TemperatureType { } } -pub async fn get_temperature_data(temp_type : &TemperatureType) -> crate::utils::error::Result<Vec<TempData>> { +pub async fn get_temperature_data(sys : &System, temp_type : &TemperatureType) -> crate::utils::error::Result<Vec<TempData>> { let mut temperature_vec : Vec<TempData> = Vec::new(); - let mut sensor_data = heim::sensors::temperatures(); - while let Some(sensor) = sensor_data.next().await { - if let Ok(sensor) = sensor { + if cfg!(target_os = "linux") { + let mut sensor_data = heim::sensors::temperatures(); + while let Some(sensor) = sensor_data.next().await { + if let Ok(sensor) = sensor { + temperature_vec.push(TempData { + component_name : Box::from(sensor.unit()), + temperature : match temp_type { + TemperatureType::Celsius => sensor.current().get::<thermodynamic_temperature::degree_celsius>(), + TemperatureType::Kelvin => sensor.current().get::<thermodynamic_temperature::kelvin>(), + TemperatureType::Fahrenheit => sensor.current().get::<thermodynamic_temperature::degree_fahrenheit>(), + }, + }); + } + } + } + else if cfg!(target_os = "windows") { + let sensor_data = sys.get_components_list(); + debug!("TEMPS: {:?}", sensor_data); + for component in sensor_data { temperature_vec.push(TempData { - component_name : Box::from(sensor.unit()), + component_name : Box::from(component.get_label()), temperature : match temp_type { - TemperatureType::Celsius => sensor.current().get::<thermodynamic_temperature::degree_celsius>(), - TemperatureType::Kelvin => sensor.current().get::<thermodynamic_temperature::kelvin>(), - TemperatureType::Fahrenheit => sensor.current().get::<thermodynamic_temperature::degree_fahrenheit>(), + TemperatureType::Celsius => component.get_temperature(), + TemperatureType::Kelvin => component.get_temperature() + 273.15, + TemperatureType::Fahrenheit => (component.get_temperature() * (9.0 / 5.0)) + 32.0, }, }); } |