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). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased] ## [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 ## [0.11.0] - 2020-09-05
### BREAKING CHANGE ### BREAKING CHANGE

View File

@@ -64,8 +64,6 @@ impl AuraDbusWriter {
&mut self, &mut self,
key_colour_array: &KeyColourArray, key_colour_array: &KeyColourArray,
) -> Result<(), Box<dyn Error>> { ) -> Result<(), Box<dyn Error>> {
// self.connection.process(Duration::from_micros(300))?;
let group = key_colour_array.get(); let group = key_colour_array.get();
let mut msg = Message::new_method_call(DBUS_NAME, DBUS_PATH, DBUS_IFACE, "LedWriteEffect")? 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()) .append3(&group[0].to_vec(), &group[1].to_vec(), &group[2].to_vec())
@@ -76,7 +74,7 @@ impl AuraDbusWriter {
self.connection.send(msg).unwrap(); self.connection.send(msg).unwrap();
thread::sleep(Duration::from_micros(self.block_time)); thread::sleep(Duration::from_micros(self.block_time));
if self.stop.load(Ordering::Relaxed) { if self.stop.load(Ordering::Relaxed) {
panic!("Go signal to stop!"); panic!("Got signal to stop!");
} }
Ok(()) Ok(())
} }
@@ -86,20 +84,14 @@ impl AuraDbusWriter {
&mut self, &mut self,
group: &[[u8; LED_MSG_LEN]; 4], group: &[[u8; LED_MSG_LEN]; 4],
) -> Result<String, Box<dyn std::error::Error>> { ) -> 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")? let msg = Message::new_method_call(DBUS_NAME, DBUS_PATH, DBUS_IFACE, "LedWriteMultizone")?
.append1(&group[0].to_vec()) .append1(&group[0].to_vec())
.append1(&group[1].to_vec()) .append1(&group[1].to_vec())
.append1(&group[2].to_vec()) .append1(&group[2].to_vec())
.append1(&group[3].to_vec()); .append1(&group[3].to_vec());
let r = self msg.set_no_reply(true);
.connection self.connection.send(msg).unwrap();
.send_with_reply_and_block(msg, Duration::from_millis(5000))?; Ok(())
if let Some(reply) = r.get1::<&str>() {
return Ok(reply.to_owned());
}
Err(Box::new(dbus::Error::new_custom("name", "message")))
} }
#[inline] #[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>, _>("bytearray2")
.inarg::<Vec<u8>, _>("bytearray3") .inarg::<Vec<u8>, _>("bytearray3")
.inarg::<Vec<u8>, _>("bytearray4") .inarg::<Vec<u8>, _>("bytearray4")
.annotate("org.freedesktop.DBus.Method.NoReply", "true")
} }
pub(super) fn dbus_create_ledeffect_method(effect: NestedVecType) -> Method<MTSync, ()> { 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 factory = Factory::new_sync::<()>();
let effect_cancel_sig = Arc::new(factory.signal("LedCancelEffect", ())); let effect_cancel_sig = Arc::new(factory.signal("LedCancelEffect", ()));
let tree = factory.tree(()).add( let tree = factory
factory.object_path(DBUS_PATH, ()).introspectable().add( .tree(())
factory .add(
.interface(DBUS_IFACE, ()) factory.object_path(DBUS_PATH, ()).introspectable().add(
.add_m(dbus_create_ledmsg_method(input_bytes.clone())) factory
.add_m(dbus_create_ledmultizone_method(input_effect.clone())) .interface(DBUS_IFACE, ())
.add_m(dbus_create_ledeffect_method(input_effect.clone())) .add_m(dbus_create_ledmsg_method(input_bytes.clone()))
.add_m(dbus_create_animatrix_method(animatrix_img.clone())) .add_m(dbus_create_ledmultizone_method(input_effect.clone()))
.add_m(dbus_create_fan_mode_method(fan_mode.clone())) .add_m(dbus_create_ledeffect_method(input_effect.clone()))
.add_s(effect_cancel_sig.clone()), .add_m(dbus_create_animatrix_method(animatrix_img.clone()))
), .add_m(dbus_create_fan_mode_method(fan_mode.clone()))
).add(factory.object_path("/", ()).introspectable()); .add_s(effect_cancel_sig.clone()),
),
)
.add(factory.object_path("/", ()).introspectable());
( (
tree, tree,
input_bytes, input_bytes,