Fix applying disabled and enabled fan curves

This commit is contained in:
Luke D. Jones
2024-03-14 21:10:23 +13:00
parent 6b0edc6da1
commit e8627fde4c
11 changed files with 191 additions and 141 deletions

View File

@@ -118,7 +118,7 @@ pub struct AuraConfig {
impl StdConfig for AuraConfig {
/// Detect the keyboard type and load from default DB if data available
fn new() -> Self {
warn!("AuraConfig: creating new config");
warn!("creating new config");
let mut prod_id = AuraDevice::Unknown;
for prod in ASUS_KEYBOARD_DEVICES {
if HidRaw::new(prod.into()).is_ok() {
@@ -171,7 +171,7 @@ impl AuraConfig {
};
for n in &support_data.basic_modes {
debug!("AuraConfig: creating default for {n}");
debug!("creating default for {n}");
config
.builtins
.insert(*n, AuraEffect::default_with_mode(*n));

View File

@@ -288,9 +288,9 @@ impl CtrlTask for CtrlAuraZbus {
impl crate::Reloadable for CtrlAuraZbus {
async fn reload(&mut self) -> Result<(), RogError> {
let mut ctrl = self.0.lock().await;
debug!("CtrlKbdLedZbus: reloading keyboard mode");
debug!("reloading keyboard mode");
ctrl.write_current_config_mode()?;
debug!("CtrlKbdLedZbus: reloading power states");
debug!("reloading power states");
ctrl.set_power_states().map_err(|err| warn!("{err}")).ok();
Ok(())
}

View File

@@ -15,7 +15,6 @@ use zbus::{interface, Connection, SignalContext};
use crate::error::RogError;
use crate::{CtrlTask, CONFIG_PATH_BASE};
const MOD_NAME: &str = "FanCurveZbus";
pub const FAN_CURVE_ZBUS_NAME: &str = "FanCurves";
pub const FAN_CURVE_ZBUS_PATH: &str = "/org/asuslinux/FanCurves";
@@ -55,15 +54,15 @@ impl CtrlFanCurveZbus {
pub fn new() -> Result<Self, RogError> {
let platform = RogPlatform::new()?;
if platform.has_throttle_thermal_policy() {
info!("{MOD_NAME}: Device has profile control available");
info!("Device has profile control available");
find_fan_curve_node()?;
info!("{MOD_NAME}: Device has fan curves available");
let mut config = FanCurveConfig::new();
info!("Device has fan curves available");
let mut config = FanCurveConfig::new().load();
let mut fan_curves = FanCurveProfiles::default();
// Only do defaults if the config doesn't already exist\
if config.profiles.balanced.is_empty() || !config.file_path().exists() {
info!("{MOD_NAME}: Fetching default fan curves");
info!("Fetching default fan curves");
let current = platform.get_throttle_thermal_policy()?;
for this in [
@@ -78,7 +77,7 @@ impl CtrlFanCurveZbus {
let mut dev = find_fan_curve_node()?;
fan_curves.set_active_curve_to_defaults(this, &mut dev)?;
info!("{MOD_NAME}: {this:?}:");
info!("{this:?}:");
for curve in fan_curves.get_fan_curves_for(this) {
info!("{}", String::from(curve));
}
@@ -87,7 +86,7 @@ impl CtrlFanCurveZbus {
config.profiles = fan_curves;
config.write();
} else {
info!("{MOD_NAME}: Fan curves previously stored, loading...");
info!("Fan curves previously stored, loading...");
config = config.load();
}
@@ -244,7 +243,7 @@ impl CtrlTask for CtrlFanCurveZbus {
while (stream.next().await).is_some() {
debug!("watch_throttle_thermal_policy changed");
if let Ok(profile) = platform.get_throttle_thermal_policy().map_err(|e| {
error!("{MOD_NAME}: get_throttle_thermal_policy error: {e}");
error!("get_throttle_thermal_policy error: {e}");
}) {
if profile != config.lock().await.current {
fan_curves
@@ -255,9 +254,7 @@ impl CtrlTask for CtrlFanCurveZbus {
profile.into(),
&mut find_fan_curve_node().unwrap(),
)
.map_err(|e| {
warn!("{MOD_NAME}: write_profile_curve_to_platform, {}", e)
})
.map_err(|e| warn!("write_profile_curve_to_platform, {}", e))
.ok();
config.lock().await.current = profile;
}

View File

@@ -1,6 +1,5 @@
use std::env;
use std::error::Error;
use std::io::Write;
use std::sync::Arc;
use ::zbus::export::futures_util::lock::Mutex;
@@ -25,7 +24,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
logger
.parse_default_env()
.target(env_logger::Target::Stdout)
.format(|buf, record| writeln!(buf, "{}: {}", record.level(), record.args()))
.format_timestamp(None)
.init();
let is_service = match env::var_os("IS_SERVICE") {