mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Switch a keyboard prod_id to enum
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -278,7 +278,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "daemon"
|
name = "daemon"
|
||||||
version = "4.3.0"
|
version = "4.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use anime_cli::{AnimeActions, AnimeCommand};
|
|||||||
use profiles_cli::{FanCurveCommand, ProfileCommand};
|
use profiles_cli::{FanCurveCommand, ProfileCommand};
|
||||||
use rog_anime::usb::get_anime_type;
|
use rog_anime::usb::get_anime_type;
|
||||||
use rog_anime::{AnimTime, AnimeDataBuffer, AnimeDiagonal, AnimeGif, AnimeImage, Vec2};
|
use rog_anime::{AnimTime, AnimeDataBuffer, AnimeDiagonal, AnimeGif, AnimeImage, Vec2};
|
||||||
use rog_aura::usb::{AuraDev1866, AuraDev19b6, AuraPowerDev};
|
use rog_aura::usb::{AuraDev1866, AuraDev19b6, AuraDevice, AuraPowerDev};
|
||||||
use rog_aura::{self, AuraEffect};
|
use rog_aura::{self, AuraEffect};
|
||||||
use rog_dbus::RogDbusClientBlocking;
|
use rog_dbus::RogDbusClientBlocking;
|
||||||
use rog_profiles::error::ProfileError;
|
use rog_profiles::error::ProfileError;
|
||||||
@@ -159,12 +159,14 @@ fn do_parsed(
|
|||||||
if let Some(cmdlist) = CliStart::command_list() {
|
if let Some(cmdlist) = CliStart::command_list() {
|
||||||
let commands: Vec<String> = cmdlist.lines().map(|s| s.to_string()).collect();
|
let commands: Vec<String> = cmdlist.lines().map(|s| s.to_string()).collect();
|
||||||
for command in commands.iter().filter(|command| {
|
for command in commands.iter().filter(|command| {
|
||||||
if supported.keyboard_led.prod_id != "1866"
|
if !matches!(
|
||||||
&& command.trim().starts_with("led-pow-1")
|
supported.keyboard_led.prod_id,
|
||||||
|
AuraDevice::X1854 | AuraDevice::X1869 | AuraDevice::X1866
|
||||||
|
) && command.trim().starts_with("led-pow-1")
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if supported.keyboard_led.prod_id != "19b6"
|
if supported.keyboard_led.prod_id != AuraDevice::X19B6
|
||||||
&& command.trim().starts_with("led-pow-2")
|
&& command.trim().starts_with("led-pow-2")
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@@ -455,7 +457,10 @@ fn handle_led_power1(
|
|||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
if supported.prod_id != "1866" {
|
if !matches!(
|
||||||
|
supported.prod_id,
|
||||||
|
AuraDevice::X1854 | AuraDevice::X1869 | AuraDevice::X1866
|
||||||
|
) {
|
||||||
println!("These options are for keyboards of product ID 0x1866 only");
|
println!("These options are for keyboards of product ID 0x1866 only");
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
@@ -523,8 +528,8 @@ fn handle_led_power2(
|
|||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
if supported.prod_id == "1866" {
|
if supported.prod_id != AuraDevice::X19B6 {
|
||||||
println!("This option does not apply to keyboards with product ID 0x1866")
|
println!("This option applies only to keyboards with product ID 0x19b6")
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut enabled: Vec<AuraDev19b6> = Vec::new();
|
let mut enabled: Vec<AuraDev19b6> = Vec::new();
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use async_trait::async_trait;
|
|||||||
use log::{error, info, warn};
|
use log::{error, info, warn};
|
||||||
use logind_zbus::manager::ManagerProxy;
|
use logind_zbus::manager::ManagerProxy;
|
||||||
use rog_aura::{
|
use rog_aura::{
|
||||||
usb::{LED_APPLY, LED_SET},
|
usb::{AuraDevice, LED_APPLY, LED_SET},
|
||||||
AuraEffect, LedBrightness, LED_MSG_LEN,
|
AuraEffect, LedBrightness, LED_MSG_LEN,
|
||||||
};
|
};
|
||||||
use rog_aura::{AuraZone, Direction, Speed, GRADIENT};
|
use rog_aura::{AuraZone, Direction, Speed, GRADIENT};
|
||||||
@@ -40,16 +40,16 @@ impl GetSupported for CtrlKbdLed {
|
|||||||
let multizone_led_mode = laptop.multizone;
|
let multizone_led_mode = laptop.multizone;
|
||||||
let per_key_led_mode = laptop.per_key;
|
let per_key_led_mode = laptop.per_key;
|
||||||
|
|
||||||
let mut prod_id = String::new();
|
let mut prod_id = "";
|
||||||
for prod in ASUS_KEYBOARD_DEVICES.iter() {
|
for prod in ASUS_KEYBOARD_DEVICES.iter() {
|
||||||
if let Ok(_) = Self::find_led_node(prod) {
|
if let Ok(_) = Self::find_led_node(prod) {
|
||||||
prod_id = prod.to_string();
|
prod_id = *prod;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LedSupportedFunctions {
|
LedSupportedFunctions {
|
||||||
prod_id,
|
prod_id: AuraDevice::from(prod_id),
|
||||||
brightness_set: CtrlKbdLed::get_kbd_bright_path().is_some(),
|
brightness_set: CtrlKbdLed::get_kbd_bright_path().is_some(),
|
||||||
stock_led_modes,
|
stock_led_modes,
|
||||||
multizone_led_mode,
|
multizone_led_mode,
|
||||||
|
|||||||
@@ -29,8 +29,21 @@ impl CtrlKbdLedZbus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Set a variety of states, input is array of enum.
|
/// Set a variety of states, input is array of enum.
|
||||||
|
/// `enabled` sets if the sent array should be disabled or enabled
|
||||||
///
|
///
|
||||||
/// enum AuraControl {
|
/// ```text
|
||||||
|
/// pub struct AuraPowerDev {
|
||||||
|
/// pub x1866: Vec<AuraDev1866>,
|
||||||
|
/// pub x19b6: Vec<AuraDev19b6>,
|
||||||
|
/// }
|
||||||
|
/// pub enum AuraDev1866 {
|
||||||
|
/// Awake,
|
||||||
|
/// Keyboard,
|
||||||
|
/// Lightbar,
|
||||||
|
/// Boot,
|
||||||
|
/// Sleep,
|
||||||
|
/// }
|
||||||
|
/// enum AuraDev19b6 {
|
||||||
/// BootLogo,
|
/// BootLogo,
|
||||||
/// BootKeyb,
|
/// BootKeyb,
|
||||||
/// AwakeLogo,
|
/// AwakeLogo,
|
||||||
@@ -44,6 +57,7 @@ impl CtrlKbdLedZbus {
|
|||||||
/// SleepBar,
|
/// SleepBar,
|
||||||
/// ShutdownBar,
|
/// ShutdownBar,
|
||||||
/// }
|
/// }
|
||||||
|
/// ```
|
||||||
async fn set_leds_power(
|
async fn set_leds_power(
|
||||||
&mut self,
|
&mut self,
|
||||||
#[zbus(signal_context)] ctxt: SignalContext<'_>,
|
#[zbus(signal_context)] ctxt: SignalContext<'_>,
|
||||||
|
|||||||
@@ -20,6 +20,32 @@ pub const fn aura_brightness_bytes(brightness: u8) -> [u8; 17] {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg_attr(feature = "dbus", derive(Type))]
|
||||||
|
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
|
||||||
|
pub enum AuraDevice {
|
||||||
|
X1854,
|
||||||
|
X1869,
|
||||||
|
X1866,
|
||||||
|
X19B6,
|
||||||
|
Unknown,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<&str> for AuraDevice {
|
||||||
|
fn from(s: &str) -> Self {
|
||||||
|
match s.to_lowercase().as_str() {
|
||||||
|
"1866" => AuraDevice::X1866,
|
||||||
|
"1869" => AuraDevice::X1869,
|
||||||
|
"1854" => AuraDevice::X1854,
|
||||||
|
"19b6" => AuraDevice::X19B6,
|
||||||
|
"0x1866" => AuraDevice::X1866,
|
||||||
|
"0x1869" => AuraDevice::X1869,
|
||||||
|
"0x1854" => AuraDevice::X1854,
|
||||||
|
"0x19b6" => AuraDevice::X19B6,
|
||||||
|
_ => AuraDevice::Unknown,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// This struct is intended as a helper to pass args to generic dbus interface
|
/// This struct is intended as a helper to pass args to generic dbus interface
|
||||||
#[cfg_attr(feature = "dbus", derive(Type))]
|
#[cfg_attr(feature = "dbus", derive(Type))]
|
||||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
pub static VERSION: &str = env!("CARGO_PKG_VERSION");
|
pub static VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||||
|
|
||||||
use rog_aura::{AuraModeNum, AuraZone};
|
use rog_aura::{usb::AuraDevice, AuraModeNum, AuraZone};
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde_derive::{Deserialize, Serialize};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use zvariant_derive::Type;
|
use zvariant_derive::Type;
|
||||||
@@ -30,7 +30,7 @@ pub struct PlatformProfileFunctions {
|
|||||||
|
|
||||||
#[derive(Serialize, Deserialize, Type, Debug)]
|
#[derive(Serialize, Deserialize, Type, Debug)]
|
||||||
pub struct LedSupportedFunctions {
|
pub struct LedSupportedFunctions {
|
||||||
pub prod_id: String,
|
pub prod_id: AuraDevice,
|
||||||
pub brightness_set: bool,
|
pub brightness_set: bool,
|
||||||
pub stock_led_modes: Vec<AuraModeNum>,
|
pub stock_led_modes: Vec<AuraModeNum>,
|
||||||
pub multizone_led_mode: Vec<AuraZone>,
|
pub multizone_led_mode: Vec<AuraZone>,
|
||||||
|
|||||||
Reference in New Issue
Block a user