diff --git a/daemon/src/ctrl_aura/controller.rs b/daemon/src/ctrl_aura/controller.rs index cebf828d..510fa331 100644 --- a/daemon/src/ctrl_aura/controller.rs +++ b/daemon/src/ctrl_aura/controller.rs @@ -418,8 +418,8 @@ impl CtrlKbdLed { self.config.read(); // if self.config.builtins.contains_key(&next) { - self.config.current_mode = next; - self.write_current_config_mode()?; + self.config.current_mode = next; + self.write_current_config_mode()?; // } self.config.write(); } diff --git a/daemon/src/ctrl_aura/zbus.rs b/daemon/src/ctrl_aura/zbus.rs index 1528d8f4..5b2915bb 100644 --- a/daemon/src/ctrl_aura/zbus.rs +++ b/daemon/src/ctrl_aura/zbus.rs @@ -1,6 +1,8 @@ +use std::collections::BTreeMap; + use async_trait::async_trait; use log::warn; -use rog_aura::{usb::AuraPowerDev, AuraEffect, LedBrightness, AuraModeNum}; +use rog_aura::{usb::AuraPowerDev, AuraEffect, AuraModeNum, LedBrightness}; use zbus::{dbus_interface, Connection, SignalContext}; use super::controller::CtrlKbdLedZbus; @@ -183,15 +185,12 @@ impl CtrlKbdLedZbus { } /// Return a list of available modes - #[dbus_interface(property)] - async fn led_modes(&self) -> String { - if let Ok(ctrl) = self.0.try_lock() { - if let Ok(json) = serde_json::to_string(&ctrl.config.builtins) { - return json; + async fn led_modes(&self) -> BTreeMap { + loop { + if let Ok(ctrl) = self.0.try_lock() { + return ctrl.config.builtins.clone(); } } - warn!("SetKeyBacklight could not deserialise"); - "SetKeyBacklight could not serialise".to_string() } /// Return the current LED brightness diff --git a/rog-dbus/src/zbus_led.rs b/rog-dbus/src/zbus_led.rs index 60105640..d7815e3c 100644 --- a/rog-dbus/src/zbus_led.rs +++ b/rog-dbus/src/zbus_led.rs @@ -19,10 +19,12 @@ //! //! …consequently `zbus-xmlgen` did not generate code for the above interfaces. +use std::collections::BTreeMap; + use zbus::{blocking::Connection, Result}; use zbus_macros::dbus_proxy; -use rog_aura::{usb::AuraPowerDev, AuraEffect, KeyColourArray, LedBrightness, AuraModeNum}; +use rog_aura::{usb::AuraPowerDev, AuraEffect, AuraModeNum, KeyColourArray, LedBrightness}; const BLOCKING_TIME: u64 = 40; // 100ms = 10 FPS, max 50ms = 20 FPS, 40ms = 25 FPS @@ -66,8 +68,7 @@ trait Led { fn led_mode(&self) -> zbus::Result; /// LedModes property - #[dbus_proxy(property)] - fn led_modes(&self) -> zbus::Result; + fn led_modes(&self) -> zbus::Result>; // As property doesn't work for AuraPowerDev (complexity of serialization?) // #[dbus_proxy(property)]