mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Refactor to prepare splitting out aura for CLI effects
This commit is contained in:
@@ -1,23 +1,7 @@
|
||||
use daemon::aura::{Key, KeyColourArray};
|
||||
use daemon::daemon::{DBUS_IFACE, DBUS_NAME, DBUS_PATH};
|
||||
use dbus::Error as DbusError;
|
||||
use dbus::{ffidisp::Connection, Message};
|
||||
use std::{thread, time};
|
||||
|
||||
pub fn dbus_led_builtin_write(bytes: &[u8]) -> Result<(), Box<dyn std::error::Error>> {
|
||||
let bus = Connection::new_system()?;
|
||||
let msg = Message::new_method_call(DBUS_NAME, DBUS_PATH, DBUS_IFACE, "ledmessage")?
|
||||
.append1(bytes.to_vec());
|
||||
let r = bus.send_with_reply_and_block(msg, 5000)?;
|
||||
if let Some(reply) = r.get1::<&str>() {
|
||||
println!("Success: {:x?}", reply);
|
||||
return Ok(());
|
||||
}
|
||||
Err(Box::new(DbusError::new_custom("name", "message")))
|
||||
}
|
||||
use daemon::aura::{AuraDbusWriter, Key, KeyColourArray};
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let bus = Connection::new_system()?;
|
||||
let writer = AuraDbusWriter::new()?;
|
||||
|
||||
let mut per_key_led = Vec::new();
|
||||
let mut key_colours = KeyColourArray::new();
|
||||
@@ -43,37 +27,13 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
per_key_led.push(key_colours.clone());
|
||||
}
|
||||
|
||||
// It takes each interrupt at least 1ms. 10ms to write complete block.
|
||||
let time = time::Duration::from_millis(10); // aim for 100 per second
|
||||
|
||||
let row = KeyColourArray::get_init_msg();
|
||||
let msg =
|
||||
Message::new_method_call(DBUS_NAME, DBUS_PATH, DBUS_IFACE, "ledmessage")?.append1(row);
|
||||
bus.send(msg).unwrap();
|
||||
|
||||
writer.init_effect()?;
|
||||
loop {
|
||||
let now = std::time::Instant::now();
|
||||
thread::sleep(time);
|
||||
|
||||
for group in &per_key_led {
|
||||
let group = group.get();
|
||||
let msg = Message::new_method_call(DBUS_NAME, DBUS_PATH, DBUS_IFACE, "ledeffect")?
|
||||
.append1(&group[0].to_vec())
|
||||
.append1(&group[1].to_vec())
|
||||
.append1(&group[2].to_vec())
|
||||
.append1(&group[3].to_vec())
|
||||
.append1(&group[4].to_vec())
|
||||
.append1(&group[5].to_vec())
|
||||
.append1(&group[6].to_vec())
|
||||
.append1(&group[7].to_vec())
|
||||
.append1(&group[8].to_vec())
|
||||
.append1(&group[9].to_vec());
|
||||
bus.send(msg).unwrap();
|
||||
thread::sleep(time);
|
||||
writer.write_colour_block(group)?;
|
||||
}
|
||||
let after = std::time::Instant::now();
|
||||
let diff = after.duration_since(now);
|
||||
dbg!(diff.as_millis());
|
||||
dbg!(std::time::Instant::now().duration_since(now).as_millis());
|
||||
//return Ok(());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user