From fe8942575afe8f73c4c82a00a3fed1e751b4f065 Mon Sep 17 00:00:00 2001 From: Serge Bazanski Date: Fri, 23 Jan 2026 21:28:46 +0100 Subject: [PATCH] *: cargo fmt --- spinnyboy_rust/src/bin/dc_driver/afroesc.rs | 109 +++++++++--------- spinnyboy_rust/src/bin/dc_driver/dshot.rs | 25 ++-- spinnyboy_rust/src/bin/dc_driver/mod.rs | 12 +- spinnyboy_rust/src/bin/main.rs | 99 +++++++++------- spinnyboy_rust/src/bin/peripherals/mod.rs | 10 +- spinnyboy_rust/src/bin/peripherals/nextion.rs | 50 ++++---- spinnyboy_rust/src/lib.rs | 2 +- 7 files changed, 156 insertions(+), 151 deletions(-) diff --git a/spinnyboy_rust/src/bin/dc_driver/afroesc.rs b/spinnyboy_rust/src/bin/dc_driver/afroesc.rs index 9dcf89d..8469ca0 100644 --- a/spinnyboy_rust/src/bin/dc_driver/afroesc.rs +++ b/spinnyboy_rust/src/bin/dc_driver/afroesc.rs @@ -1,56 +1,59 @@ -use esp_hal::mcpwm::operator::PwmPin; -use esp_hal::delay::Delay; use crate::dc_driver::EscState; -pub struct AfroEsc<'a>{ - pub pwm_pin: &'a mut PwmPin<'a, esp_hal::peripherals::MCPWM0<'a>, 0,true>, - state: crate::dc_driver::EscState, - +use esp_hal::delay::Delay; +use esp_hal::mcpwm::operator::PwmPin; +pub struct AfroEsc<'a> { + pub pwm_pin: &'a mut PwmPin<'a, esp_hal::peripherals::MCPWM0<'a>, 0, true>, + state: crate::dc_driver::EscState, } -const ARMING_SEQUENCE:u16 = 1055; -const MIN_THROTTLE:u16 = 1121; -const MAX_THROTTLE:u16 = 1421; -const GAP:u16 = (MAX_THROTTLE - MIN_THROTTLE)/100; +const ARMING_SEQUENCE: u16 = 1055; +const MIN_THROTTLE: u16 = 1121; +const MAX_THROTTLE: u16 = 1421; +const GAP: u16 = (MAX_THROTTLE - MIN_THROTTLE) / 100; -impl AfroEsc<'_>{ - //this is a little hacky tbh - pub fn new<'a>(pwm_pin:&'a mut PwmPin<'a, esp_hal::peripherals::MCPWM0<'a>, 0,true>)-> AfroEsc<'a> { - let mut esc = AfroEsc{pwm_pin:pwm_pin,state:EscState::Starting}; - let delay = Delay::new(); - esc.send_arming_sequence(); - delay.delay_millis(3000); - esc - } - pub fn set_timestamp(&mut self,value:u16){ - - self.pwm_pin.set_timestamp(value); - } - //range is from 1121 till 1421 - pub fn set_duty_percent(&mut self,value:u16){ - if value > 100 { - // failsafe! - self.pwm_pin.set_timestamp(1055); - } - let new_timestamp = MIN_THROTTLE+value*GAP; - self.pwm_pin.set_timestamp(new_timestamp); - } - pub fn send_arming_sequence(&mut self){ - self.set_timestamp(1055); - } - fn set_state(&mut self, state:EscState){ - self.state = state; - } - pub fn get_state(self) -> EscState{ - self.state - } - pub fn map_duty(&mut self, x:i32){ - if x <=0 { - self.pwm_pin.set_timestamp(1055); - } - else{ - let duty:u16 = crate::dc_driver::arduino_map(x, 0, 100, MIN_THROTTLE.into(), MAX_THROTTLE.into()).try_into().expect("INTEGER TOO LARGE"); - self.pwm_pin.set_timestamp(duty); - - } - } - -} \ No newline at end of file +impl AfroEsc<'_> { + //this is a little hacky tbh + pub fn new<'a>( + pwm_pin: &'a mut PwmPin<'a, esp_hal::peripherals::MCPWM0<'a>, 0, true>, + ) -> AfroEsc<'a> { + let mut esc = AfroEsc { + pwm_pin: pwm_pin, + state: EscState::Starting, + }; + let delay = Delay::new(); + esc.send_arming_sequence(); + delay.delay_millis(3000); + esc + } + pub fn set_timestamp(&mut self, value: u16) { + self.pwm_pin.set_timestamp(value); + } + //range is from 1121 till 1421 + pub fn set_duty_percent(&mut self, value: u16) { + if value > 100 { + // failsafe! + self.pwm_pin.set_timestamp(1055); + } + let new_timestamp = MIN_THROTTLE + value * GAP; + self.pwm_pin.set_timestamp(new_timestamp); + } + pub fn send_arming_sequence(&mut self) { + self.set_timestamp(1055); + } + fn set_state(&mut self, state: EscState) { + self.state = state; + } + pub fn get_state(self) -> EscState { + self.state + } + pub fn map_duty(&mut self, x: i32) { + if x <= 0 { + self.pwm_pin.set_timestamp(1055); + } else { + let duty: u16 = + crate::dc_driver::arduino_map(x, 0, 100, MIN_THROTTLE.into(), MAX_THROTTLE.into()) + .try_into() + .expect("INTEGER TOO LARGE"); + self.pwm_pin.set_timestamp(duty); + } + } +} diff --git a/spinnyboy_rust/src/bin/dc_driver/dshot.rs b/spinnyboy_rust/src/bin/dc_driver/dshot.rs index 54dc764..519bb38 100644 --- a/spinnyboy_rust/src/bin/dc_driver/dshot.rs +++ b/spinnyboy_rust/src/bin/dc_driver/dshot.rs @@ -41,11 +41,11 @@ impl BitTicks { Self { t0_h, t1_h, - t0_l:t1_h, - t1_l:t0_h, + t0_l: t1_h, + t1_l: t0_h, } } - + pub fn from_clk( clk_speed: u32, clk_divider: u8, @@ -57,11 +57,10 @@ impl BitTicks { let bit_ticks = (bit_period_us / tick_len).round() as u16; let t1_h = (speed.bit_times().t1_h / tick_len).round() as u16; let t0_h = (speed.bit_times().t0_h / tick_len).round() as u16; - let mut bittick = Self::new(t1_h, t0_h); - bittick.t0_l = bit_ticks -t0_h; + let mut bittick = Self::new(t1_h, t0_h); + bittick.t0_l = bit_ticks - t0_h; bittick.t1_l = bit_ticks - t1_h; bittick - } } @@ -140,8 +139,14 @@ impl<'a> DShot<'a> { ) -> Self { let clk_speed = clk_speed.unwrap_or(80_000_000); let clk_divider = clk_divider.unwrap_or(1); - let bit_ticks = BitTicks::from_clk(clk_speed, clk_divider, speed.bit_times(),speed); - rprint!("bit_ticks.t1_h:{},t1_l:{},t0_h:{},t0_l{}",bit_ticks.t1_h,bit_ticks.t1_l,bit_ticks.t0_h,bit_ticks.t0_l); + let bit_ticks = BitTicks::from_clk(clk_speed, clk_divider, speed.bit_times(), speed); + rprint!( + "bit_ticks.t1_h:{},t1_l:{},t0_h:{},t0_l{}", + bit_ticks.t1_h, + bit_ticks.t1_l, + bit_ticks.t0_h, + bit_ticks.t0_l + ); Self { rx_channel: rx_channel, tx_channel: tx_channel, @@ -171,7 +176,7 @@ impl<'a> DShot<'a> { rprintln!("--------------------"); for i in 0..16 { let bit = (frame >> (15 - i)) & 1; - + pulses[i] = if bit == 1 { rprint!("1"); PulseCode::new( @@ -195,7 +200,7 @@ impl<'a> DShot<'a> { rprintln!(""); rprintln!("--------------------"); - pulses[16] =0; + pulses[16] = 0; pulses } diff --git a/spinnyboy_rust/src/bin/dc_driver/mod.rs b/spinnyboy_rust/src/bin/dc_driver/mod.rs index 40e125f..e0fbb96 100644 --- a/spinnyboy_rust/src/bin/dc_driver/mod.rs +++ b/spinnyboy_rust/src/bin/dc_driver/mod.rs @@ -4,14 +4,10 @@ pub enum EscState { Starting, Running, Stopping, - Stop - + Stop, } //taken from: https://docs.arduino.cc/language-reference/en/functions/math/map/ //used for the ramp up of the spincoater -pub fn arduino_map(x:i32, in_min:i32, in_max:i32, out_min:i32, out_max:i32) -> i32 { - - return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; - -} - +pub fn arduino_map(x: i32, in_min: i32, in_max: i32, out_min: i32, out_max: i32) -> i32 { + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} diff --git a/spinnyboy_rust/src/bin/main.rs b/spinnyboy_rust/src/bin/main.rs index 61589fb..6583f9b 100644 --- a/spinnyboy_rust/src/bin/main.rs +++ b/spinnyboy_rust/src/bin/main.rs @@ -6,18 +6,18 @@ holding buffers for the duration of a data transfer." )] use alloc::string::ToString; -use esp_hal::uart::{Config, Uart}; use esp_hal::clock::CpuClock; use esp_hal::delay::Delay; use esp_hal::main; +use esp_hal::uart::{Config, Uart}; use esp_hal::gpio::Event; use esp_hal::gpio::{Input, InputConfig}; +use esp_hal::handler; use esp_hal::mcpwm::operator::PwmPinConfig; use esp_hal::mcpwm::timer::PwmWorkingMode; -use esp_hal::time::Rate; use esp_hal::rmt::{Rmt, TxChannelConfig, TxChannelCreator}; -use esp_hal::handler; +use esp_hal::time::Rate; use core::cell::RefCell; use critical_section::Mutex; @@ -36,10 +36,10 @@ use peripherals::nextion::Nextion; use dc_driver::dshot::DShot; use dc_driver::dshot::DShotSpeed; -use esp_hal::rmt::RxChannelCreator; -use esp_hal::rmt::RxChannelConfig; use crate::dc_driver::dshot; use crate::peripherals::ErrCommand; +use esp_hal::rmt::RxChannelConfig; +use esp_hal::rmt::RxChannelCreator; #[panic_handler] fn panic(_: &core::panic::PanicInfo) -> ! { rprintln!("PANIC!"); @@ -57,8 +57,8 @@ const DEFAULT_SPIN_TIME: u32 = 10; // For more information see: esp_bootloader_esp_idf::esp_app_desc!(); use crate::peripherals::Command; -use esp_hal::gpio::Output; use esp_hal::gpio::Level; +use esp_hal::gpio::Output; use esp_hal::gpio::OutputConfig; #[main] @@ -85,23 +85,34 @@ fn main() -> ! { .timer_clock_with_frequency(19_999, PwmWorkingMode::Increase, Rate::from_hz(50)) .unwrap(); mcpwm.timer0.start(timer_clock_cfg); - + //setup RMT let freq = Rate::from_mhz(80); let rmt = Rmt::new(peripherals.RMT, freq).expect("CAN NOT SET FREQUENCY"); let rx_config = RxChannelConfig::default().with_clk_divider(1); let tx_config = TxChannelConfig::default().with_clk_divider(1); - let mut toggle_pin = Output::new(peripherals.GPIO2, Level::Low, OutputConfig::default()); - let mut tx_channel = rmt.channel0.configure_tx(peripherals.GPIO23,tx_config ).expect("creation of TX_CHANNEL FAILED!"); - let mut rx_channel = rmt.channel3.configure_rx(peripherals.GPIO14,rx_config).unwrap(); - let mut dshot_esc = dshot::DShot::new(&mut rx_channel, &mut tx_channel, DShotSpeed::DShot600, Some(80_000_000), Some(1)); + let mut toggle_pin = Output::new(peripherals.GPIO2, Level::Low, OutputConfig::default()); + let mut tx_channel = rmt + .channel0 + .configure_tx(peripherals.GPIO23, tx_config) + .expect("creation of TX_CHANNEL FAILED!"); + let mut rx_channel = rmt + .channel3 + .configure_rx(peripherals.GPIO14, rx_config) + .unwrap(); + let mut dshot_esc = dshot::DShot::new( + &mut rx_channel, + &mut tx_channel, + DShotSpeed::DShot600, + Some(80_000_000), + Some(1), + ); rprintln!("SENDING RMT"); - loop{ - delay.delay_millis(1000); - toggle_pin.set_high(); - dshot_esc.write_throttle(2047,true); - toggle_pin.set_low(); - + loop { + delay.delay_millis(1000); + toggle_pin.set_high(); + dshot_esc.write_throttle(2047, true); + toggle_pin.set_low(); } // rprintln!("RMT SENT!"); // let mut esc = AfroEsc::new(&mut pwm_pin);; @@ -144,35 +155,35 @@ fn main() -> ! { loop { if display.read_ready() { match display.read_command() { - Ok(Command::CommandSuccess) => { - rprintln!("COMMAND SUCCESSFULLY executed"); - } - Ok(Command::Start) => { - rprintln!("START"); - started = true; - }, - Ok(Command::Stop) => { - rprintln!("STOP"); - started = false; - // spincoater.stop(); - }, - Ok(Command::SetRpm(x)) => { - rprintln!("SET_RPM with {}", x); - rpm = x; - }, - Ok(Command::SetTimer(x)) => { - rprintln!("SETTING TIMER {}", x); - timer = x; - }, - Ok(Command::SendConfig) => { - rprintln!("SEND CONFIG"); - let command = format!("rpm.val={}",DEFAULT_TARGET_RPM); - display.send_command(command.to_string().as_bytes()); - }, + Ok(Command::CommandSuccess) => { + rprintln!("COMMAND SUCCESSFULLY executed"); + } + Ok(Command::Start) => { + rprintln!("START"); + started = true; + } + Ok(Command::Stop) => { + rprintln!("STOP"); + started = false; + // spincoater.stop(); + } + Ok(Command::SetRpm(x)) => { + rprintln!("SET_RPM with {}", x); + rpm = x; + } + Ok(Command::SetTimer(x)) => { + rprintln!("SETTING TIMER {}", x); + timer = x; + } + Ok(Command::SendConfig) => { + rprintln!("SEND CONFIG"); + let command = format!("rpm.val={}", DEFAULT_TARGET_RPM); + display.send_command(command.to_string().as_bytes()); + } Err(ErrCommand::NoValidCmd) => { rprintln!(" NOT A VALID CMD!"); - }, - Err(ErrCommand::ReadError) =>{ + } + Err(ErrCommand::ReadError) => { rprintln!("READ FAILED!"); } } diff --git a/spinnyboy_rust/src/bin/peripherals/mod.rs b/spinnyboy_rust/src/bin/peripherals/mod.rs index fa7fc3a..9ff877d 100644 --- a/spinnyboy_rust/src/bin/peripherals/mod.rs +++ b/spinnyboy_rust/src/bin/peripherals/mod.rs @@ -1,15 +1,15 @@ pub mod nextion; #[derive(Debug)] -pub enum Command{ +pub enum Command { SetRpm(u32), SetTimer(u32), Start, Stop, SendConfig, - CommandSuccess + CommandSuccess, } #[derive(Debug)] -pub enum ErrCommand{ +pub enum ErrCommand { NoValidCmd, - ReadError -} \ No newline at end of file + ReadError, +} diff --git a/spinnyboy_rust/src/bin/peripherals/nextion.rs b/spinnyboy_rust/src/bin/peripherals/nextion.rs index 4827b0e..69b3f45 100644 --- a/spinnyboy_rust/src/bin/peripherals/nextion.rs +++ b/spinnyboy_rust/src/bin/peripherals/nextion.rs @@ -1,9 +1,9 @@ +use esp_hal::Blocking; use esp_hal::uart::RxError; -use esp_hal::uart::{Uart}; -use esp_hal::{Blocking }; +use esp_hal::uart::Uart; use rtt_target::rprintln; -use crate::peripherals::{ErrCommand,Command}; +use crate::peripherals::{Command, ErrCommand}; enum UartStatemachine { WaitingP, @@ -93,42 +93,32 @@ impl<'a> Nextion<'a> { } } } - pub fn read_command(&mut self) -> Result{ - let mut buf:[u8;8] = [0;8]; - let _read_bytes = match self.read_frame(&mut buf){ + pub fn read_command(&mut self) -> Result { + let mut buf: [u8; 8] = [0; 8]; + let _read_bytes = match self.read_frame(&mut buf) { Ok(x) => x, - Err(e) => {rprintln!("ERROR while reading"); - return Err(ErrCommand::NoValidCmd); - } + Err(e) => { + rprintln!("ERROR while reading"); + return Err(ErrCommand::NoValidCmd); + } }; - rprintln!("READ SUCCESS!:{:?}",buf); - match buf[0]{ - - 01 => {Ok(Command::Start)}, - 02 =>{Ok(Command::Stop)}, + rprintln!("READ SUCCESS!:{:?}", buf); + match buf[0] { + 01 => Ok(Command::Start), + 02 => Ok(Command::Stop), 03 => { let rpm = u32::from_le_bytes(buf[1..5].try_into().expect("failed to parse rpm!")); Ok(Command::SetRpm(rpm)) - }, + } 04 => { let time = u32::from_le_bytes(buf[1..5].try_into().expect("failed to parse time!")); - Ok(Command::SetTimer(time)) + Ok(Command::SetTimer(time)) } - 05 =>{ - Ok(Command::SendConfig) - } - 00 => { - Ok(Command::CommandSuccess) - }, - _ => { - Err(ErrCommand::NoValidCmd) - } - } - - - - + 05 => Ok(Command::SendConfig), + 00 => Ok(Command::CommandSuccess), + _ => Err(ErrCommand::NoValidCmd), + } } pub fn read_ready(&mut self) -> bool { self.interface.read_ready() diff --git a/spinnyboy_rust/src/lib.rs b/spinnyboy_rust/src/lib.rs index 2e7f0d4..0c9ac1a 100644 --- a/spinnyboy_rust/src/lib.rs +++ b/spinnyboy_rust/src/lib.rs @@ -1 +1 @@ -#![no_std] \ No newline at end of file +#![no_std]