From 7bc6c83a049cd818dfb28a5353e333813d87d44f Mon Sep 17 00:00:00 2001 From: "Luke D. Jones" Date: Wed, 27 Oct 2021 22:59:04 +1300 Subject: [PATCH] Check and pass error if charge limit not in 20-100 range Closes #144 --- CHANGELOG.md | 2 ++ Cargo.lock | 6 +++--- asusctl/Cargo.toml | 2 +- daemon/Cargo.toml | 2 +- daemon/src/ctrl_charge.rs | 11 ++++++----- daemon/src/error.rs | 2 ++ rog-profiles/Cargo.toml | 2 +- 7 files changed, 16 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94942ddb..ad193039 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Changed - Convert fan curve percentage to 0-255 expected by kernel driver only if '%' char is used, otherwise the expected range for fan power is 0-255 +- Use correct error in daemon for invalid charging limit +- Enforce charging limit values in range 20-100 ### Added - LED modes for G513QR diff --git a/Cargo.lock b/Cargo.lock index 4df48601..8ce13a75 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -44,7 +44,7 @@ dependencies = [ [[package]] name = "asusctl" -version = "4.0.4" +version = "4.0.5" dependencies = [ "daemon", "gif", @@ -208,7 +208,7 @@ dependencies = [ [[package]] name = "daemon" -version = "4.0.4" +version = "4.0.5" dependencies = [ "env_logger", "log", @@ -932,7 +932,7 @@ dependencies = [ [[package]] name = "rog_profiles" -version = "1.1.2" +version = "1.1.3" dependencies = [ "serde", "serde_derive", diff --git a/asusctl/Cargo.toml b/asusctl/Cargo.toml index e455719c..a768c117 100644 --- a/asusctl/Cargo.toml +++ b/asusctl/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "asusctl" -version = "4.0.4" +version = "4.0.5" authors = ["Luke D Jones "] edition = "2018" diff --git a/daemon/Cargo.toml b/daemon/Cargo.toml index f6fd8b6a..556b897d 100644 --- a/daemon/Cargo.toml +++ b/daemon/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "daemon" -version = "4.0.4" +version = "4.0.5" license = "MPL-2.0" readme = "README.md" authors = ["Luke "] diff --git a/daemon/src/ctrl_charge.rs b/daemon/src/ctrl_charge.rs index ba50bc94..b266396a 100644 --- a/daemon/src/ctrl_charge.rs +++ b/daemon/src/ctrl_charge.rs @@ -30,7 +30,10 @@ pub struct CtrlCharge { #[dbus_interface(name = "org.asuslinux.Daemon")] impl CtrlCharge { - pub fn set_limit(&mut self, limit: u8) { + pub fn set_limit(&mut self, limit: u8) -> Result<(), RogError> { + if !(20..=100).contains(&limit) { + return Err(RogError::ChargeLimit(limit)); + } if let Ok(mut config) = self.config.try_lock() { self.set(limit, &mut config) .map_err(|err| { @@ -45,6 +48,7 @@ impl CtrlCharge { }) .ok(); } + Ok(()) } pub fn limit(&self) -> i8 { @@ -106,10 +110,7 @@ impl CtrlCharge { pub(super) fn set(&self, limit: u8, config: &mut Config) -> Result<(), RogError> { if !(20..=100).contains(&limit) { - warn!( - "Unable to set battery charge limit, must be between 20-100: requested {}", - limit - ); + return Err(RogError::ChargeLimit(limit)); } let path = Self::get_battery_path()?; diff --git a/daemon/src/error.rs b/daemon/src/error.rs index bcfb9111..14f254ab 100644 --- a/daemon/src/error.rs +++ b/daemon/src/error.rs @@ -22,6 +22,7 @@ pub enum RogError { Modprobe(String), Io(std::io::Error), Zbus(zbus::Error), + ChargeLimit(u8), } impl fmt::Display for RogError { @@ -46,6 +47,7 @@ impl fmt::Display for RogError { RogError::Modprobe(detail) => write!(f, "Modprobe error: {}", detail), 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), } } } diff --git a/rog-profiles/Cargo.toml b/rog-profiles/Cargo.toml index baad34eb..1091ebf8 100644 --- a/rog-profiles/Cargo.toml +++ b/rog-profiles/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rog_profiles" -version = "1.1.2" +version = "1.1.3" authors = ["Luke D. Jones "] edition = "2018"