Compare commits

..

4 Commits

Author SHA1 Message Date
Denis Benato
392436808d Fix text of armoury usage 2026-01-13 20:54:53 +01:00
Denis Benato
3d9a08d7e0 Silence the server 2026-01-13 20:18:49 +01:00
Denis Benato
ff103f98af Chore: change text of an error 2026-01-13 20:14:45 +01:00
Denis Benato
d05182ae64 chore: make the settings save code prettier 2026-01-13 19:29:37 +01:00
3 changed files with 45 additions and 31 deletions

View File

@@ -1192,7 +1192,7 @@ fn print_firmware_attr(attr: &AsusArmouryProxyBlocking) -> Result<(), Box<dyn st
fn handle_armoury_command(cmd: &ArmouryCommand) -> Result<(), Box<dyn std::error::Error>> { fn handle_armoury_command(cmd: &ArmouryCommand) -> Result<(), Box<dyn std::error::Error>> {
{ {
if cmd.free.is_empty() || (cmd.free.len() % 2 != 0) || cmd.help { if cmd.free.is_empty() || (cmd.free.len() % 2 != 0) || cmd.help {
const USAGE: &str = "Usage: asusctl platform panel_overdrive 1 nv_dynamic_boost 5"; const USAGE: &str = "Usage: asusctl armoury panel_overdrive 1 nv_dynamic_boost 5";
if cmd.free.len() % 2 != 0 { if cmd.free.len() % 2 != 0 {
println!( println!(
"Incorrect number of args, each attribute label must be paired with a setting:" "Incorrect number of args, each attribute label must be paired with a setting:"

View File

@@ -1,7 +1,7 @@
use std::sync::Arc; use std::sync::Arc;
use config_traits::StdConfig; use config_traits::StdConfig;
use log::{debug, error, info}; use log::{debug, error, info, warn};
use rog_platform::asus_armoury::{AttrValue, Attribute, FirmwareAttribute, FirmwareAttributes}; use rog_platform::asus_armoury::{AttrValue, Attribute, FirmwareAttribute, FirmwareAttributes};
use rog_platform::platform::{PlatformProfile, RogPlatform}; use rog_platform::platform::{PlatformProfile, RogPlatform};
use rog_platform::power::AsusPower; use rog_platform::power::AsusPower;
@@ -205,7 +205,13 @@ impl crate::Reloadable for AsusArmouryAttribute {
self.attr.base_path_exists(); self.attr.base_path_exists();
e e
})?; })?;
info!("Set {} to {:?}", self.attr.name(), tune); info!(
"Restored PPT armoury setting {} to {:?}",
self.attr.name(),
tune
);
} else {
info!("Ignored restoring PPT armoury setting {} as tuning group is disabled or no saved value", self.attr.name());
} }
} else { } else {
// Handle non-PPT attributes (boolean and other settings) // Handle non-PPT attributes (boolean and other settings)
@@ -213,7 +219,10 @@ impl crate::Reloadable for AsusArmouryAttribute {
self.attr self.attr
.set_current_value(&AttrValue::Integer(*saved_value)) .set_current_value(&AttrValue::Integer(*saved_value))
.map_err(|e| { .map_err(|e| {
error!("Could not set {} value: {e:?}", self.attr.name()); error!(
"Error restoring armoury setting {}: {e:?}",
self.attr.name()
);
self.attr.base_path_exists(); self.attr.base_path_exists();
e e
})?; })?;
@@ -222,6 +231,11 @@ impl crate::Reloadable for AsusArmouryAttribute {
self.attr.name(), self.attr.name(),
saved_value saved_value
); );
} else {
info!(
"No saved armoury setting for {}: skipping restore",
self.attr.name()
);
} }
} }
@@ -397,44 +411,44 @@ impl AsusArmouryAttribute {
self.attr self.attr
.set_current_value(&AttrValue::Integer(value)) .set_current_value(&AttrValue::Integer(value))
.map_err(|e| { .map_err(|e| {
error!("Could not set value: {e:?}"); error!(
"Could not set value to PPT property {}: {e:?}",
self.attr.name()
);
e e
})?; })?;
} else {
warn!(
"Tuning group is disabled: skipping setting value to PPT property {}",
self.attr.name()
);
} }
} else { } else {
self.attr self.attr
.set_current_value(&AttrValue::Integer(value)) .set_current_value(&AttrValue::Integer(value))
.map_err(|e| { .map_err(|e| {
error!("Could not set value: {e:?}"); error!(
"Could not set value {value} to attribute {}: {e:?}",
self.attr.name()
);
e e
})?; })?;
let has_attr = self let mut settings = self.config.lock().await;
.config settings
.lock()
.await
.armoury_settings .armoury_settings
.contains_key(&self.name()); .entry(self.name())
if has_attr { .and_modify(|setting| {
if let Some(setting) = self debug!("Set config for {} = {value}", self.attr.name());
.config *setting = value;
.lock() })
.await .or_insert_with(|| {
.armoury_settings debug!("Adding config for {} = {value}", self.attr.name());
.get_mut(&self.name()) value
{ });
*setting = value
}
} else {
debug!("Adding config for {}", self.attr.name());
self.config
.lock()
.await
.armoury_settings
.insert(self.name(), value);
debug!("Set config for {} = {:?}", self.attr.name(), value);
}
} }
// write config after setting value
self.config.lock().await.write(); self.config.lock().await.write();
Ok(()) Ok(())
} }

View File

@@ -9,7 +9,7 @@ Environment=IS_SERVICE=1
# Reduce noisy span logs while keeping useful debug info for asusd and related crates. # Reduce noisy span logs while keeping useful debug info for asusd and related crates.
# Keep global level at info but allow debug for our crates; silence tracing::span (very noisy) # Keep global level at info but allow debug for our crates; silence tracing::span (very noisy)
# RUST_LOG format: <module>=<level>,... (levels: error,warn,info,debug,trace) # RUST_LOG format: <module>=<level>,... (levels: error,warn,info,debug,trace)
Environment=RUST_LOG="info,asusd=debug,rog_platform=debug,tracing::span=error" Environment=RUST_LOG="info,asusd=debug,rog_platform=debug,tracing::span=error,zbus::object_server=error,zbus::connection::handshake::common=error,zbus::connection::handshake::client=error"
# required to prevent init issues with hid_asus and MCU # required to prevent init issues with hid_asus and MCU
ExecStartPre=/bin/sleep 1 ExecStartPre=/bin/sleep 1
ExecStart=/usr/bin/asusd ExecStart=/usr/bin/asusd