use cortex_m::prelude::*; use embedded_hal::digital::v2::{OutputPin, ToggleableOutputPin}; use nb::{self, block}; use nmea0183::{ParseResult, Parser}; use stm32f1xx_hal::{ delay::Delay, gpio::{gpiob, gpioc, Alternate, Floating, Input, Output, PushPull}, prelude::*, serial::Serial, stm32, }; mod gps; mod setup; //use crate::exit; pub use setup::setup; use crate::si5153; use crate::time; // For PLL with 800MHz const WSPR_SYMBOLS: [si5153::PllParams; 4] = [ // 7040100.000000: 113 + 44687 / 70401 // actual: 7040100.000000 si5153::PllParams { p1: 14033, p2: 17455, p3: 70401, }, // 7040101.464844: 113 + 447801 / 705503 // actual: 7040101.464844 si5153::PllParams { p1: 14033, p2: 172785, p3: 705503, }, // 7040102.929688: 113 + 38515 / 60682 // actual: 7040102.929688 si5153::PllParams { p1: 14033, p2: 14678, p3: 60682, }, // 7040104.394531: 113 + 123233 / 194166 // actual: 7040104.394531 si5153::PllParams { p1: 14033, p2: 46378, p3: 194166, }, ]; pub struct App { delay: Delay, board_led: gpioc::PC13>, serial: Serial< stm32::USART3, ( gpiob::PB10>, gpiob::PB11>, ), >, gps_parser: Parser, locator: arrayvec::ArrayString<6>, } impl App { pub fn run(mut self) -> ! { defmt::info!("Application Startup!"); let mut last_ts = 0; loop { self.poll_gps(); } //exit(); } }