diff --git a/CHANGELOG.md b/CHANGELOG.md index b9047f24..1fcf7673 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased ] + +### Added +- Add panel overdrive support (autodetects if supported) +- Add detection of dgpu_disable and egpu_enable for diagnostic ### Changed - Fixed save and restore of multizone LED settings -- Add panel overdrive support (autodetects if supported) ## [4.2.0] - 2022-07-16 ### Added diff --git a/Cargo.lock b/Cargo.lock index 6be3078d..1c578a21 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -33,7 +33,7 @@ dependencies = [ [[package]] name = "asusctl" -version = "4.0.7" +version = "4.2.1" dependencies = [ "daemon", "gif", @@ -278,7 +278,7 @@ dependencies = [ [[package]] name = "daemon" -version = "4.2.0" +version = "4.2.1" dependencies = [ "async-trait", "env_logger", @@ -1034,7 +1034,7 @@ dependencies = [ [[package]] name = "rog_aura" -version = "1.1.1" +version = "1.1.2" dependencies = [ "serde", "serde_derive", @@ -1067,7 +1067,7 @@ dependencies = [ [[package]] name = "rog_supported" -version = "4.0.0" +version = "4.2.0" dependencies = [ "rog_aura", "serde", diff --git a/asusctl/Cargo.toml b/asusctl/Cargo.toml index 735a0cf3..1a72d092 100644 --- a/asusctl/Cargo.toml +++ b/asusctl/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "asusctl" -version = "4.0.7" +version = "4.2.1" authors = ["Luke D Jones "] edition = "2018" diff --git a/asusctl/src/main.rs b/asusctl/src/main.rs index bfbe55bd..ed1d6c6a 100644 --- a/asusctl/src/main.rs +++ b/asusctl/src/main.rs @@ -709,8 +709,8 @@ fn handle_bios_option( .collect(); for line in usage.iter().filter(|line| { - line.contains("sound") && supported.post_sound_toggle - || line.contains("GPU") && supported.dedicated_gfx_toggle + line.contains("sound") && supported.post_sound + || line.contains("GPU") && supported.dedicated_gfx || line.contains("panel") && supported.panel_overdrive }) { println!("{}", line); diff --git a/daemon/Cargo.toml b/daemon/Cargo.toml index 296a31a9..94a14c83 100644 --- a/daemon/Cargo.toml +++ b/daemon/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "daemon" -version = "4.2.0" +version = "4.2.1" license = "MPL-2.0" readme = "README.md" authors = ["Luke "] diff --git a/daemon/src/ctrl_aura/controller.rs b/daemon/src/ctrl_aura/controller.rs index c08a88c0..b2dbdc9b 100644 --- a/daemon/src/ctrl_aura/controller.rs +++ b/daemon/src/ctrl_aura/controller.rs @@ -490,7 +490,7 @@ mod tests { .set_effect(effect.clone()) .unwrap_err() .to_string(), - "Aura efect not supported" + "Aura effect not supported" ); effect.mode = AuraModeNum::Static; @@ -500,7 +500,7 @@ mod tests { .set_effect(effect.clone()) .unwrap_err() .to_string(), - "Aura efect not supported" + "Aura effect not supported" ); controller.supported_modes.multizone.push(AuraZone::Key2); diff --git a/daemon/src/ctrl_aura/zbus.rs b/daemon/src/ctrl_aura/zbus.rs index 16e23b7d..893c85e5 100644 --- a/daemon/src/ctrl_aura/zbus.rs +++ b/daemon/src/ctrl_aura/zbus.rs @@ -46,7 +46,7 @@ impl CtrlKbdLedZbus { &mut self, #[zbus(signal_context)] ctxt: SignalContext<'_>, enabled: Vec, - ) { + ) -> zbus::fdo::Result<()> { let mut states = None; if let Ok(mut ctrl) = self.0.try_lock() { for s in enabled { @@ -54,9 +54,10 @@ impl CtrlKbdLedZbus { } ctrl.config.write(); - ctrl.set_power_states(&ctrl.config) - .map_err(|err| warn!("{}", err)) - .ok(); + ctrl.set_power_states(&ctrl.config).map_err(|e| { + warn!("{}", e); + e + })?; let set: Vec = ctrl.config.enabled.iter().map(|v| *v).collect(); states = Some(set); @@ -67,13 +68,14 @@ impl CtrlKbdLedZbus { .await .unwrap_or_else(|err| warn!("{}", err)); } + Ok(()) } async fn set_leds_disabled( &mut self, #[zbus(signal_context)] ctxt: SignalContext<'_>, disabled: Vec, - ) { + ) -> zbus::fdo::Result<()> { let mut states = None; if let Ok(mut ctrl) = self.0.try_lock() { for s in disabled { @@ -81,9 +83,10 @@ impl CtrlKbdLedZbus { } ctrl.config.write(); - ctrl.set_power_states(&ctrl.config) - .map_err(|err| warn!("{}", err)) - .ok(); + ctrl.set_power_states(&ctrl.config).map_err(|e| { + warn!("{}", e); + e + })?; let set: Vec = ctrl.config.enabled.iter().map(|v| *v).collect(); states = Some(set); @@ -94,24 +97,22 @@ impl CtrlKbdLedZbus { .await .unwrap_or_else(|err| warn!("{}", err)); } + Ok(()) } async fn set_led_mode( &mut self, #[zbus(signal_context)] ctxt: SignalContext<'_>, effect: AuraEffect, - ) { + ) -> zbus::fdo::Result<()> { let mut led = None; if let Ok(mut ctrl) = self.0.try_lock() { - match ctrl.set_effect(effect) { - Ok(_) => { - if let Some(mode) = ctrl.config.builtins.get(&ctrl.config.current_mode) { - led = Some(mode.clone()); - } - } - Err(err) => { - warn!("{}", err); - } + ctrl.set_effect(effect).map_err(|e| { + warn!("{}", e); + e + })?; + if let Some(mode) = ctrl.config.builtins.get(&ctrl.config.current_mode) { + led = Some(mode.clone()); } } if let Some(led) = led { @@ -119,13 +120,19 @@ impl CtrlKbdLedZbus { .await .unwrap_or_else(|err| warn!("{}", err)); } + Ok(()) } - async fn next_led_mode(&self, #[zbus(signal_context)] ctxt: SignalContext<'_>) { + async fn next_led_mode( + &self, + #[zbus(signal_context)] ctxt: SignalContext<'_>, + ) -> zbus::fdo::Result<()> { let mut led = None; if let Ok(mut ctrl) = self.0.lock() { - ctrl.toggle_mode(false) - .unwrap_or_else(|err| warn!("{}", err)); + ctrl.toggle_mode(false).map_err(|e| { + warn!("{}", e); + e + })?; if let Some(mode) = ctrl.config.builtins.get(&ctrl.config.current_mode) { led = Some(mode.clone()); @@ -136,13 +143,19 @@ impl CtrlKbdLedZbus { .await .unwrap_or_else(|err| warn!("{}", err)); } + Ok(()) } - async fn prev_led_mode(&self, #[zbus(signal_context)] ctxt: SignalContext<'_>) { + async fn prev_led_mode( + &self, + #[zbus(signal_context)] ctxt: SignalContext<'_>, + ) -> zbus::fdo::Result<()> { let mut led = None; if let Ok(mut ctrl) = self.0.lock() { - ctrl.toggle_mode(true) - .unwrap_or_else(|err| warn!("{}", err)); + ctrl.toggle_mode(true).map_err(|e| { + warn!("{}", e); + e + })?; if let Some(mode) = ctrl.config.builtins.get(&ctrl.config.current_mode) { led = Some(mode.clone()); @@ -153,20 +166,27 @@ impl CtrlKbdLedZbus { .await .unwrap_or_else(|err| warn!("{}", err)); } + Ok(()) } - async fn next_led_brightness(&self) { + async fn next_led_brightness(&self) -> zbus::fdo::Result<()> { if let Ok(mut ctrl) = self.0.try_lock() { - ctrl.next_brightness() - .unwrap_or_else(|err| warn!("{}", err)); + ctrl.next_brightness().map_err(|e| { + warn!("{}", e); + e + })?; } + Ok(()) } - async fn prev_led_brightness(&self) { + async fn prev_led_brightness(&self) -> zbus::fdo::Result<()> { if let Ok(mut ctrl) = self.0.try_lock() { - ctrl.prev_brightness() - .unwrap_or_else(|err| warn!("{}", err)); + ctrl.prev_brightness().map_err(|e| { + warn!("{}", e); + e + })?; } + Ok(()) } #[dbus_interface(property)] diff --git a/daemon/src/ctrl_rog_bios.rs b/daemon/src/ctrl_rog_bios.rs index 0b687f24..dabf565e 100644 --- a/daemon/src/ctrl_rog_bios.rs +++ b/daemon/src/ctrl_rog_bios.rs @@ -20,6 +20,8 @@ static ASUS_SWITCH_GRAPHIC_MODE: &str = static ASUS_POST_LOGO_SOUND: &str = "/sys/firmware/efi/efivars/AsusPostLogoSound-607005d5-3f75-4b2e-98f0-85ba66797a3e"; static ASUS_PANEL_OD_PATH: &str = "/sys/devices/platform/asus-nb-wmi/panel_od"; +static ASUS_DGPU_DISABLE_PATH: &str = "/sys/devices/platform/asus-nb-wmi/dgpu_disable"; +static ASUS_EGPU_ENABLE_PATH: &str = "/sys/devices/platform/asus-nb-wmi/egpu_enable"; pub struct CtrlRogBios { _config: Arc>, @@ -30,9 +32,11 @@ impl GetSupported for CtrlRogBios { fn get_supported() -> Self::A { RogBiosSupportedFunctions { - post_sound_toggle: Path::new(ASUS_POST_LOGO_SOUND).exists(), - dedicated_gfx_toggle: Path::new(ASUS_SWITCH_GRAPHIC_MODE).exists(), + post_sound: Path::new(ASUS_POST_LOGO_SOUND).exists(), + dedicated_gfx: Path::new(ASUS_SWITCH_GRAPHIC_MODE).exists(), panel_overdrive: Path::new(ASUS_PANEL_OD_PATH).exists(), + dgpu_disable: Path::new(ASUS_DGPU_DISABLE_PATH).exists(), + egpu_enable: Path::new(ASUS_EGPU_ENABLE_PATH).exists(), } } } diff --git a/daemon/src/error.rs b/daemon/src/error.rs index 7c71ebde..67853b50 100644 --- a/daemon/src/error.rs +++ b/daemon/src/error.rs @@ -51,7 +51,7 @@ impl fmt::Display for RogError { RogError::Io(detail) => write!(f, "std::io error: {}", detail), RogError::Zbus(detail) => write!(f, "Zbus error: {}", detail), RogError::ChargeLimit(value) => write!(f, "Invalid charging limit, not in range 20-100%: {}", value), - RogError::AuraEffectNotSupported => write!(f, "Aura efect not supported"), + RogError::AuraEffectNotSupported => write!(f, "Aura effect not supported"), RogError::NoAuraKeyboard => write!(f, "No supported Aura keyboard"), RogError::NoAuraNode => write!(f, "No Aura keyboard node found"), } diff --git a/rog-aura/Cargo.toml b/rog-aura/Cargo.toml index 3e11fd08..d3139d22 100644 --- a/rog-aura/Cargo.toml +++ b/rog-aura/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rog_aura" -version = "1.1.1" +version = "1.1.2" license = "MPL-2.0" readme = "README.md" authors = ["Luke "] diff --git a/rog-supported/Cargo.toml b/rog-supported/Cargo.toml index dba59c44..d8da8eb1 100644 --- a/rog-supported/Cargo.toml +++ b/rog-supported/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rog_supported" -version = "4.0.0" +version = "4.2.0" license = "MPL-2.0" readme = "README.md" authors = ["Luke "] diff --git a/rog-supported/src/lib.rs b/rog-supported/src/lib.rs index c2118d50..3de399e6 100644 --- a/rog-supported/src/lib.rs +++ b/rog-supported/src/lib.rs @@ -38,9 +38,11 @@ pub struct LedSupportedFunctions { #[derive(Serialize, Deserialize, Type, Debug)] pub struct RogBiosSupportedFunctions { - pub post_sound_toggle: bool, - pub dedicated_gfx_toggle: bool, + pub post_sound: bool, + pub dedicated_gfx: bool, pub panel_overdrive: bool, + pub dgpu_disable: bool, + pub egpu_enable: bool, } impl fmt::Display for SupportedFunctions { @@ -88,7 +90,11 @@ impl fmt::Display for LedSupportedFunctions { impl fmt::Display for RogBiosSupportedFunctions { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { writeln!(f, "ROG BIOS:")?; - writeln!(f, "\tPOST sound toggle: {}", self.post_sound_toggle)?; - writeln!(f, "\tDedicated GFX toggle: {}", self.dedicated_gfx_toggle) + writeln!(f, "\tPOST sound switch: {}", self.post_sound)?; + writeln!(f, "\tPanel Overdrive: {}", self.panel_overdrive)?; + writeln!(f, "\tdGPU disable switch: {}", self.dgpu_disable)?; + writeln!(f, "\teGPU enable switch: {}", self.egpu_enable)?; + writeln!(f, "\tDedicated GFX switch: {}", self.dedicated_gfx)?; + Ok(()) } }