Update changelog, extra dbus tweaks

This commit is contained in:
Luke
2020-06-10 20:49:10 +12:00
parent 6d1ff90303
commit befa711ed9
3 changed files with 25 additions and 24 deletions

View File

@@ -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

View File

@@ -64,8 +64,6 @@ impl AuraDbusWriter {
&mut self,
key_colour_array: &KeyColourArray,
) -> Result<(), Box<dyn Error>> {
// 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<String, Box<dyn std::error::Error>> {
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]

View File

@@ -54,6 +54,7 @@ pub(super) fn dbus_create_ledmultizone_method(effect: NestedVecType) -> Method<M
.inarg::<Vec<u8>, _>("bytearray2")
.inarg::<Vec<u8>, _>("bytearray3")
.inarg::<Vec<u8>, _>("bytearray4")
.annotate("org.freedesktop.DBus.Method.NoReply", "true")
}
pub(super) fn dbus_create_ledeffect_method(effect: NestedVecType) -> Method<MTSync, ()> {
@@ -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,