From 7198590ae45fa05269d0f79f6a23569a46433c00 Mon Sep 17 00:00:00 2001 From: Stephen D <webmaster@scd31.com> Date: Tue, 21 Nov 2023 17:31:48 -0400 Subject: [PATCH] bug fixes around usb detection --- src/main.rs | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/main.rs b/src/main.rs index f4ef1fa..02a60c2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -109,21 +109,33 @@ mod app { red.set_low(); green.set_low(); + // Detect if we're connected to USB or not let usb_detect = gpioa.pa5.into_pull_down_input(); + // need to give time for the pull-down to take effect + let mut delay = dp.TIM5.delay_us(&clocks); + delay.delay_us(100u8); + + let usb_connected = usb_detect.is_high(); + // setup radio - let mosi = gpiob.pb5.into_alternate(); - let miso = gpiob.pb4.into_alternate(); - let sclk = gpiob.pb3.into_alternate(); + let radio = if usb_connected { + None + } else { + let mosi = gpiob.pb5.into_alternate(); + let miso = gpiob.pb4.into_alternate(); + let sclk = gpiob.pb3.into_alternate(); - let sdn = gpiob.pb12.into_push_pull_output(); - let cs = gpioa.pa8.into_push_pull_output(); + let sdn = gpiob.pb12.into_push_pull_output(); + let cs = gpioa.pa8.into_push_pull_output(); - let spi = Spi::new(dp.SPI1, (sclk, miso, mosi), MODE, 10.MHz(), &clocks); + let spi = Spi::new(dp.SPI1, (sclk, miso, mosi), MODE, 10.MHz(), &clocks); - let delay = dp.TIM5.delay_us(&clocks); - let buf = singleton!(: [u8; MAX_PACKET_LEN] = [0; MAX_PACKET_LEN]).unwrap(); - let radio = RadioManager::new(spi, sdn, cs, delay, buf, config.enable_digipeating); + let buf = singleton!(: [u8; MAX_PACKET_LEN] = [0; MAX_PACKET_LEN]).unwrap(); + let radio = RadioManager::new(spi, sdn, cs, delay, buf, config.enable_digipeating); + + radio + }; // Setup GPS serial let pins = (gpioa.pa9, gpioa.pa10); @@ -170,12 +182,13 @@ mod app { let buf = cortex_m::singleton!(: [u8; MAX_PACKET_LEN] = [0; MAX_PACKET_LEN]).unwrap(); - let status = if usb_detect.is_high() { + let status = if usb_connected { Status::Programming(false) } else if radio.is_none() { Status::Error(false) } else if !config.enable_transmit { green.set_high(); + Status::TxDisabled(false) } else { green.set_high(); -- GitLab