From befa711ed998606ee8304a8b18bac2992924a9a9 Mon Sep 17 00:00:00 2001 From: Luke Date: Wed, 10 Jun 2020 20:49:10 +1200 Subject: [PATCH] Update changelog, extra dbus tweaks --- CHANGELOG.md | 5 +++++ rog-client/src/aura_dbus.rs | 16 ++++------------ rog-core/src/rog_dbus.rs | 28 ++++++++++++++++------------ 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56812cd1..b6b3e320 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Changed +- Use DBUS_NAME instead of DBUS_IFACE when requesting the name +- Give different names for the bytearray arguments so that pydbus is not confused +- Add org.freedesktop.DBus.Method.NoReply annotations +- Remove dbus reply for multizone writes ## [0.11.0] - 2020-09-05 ### BREAKING CHANGE diff --git a/rog-client/src/aura_dbus.rs b/rog-client/src/aura_dbus.rs index d0576742..c29ef998 100644 --- a/rog-client/src/aura_dbus.rs +++ b/rog-client/src/aura_dbus.rs @@ -64,8 +64,6 @@ impl AuraDbusWriter { &mut self, key_colour_array: &KeyColourArray, ) -> Result<(), Box> { - // self.connection.process(Duration::from_micros(300))?; - let group = key_colour_array.get(); let mut msg = Message::new_method_call(DBUS_NAME, DBUS_PATH, DBUS_IFACE, "LedWriteEffect")? .append3(&group[0].to_vec(), &group[1].to_vec(), &group[2].to_vec()) @@ -76,7 +74,7 @@ impl AuraDbusWriter { self.connection.send(msg).unwrap(); thread::sleep(Duration::from_micros(self.block_time)); if self.stop.load(Ordering::Relaxed) { - panic!("Go signal to stop!"); + panic!("Got signal to stop!"); } Ok(()) } @@ -86,20 +84,14 @@ impl AuraDbusWriter { &mut self, group: &[[u8; LED_MSG_LEN]; 4], ) -> Result> { - self.connection.process(Duration::from_micros(300))?; - let msg = Message::new_method_call(DBUS_NAME, DBUS_PATH, DBUS_IFACE, "LedWriteMultizone")? .append1(&group[0].to_vec()) .append1(&group[1].to_vec()) .append1(&group[2].to_vec()) .append1(&group[3].to_vec()); - let r = self - .connection - .send_with_reply_and_block(msg, Duration::from_millis(5000))?; - if let Some(reply) = r.get1::<&str>() { - return Ok(reply.to_owned()); - } - Err(Box::new(dbus::Error::new_custom("name", "message"))) + msg.set_no_reply(true); + self.connection.send(msg).unwrap(); + Ok(()) } #[inline] diff --git a/rog-core/src/rog_dbus.rs b/rog-core/src/rog_dbus.rs index b1b2f94b..f8294f5e 100644 --- a/rog-core/src/rog_dbus.rs +++ b/rog-core/src/rog_dbus.rs @@ -54,6 +54,7 @@ pub(super) fn dbus_create_ledmultizone_method(effect: NestedVecType) -> Method, _>("bytearray2") .inarg::, _>("bytearray3") .inarg::, _>("bytearray4") + .annotate("org.freedesktop.DBus.Method.NoReply", "true") } pub(super) fn dbus_create_ledeffect_method(effect: NestedVecType) -> Method { @@ -158,18 +159,21 @@ pub(super) fn dbus_create_tree() -> ( let factory = Factory::new_sync::<()>(); let effect_cancel_sig = Arc::new(factory.signal("LedCancelEffect", ())); - let tree = factory.tree(()).add( - factory.object_path(DBUS_PATH, ()).introspectable().add( - factory - .interface(DBUS_IFACE, ()) - .add_m(dbus_create_ledmsg_method(input_bytes.clone())) - .add_m(dbus_create_ledmultizone_method(input_effect.clone())) - .add_m(dbus_create_ledeffect_method(input_effect.clone())) - .add_m(dbus_create_animatrix_method(animatrix_img.clone())) - .add_m(dbus_create_fan_mode_method(fan_mode.clone())) - .add_s(effect_cancel_sig.clone()), - ), - ).add(factory.object_path("/", ()).introspectable()); + let tree = factory + .tree(()) + .add( + factory.object_path(DBUS_PATH, ()).introspectable().add( + factory + .interface(DBUS_IFACE, ()) + .add_m(dbus_create_ledmsg_method(input_bytes.clone())) + .add_m(dbus_create_ledmultizone_method(input_effect.clone())) + .add_m(dbus_create_ledeffect_method(input_effect.clone())) + .add_m(dbus_create_animatrix_method(animatrix_img.clone())) + .add_m(dbus_create_fan_mode_method(fan_mode.clone())) + .add_s(effect_cancel_sig.clone()), + ), + ) + .add(factory.object_path("/", ()).introspectable()); ( tree, input_bytes,