Compare commits

...

2 Commits

Author SHA1 Message Date
Luke D Jones 301c532b65 Formatting 2021-03-23 13:45:57 +13:00
Luke D Jones df7ae4d014 Fix: non-rgb keyboard backlight control 2021-03-23 13:44:07 +13:00
9 changed files with 65 additions and 44 deletions
+4
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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>"]
+8 -8
View File
@@ -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 None
} else { } else {
Some(data.standard) Some(laptop.standard)
}
} else {
None
}; };
LedSupportedFunctions { LedSupportedFunctions {
@@ -318,7 +317,8 @@ 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 =
OpenOptions::new()
.write(true) .write(true)
.open(&path) .open(&path)
.map_err(|err| match err.kind() { .map_err(|err| match err.kind() {
+6 -10
View File
@@ -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,15 +138,9 @@ 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| {
if let Ok(ctrl) = CtrlKbdBacklight::new(
laptop,
aura_config,
)
.map_err(|err| {
error!("Keyboard control: {}", err); error!("Keyboard control: {}", err);
err err
}) { }) {
@@ -151,7 +148,6 @@ fn start_daemon() -> Result<(), Box<dyn Error>> {
DbusKbdBacklight::new(tmp.clone()).add_to_server(&mut object_server); DbusKbdBacklight::new(tmp.clone()).add_to_server(&mut object_server);
tasks.push(tmp); 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
View File
@@ -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
} }
} }
+4 -1
View File
@@ -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