diff --git a/.gitignore b/.gitignore index 0e205d4..de3276d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Configuration file -Settings.* +settings.* # Generated by Cargo # will have compiled files and executables diff --git a/copyme.Settings.toml b/copyme.settings.toml similarity index 100% rename from copyme.Settings.toml rename to copyme.settings.toml diff --git a/examples/simple_client.rs b/examples/simple_client.rs index a62c4cc..c5fc083 100644 --- a/examples/simple_client.rs +++ b/examples/simple_client.rs @@ -1,3 +1,7 @@ +/// +/// $ cargo run --example simple_client +/// + use redis::{ //RedisResult, Client, @@ -5,19 +9,36 @@ use redis::{ Connection, }; +use std::time::Instant; + fn do_something() -> redis::RedisResult<()> { let client = Client::open("redis://127.0.0.1/")?; let mut con: Connection = client.get_connection()?; - - /* do something here */ - //let val : String = con.get("/pl/0/0")?; - let _ = con.set("/pl/0/0", "[(150.0, 230.0, 65280), \ - (170.0, 170.0, 65280), \ - (230.0, 170.0, 65280), \ - (210.0, 230.0, 65280), \ - (150.0, 230.0, 65280)]")?; + let start = Instant::now(); - Ok(()) + loop { + let elapsed = start.elapsed(); + let time = 60.0 * elapsed.as_millis() as f32 / 1000.0; + + let mut v : Vec<(f32,f32,u32)> = vec![]; + + for i in 0..128 { + let a = (time + i as f32) / 128.0 * std::f32::consts::PI * 2.0; + let r = 1200.0 + (a*5.0).cos() * (500.0 * (time/5.0).cos()); + + let x = a.cos() * r; + let y = a.sin() * r; + let col = if i % 8 < 4 { + 0x000000ff + } else { + 0x00ff0000 + }; + v.push((x,y,col)); + } + // println!("{:?}", v); + let _ = con.set("/pl/0/0", format!("{:?}", v))?; + } + // Ok(()) } fn main() { diff --git a/src/device/mod.rs b/src/device.rs similarity index 98% rename from src/device/mod.rs rename to src/device.rs index 9f4455b..d85d95a 100644 --- a/src/device/mod.rs +++ b/src/device.rs @@ -29,7 +29,7 @@ pub struct Status { pub trait Device { fn status( &self ) -> Status; fn draw( - &self, + &mut self, frame: Vec, speed: u32, ) -> LJResult<()> ; diff --git a/src/device/helios.rs b/src/device/helios.rs index 8b0fc88..f607bb8 100644 --- a/src/device/helios.rs +++ b/src/device/helios.rs @@ -42,14 +42,16 @@ impl Device for HeliosDevice { } } - fn draw(&self, + fn draw(&mut self, line: Vec, speed: u32, ) -> LJResult<()> { - while let Ok(DeviceStatus::NotReady) = self.dac.status() {} + while let Ok(DeviceStatus::NotReady) = self.dac.status() { + } let points: Vec = line.into_iter().map(|p| p.into()).collect(); - let _frame = Frame::new(speed, points); + let frame = Frame::new(speed, points); + self.dac.write_frame(frame.clone())?; Ok(()) } diff --git a/src/main.rs b/src/main.rs index cb05855..669642c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -72,9 +72,8 @@ fn run_all() -> LJResult<()> { let frame = get_next_frame(&config, &transformers, &mut rs, order == Order::Black)?; - // For now, draw all the time - tracer.draw(frame, 1000)?; + tracer.draw(frame, 10_000)?; } info!("Exiting, stoping device."); @@ -109,6 +108,6 @@ fn get_next_frame( line = transformer.apply(&line); } - info!("Line: {:?}", line); + //info!("Line: {:?}", line); Ok(line) }