forked from NG-SD-Plugins/PowerTools
Fix compile errors from smokepatio refactor, fix warnings from new compiler version
This commit is contained in:
parent
4eaf6fae2b
commit
743f642580
11 changed files with 58 additions and 34 deletions
7
backend/Cargo.lock
generated
7
backend/Cargo.lock
generated
|
@ -370,6 +370,12 @@ version = "1.9.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
|
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "embedded-io"
|
||||||
|
version = "0.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "encoding"
|
name = "encoding"
|
||||||
version = "0.2.33"
|
version = "0.2.33"
|
||||||
|
@ -1327,6 +1333,7 @@ dependencies = [
|
||||||
name = "smokepatio"
|
name = "smokepatio"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"embedded-io",
|
||||||
"log",
|
"log",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ simplelog = "0.12"
|
||||||
limits_core = { version = "3", path = "./limits_core" }
|
limits_core = { version = "3", path = "./limits_core" }
|
||||||
community_settings_core = { version = "0.1", path = "./community_settings_core" }
|
community_settings_core = { version = "0.1", path = "./community_settings_core" }
|
||||||
regex = "1"
|
regex = "1"
|
||||||
smokepatio = { version = "*", path = "../../smokepatio" }
|
smokepatio = { version = "0.1", features = [ "std" ], path = "../../smokepatio" }
|
||||||
#libryzenadj = { version = "0.14", path = "../../libryzenadj-rs-14" }
|
#libryzenadj = { version = "0.14", path = "../../libryzenadj-rs-14" }
|
||||||
libryzenadj = { version = "0.13" }
|
libryzenadj = { version = "0.13" }
|
||||||
# ureq's tls feature does not like musl targets
|
# ureq's tls feature does not like musl targets
|
||||||
|
|
|
@ -13,6 +13,6 @@ pub use file::FileJson;
|
||||||
pub use general::{MinMaxJson, SettingsJson};
|
pub use general::{MinMaxJson, SettingsJson};
|
||||||
pub use gpu::GpuJson;
|
pub use gpu::GpuJson;
|
||||||
|
|
||||||
pub use error::{SerdeError, RonError};
|
pub use error::SerdeError;
|
||||||
|
|
||||||
pub const LATEST_VERSION: u64 = 0;
|
pub const LATEST_VERSION: u64 = 0;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
mod cpu;
|
mod cpu;
|
||||||
mod gpu;
|
mod gpu;
|
||||||
|
|
||||||
pub use cpu::{Cpu, Cpus};
|
pub use cpu::Cpus;
|
||||||
pub use gpu::Gpu;
|
pub use gpu::Gpu;
|
||||||
|
|
||||||
fn _impl_checker() {
|
fn _impl_checker() {
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
use std::convert::Into;
|
use std::convert::Into;
|
||||||
use std::sync::Arc;
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
use sysfuss::{PowerSupplyAttribute, PowerSupplyPath, HwMonAttribute, HwMonAttributeItem, HwMonAttributeType, HwMonPath, SysEntity, SysEntityAttributesExt, SysAttribute};
|
use sysfuss::{PowerSupplyAttribute, PowerSupplyPath, HwMonAttribute, HwMonAttributeItem, HwMonAttributeType, HwMonPath, SysEntity, SysEntityAttributesExt, SysAttribute};
|
||||||
use sysfuss::capability::attributes;
|
use sysfuss::capability::attributes;
|
||||||
|
|
||||||
use limits_core::json_v2::GenericBatteryLimit;
|
use limits_core::json_v2::GenericBatteryLimit;
|
||||||
|
|
||||||
use smokepatio::ec::ChargeMode;
|
use smokepatio::ec::{ControllerSet, unnamed_power::{UnnamedPowerEC, ChargeMode}};
|
||||||
use crate::api::RangeLimit;
|
use crate::api::RangeLimit;
|
||||||
use crate::persist::{BatteryEventJson, BatteryJson};
|
use crate::persist::{BatteryEventJson, BatteryJson};
|
||||||
use crate::settings::{TBattery, ProviderBuilder};
|
use crate::settings::{TBattery, ProviderBuilder};
|
||||||
|
@ -21,6 +21,7 @@ pub struct Battery {
|
||||||
state: crate::state::steam_deck::Battery,
|
state: crate::state::steam_deck::Battery,
|
||||||
sysfs_bat: PowerSupplyPath,
|
sysfs_bat: PowerSupplyPath,
|
||||||
sysfs_hwmon: Arc<HwMonPath>,
|
sysfs_hwmon: Arc<HwMonPath>,
|
||||||
|
bat_ec: Arc<Mutex<UnnamedPowerEC>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
|
@ -39,6 +40,7 @@ struct EventInstruction {
|
||||||
charge_mode: Option<ChargeMode>,
|
charge_mode: Option<ChargeMode>,
|
||||||
is_triggered: bool,
|
is_triggered: bool,
|
||||||
sysfs_hwmon: Arc<HwMonPath>,
|
sysfs_hwmon: Arc<HwMonPath>,
|
||||||
|
bat_ec: Arc<Mutex<UnnamedPowerEC>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl OnPowerEvent for EventInstruction {
|
impl OnPowerEvent for EventInstruction {
|
||||||
|
@ -116,7 +118,7 @@ impl EventInstruction {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn from_json(other: BatteryEventJson, _version: u64, hwmon: Arc<HwMonPath>) -> Self {
|
fn from_json(other: BatteryEventJson, _version: u64, hwmon: Arc<HwMonPath>, ec: Arc<Mutex<UnnamedPowerEC>>) -> Self {
|
||||||
Self {
|
Self {
|
||||||
trigger: Self::str_to_trigger(&other.trigger).unwrap_or(EventTrigger::Ignored),
|
trigger: Self::str_to_trigger(&other.trigger).unwrap_or(EventTrigger::Ignored),
|
||||||
charge_rate: other.charge_rate,
|
charge_rate: other.charge_rate,
|
||||||
|
@ -126,17 +128,17 @@ impl EventInstruction {
|
||||||
.flatten(),
|
.flatten(),
|
||||||
is_triggered: false,
|
is_triggered: false,
|
||||||
sysfs_hwmon: hwmon,
|
sysfs_hwmon: hwmon,
|
||||||
|
bat_ec: ec,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_charge_mode(&self) -> Result<(), SettingError> {
|
fn set_charge_mode(&self) -> Result<(), SettingError> {
|
||||||
if let Some(charge_mode) = self.charge_mode {
|
if let Some(charge_mode) = self.charge_mode {
|
||||||
smokepatio::ec::set(smokepatio::ec::Setting::ChargeMode, charge_mode as _)
|
let mut lock = self.bat_ec.lock().expect("failed to lock battery controller");
|
||||||
.map_err(|e| SettingError {
|
lock.set(charge_mode).map_err(|_| SettingError {
|
||||||
msg: format!("Failed to set charge mode: {}", e),
|
msg: format!("Failed to set charge mode"),
|
||||||
setting: crate::settings::SettingVariant::Battery,
|
setting: crate::settings::SettingVariant::Battery,
|
||||||
})
|
})
|
||||||
.map(|_| ())
|
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -329,20 +331,18 @@ impl Battery {
|
||||||
fn set_charge_mode(&mut self) -> Result<(), SettingError> {
|
fn set_charge_mode(&mut self) -> Result<(), SettingError> {
|
||||||
if let Some(charge_mode) = self.charge_mode {
|
if let Some(charge_mode) = self.charge_mode {
|
||||||
self.state.charge_mode_set = true;
|
self.state.charge_mode_set = true;
|
||||||
smokepatio::ec::set(smokepatio::ec::Setting::ChargeMode, charge_mode as _)
|
let mut lock = self.bat_ec.lock().expect("Failed to lock battery controller");
|
||||||
.map_err(|e| SettingError {
|
lock.set(charge_mode).map_err(|_| SettingError {
|
||||||
msg: format!("Failed to set charge mode: {}", e),
|
msg: format!("Failed to set charge mode"),
|
||||||
setting: crate::settings::SettingVariant::Battery,
|
setting: crate::settings::SettingVariant::Battery,
|
||||||
})
|
})
|
||||||
.map(|_| ())
|
|
||||||
} else if self.state.charge_mode_set {
|
} else if self.state.charge_mode_set {
|
||||||
self.state.charge_mode_set = false;
|
self.state.charge_mode_set = false;
|
||||||
smokepatio::ec::set(smokepatio::ec::Setting::ChargeMode, ChargeMode::Normal as _)
|
let mut lock = self.bat_ec.lock().expect("Failed to lock battery controller");
|
||||||
.map_err(|e| SettingError {
|
lock.set(ChargeMode::Normal).map_err(|_| SettingError {
|
||||||
msg: format!("Failed to set charge mode: {}", e),
|
msg: format!("Failed to set charge mode"),
|
||||||
setting: crate::settings::SettingVariant::Battery,
|
setting: crate::settings::SettingVariant::Battery,
|
||||||
})
|
})
|
||||||
.map(|_| ())
|
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -488,6 +488,7 @@ impl Into<BatteryJson> for Battery {
|
||||||
impl ProviderBuilder<BatteryJson, GenericBatteryLimit> for Battery {
|
impl ProviderBuilder<BatteryJson, GenericBatteryLimit> for Battery {
|
||||||
fn from_json_and_limits(persistent: BatteryJson, version: u64, limits: GenericBatteryLimit) -> Self {
|
fn from_json_and_limits(persistent: BatteryJson, version: u64, limits: GenericBatteryLimit) -> Self {
|
||||||
let hwmon_sys = Arc::new(Self::find_hwmon_sysfs(None::<&'static str>));
|
let hwmon_sys = Arc::new(Self::find_hwmon_sysfs(None::<&'static str>));
|
||||||
|
let ec = Arc::new(Mutex::new(UnnamedPowerEC::new()));
|
||||||
match version {
|
match version {
|
||||||
0 => Self {
|
0 => Self {
|
||||||
charge_rate: persistent.charge_rate,
|
charge_rate: persistent.charge_rate,
|
||||||
|
@ -498,12 +499,13 @@ impl ProviderBuilder<BatteryJson, GenericBatteryLimit> for Battery {
|
||||||
events: persistent
|
events: persistent
|
||||||
.events
|
.events
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|x| EventInstruction::from_json(x, version, hwmon_sys.clone()))
|
.map(|x| EventInstruction::from_json(x, version, hwmon_sys.clone(), ec.clone()))
|
||||||
.collect(),
|
.collect(),
|
||||||
limits: limits,
|
limits: limits,
|
||||||
state: crate::state::steam_deck::Battery::default(),
|
state: crate::state::steam_deck::Battery::default(),
|
||||||
sysfs_bat: Self::find_battery_sysfs(None::<&'static str>),
|
sysfs_bat: Self::find_battery_sysfs(None::<&'static str>),
|
||||||
sysfs_hwmon: hwmon_sys,
|
sysfs_hwmon: hwmon_sys,
|
||||||
|
bat_ec: ec,
|
||||||
},
|
},
|
||||||
_ => Self {
|
_ => Self {
|
||||||
charge_rate: persistent.charge_rate,
|
charge_rate: persistent.charge_rate,
|
||||||
|
@ -514,12 +516,13 @@ impl ProviderBuilder<BatteryJson, GenericBatteryLimit> for Battery {
|
||||||
events: persistent
|
events: persistent
|
||||||
.events
|
.events
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|x| EventInstruction::from_json(x, version, hwmon_sys.clone()))
|
.map(|x| EventInstruction::from_json(x, version, hwmon_sys.clone(), ec.clone()))
|
||||||
.collect(),
|
.collect(),
|
||||||
limits: limits,
|
limits: limits,
|
||||||
state: crate::state::steam_deck::Battery::default(),
|
state: crate::state::steam_deck::Battery::default(),
|
||||||
sysfs_bat: Self::find_battery_sysfs(None::<&'static str>),
|
sysfs_bat: Self::find_battery_sysfs(None::<&'static str>),
|
||||||
sysfs_hwmon: hwmon_sys,
|
sysfs_hwmon: hwmon_sys,
|
||||||
|
bat_ec: ec,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -533,6 +536,7 @@ impl ProviderBuilder<BatteryJson, GenericBatteryLimit> for Battery {
|
||||||
state: crate::state::steam_deck::Battery::default(),
|
state: crate::state::steam_deck::Battery::default(),
|
||||||
sysfs_bat: Self::find_battery_sysfs(None::<&'static str>),
|
sysfs_bat: Self::find_battery_sysfs(None::<&'static str>),
|
||||||
sysfs_hwmon: Arc::new(Self::find_hwmon_sysfs(None::<&'static str>)),
|
sysfs_hwmon: Arc::new(Self::find_hwmon_sysfs(None::<&'static str>)),
|
||||||
|
bat_ec: Arc::new(Mutex::new(UnnamedPowerEC::new())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -728,6 +732,7 @@ impl TBattery for Battery {
|
||||||
charge_mode: Some(ChargeMode::Idle),
|
charge_mode: Some(ChargeMode::Idle),
|
||||||
is_triggered: false,
|
is_triggered: false,
|
||||||
sysfs_hwmon: self.sysfs_hwmon.clone(),
|
sysfs_hwmon: self.sysfs_hwmon.clone(),
|
||||||
|
bat_ec: self.bat_ec.clone(),
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
self.events.remove(index);
|
self.events.remove(index);
|
||||||
|
@ -743,6 +748,7 @@ impl TBattery for Battery {
|
||||||
charge_mode: Some(ChargeMode::Idle),
|
charge_mode: Some(ChargeMode::Idle),
|
||||||
is_triggered: false,
|
is_triggered: false,
|
||||||
sysfs_hwmon: self.sysfs_hwmon.clone(),
|
sysfs_hwmon: self.sysfs_hwmon.clone(),
|
||||||
|
bat_ec: self.bat_ec.clone(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// lower limit
|
// lower limit
|
||||||
|
@ -760,6 +766,7 @@ impl TBattery for Battery {
|
||||||
charge_mode: Some(ChargeMode::Normal),
|
charge_mode: Some(ChargeMode::Normal),
|
||||||
is_triggered: false,
|
is_triggered: false,
|
||||||
sysfs_hwmon: self.sysfs_hwmon.clone(),
|
sysfs_hwmon: self.sysfs_hwmon.clone(),
|
||||||
|
bat_ec: self.bat_ec.clone(),
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
self.events.remove(index);
|
self.events.remove(index);
|
||||||
|
@ -776,6 +783,7 @@ impl TBattery for Battery {
|
||||||
charge_mode: Some(ChargeMode::Normal),
|
charge_mode: Some(ChargeMode::Normal),
|
||||||
is_triggered: false,
|
is_triggered: false,
|
||||||
sysfs_hwmon: self.sysfs_hwmon.clone(),
|
sysfs_hwmon: self.sysfs_hwmon.clone(),
|
||||||
|
bat_ec: self.bat_ec.clone(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ mod power_dpm_force;
|
||||||
mod util;
|
mod util;
|
||||||
|
|
||||||
pub use battery::Battery;
|
pub use battery::Battery;
|
||||||
pub use cpu::{Cpu, Cpus};
|
pub use cpu::Cpus;
|
||||||
pub use gpu::Gpu;
|
pub use gpu::Gpu;
|
||||||
pub(self) use power_dpm_force::{POWER_DPM_FORCE_PERFORMANCE_LEVEL_MGMT, DPM_FORCE_LIMITS_ATTRIBUTE};
|
pub(self) use power_dpm_force::{POWER_DPM_FORCE_PERFORMANCE_LEVEL_MGMT, DPM_FORCE_LIMITS_ATTRIBUTE};
|
||||||
|
|
||||||
|
|
|
@ -27,15 +27,18 @@ const THINGS: &[u8] = &[
|
||||||
const TIME_UNIT: std::time::Duration = std::time::Duration::from_millis(200);
|
const TIME_UNIT: std::time::Duration = std::time::Duration::from_millis(200);
|
||||||
|
|
||||||
pub fn flash_led() {
|
pub fn flash_led() {
|
||||||
|
use smokepatio::ec::ControllerSet;
|
||||||
|
let mut ec = smokepatio::ec::unnamed_power::UnnamedPowerEC::new();
|
||||||
for &code in THINGS {
|
for &code in THINGS {
|
||||||
let on = code != 0;
|
let on = code != 0;
|
||||||
if let Err(e) = smokepatio::ec::led::constant::set(if on { smokepatio::ec::led::constant::Colour::White } else { smokepatio::ec::led::constant::Colour::Off }) {
|
let colour = if on { smokepatio::ec::unnamed_power::StaticColour::Red } else { smokepatio::ec::unnamed_power::StaticColour::Off };
|
||||||
|
if let Err(e) = ec.set(colour) {
|
||||||
log::error!("Thing err: {}", e);
|
log::error!("Thing err: {}", e);
|
||||||
}
|
}
|
||||||
std::thread::sleep(TIME_UNIT);
|
std::thread::sleep(TIME_UNIT);
|
||||||
}
|
}
|
||||||
log::debug!("Restoring LED state");
|
log::debug!("Restoring LED state");
|
||||||
smokepatio::ec::led::constant::set(smokepatio::ec::led::constant::Colour::Off)
|
ec.set(smokepatio::ec::unnamed_power::StaticColour::Off)
|
||||||
.map_err(|e| log::error!("Failed to restore LED status: {}", e))
|
.map_err(|e| log::error!("Failed to restore LED status: {}", e))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ mod cpu;
|
||||||
mod gpu;
|
mod gpu;
|
||||||
|
|
||||||
pub use battery::Battery;
|
pub use battery::Battery;
|
||||||
pub use cpu::{Cpu, Cpus};
|
pub use cpu::Cpus;
|
||||||
pub use gpu::Gpu;
|
pub use gpu::Gpu;
|
||||||
|
|
||||||
fn _impl_checker() {
|
fn _impl_checker() {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
mod error;
|
//mod error;
|
||||||
mod traits;
|
//mod traits;
|
||||||
|
|
||||||
pub mod generic;
|
pub mod generic;
|
||||||
pub mod steam_deck;
|
pub mod steam_deck;
|
||||||
|
|
||||||
pub use error::StateError;
|
//pub use error::StateError;
|
||||||
pub use traits::OnPoll;
|
//pub use traits::OnPoll;
|
||||||
|
|
|
@ -30,6 +30,8 @@ export const SLOW_MEMORY_GPU = "GPU_slow_memory";
|
||||||
export const PERSISTENT_GEN = "GENERAL_persistent";
|
export const PERSISTENT_GEN = "GENERAL_persistent";
|
||||||
export const NAME_GEN = "GENERAL_name";
|
export const NAME_GEN = "GENERAL_name";
|
||||||
export const PATH_GEN = "GENERAL_path";
|
export const PATH_GEN = "GENERAL_path";
|
||||||
|
export const VARIANTS_GEN = "GENERAL_setting_variants";
|
||||||
|
export const CURRENT_VARIANT_GEN = "GENERAL_current_variant";
|
||||||
|
|
||||||
export const MESSAGE_LIST = "MESSAGE_messages";
|
export const MESSAGE_LIST = "MESSAGE_messages";
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,8 @@ import {
|
||||||
PERSISTENT_GEN,
|
PERSISTENT_GEN,
|
||||||
NAME_GEN,
|
NAME_GEN,
|
||||||
PATH_GEN,
|
PATH_GEN,
|
||||||
|
VARIANTS_GEN,
|
||||||
|
CURRENT_VARIANT_GEN,
|
||||||
|
|
||||||
MESSAGE_LIST,
|
MESSAGE_LIST,
|
||||||
|
|
||||||
|
@ -158,6 +160,8 @@ const reload = function() {
|
||||||
backend.resolve(backend.getGeneralPersistent(), (value: boolean) => { set_value(PERSISTENT_GEN, value) });
|
backend.resolve(backend.getGeneralPersistent(), (value: boolean) => { set_value(PERSISTENT_GEN, value) });
|
||||||
backend.resolve(backend.getGeneralSettingsName(), (name: string) => { set_value(NAME_GEN, name) });
|
backend.resolve(backend.getGeneralSettingsName(), (name: string) => { set_value(NAME_GEN, name) });
|
||||||
backend.resolve(backend.getGeneralSettingsPath(), (path: string) => { set_value(PATH_GEN, path) });
|
backend.resolve(backend.getGeneralSettingsPath(), (path: string) => { set_value(PATH_GEN, path) });
|
||||||
|
backend.resolve(backend.getAllSettingVariants(), (variants: backend.VariantInfo[]) => { set_value(VARIANTS_GEN, variants) });
|
||||||
|
backend.resolve(backend.getCurrentSettingVariant(), (variant: backend.VariantInfo) => { set_value(CURRENT_VARIANT_GEN, variant) });
|
||||||
|
|
||||||
backend.resolve(backend.getInfo(), (info: string) => { set_value(BACKEND_INFO, info) });
|
backend.resolve(backend.getInfo(), (info: string) => { set_value(BACKEND_INFO, info) });
|
||||||
backend.resolve(backend.getDriverProviderName("gpu"), (driver: string) => { set_value(DRIVER_INFO, driver) });
|
backend.resolve(backend.getDriverProviderName("gpu"), (driver: string) => { set_value(DRIVER_INFO, driver) });
|
||||||
|
|
Loading…
Reference in a new issue