diff --git a/spinnyboy_rust/src/bin/main.rs b/spinnyboy_rust/src/bin/main.rs index 2c12095..db46560 100644 --- a/spinnyboy_rust/src/bin/main.rs +++ b/spinnyboy_rust/src/bin/main.rs @@ -63,6 +63,7 @@ extern crate alloc; const DEFAULT_TARGET_RPM: u32 = 4000; //in seconds const DEFAULT_SPIN_TIME: u64 = 10; +const DEFAULT_DRY_SPIN_TIME: u64 = 10; // This creates a default app-descriptor required by the esp-idf bootloader. // For more information see: esp_bootloader_esp_idf::esp_app_desc!(); @@ -176,7 +177,9 @@ fn main() -> ! { //we just set it to page0 to be sure display.send_command(b"page page0"); let mut target_rpm = DEFAULT_TARGET_RPM; - let mut timer:u64 = DEFAULT_SPIN_TIME; + let mut timer: u64 = DEFAULT_SPIN_TIME; + let mut target_dry_rpm = DEFAULT_DRY_SPIN_TIME; + let mut dry_timer: u64 = DEFAULT_SPIN_TIME; let mut started = false; loop { if display.read_ready() { @@ -202,6 +205,14 @@ fn main() -> ! { rprintln!("SETTING TIMER {}", x); timer = x as _; } + Ok(Command::SetRpm2(x)) => { + rprintln!("SET_RPM with {}", x); + target_dry_rpm = x.try_into().expect("Couldn't cast RPM2 to u64"); + } + Ok(Command::SetTimer2(x)) => { + rprintln!("SETTING TIMER {}", x); + dry_timer = x as _; + } Ok(Command::SendConfig) => { rprintln!("SEND CONFIG"); let command = format!("rpm.val={}", DEFAULT_TARGET_RPM); @@ -241,7 +252,7 @@ fn main() -> ! { x } None => { - rpm_fail_ctr+=1; + rpm_fail_ctr += 1; // rprintln!("NO RPM!"); current_rpm } @@ -252,24 +263,28 @@ fn main() -> ! { let timestamp = esp_hal::time::Instant::now() .duration_since_epoch() .as_millis(); - (control, ctx) = - controller.compute(ctx, current_rpm as _, set_point as _, Millis(timestamp), None); + (control, ctx) = controller.compute( + ctx, + current_rpm as _, + set_point as _, + Millis(timestamp), + None, + ); let dumped_context = ctx.last_time().expect("LAST TIME!"); - rprintln!("control:{},rpm:{}", control,current_rpm); + rprintln!("control:{},rpm:{}", control, current_rpm); //first we send the RPM! - if display.write_ready(){ + if display.write_ready() { let running_rpm = format!("rpm.val={}", current_rpm); display.send_command(running_rpm.to_string().as_bytes()); } - if display.write_ready(){ + if display.write_ready() { let counter = format!("counter.val={}", 1234); display.send_command(counter.to_string().as_bytes()); - } } rprintln!("COATING done!"); - rprintln!("RPM_READ_FAILS {}",rpm_fail_ctr); + rprintln!("RPM_READ_FAILS {}", rpm_fail_ctr); started = false; display.send_command(b"page page0"); } diff --git a/spinnyboy_rust/src/bin/peripherals/mod.rs b/spinnyboy_rust/src/bin/peripherals/mod.rs index 5998a6e..4f881e2 100644 --- a/spinnyboy_rust/src/bin/peripherals/mod.rs +++ b/spinnyboy_rust/src/bin/peripherals/mod.rs @@ -7,6 +7,8 @@ pub enum Command { Stop, SendConfig, CommandSuccess, + SetRpm2(u32), + SetTimer2(u32), } #[derive(Debug)] pub enum ErrCommand { diff --git a/spinnyboy_rust/src/bin/peripherals/nextion.rs b/spinnyboy_rust/src/bin/peripherals/nextion.rs index ce11981..d96a6a7 100644 --- a/spinnyboy_rust/src/bin/peripherals/nextion.rs +++ b/spinnyboy_rust/src/bin/peripherals/nextion.rs @@ -116,6 +116,14 @@ impl<'a> Nextion<'a> { Ok(Command::SetTimer(time)) } 05 => Ok(Command::SendConfig), + 06 => { + let rpm = u32::from_le_bytes(buf[1..5].try_into().expect("failed to parse rpm!")); + Ok(Command::SetRpm2(rpm)) + } + 07 => { + let time = u32::from_le_bytes(buf[1..5].try_into().expect("failed to parse rpm!")); + Ok(Command::SetTimer2(time)) + } 00 => Ok(Command::CommandSuccess), _ => Err(ErrCommand::NoValidCmd), }