Merge branch 'fluke/extras' into 'main'

bugfix: fix profile cycling

See merge request asus-linux/asusctl!60
This commit is contained in:
Luke Jones
2021-05-25 09:46:26 +00:00
5 changed files with 47 additions and 50 deletions

View File

@@ -6,7 +6,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
# [3.6.0] - 2021-05-15 # [3.6.1] - 2021-05-25
### Changed
- Bugfix for cycling through profiles
# [3.6.0] - 2021-05-24
### Changed ### Changed
- Add GX550L led modes - Add GX550L led modes
- Don't save compute/vfio modes. Option in config for this is removed. - Don't save compute/vfio modes. Option in config for this is removed.

2
Cargo.lock generated
View File

@@ -207,7 +207,7 @@ dependencies = [
[[package]] [[package]]
name = "daemon" name = "daemon"
version = "3.6.0" version = "3.6.1"
dependencies = [ dependencies = [
"env_logger", "env_logger",
"log", "log",

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "daemon" name = "daemon"
version = "3.6.0" version = "3.6.1"
license = "MPL-2.0" license = "MPL-2.0"
readme = "README.md" readme = "README.md"
authors = ["Luke <luke@ljones.dev>"] authors = ["Luke <luke@ljones.dev>"]

View File

@@ -43,39 +43,39 @@ impl CtrlFanAndCpu {
} }
/// Toggle to next profile in list /// Toggle to next profile in list
pub(super) fn do_next_profile(&mut self, config: &mut Config) -> Result<(), RogError> { pub(super) fn do_next_profile(&mut self) -> Result<(), RogError> {
config.read(); if let Ok(mut config) = self.config.clone().try_lock() {
config.read();
let mut i = config let mut i = config
.toggle_profiles .toggle_profiles
.iter() .binary_search(&config.active_profile)
.position(|x| x == &config.active_profile) .unwrap_or(0)
.map(|i| i + 1) + 1;
.unwrap_or(0); if i >= config.toggle_profiles.len() {
if i >= config.toggle_profiles.len() { i = 0;
i = 0; }
let profile = config.toggle_profiles[i].clone();
if let Some(existing) = config.power_profiles.get(&profile) {
existing.set_system_all()?;
config.active_profile = existing.name.clone();
config.write();
info!("Profile was changed to: {}", profile);
}
} }
let new_profile = config
.toggle_profiles
.get(i)
.unwrap_or(&config.active_profile)
.clone();
self.set_active(&new_profile)?;
info!("Profile was changed: {}", &new_profile);
Ok(()) Ok(())
} }
pub(super) fn set_active(&mut self, profile: &str) -> Result<(), RogError> { pub(super) fn set_active(&mut self, profile: &str) -> Result<(), RogError> {
if let Ok(mut cfg) = self.config.clone().try_lock() { if let Ok(mut cfg) = self.config.clone().try_lock() {
cfg.read(); cfg.read();
if let Some(existing) = cfg.power_profiles.get(profile) {
if let Some(existing) = cfg.power_profiles.get_mut(profile) {
existing.set_system_all()?; existing.set_system_all()?;
cfg.active_profile = existing.name.clone(); cfg.active_profile = existing.name.clone();
cfg.write(); cfg.write();
info!("Profile was changed to: {}", profile);
} }
} }
Ok(()) Ok(())

View File

@@ -25,15 +25,8 @@ impl FanAndCpuZbus {
if let Ok(mut ctrl) = self.inner.try_lock() { if let Ok(mut ctrl) = self.inner.try_lock() {
ctrl.set_active(&profile) ctrl.set_active(&profile)
.unwrap_or_else(|err| warn!("{}", err)); .unwrap_or_else(|err| warn!("{}", err));
// Do notification
if let Ok(cfg) = ctrl.config.clone().try_lock() {
// Do notify
if let Some(profile) = cfg.power_profiles.get(&cfg.active_profile) {
self.notify_profile(&profile)
.unwrap_or_else(|err| warn!("{}", err));
}
}
} }
self.do_notification();
} }
/// New or modify profile details and make active, will create if it does not exist /// New or modify profile details and make active, will create if it does not exist
@@ -41,30 +34,17 @@ impl FanAndCpuZbus {
if let Ok(mut ctrl) = self.inner.try_lock() { if let Ok(mut ctrl) = self.inner.try_lock() {
ctrl.new_or_modify(&profile) ctrl.new_or_modify(&profile)
.unwrap_or_else(|err| warn!("{}", err)); .unwrap_or_else(|err| warn!("{}", err));
// Do notification
if let Ok(cfg) = ctrl.config.clone().try_lock() {
// Do notify
if let Some(profile) = cfg.power_profiles.get(&cfg.active_profile) {
self.notify_profile(&profile)
.unwrap_or_else(|err| warn!("{}", err));
}
}
} }
self.do_notification();
} }
/// Fetch the active profile name /// Fetch the active profile name
fn next_profile(&mut self) { fn next_profile(&mut self) {
if let Ok(mut ctrl) = self.inner.try_lock() { if let Ok(mut ctrl) = self.inner.try_lock() {
if let Ok(mut cfg) = ctrl.config.clone().try_lock() { ctrl.do_next_profile()
cfg.read(); .unwrap_or_else(|err| warn!("{}", err));
ctrl.do_next_profile(&mut cfg)
.unwrap_or_else(|err| warn!("{}", err));
if let Some(profile) = cfg.power_profiles.get(&cfg.active_profile) {
self.notify_profile(&profile)
.unwrap_or_else(|err| warn!("{}", err));
}
}
} }
self.do_notification();
} }
/// Fetch the active profile name /// Fetch the active profile name
@@ -154,6 +134,19 @@ impl FanAndCpuZbus {
fn notify_profile(&self, profile: &Profile) -> zbus::Result<()> {} fn notify_profile(&self, profile: &Profile) -> zbus::Result<()> {}
} }
impl FanAndCpuZbus {
fn do_notification(&self) {
if let Ok(ctrl) = self.inner.try_lock() {
if let Ok(cfg) = ctrl.config.clone().try_lock() {
if let Some(profile) = cfg.power_profiles.get(&cfg.active_profile) {
self.notify_profile(&profile)
.unwrap_or_else(|err| warn!("{}", err));
}
}
}
}
}
impl crate::ZbusAdd for FanAndCpuZbus { impl crate::ZbusAdd for FanAndCpuZbus {
fn add_to_server(self, server: &mut zbus::ObjectServer) { fn add_to_server(self, server: &mut zbus::ObjectServer) {
server server