add ticks

This commit is contained in:
jane 2021-12-28 21:45:00 -05:00
parent 85cef5d474
commit 712140fc8d
3 changed files with 7 additions and 5 deletions

View File

@ -40,6 +40,7 @@ fn main() {
}); });
//pattern management //pattern management
let mut ticks = 0;
loop { loop {
thread::sleep(time::Duration::from_millis(LOOP_WAIT)); thread::sleep(time::Duration::from_millis(LOOP_WAIT));
let c_lock = Arc::clone(&lock); let c_lock = Arc::clone(&lock);
@ -48,7 +49,8 @@ fn main() {
for p in *data { for p in *data {
//let c_lock = Arc::clone(&lock); //let c_lock = Arc::clone(&lock);
//let mut lights = c_lock.write().unwrap(); //let mut lights = c_lock.write().unwrap();
p.execute(&mut lights); p.execute(&mut lights, ticks);
} }
ticks++;
} }
} }

View File

@ -4,7 +4,7 @@ use rs_ws281x::WS2811Error;
// use std::{thread, time}; // use std::{thread, time};
pub fn run_lights(controller: &mut Controller, values: &[RawColor; crate::LED_SIZE]) -> Result<(), WS2811Error> { pub fn run_lights(controller: &mut Controller, values: &[RawColor; crate::LED_SIZE]) -> Result<(), WS2811Error> {
println!("Value: {:?}", values[0]); // println!("Value: {:?}", values[0]);
//thread::sleep(time::Duration::from_millis(10)); //thread::sleep(time::Duration::from_millis(10));
let channels: Vec<usize> = controller.channels(); let channels: Vec<usize> = controller.channels();
let strip = controller.leds_mut(channels[0]); let strip = controller.leds_mut(channels[0]);

View File

@ -8,7 +8,7 @@ use std::sync::RwLockWriteGuard;
pub type ParseError = Box<dyn std::error::Error>; pub type ParseError = Box<dyn std::error::Error>;
pub trait Pattern: Send { pub trait Pattern: Send {
fn execute(&self, values: &mut RwLockWriteGuard<'_, [RawColor; crate::LED_SIZE]>); fn execute(&self, values: &mut RwLockWriteGuard<'_, [RawColor; crate::LED_SIZE]>, ticks: u64);
fn parse(args: Vec<String>) -> Result<Self, ParseError> where Self: Sized; fn parse(args: Vec<String>) -> Result<Self, ParseError> where Self: Sized;
} }
@ -25,7 +25,7 @@ impl TryFrom<Vec<String>> for Box<dyn Pattern> {
struct Unit; struct Unit;
impl Pattern for Unit { impl Pattern for Unit {
fn execute(&self, _values: &mut RwLockWriteGuard<'_, [RawColor; crate::LED_SIZE]>) {} fn execute(&self, _values: &mut RwLockWriteGuard<'_, [RawColor; crate::LED_SIZE]>, ticks: u64) {}
fn parse(_args: Vec<String>) -> Result<Self, ParseError> { fn parse(_args: Vec<String>) -> Result<Self, ParseError> {
Ok(Unit {}) Ok(Unit {})
} }
@ -38,7 +38,7 @@ struct Value {
} }
impl Pattern for Value { impl Pattern for Value {
fn execute(&self, values: &mut RwLockWriteGuard<'_, [RawColor; crate::LED_SIZE]>) { fn execute(&self, values: &mut RwLockWriteGuard<'_, [RawColor; crate::LED_SIZE]>, ticks: u64) {
for i in 0..crate::LED_SIZE { for i in 0..crate::LED_SIZE {
let mut color: RawColor = (*values)[i]; let mut color: RawColor = (*values)[i];
if self.r.is_some() { if self.r.is_some() {