summaryrefslogtreecommitdiffstats
path: root/src/app
diff options
context:
space:
mode:
authorClement Tsang <clementjhtsang@gmail.com>2019-09-25 00:27:43 -0400
committerClementTsang <clementjhtsang@gmail.com>2019-09-25 01:59:47 -0400
commitbc3169a4df3c0749f6ea08fbca7b235cce3f77d7 (patch)
tree7e9fc0aaf0fe187c73b7fb6fe811fd1a277239ac /src/app
parentcb9ec2cdca7fe8d49a54d254bb590d23cf84229f (diff)
Added some more support for windows.
Diffstat (limited to 'src/app')
-rw-r--r--src/app/data_collection.rs5
-rw-r--r--src/app/data_collection/temperature.rs33
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,
},
});
}