diff --git a/control-board/src/bin/hwtest-drib/main.rs b/control-board/src/bin/hwtest-drib/main.rs index d1b7643d..7e1282fc 100644 --- a/control-board/src/bin/hwtest-drib/main.rs +++ b/control-board/src/bin/hwtest-drib/main.rs @@ -3,7 +3,7 @@ use ateam_common_packets::{bindings::BasicControl, bindings::KickRequest, radio::DataPacket}; use embassy_executor::InterruptExecutor; -use embassy_stm32::{interrupt, pac::Interrupt}; +use embassy_stm32::{gpio::{Input, Pull}, interrupt, pac::Interrupt}; use embassy_sync::pubsub::PubSubChannel; use defmt_rtt as _; @@ -74,6 +74,11 @@ async fn main(main_spawner: embassy_executor::Spawner) { // start tasks // /////////////////// + // let pg10_read = Input::new(p.PG10, Pull::Up); + // let pg11_read = Input::new(p.PG11, Pull::Up); + // let pd0_read = Input::new(p.PD0, Pull::Up); + // let pd1_read = Input::new(p.PD1, Pull::Up); + create_io_task!(main_spawner, robot_state, p); create_kicker_task!( @@ -86,7 +91,34 @@ async fn main(main_spawner: embassy_executor::Spawner) { ); loop { - Timer::after_millis(100).await; + Timer::after_millis(10).await; + + if robot_state.hw_init_state_valid() { + break; + } + + defmt::info!("waiting for hw init state to be valid"); + } + + loop { + Timer::after_millis(10).await; + + if robot_state.get_hw_robot_id() == 0 { + break; + } + + defmt::info!("wait for user to select robot id 0"); + } + + loop { + Timer::after_millis(10).await; + + let mut motor_speed_ind = robot_state.get_hw_robot_id(); + if motor_speed_ind > 8 { + motor_speed_ind = 16 - motor_speed_ind; + } + + let drib_speed = motor_speed_ind as f32 * 75.0; test_command_publisher .publish(DataPacket::BasicControl(BasicControl { @@ -96,7 +128,7 @@ async fn main(main_spawner: embassy_executor::Spawner) { vel_y_linear: 0.0, vel_z_angular: 0.0, kick_vel: 0.0, - dribbler_speed: 50.0, + dribbler_speed: drib_speed, kick_request: KickRequest::KR_DISABLE, })) .await; diff --git a/control-board/src/drivers/kicker.rs b/control-board/src/drivers/kicker.rs index 96387329..0a8c3f08 100644 --- a/control-board/src/drivers/kicker.rs +++ b/control-board/src/drivers/kicker.rs @@ -9,7 +9,7 @@ use embassy_stm32::{ }; use embassy_time::{with_timeout, Duration, Timer}; -use ateam_common_packets::bindings::{KickerControl, KickerTelemetry}; +use ateam_common_packets::bindings::{KickRequest::KR_DISABLE, KickerControl, KickerTelemetry}; use crate::{image_hash, DEBUG_KICKER_UART_QUEUES}; @@ -49,11 +49,14 @@ impl< >, firmware_image: &'a [u8], ) -> Kicker<'a, LEN_RX, LEN_TX, DEPTH_RX, DEPTH_TX> { + let mut command_state: KickerControl = Default::default(); + command_state.kick_request = KR_DISABLE; + Self { stm32_uart_interface: stm32_interface, firmware_image, - command_state: Default::default(), + command_state: command_state, telemetry_state: Default::default(), telemetry_enabled: false,