mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 301c532b65 | |||
| df7ae4d014 |
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
# [3.2.2] - 2021-03-23
|
||||||
|
### Changed
|
||||||
|
- Fix brightness control, again, for non-RGB keyboards
|
||||||
|
|
||||||
# [3.2.1] - 2021-03-21
|
# [3.2.1] - 2021-03-21
|
||||||
### Changed
|
### Changed
|
||||||
- Fix brightness control
|
- Fix brightness control
|
||||||
|
|||||||
Generated
+1
-1
@@ -196,7 +196,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "daemon"
|
name = "daemon"
|
||||||
version = "3.2.1"
|
version = "3.2.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"intel-pstate",
|
"intel-pstate",
|
||||||
|
|||||||
+11
-2
@@ -7,7 +7,13 @@ use daemon::{
|
|||||||
};
|
};
|
||||||
use gumdrop::{Opt, Options};
|
use gumdrop::{Opt, Options};
|
||||||
use rog_dbus::AuraDbusClient;
|
use rog_dbus::AuraDbusClient;
|
||||||
use rog_types::{anime_matrix::{AniMeDataBuffer, FULL_PANE_LEN}, aura_modes::{self, AuraEffect, AuraModeNum}, cli_options::{AniMeActions, AniMeStatusValue}, gfx_vendors::GfxVendors, profile::{FanLevel, ProfileCommand, ProfileEvent}};
|
use rog_types::{
|
||||||
|
anime_matrix::{AniMeDataBuffer, FULL_PANE_LEN},
|
||||||
|
aura_modes::{self, AuraEffect, AuraModeNum},
|
||||||
|
cli_options::{AniMeActions, AniMeStatusValue},
|
||||||
|
gfx_vendors::GfxVendors,
|
||||||
|
profile::{FanLevel, ProfileCommand, ProfileEvent},
|
||||||
|
};
|
||||||
use std::env::args;
|
use std::env::args;
|
||||||
use yansi_term::Colour::Green;
|
use yansi_term::Colour::Green;
|
||||||
use yansi_term::Colour::Red;
|
use yansi_term::Colour::Red;
|
||||||
@@ -196,7 +202,10 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
let level = dbus.proxies().led().get_led_brightness()?;
|
let level = dbus.proxies().led().get_led_brightness()?;
|
||||||
println!("Current keyboard led brightness: {}", level.to_string());
|
println!("Current keyboard led brightness: {}", level.to_string());
|
||||||
}
|
}
|
||||||
Some(level) => dbus.proxies().led().set_led_brightness(<aura_modes::LedBrightness>::from(level))?,
|
Some(level) => dbus
|
||||||
|
.proxies()
|
||||||
|
.led()
|
||||||
|
.set_led_brightness(<aura_modes::LedBrightness>::from(level))?,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "daemon"
|
name = "daemon"
|
||||||
version = "3.2.1"
|
version = "3.2.2"
|
||||||
license = "MPL-2.0"
|
license = "MPL-2.0"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
authors = ["Luke <luke@ljones.dev>"]
|
authors = ["Luke <luke@ljones.dev>"]
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ impl AuraConfig {
|
|||||||
} else {
|
} else {
|
||||||
if let Ok(data) = serde_json::from_str(&buf) {
|
if let Ok(data) = serde_json::from_str(&buf) {
|
||||||
return data;
|
return data;
|
||||||
} else if let Ok(data) = serde_json::from_str::<AuraConfigV320>(&buf) {
|
} else if let Ok(data) = serde_json::from_str::<AuraConfigV320>(&buf) {
|
||||||
let config = data.into_current();
|
let config = data.into_current();
|
||||||
config.write();
|
config.write();
|
||||||
info!("Updated AuraConfig version");
|
info!("Updated AuraConfig version");
|
||||||
|
|||||||
+17
-17
@@ -10,7 +10,10 @@ use crate::{
|
|||||||
laptops::{LaptopLedData, ASUS_KEYBOARD_DEVICES},
|
laptops::{LaptopLedData, ASUS_KEYBOARD_DEVICES},
|
||||||
};
|
};
|
||||||
use log::{error, info, warn};
|
use log::{error, info, warn};
|
||||||
use rog_types::{LED_MSG_LEN, aura_modes::{AuraEffect, AuraModeNum, LedBrightness}};
|
use rog_types::{
|
||||||
|
aura_modes::{AuraEffect, AuraModeNum, LedBrightness},
|
||||||
|
LED_MSG_LEN,
|
||||||
|
};
|
||||||
use std::fs::OpenOptions;
|
use std::fs::OpenOptions;
|
||||||
use std::io::{Read, Write};
|
use std::io::{Read, Write};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
@@ -37,14 +40,10 @@ impl GetSupported for CtrlKbdBacklight {
|
|||||||
let multizone_led_mode = false;
|
let multizone_led_mode = false;
|
||||||
let per_key_led_mode = false;
|
let per_key_led_mode = false;
|
||||||
let laptop = LaptopLedData::get_data();
|
let laptop = LaptopLedData::get_data();
|
||||||
let stock_led_modes = if let Some(data) = laptop {
|
let stock_led_modes = if laptop.standard.is_empty() {
|
||||||
if data.standard.is_empty() {
|
|
||||||
None
|
|
||||||
} else {
|
|
||||||
Some(data.standard)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
None
|
None
|
||||||
|
} else {
|
||||||
|
Some(laptop.standard)
|
||||||
};
|
};
|
||||||
|
|
||||||
LedSupportedFunctions {
|
LedSupportedFunctions {
|
||||||
@@ -318,15 +317,16 @@ impl CtrlKbdBacklight {
|
|||||||
|
|
||||||
pub fn set_brightness(&self, brightness: LedBrightness) -> Result<(), RogError> {
|
pub fn set_brightness(&self, brightness: LedBrightness) -> Result<(), RogError> {
|
||||||
let path = Path::new(&self.bright_node);
|
let path = Path::new(&self.bright_node);
|
||||||
let mut file = OpenOptions::new()
|
let mut file =
|
||||||
.write(true)
|
OpenOptions::new()
|
||||||
.open(&path)
|
.write(true)
|
||||||
.map_err(|err| match err.kind() {
|
.open(&path)
|
||||||
std::io::ErrorKind::NotFound => {
|
.map_err(|err| match err.kind() {
|
||||||
RogError::MissingLedBrightNode((&self.bright_node).into(), err)
|
std::io::ErrorKind::NotFound => {
|
||||||
}
|
RogError::MissingLedBrightNode((&self.bright_node).into(), err)
|
||||||
_ => RogError::Path((&self.bright_node).into(), err),
|
}
|
||||||
})?;
|
_ => RogError::Path((&self.bright_node).into(), err),
|
||||||
|
})?;
|
||||||
file.write_all(&[brightness.as_char_code()])
|
file.write_all(&[brightness.as_char_code()])
|
||||||
.map_err(|err| RogError::Read("buffer".into(), err))?;
|
.map_err(|err| RogError::Read("buffer".into(), err))?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
+14
-18
@@ -1,10 +1,13 @@
|
|||||||
use daemon::{ctrl_fan_cpu::{CtrlFanAndCPU, DbusFanAndCpu}, laptops::LaptopLedData};
|
|
||||||
use daemon::ctrl_leds::{CtrlKbdBacklight, DbusKbdBacklight};
|
use daemon::ctrl_leds::{CtrlKbdBacklight, DbusKbdBacklight};
|
||||||
use daemon::{
|
use daemon::{
|
||||||
config::Config, ctrl_supported::SupportedFunctions, laptops::print_board_info, GetSupported,
|
config::Config, ctrl_supported::SupportedFunctions, laptops::print_board_info, GetSupported,
|
||||||
};
|
};
|
||||||
use daemon::{config_aura::AuraConfig, ctrl_charge::CtrlCharge};
|
use daemon::{config_aura::AuraConfig, ctrl_charge::CtrlCharge};
|
||||||
use daemon::{ctrl_anime::CtrlAnimeDisplay, ctrl_gfx::gfx::CtrlGraphics};
|
use daemon::{ctrl_anime::CtrlAnimeDisplay, ctrl_gfx::gfx::CtrlGraphics};
|
||||||
|
use daemon::{
|
||||||
|
ctrl_fan_cpu::{CtrlFanAndCPU, DbusFanAndCpu},
|
||||||
|
laptops::LaptopLedData,
|
||||||
|
};
|
||||||
|
|
||||||
use daemon::{CtrlTask, Reloadable, ZbusAdd};
|
use daemon::{CtrlTask, Reloadable, ZbusAdd};
|
||||||
use log::LevelFilter;
|
use log::LevelFilter;
|
||||||
@@ -135,23 +138,16 @@ fn start_daemon() -> Result<(), Box<dyn Error>> {
|
|||||||
DbusFanAndCpu::new(tmp).add_to_server(&mut object_server);
|
DbusFanAndCpu::new(tmp).add_to_server(&mut object_server);
|
||||||
};
|
};
|
||||||
|
|
||||||
if let Some(laptop) = LaptopLedData::get_data() {
|
let laptop = LaptopLedData::get_data();
|
||||||
if !laptop.standard.is_empty() {
|
let aura_config = AuraConfig::load(&laptop);
|
||||||
let aura_config = AuraConfig::load(&laptop);
|
if let Ok(ctrl) = CtrlKbdBacklight::new(laptop, aura_config).map_err(|err| {
|
||||||
|
error!("Keyboard control: {}", err);
|
||||||
if let Ok(ctrl) = CtrlKbdBacklight::new(
|
err
|
||||||
laptop,
|
}) {
|
||||||
aura_config,
|
let tmp = Arc::new(Mutex::new(ctrl));
|
||||||
)
|
DbusKbdBacklight::new(tmp.clone()).add_to_server(&mut object_server);
|
||||||
.map_err(|err| {
|
tasks.push(tmp);
|
||||||
error!("Keyboard control: {}", err);
|
}
|
||||||
err
|
|
||||||
}) {
|
|
||||||
let tmp = Arc::new(Mutex::new(ctrl));
|
|
||||||
DbusKbdBacklight::new(tmp.clone()).add_to_server(&mut object_server);
|
|
||||||
tasks.push(tmp);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
|
|
||||||
// TODO: implement messaging between threads to check fails
|
// TODO: implement messaging between threads to check fails
|
||||||
// These tasks generally read a sys path or file to check for a
|
// These tasks generally read a sys path or file to check for a
|
||||||
|
|||||||
+12
-3
@@ -49,15 +49,24 @@ pub struct LaptopLedData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl LaptopLedData {
|
impl LaptopLedData {
|
||||||
pub fn get_data() -> Option<Self> {
|
pub fn get_data() -> Self {
|
||||||
let dmi = sysfs_class::DmiId::default();
|
let dmi = sysfs_class::DmiId::default();
|
||||||
let board_name = dmi.board_name().expect("Could not get board_name");
|
let board_name = dmi.board_name().expect("Could not get board_name");
|
||||||
let prod_family = dmi.product_family().expect("Could not get product_family");
|
let prod_family = dmi.product_family().expect("Could not get product_family");
|
||||||
|
|
||||||
if let Some(modes) = LedSupportFile::load_from_config() {
|
if let Some(modes) = LedSupportFile::load_from_config() {
|
||||||
return modes.matcher(&prod_family, &board_name);
|
if let Some(data) = modes.matcher(&prod_family, &board_name) {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
info!("Using generic LED control for keyboard brightness only");
|
||||||
|
LaptopLedData {
|
||||||
|
prod_family,
|
||||||
|
board_names: vec![board_name],
|
||||||
|
standard: vec![],
|
||||||
|
multizone: false,
|
||||||
|
per_key: false,
|
||||||
}
|
}
|
||||||
None
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,10 @@ use std::sync::{Arc, Mutex};
|
|||||||
|
|
||||||
use zbus::{dbus_proxy, Connection, Result};
|
use zbus::{dbus_proxy, Connection, Result};
|
||||||
|
|
||||||
use rog_types::{aura_modes::{AuraEffect, LedBrightness}, aura_perkey::KeyColourArray};
|
use rog_types::{
|
||||||
|
aura_modes::{AuraEffect, LedBrightness},
|
||||||
|
aura_perkey::KeyColourArray,
|
||||||
|
};
|
||||||
|
|
||||||
const BLOCKING_TIME: u64 = 40; // 100ms = 10 FPS, max 50ms = 20 FPS, 40ms = 25 FPS
|
const BLOCKING_TIME: u64 = 40; // 100ms = 10 FPS, max 50ms = 20 FPS, 40ms = 25 FPS
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user