From 4740e51b72338ce107e20dae0633285bfe41b130 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Thu, 26 Sep 2024 10:08:42 +0200 Subject: [PATCH 01/14] init ublox ext rtk --- sfy-buoy/Cargo.lock | 61 +++ sfy-buoy/Cargo.toml | 2 +- sfy-buoy/Makefile | 17 +- sfy-buoy/sfy-ext-gps/.cargo/config.toml | 15 + sfy-buoy/sfy-ext-gps/Cargo.toml | 47 +++ sfy-buoy/sfy-ext-gps/build.rs | 31 ++ sfy-buoy/sfy-ext-gps/memory.x | 7 + sfy-buoy/sfy-ext-gps/src/gps.rs | 20 + sfy-buoy/sfy-ext-gps/src/log.rs | 7 + sfy-buoy/sfy-ext-gps/src/main.rs | 537 ++++++++++++++++++++++++ 10 files changed, 735 insertions(+), 9 deletions(-) create mode 100644 sfy-buoy/sfy-ext-gps/.cargo/config.toml create mode 100644 sfy-buoy/sfy-ext-gps/Cargo.toml create mode 100644 sfy-buoy/sfy-ext-gps/build.rs create mode 100644 sfy-buoy/sfy-ext-gps/memory.x create mode 100644 sfy-buoy/sfy-ext-gps/src/gps.rs create mode 100644 sfy-buoy/sfy-ext-gps/src/log.rs create mode 100644 sfy-buoy/sfy-ext-gps/src/main.rs diff --git a/sfy-buoy/Cargo.lock b/sfy-buoy/Cargo.lock index 689e446b..4f313ce7 100644 --- a/sfy-buoy/Cargo.lock +++ b/sfy-buoy/Cargo.lock @@ -968,6 +968,12 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "portable-atomic" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d30538d42559de6b034bc76fd6dd4c38961b1ee5c6c56e3808c50128fdbc22ce" + [[package]] name = "postcard" version = "1.0.8" @@ -1294,6 +1300,28 @@ dependencies = [ "ufmt", ] +[[package]] +name = "sfy-ext-gps" +version = "0.1.0" +dependencies = [ + "ambiq-hal", + "chrono", + "cmsis_dsp", + "cortex-m", + "cortex-m-rt", + "defmt", + "defmt-rtt", + "defmt-serial", + "embedded-hal", + "git-version", + "heapless", + "panic-probe", + "sfy", + "static_cell", + "ublox", + "ufmt", +] + [[package]] name = "shlex" version = "1.2.0" @@ -1321,6 +1349,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "static_cell" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89b0684884a883431282db1e4343f34afc2ff6996fe1f4a1664519b66e14c1e" +dependencies = [ + "portable-atomic", +] + [[package]] name = "strsim" version = "0.8.0" @@ -1431,6 +1468,30 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ublox" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad0c3df1bc466bd97f94ab437aab9116d5c15909c8a5cb9905ee3c11df998e8" +dependencies = [ + "bitflags 2.4.1", + "chrono", + "num-traits", + "serde", + "ublox_derive", +] + +[[package]] +name = "ublox_derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea60f23c86d2329b7162f6ebb82854bc77b992a9984e1fdfe8707f88e0e3e69" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "ufmt" version = "0.1.2" diff --git a/sfy-buoy/Cargo.toml b/sfy-buoy/Cargo.toml index 6d5f36e3..905423ea 100644 --- a/sfy-buoy/Cargo.toml +++ b/sfy-buoy/Cargo.toml @@ -10,7 +10,7 @@ path = "src/bin/sfypack.rs" required-features = [ "build-bin", "raw" ] [workspace] -members = [ "target-test", "sfy-artemis" ] +members = [ "target-test", "sfy-artemis", "sfy-ext-gps" ] [dependencies] base64 = { version = "0.13.0", default-features = false } diff --git a/sfy-buoy/Makefile b/sfy-buoy/Makefile index a33b5fee..3b9159ef 100644 --- a/sfy-buoy/Makefile +++ b/sfy-buoy/Makefile @@ -1,35 +1,36 @@ .DEFAULT_GOAL := build USB ?= /dev/ttyUSB0 T ?= debug +VARIANT ?= sfy-artemis ifeq "$(T)" "release" - ELF:= target/thumbv7em-none-eabihf/release/sfy-artemis + ELF:= target/thumbv7em-none-eabihf/release/$(VARIANT) override CARGO_FLAGS+=--release else ifeq "$(T)" "r" - ELF:= target/thumbv7em-none-eabihf/release/sfy-artemis + ELF:= target/thumbv7em-none-eabihf/release/$(VARIANT) override CARGO_FLAGS+=--release else - ELF:= target/thumbv7em-none-eabihf/debug/sfy-artemis + ELF:= target/thumbv7em-none-eabihf/debug/$(VARIANT) endif bump-jlink: -python3 ../tools/bump-jlink build: - cd sfy-artemis && cargo build $(CARGO_FLAGS) + cd $(VARIANT) && cargo build $(CARGO_FLAGS) bin: build - arm-none-eabi-objcopy -S -O binary $(ELF) target/sfy-buoy.bin + arm-none-eabi-objcopy -S -O binary $(ELF) target/$(VARIANT).bin # cd sfy-artemis && cargo objcopy $(CARGO_FLAGS) -- -O binary ../target/sfy-buoy.bin flash: bin - python3 ../tools/svl/svl.py -f target/sfy-buoy.bin $(USB) -v + python3 ../tools/svl/svl.py -f target/$(VARIANT).bin $(USB) -v jlink-flash: bin bump-jlink - sh jlink-flash.sh target/sfy-buoy.bin + sh jlink-flash.sh target/$(VARIANT).bin deploy: bin - python3 ../tools/svl/svl.py -f target/sfy-buoy.bin $(USB) -v + python3 ../tools/svl/svl.py -f target/$(VARIANT).bin $(USB) -v com: picocom -e c -b 115200 $(USB) diff --git a/sfy-buoy/sfy-ext-gps/.cargo/config.toml b/sfy-buoy/sfy-ext-gps/.cargo/config.toml new file mode 100644 index 00000000..83fd8b39 --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/.cargo/config.toml @@ -0,0 +1,15 @@ +[target.thumbv7em-none-eabihf] +runner = "probe-run --chip AMA3B1KK" + +rustflags = [ + # This is needed if your flash or ram addresses are not aligned to 0x10000 in memory.x + # See https://github.com/rust-embedded/cortex-m-quickstart/pull/95 + "-C", "link-arg=--nmagic", + + # LLD (shipped with the Rust toolchain) is used as the default linker + "-C", "link-arg=-Tlink.x", + "-C", "link-arg=-Tdefmt.x", # <- ADD this one +] + +[build] +target = "thumbv7em-none-eabihf" # Cortex-M4F and Cortex-M7F (with FPU) diff --git a/sfy-buoy/sfy-ext-gps/Cargo.toml b/sfy-buoy/sfy-ext-gps/Cargo.toml new file mode 100644 index 00000000..de778db7 --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/Cargo.toml @@ -0,0 +1,47 @@ +cargo-features = [ "per-package-target" ] + +[package] +name = "sfy-ext-gps" +version = "0.1.0" +edition = "2021" +authors = [ "Gaute Hope " ] +resolver = "2" +forced-target = "thumbv7em-none-eabihf" + + +[dependencies] +heapless = { version = "0.7", features = [ "serde", "ufmt-impl", "defmt-impl" ] } +cortex-m = { version = "0.7", features = ["critical-section-single-core"]} +cortex-m-rt = "0.7" +embedded-hal = "0.2.6" +defmt = "0.3" +defmt-rtt = "0.4" +panic-probe = { version = "0.3.0", features = ["print-defmt"] } +cmsis_dsp = { version = "0.1.0", features = [ "micromath" ] } +sfy = { path = "../", default-features = false } +git-version = "0.3.5" +chrono = { version = "0.4.19", default-features = false } +defmt-serial = { version = "0.6.0", optional = true } +ufmt = { version = "0.1.0", optional = true } +ublox = { version = "0.4.5", default-features = false, features = ["serde"] } +static_cell = "2.1.0" + +[dependencies.ambiq-hal] +version = "0.3" +features = ["ambiq-sdk", "sparkfun-redboard-nano", "rt"] +git = "https://github.com/gauteh/ambiq-rs" + +[dev-dependencies] + + +[features] +default = [ "deploy", "fir" ] +continuous = [ "sfy/continuous" ] +20Hz = [ "sfy/20Hz" ] +raw = [ "sfy/raw" ] +fir = [ "sfy/fir" ] +storage = [ "sfy/storage" ] +surf = [ "sfy/surf" ] +deploy = [] +defmt-serial = [ "dep:ufmt", "dep:defmt-serial" ] + diff --git a/sfy-buoy/sfy-ext-gps/build.rs b/sfy-buoy/sfy-ext-gps/build.rs new file mode 100644 index 00000000..d534cc3d --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/build.rs @@ -0,0 +1,31 @@ +//! This build script copies the `memory.x` file from the crate root into +//! a directory where the linker can always find it at build time. +//! For many projects this is optional, as the linker always searches the +//! project root directory -- wherever `Cargo.toml` is. However, if you +//! are using a workspace or have a more complicated build setup, this +//! build script becomes required. Additionally, by requesting that +//! Cargo re-run the build script whenever `memory.x` is changed, +//! updating `memory.x` ensures a rebuild of the application with the +//! new memory settings. + +use std::env; +use std::fs::File; +use std::io::Write; +use std::path::PathBuf; + +fn main() { + // Put `memory.x` in our output directory and ensure it's + // on the linker search path. + let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap()); + File::create(out.join("memory.x")) + .unwrap() + .write_all(include_bytes!("memory.x")) + .unwrap(); + println!("cargo:rustc-link-search={}", out.display()); + + // By default, Cargo will re-run a build script whenever + // any file in the project changes. By specifying `memory.x` + // here, we ensure the build script is only re-run when + // `memory.x` is changed. + println!("cargo:rerun-if-changed=memory.x"); +} diff --git a/sfy-buoy/sfy-ext-gps/memory.x b/sfy-buoy/sfy-ext-gps/memory.x new file mode 100644 index 00000000..7701a21a --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/memory.x @@ -0,0 +1,7 @@ +ENTRY(Reset_Handler) +MEMORY +{ + FLASH (rx) : ORIGIN = 0x00010000, LENGTH = (0x000F0000 - (0x00010000)) + RAM_NVIC (rwx) : ORIGIN = 0x10000000, LENGTH = 0x100 + RAM (rwx) : ORIGIN = (0x10000000 + 0x100), LENGTH = (384K - (0x100)) +} diff --git a/sfy-buoy/sfy-ext-gps/src/gps.rs b/sfy-buoy/sfy-ext-gps/src/gps.rs new file mode 100644 index 00000000..1e5a7571 --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/src/gps.rs @@ -0,0 +1,20 @@ +#[allow(unused_imports)] +use defmt::{debug, error, info, println, trace, warn}; +use heapless::Vec; + +use static_cell::StaticCell; +use ublox::{FixedLinearBuffer, Parser}; + +static BUF: StaticCell> = StaticCell::new(); + +struct Gps { + parser: Parser>, +} + +impl Gps { + pub fn new(buf: &'static mut [u8]) -> Gps { + let buf = FixedLinearBuffer::new(buf); + let parser = Parser::new(buf); + Gps { parser } + } +} diff --git a/sfy-buoy/sfy-ext-gps/src/log.rs b/sfy-buoy/sfy-ext-gps/src/log.rs new file mode 100644 index 00000000..bbaa6d83 --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/src/log.rs @@ -0,0 +1,7 @@ +use ambiq_hal::i2c; +use sfy::note::Notecarrier; + +/// A reference to the Notecarrier once it is initialized. The idea is that +/// it can be used from reset routines to transfer log messages. In that case the main thread will +/// not be running anyway. +pub static mut NOTE: Option<*mut Notecarrier> = None; diff --git a/sfy-buoy/sfy-ext-gps/src/main.rs b/sfy-buoy/sfy-ext-gps/src/main.rs new file mode 100644 index 00000000..27962097 --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/src/main.rs @@ -0,0 +1,537 @@ +#![feature(result_option_inspect)] +#![no_std] +#![no_main] + +#[cfg(not(feature = "deploy"))] +use panic_probe as _; + +#[allow(unused_imports)] +use defmt::{debug, error, info, println, trace, warn}; + +#[cfg(not(feature = "defmt-serial"))] +use defmt_rtt as _; + +#[cfg(feature = "defmt-serial")] +use defmt_serial as _; + +// we use this for defs of sinf etc. +extern crate cmsis_dsp; + +use ambiq_hal::{self as hal, prelude::*}; +use chrono::NaiveDate; +use core::cell::RefCell; +use core::fmt::Write as _; +use core::panic::PanicInfo; +use core::sync::atomic::{AtomicI32, Ordering}; +#[allow(unused_imports)] +use cortex_m::{ + asm, + interrupt::{free, Mutex}, +}; +use cortex_m_rt::{entry, exception, ExceptionFrame}; +use embedded_hal::blocking::{ + delay::DelayMs, + i2c::{Read, Write}, +}; + +#[cfg(feature = "storage")] +use embedded_hal::spi::MODE_0; +#[cfg(feature = "storage")] +use hal::spi::{Freq, Spi}; + +use git_version::git_version; +use hal::{i2c, pac::interrupt}; + +use sfy::log::log; +use sfy::note::Notecarrier; +use sfy::waves::Waves; +#[cfg(feature = "storage")] +use sfy::{ + storage::{SdSpiSpeed, Storage}, + STORAGEQ, +}; +use sfy::{Imu, Location, SharedState, State, NOTEQ}; + +mod log; +mod gps; + +/// This static is used to transfer ownership of the IMU subsystem to the interrupt handler. +type I = hal::i2c::Iom3; +type E = ::Error; +static mut IMU: Option> = None; + +pub static COUNT: AtomicI32 = AtomicI32::new(0); +defmt::timestamp!("{=i32}", COUNT.load(Ordering::Relaxed)); + +/// The STATE contains the Real-Time-Clock which needs to be shared, as well as up-to-date +/// longitude and latitude. +pub static STATE: Mutex>>> = + Mutex::new(RefCell::new(None)); + +#[entry] +fn main() -> ! { + unsafe { + // Set the clock frequency. + halc::am_hal_clkgen_control( + halc::am_hal_clkgen_control_e_AM_HAL_CLKGEN_CONTROL_SYSCLK_MAX, + 0 as *mut c_void, + ); + + // Set the default cache configuration + halc::am_hal_cachectrl_config(&halc::am_hal_cachectrl_defaults); + halc::am_hal_cachectrl_enable(); + + // Configure the board for low power operation. + halc::am_bsp_low_power_init(); + } + + let mut dp = hal::pac::Peripherals::take().unwrap(); + let core = hal::pac::CorePeripherals::take().unwrap(); + let mut delay = hal::delay::Delay::new(core.SYST, &mut dp.CLKGEN); + + let pins = hal::gpio::Pins::new(dp.GPIO); + #[cfg(not(feature = "deploy"))] + let mut led = pins.d19.into_push_pull_output(); // d14 on redboard_artemis + + // set up serial as defmt target. + #[cfg(feature = "defmt-serial")] + let serial = hal::uart::Uart0::new(dp.UART0, pins.tx0, pins.rx0); + #[cfg(feature = "defmt-serial")] + defmt_serial::defmt_serial(serial); + + println!( + "hello from sfy (v{}) (sn: {})!", + git_version!(), + sfy::note::BUOYSN + ); + + println!("firmware configuration:"); + println!("name ........: {}", sfy::note::BUOYSN); + println!("notehub pr ..: {}", sfy::note::BUOYPR); + println!("version .....: {}", git_version!()); + println!("storage .....: {}", cfg!(feature = "storage")); + println!("fir .........: {}", cfg!(feature = "fir")); + println!("raw .........: {}", cfg!(feature = "raw")); + println!("20Hz ........: {}", cfg!(feature = "20Hz")); + println!("continuous ..: {}", cfg!(feature = "continuous")); + println!("deploy ......: {}", cfg!(feature = "deploy")); + println!("defmt-serial : {}", cfg!(feature = "defmt-serial")); + println!("NOTEQ_SZ ....: {}", sfy::NOTEQ_SZ); + println!("IMUQ_SZ .....: {}", sfy::IMUQ_SZ); + println!("STORAGEQ_SZ .: {}", sfy::STORAGEQ_SZ); + println!("GPS_PERIOD ..: {}", sfy::note::GPS_PERIOD); + println!("GPS_HEARTBEAT: {}", sfy::note::GPS_HEARTBEAT); + println!("SYNC_PERIOD .: {}", sfy::note::SYNC_PERIOD); + println!("EXT_SIM_APN .: {}", sfy::note::EXT_APN); + + info!("Setting up IOM and RTC."); + delay.delay_ms(1_000u32); + + let i2c4 = i2c::I2c::new(dp.IOM4, pins.d10, pins.d9, i2c::Freq::F100kHz); + let i2c3 = i2c::I2c::new(dp.IOM3, pins.d6, pins.d7, i2c::Freq::F400kHz); + + // Set up RTC + let mut rtc = hal::rtc::Rtc::new(dp.RTC, &mut dp.CLKGEN); + rtc.set( + &NaiveDate::from_ymd_opt(2020, 1, 1) + .unwrap() + .and_hms_opt(0, 0, 0) + .unwrap(), + ); // Now timestamps will be positive. + rtc.enable(); + rtc.set_alarm_repeat(hal::rtc::AlarmRepeat::DeciSecond); + rtc.enable_alarm(); + + let mut location = Location::new(); + + let mut led = pins.d19.into_push_pull_output(); + + info!("Blinking to indicate start-up."); + led.set_high().unwrap(); + + info!("Giving subsystems a couple of seconds to boot.."); + delay.delay_ms(5_000u32); + + led.set_low().unwrap(); + + #[cfg(feature = "storage")] + let storage = { + info!("Setting up storage.."); + + debug!("Setting up SPI for SD card.."); + let spi = Spi::new(dp.IOM0, pins.d12, pins.d13, pins.d11, Freq::F100kHz, MODE_0); + let cs = pins.a14.into_push_pull_output(); + + let fdelay = hal::delay::FlashDelay; + let mut storage = Storage::open( + spi, + cs, + sfy::storage::clock::CountClock(&COUNT), + |spi, speed| match speed { + SdSpiSpeed::Low => spi.set_freq(Freq::F100kHz), + SdSpiSpeed::High => spi.set_freq(Freq::F12mHz), + }, + fdelay, + ); + + storage + .acquire() + .inspect_err(|e| { + defmt::error!("Failed to setup storage: {}", e); + + let mut msg = heapless::String::<256>::new(); + write!(&mut msg, "storage setup err: {:?}", e) + .inspect_err(|e| { + defmt::error!("failed to format storage-err: {:?}", defmt::Debug2Format(e)) + }) + .ok(); + log(&msg); + }) + .ok(); + + storage + }; + + #[cfg(feature = "storage")] + let (imu_p, storage_consumer) = unsafe { STORAGEQ.split() }; + + #[cfg(feature = "storage")] + let (note_p, mut imu_queue) = unsafe { NOTEQ.split() }; + + #[cfg(feature = "storage")] + let mut storage_manager = sfy::StorageManager::new(storage, storage_consumer, note_p); + + #[cfg(not(feature = "storage"))] + let (imu_p, mut imu_queue) = unsafe { NOTEQ.split() }; + + info!("Setting up Notecarrier.."); + let mut note = Notecarrier::new(i2c4, &mut delay).unwrap(); + + info!("Send startup-message over cellular."); + + let mut w = heapless::String::<100>::new(); + w.push_str("SFY (v").unwrap(); + w.push_str(git_version!()).unwrap(); + w.push_str(") (sn: ").unwrap(); + match sfy::note::BUOYSN { + Some(sn) => w.push_str(sn).unwrap(), + None => w.push_str("None").unwrap(), + }; + w.push_str(") started up.").unwrap(); + info!("{}", w); + + note.hub() + .log(&mut delay, w.as_str(), false, false) + .and_then(|r| r.wait(&mut delay)) + .ok(); // this will fail if more than 100 notes is added. + + // Move state into globally available variables and set reference to NOTE for + // logging on panic and hard resets. + // + // TODO: Should maybe `pin_mut!` NOTE to prevent it being moved on the stack. + free(|cs| unsafe { + log::NOTE = Some(&mut note as *mut _); + + STATE.borrow(cs).replace(Some(SharedState { + rtc, + position_time: 0, + lon: 0.0, + lat: 0.0, + })); + }); + + info!("Try to fetch location and time before starting main loop.."); + location + .check_retrieve(&STATE, &mut delay, &mut note) + .inspect_err(|e| error!("Failed retrieving location and time: {:?}", e)) + .ok(); + + let (now, position_time, lat, lon) = STATE.get(); + COUNT.store( + (now.timestamp_millis() / 1000).try_into().unwrap_or(0), + Ordering::Relaxed, + ); + info!( + "Now: {} ms, position_time: {}, lat: {}, lon: {}", + now.timestamp_millis(), + position_time, + lat, + lon + ); + + info!("Setting up IMU.."); + let mut waves = Waves::new(i2c3).unwrap(); + waves + .take_buf(now.timestamp_millis(), position_time, lon, lat) + .unwrap(); // set timestamp. + + info!("Enable IMU."); + waves.enable_fifo(&mut delay).unwrap(); + + let imu = sfy::Imu::new(waves, imu_p); + + // Move IMU into temporary variable for moving it into the `RTC` interrupt + // routine, _before_ we enable interrupts. + free(|_| { + unsafe { IMU = Some(imu) }; + }); + + defmt::info!("Enable interrupts"); + unsafe { + cortex_m::interrupt::enable(); + } + + info!("Entering main loop"); + const GOOD_TRIES: u32 = 15; + + let mut last: i64 = 0; + let mut good_tries: u32 = GOOD_TRIES; + #[cfg(feature = "storage")] + let mut sd_good: bool = true; // Do not spam with log messags. + + loop { + let now = STATE.now().timestamp_millis(); + + // Move data to SD card and enqueue for Notecard. + #[cfg(feature = "storage")] + match storage_manager.drain_queue(&mut note, &mut delay) { + Err(e) => { + error!("Failed to write to SD card: {:?}", e); + + if sd_good { + let mut msg = heapless::String::<256>::new(); + write!(&mut msg, "storage-err-l: {:?}", e) + .inspect_err(|e| { + defmt::error!( + "failed to format storage-err: {:?}", + defmt::Debug2Format(e) + ) + }) + .ok(); + log(&msg); + } + + sd_good = false; + } + Ok(Some(_)) => { + sd_good = true; + } + _ => {} + }; + + // XXX: This needs to be adapted to frequency, and queue length. Maybe just remove when we + // have the remaining space check? Check after Hjeltefjorden deployment. + const LOOP_DELAY: u32 = 14 * 20_000; + const SHORT_LOOP_DELAY: u32 = 30_000; + + // Process data and communication for the Notecard. + if ((now - last) > LOOP_DELAY as i64) + || ((imu_queue.capacity() - imu_queue.len()) < 3 + && (now - last) > SHORT_LOOP_DELAY as i64) + { + let queue_time: f64 = f64::from(sfy::axl::SAMPLE_NO as u32) + * f64::from(sfy::NOTEQ_SZ as u32) + / f64::from(sfy::waves::OUTPUT_FREQ); + debug_assert!( + (f64::from(LOOP_DELAY) / 1000.) + < queue_time, + "loop is too slow, NOTEQ will overflow: loop: {} ms vs queue: {} ms (length: {}, sample_no: {}, freq: {})", LOOP_DELAY, queue_time * 1000., sfy::NOTEQ_SZ, sfy::axl::SAMPLE_NO, sfy::waves::OUTPUT_FREQ + ); + + // This updates the RTC. It should happen in the same block as `last`, otherwise we + // could theoretically get a negative time jump. In practice that should not be possible. + let l = location.check_retrieve(&STATE, &mut delay, &mut note); + + #[cfg(feature = "storage")] + defmt::debug!( + "notecard iteration, now: {}, note queue: {}, storage queue: {}", + now, + imu_queue.len(), + storage_manager.storage_queue.len() + ); + + #[cfg(not(feature = "storage"))] + defmt::debug!( + "notecard iteration, now: {}, note queue: {}", + now, + imu_queue.len(), + ); + + #[cfg(not(feature = "deploy"))] + led.toggle().unwrap(); + + sfy::log::drain_log(&mut note, &mut delay) + .inspect_err(|e| defmt::error!("drain log: {:?}", e)) + .ok(); + + let nd = note.drain_queue(&mut imu_queue, &mut delay); + let ns = note.check_and_sync(&mut delay); + + match (l, nd, ns) { + (Ok(_), Ok(_), Ok(_)) => good_tries = GOOD_TRIES, + (l, dq, cs) => { + error!( + "Fatal error occured during main loop: location: {:?}, note/drain_queue: {:?}, note/check_and_sync: {:?}. Tries left: {}", + l, + dq, + cs, + good_tries + ); + + // Notecard might be in WrongState. + delay.delay_ms(100u16); + note.reset(&mut delay).ok(); + delay.delay_ms(100u16); + + let mut msg = heapless::String::<512>::new(); + write!(&mut msg, "Fatal error in main loop: location: {:?}, note/drain_queue: {:?}, note/check_and_sync: {:?}. Tries left: {}", l, dq, cs, good_tries) + .inspect_err(|e| defmt::error!("failed to format error: {:?}", defmt::Debug2Format(e))) + .ok(); + + warn!("Trying to send log message.."); + note.hub() + .log(&mut delay, &msg, false, false) + .and_then(|f| f.wait(&mut delay)) + .ok(); + + if good_tries == 0 { + error!("No more tries left, attempting to reset devices and restart."); + reset(&mut note, &mut delay); + } else { + good_tries -= 1; + } + } + }; + last = now; + } + + #[cfg(not(feature = "deploy"))] + delay.delay_ms(1000u16); + + #[cfg(feature = "deploy")] + asm::wfi(); // doesn't work very well with RTT + probe + + // defmt::flush(); + + // TODO: + // * Set up and feed watchdog. + } +} + +fn reset(note: &mut Notecarrier, delay: &mut impl DelayMs) -> ! { + cortex_m::interrupt::disable(); + + warn!("Resetting device!"); + + debug!("notecard: consuming any remaining response."); + note.reset(delay).ok(); + + info!("Trying to send any remaining log messages.."); + sfy::log::drain_log(note, delay).ok(); + + warn!("Resetting in 3 seconds.."); + delay.delay_ms(3_000u16); + + cortex_m::peripheral::SCB::sys_reset() +} + +#[cfg(not(feature = "host-tests"))] +#[allow(non_snake_case)] +#[interrupt] +fn RTC() { + #[allow(non_upper_case_globals)] + static mut imu: Option> = None; + static mut GOOD_TRIES: u16 = 5; + + // FIFO size of IMU is 512 samples (uncompressed), sample rate at IMU is 208 Hz. So we + // need to empty FIFO at atleast (208 / 512) Hz = 0.406 Hz or every 2.46 s. + + // Clear RTC interrupt + unsafe { + (*(hal::pac::RTC::ptr())) + .intclr + .write(|w| w.alm().set_bit()); + } + + if let Some(imu) = imu { + let (now, position_time, lon, lat) = free(|cs| { + let state = STATE.borrow(cs).borrow(); + let state = state.as_ref().unwrap(); + + let now = state.rtc.now().timestamp_millis(); + let position_time = state.position_time; + let lon = state.lon; + let lat = state.lat; + + (now, position_time, lon, lat) + }); + + COUNT.store((now / 1000).try_into().unwrap_or(0), Ordering::Relaxed); + + // XXX: This is the most time-critical part of the program. + // + // It seems that the IMU I2C communication sometimes fails with a NAK, causing a module + // reset, which again might cause a HardFault. + match imu.check_retrieve(now, position_time, lon, lat) { + Ok(_) => { + *GOOD_TRIES = 5; + } + Err(e) => { + error!("IMU ISR failed: {:?}, resetting IMU..", e); + + let mut delay = hal::delay::FlashDelay; + + let r = imu.reset(now, position_time, lon, lat, &mut delay); + warn!("IMU reset: {:?}", r); + + let mut msg = heapless::String::<256>::new(); + write!(&mut msg, "IMU failure: {:?}, reset: {:?}", e, r) + .inspect_err(|e| { + defmt::error!("failed to format IMU failure: {:?}", defmt::Debug2Format(e)) + }) + .ok(); + log(&msg); + + if *GOOD_TRIES == 0 { + panic!("IMU has failed repeatedly: {:?}, resetting system.", e); + } + + *GOOD_TRIES -= 1; + } + } + } else { + unsafe { + imu.replace(IMU.take().unwrap()); + } + } +} + +#[allow(non_snake_case)] +#[exception] +unsafe fn HardFault(ef: &ExceptionFrame) -> ! { + error!( + "hard fault exception: {:#?}. resetting system.", + defmt::Debug2Format(ef) + ); + cortex_m::peripheral::SCB::sys_reset() +} + +#[cfg(feature = "deploy")] +#[inline(never)] +#[panic_handler] +fn panic(info: &PanicInfo) -> ! { + defmt::error!("panic: {}", defmt::Debug2Format(info)); + log("panic reset."); + let mut msg = heapless::String::<256>::new(); + write!(&mut msg, "panic: {}", info) + .inspect_err(|e| defmt::error!("failed to format panic: {:?}", defmt::Debug2Format(e))) + .ok(); + log(&msg); + + let mut delay = hal::delay::FlashDelay; + + free(|_| unsafe { sfy::log::panic_drain_log(log::NOTE, &mut delay) }); + + defmt::error!("panic logged, resetting.."); + cortex_m::peripheral::SCB::sys_reset(); +} From bfdbae2a3bb6ad359d4ebba8673856ff0e08979c Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Thu, 26 Sep 2024 11:01:43 +0200 Subject: [PATCH 02/14] setup for arduino mod --- sfy-buoy/sfy-ext-gps/ext-gps-mod/Dockerfile | 14 ++++++++++++++ sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile | 14 ++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 sfy-buoy/sfy-ext-gps/ext-gps-mod/Dockerfile create mode 100644 sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/Dockerfile b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Dockerfile new file mode 100644 index 00000000..592f2c2f --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Dockerfile @@ -0,0 +1,14 @@ +FROM ubuntu:latest + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get install -y curl git build-essential ffmpeg arduino-mk && apt-get clean + +RUN curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=/usr/local/bin sh + +WORKDIR /work + +ADD . . + +RUN make dependencies + diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile new file mode 100644 index 00000000..b4b03687 --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile @@ -0,0 +1,14 @@ + +dep-arduion-cli: + curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=/usr/local/bin sh + +dependencies: + arduino-cli config init + arduino-cli config add board_manager.additional_urls https://raw.githubusercontent.com/sparkfun/Arduino_Apollo3/main/package_sparkfun_apollo3_index.json + arduino-cli core update-index + arduino-cli core install "Sparkfun:apollo3@1.2.1" + arduino-cli lib update-index + arduino-cli lib install "SparkFun u-blox GNSS v3" + +bin: + arduino-cli compile -e --output-dir build --build-cache-path /tmp/build -v -b SparkFun:apollo3:artemis . From c790e7042477be803625faca557da9d58fc987df Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Thu, 26 Sep 2024 11:12:21 +0200 Subject: [PATCH 03/14] rtk: docker+makefile --- sfy-buoy/sfy-ext-gps/ext-gps-mod/Dockerfile | 4 ++-- sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile | 7 +++++++ sfy-buoy/sfy-ext-gps/src/gps.rs | 3 +++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/Dockerfile b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Dockerfile index 592f2c2f..9dcedce3 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/Dockerfile +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Dockerfile @@ -6,9 +6,9 @@ RUN apt-get update && apt-get install -y curl git build-essential ffmpeg arduino RUN curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=/usr/local/bin sh -WORKDIR /work +WORKDIR /ext-gps-mod -ADD . . +ADD Makefile . RUN make dependencies diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile index b4b03687..b5d3fdf1 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile @@ -1,3 +1,4 @@ +.DEFAULT_GOAL := bin dep-arduion-cli: curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=/usr/local/bin sh @@ -10,5 +11,11 @@ dependencies: arduino-cli lib update-index arduino-cli lib install "SparkFun u-blox GNSS v3" +build-docker: + docker build -t sfy-rtk . + +run-docker: + docker run -it --rm --name sr -v $(shell pwd)/:/ext-gps-mod sfy-rtk + bin: arduino-cli compile -e --output-dir build --build-cache-path /tmp/build -v -b SparkFun:apollo3:artemis . diff --git a/sfy-buoy/sfy-ext-gps/src/gps.rs b/sfy-buoy/sfy-ext-gps/src/gps.rs index 1e5a7571..33e2f8fc 100644 --- a/sfy-buoy/sfy-ext-gps/src/gps.rs +++ b/sfy-buoy/sfy-ext-gps/src/gps.rs @@ -1,3 +1,6 @@ +//! UBLOX RTK GPS interface +//! +//! Probably need to communicate over UART to avoid knowing I2C telegram length in advance. #[allow(unused_imports)] use defmt::{debug, error, info, println, trace, warn}; use heapless::Vec; From 7eb63c4ffb167553299156c1bb4147d9782c8161 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Fri, 27 Sep 2024 09:53:37 +0200 Subject: [PATCH 04/14] rtk: demo sketch --- sfy-buoy/sfy-ext-gps/ext-gps-mod/.gitignore | 3 + sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile | 10 +- .../sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino | 29 ++++++ sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.cpp | 94 +++++++++++++++++++ sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h | 14 +++ 5 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 sfy-buoy/sfy-ext-gps/ext-gps-mod/.gitignore create mode 100644 sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino create mode 100644 sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.cpp create mode 100644 sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/.gitignore b/sfy-buoy/sfy-ext-gps/ext-gps-mod/.gitignore new file mode 100644 index 00000000..f64fb500 --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/.gitignore @@ -0,0 +1,3 @@ +secrets.h +build +*.axf diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile index b5d3fdf1..79035d43 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile @@ -2,19 +2,21 @@ dep-arduion-cli: curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=/usr/local/bin sh - -dependencies: arduino-cli config init arduino-cli config add board_manager.additional_urls https://raw.githubusercontent.com/sparkfun/Arduino_Apollo3/main/package_sparkfun_apollo3_index.json + +deps: dependencies + +dependencies: arduino-cli core update-index arduino-cli core install "Sparkfun:apollo3@1.2.1" arduino-cli lib update-index arduino-cli lib install "SparkFun u-blox GNSS v3" -build-docker: +docker-build: docker build -t sfy-rtk . -run-docker: +docker-run: docker run -it --rm --name sr -v $(shell pwd)/:/ext-gps-mod sfy-rtk bin: diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino b/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino new file mode 100644 index 00000000..61e9254d --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino @@ -0,0 +1,29 @@ + + +# ifdef GPS +# include "gps.h" +# endif + +Uart sfy{1, 40, 39}; // Serial to SFY + +void setup() +{ + Serial.begin(115200); + Serial.println(F("SFY-RTK bridge")); + +# ifdef GPS + setup_gps(); +# endif + + sfy.begin(400000); + sfy.println("{'status':'startup'}"); +} + +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +void loop() +{ +# ifdef GPS + loop_gps(); +# endif +} diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.cpp b/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.cpp new file mode 100644 index 00000000..e766798a --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.cpp @@ -0,0 +1,94 @@ +# include "gps.h" + +# ifdef GPS +void setup_gps() { + serialGNSS.begin(38400); // UART2 on pins 16/17 for SPP. The ZED-F9P will be configured to use the same rate. + Wire.begin(); //Start I2C + + //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + // Begin and configure the ZED-F9x + + //myGNSS.enableDebugging(); // Uncomment this line to enable helpful debug messages on Serial + + while (myGNSS.begin() == false) //Connect to the u-blox module using Wire port + { + Serial.println(F("u-blox GNSS module not detected at default I2C address. Please check wiring.")); + delay(2000); + } + Serial.println(F("u-blox GNSS module connected")); + + uint8_t ok = myGNSS.setI2COutput(COM_TYPE_UBX); //Turn off NMEA noise + if (ok) ok = myGNSS.setI2CInput(COM_TYPE_UBX); + if (ok) ok = myGNSS.setUART1Output(0); + if (ok) ok = myGNSS.setUART1Input(0); + if (ok) ok = myGNSS.setUART2Output(0); + if (ok) ok = myGNSS.setUART2Input(COM_TYPE_SPARTN); //Be sure SPARTN input is enabled + if (ok) ok = myGNSS.setDGNSSConfiguration(SFE_UBLOX_DGNSS_MODE_FIXED); // Set the differential mode - ambiguities are fixed whenever possible + if (ok) ok = myGNSS.setNavigationFrequency(1); //Set output in Hz. + if (ok) ok = myGNSS.setVal8(UBLOX_CFG_SPARTN_USE_SOURCE, 0); // Use "IP" source, not L-Band. We are injecting raw SPARTN, not PMP + if (ok) ok = myGNSS.setVal8(UBLOX_CFG_MSGOUT_UBX_RXM_COR_I2C, 1); // Enable UBX-RXM-COR messages on I2C + + //Configure the SPARTN IP Dynamic Keys + //"When the receiver boots, the host should send 'current' and 'next' keys in one message." - Use setDynamicSPARTNKeys for this. + //"Every time the 'current' key is expired, 'next' takes its place." + //"Therefore the host should then retrieve the new 'next' key and send only that." - Use setDynamicSPARTNKey for this. + // The key can be provided in binary (uint8_t) format or in ASCII Hex (char) format, but in both cases keyLengthBytes _must_ represent the binary key length in bytes. + if (ok) ok = myGNSS.setDynamicSPARTNKeys(currentKeyLengthBytes, currentKeyGPSWeek, currentKeyGPSToW, currentDynamicKey, + nextKeyLengthBytes, nextKeyGPSWeek, nextKeyGPSToW, nextDynamicKey); + + //if (ok) ok = myGNSS.saveConfiguration(VAL_CFG_SUBSEC_IOPORT | VAL_CFG_SUBSEC_MSGCONF); //Optional: Save the ioPort and message settings to NVM and BBR + + Serial.print(F("GNSS: configuration ")); + Serial.println(OK(ok)); + + myGNSS.setAutoPVTcallbackPtr(&printPVTdata); // Enable automatic NAV PVT messages with callback to printPVTdata so we can watch the carrier solution go to fixed + + myGNSS.setRXMCORcallbackPtr(&printRXMCOR); // Print the contents of UBX-RXM-COR messages so we can check if the PMP data is being decrypted successfully + + //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + // Begin and configure the NEO-D9S L-Band receiver + + //myLBand.enableDebugging(); // Uncomment this line to enable helpful debug messages on Serial + + while (myLBand.begin(Wire, 0x43) == false) //Connect to the u-blox NEO-D9S using Wire port. The D9S default I2C address is 0x43 (not 0x42) + { + Serial.println(F("u-blox NEO-D9S not detected at default I2C address. Please check wiring.")); + delay(2000); + } + Serial.println(F("u-blox NEO-D9S connected")); + + myLBand.newCfgValset(); // Create a new Configuration Interface message - this defaults to VAL_LAYER_RAM_BBR (change in RAM and BBR) + myLBand.addCfgValset(UBLOX_CFG_PMP_CENTER_FREQUENCY, myLBandFreq); // Default 1539812500 Hz + myLBand.addCfgValset(UBLOX_CFG_PMP_SEARCH_WINDOW, 2200); // Default 2200 Hz + myLBand.addCfgValset(UBLOX_CFG_PMP_USE_SERVICE_ID, 0); // Default 1 + myLBand.addCfgValset(UBLOX_CFG_PMP_SERVICE_ID, 21845); // Default 50821 + myLBand.addCfgValset(UBLOX_CFG_PMP_DATA_RATE, 2400); // Default 2400 bps + myLBand.addCfgValset(UBLOX_CFG_PMP_USE_DESCRAMBLER, 1); // Default 1 + myLBand.addCfgValset(UBLOX_CFG_PMP_DESCRAMBLER_INIT, 26969); // Default 23560 + myLBand.addCfgValset(UBLOX_CFG_PMP_USE_PRESCRAMBLING, 0); // Default 0 + myLBand.addCfgValset(UBLOX_CFG_PMP_UNIQUE_WORD, 16238547128276412563ull); + myLBand.addCfgValset(UBLOX_CFG_MSGOUT_UBX_RXM_PMP_I2C, 1); // Ensure UBX-RXM-PMP is enabled on the I2C port + myLBand.addCfgValset(UBLOX_CFG_MSGOUT_UBX_RXM_PMP_UART1, 1); // Output UBX-RXM-PMP on UART1 + myLBand.addCfgValset(UBLOX_CFG_UART2OUTPROT_UBX, 1); // Enable UBX output on UART2 + myLBand.addCfgValset(UBLOX_CFG_MSGOUT_UBX_RXM_PMP_UART2, 1); // Output UBX-RXM-PMP on UART2 + myLBand.addCfgValset(UBLOX_CFG_UART1_BAUDRATE, 38400); // match baudrate with ZED default + myLBand.addCfgValset(UBLOX_CFG_UART2_BAUDRATE, 38400); // match baudrate with ZED default + ok = myLBand.sendCfgValset(); // Apply the settings + + Serial.print(F("L-Band: configuration ")); + Serial.println(OK(ok)); + + myLBand.softwareResetGNSSOnly(); // Do a restart + + myLBand.setRXMPMPmessageCallbackPtr(&pushRXMPMP); // Call pushRXMPMP when new PMP data arrives. Push it to the GNSS +} + +void loop_gps() { + myGNSS.checkUblox(); // Check for the arrival of new GNSS data and process it. + myGNSS.checkCallbacks(); // Check if any GNSS callbacks are waiting to be processed. + + myLBand.checkUblox(); // Check for the arrival of new PMP data and process it. + myLBand.checkCallbacks(); // Check if any LBand callbacks are waiting to be processed. +} + +# endif diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h b/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h new file mode 100644 index 00000000..17435852 --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h @@ -0,0 +1,14 @@ +# pragma once +# include //http://librarymanager/All#SparkFun_u-blox_GNSS_v3 + // +/* HardwareSerial serialGNSS(2); // ESP32 UART2: TX on 17, RX on 16 */ +SFE_UBLOX_GNSS myGNSS; // ZED-F9x +SFE_UBLOX_GNSS myLBand; // NEO-D9S + // +const uint32_t myLBandFreq = 1556290000; // Uncomment this line to use the US SPARTN 1.8 service +//const uint32_t myLBandFreq = 1545260000; // Uncomment this line to use the EU SPARTN 1.8 service + +#define OK(ok) (ok ? F(" -> OK") : F(" -> ERROR!")) // Convert uint8_t into OK/ERROR + +void setup_gps(); +void loop_gps(); From 9edf05db3c2f2d62f97edfd3281986d550978702 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Fri, 27 Sep 2024 10:01:16 +0200 Subject: [PATCH 05/14] use arduinojson --- sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile | 1 + sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile index 79035d43..2bf85352 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile @@ -12,6 +12,7 @@ dependencies: arduino-cli core install "Sparkfun:apollo3@1.2.1" arduino-cli lib update-index arduino-cli lib install "SparkFun u-blox GNSS v3" + arduino-cli lib install "ArduinoJson" docker-build: docker build -t sfy-rtk . diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino b/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino index 61e9254d..e6cb49f2 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino @@ -1,10 +1,13 @@ - +# include "ArduinoJson.h" # ifdef GPS # include "gps.h" # endif -Uart sfy{1, 40, 39}; // Serial to SFY +// Serial to SFY +// TX1: ~7 / 42 +// RX1: ~8 / 38 +Uart sfy{1, 38, 42}; void setup() { @@ -16,7 +19,10 @@ void setup() # endif sfy.begin(400000); - sfy.println("{'status':'startup'}"); + + JsonDocument doc; + doc["status"] = "startup"; + serializeJson(doc, sfy); } //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= From 69c4d27bb95d5608d887746f99b98548f99e8f80 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Fri, 27 Sep 2024 10:47:35 +0200 Subject: [PATCH 06/14] demo gps --- sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp | 12 ++++++++++++ sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino | 7 ------- sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.cpp | 6 +++++- sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h | 9 ++++----- 4 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp b/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp new file mode 100644 index 00000000..70db3c46 --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp @@ -0,0 +1,12 @@ +# ifndef GPS +# include "gps.h" + +void setup_gps() { + Serial.println(F("GPS: DEMO GPS initiated.")); +} + +void loop_gps() { +} + + +# endif diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino b/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino index e6cb49f2..6080b0b5 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino @@ -1,8 +1,5 @@ # include "ArduinoJson.h" - -# ifdef GPS # include "gps.h" -# endif // Serial to SFY // TX1: ~7 / 42 @@ -14,9 +11,7 @@ void setup() Serial.begin(115200); Serial.println(F("SFY-RTK bridge")); -# ifdef GPS setup_gps(); -# endif sfy.begin(400000); @@ -29,7 +24,5 @@ void setup() void loop() { -# ifdef GPS loop_gps(); -# endif } diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.cpp b/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.cpp index e766798a..cd5e3eb3 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.cpp +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.cpp @@ -1,6 +1,10 @@ +# ifdef GPS # include "gps.h" -# ifdef GPS +/* HardwareSerial serialGNSS(2); // ESP32 UART2: TX on 17, RX on 16 */ +SFE_UBLOX_GNSS myGNSS; // ZED-F9x +SFE_UBLOX_GNSS myLBand; // NEO-D9S + // void setup_gps() { serialGNSS.begin(38400); // UART2 on pins 16/17 for SPP. The ZED-F9P will be configured to use the same rate. Wire.begin(); //Start I2C diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h b/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h index 17435852..fad67e87 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h @@ -1,10 +1,7 @@ -# pragma once +# ifndef GPS_H +# define GPS_H # include //http://librarymanager/All#SparkFun_u-blox_GNSS_v3 // -/* HardwareSerial serialGNSS(2); // ESP32 UART2: TX on 17, RX on 16 */ -SFE_UBLOX_GNSS myGNSS; // ZED-F9x -SFE_UBLOX_GNSS myLBand; // NEO-D9S - // const uint32_t myLBandFreq = 1556290000; // Uncomment this line to use the US SPARTN 1.8 service //const uint32_t myLBandFreq = 1545260000; // Uncomment this line to use the EU SPARTN 1.8 service @@ -12,3 +9,5 @@ const uint32_t myLBandFreq = 1556290000; // Uncomment this line to use the US SP void setup_gps(); void loop_gps(); + +# endif From 69df777d2a8c89db1a366b30c208fda70c0ef17e Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Fri, 27 Sep 2024 11:13:31 +0200 Subject: [PATCH 07/14] demo gps --- sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp | 26 +++++++++++++++++++ sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h | 14 +++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp b/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp index 70db3c46..b47b93dd 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp @@ -1,12 +1,38 @@ # ifndef GPS # include "gps.h" +static uint32_t last = 0; +# define RATE 20 // Hz + +std::vector msgs; + void setup_gps() { Serial.println(F("GPS: DEMO GPS initiated.")); } void loop_gps() { + if (micros() - last > (1000000. / RATE)) { + + pps(); // trigger fake PPS in DEMO + delay(100); // fake delay between PPS, and read sample + + last = micros(); + Serial.println(F("DEMOGPS: New sample")); + + // push new measurement. + GpsM m; + m.cputime = micros(); + m.ppsdiff = m.cputime - m.ppsdiff; + m.gpstime = 0; + + msgs.push_back(m); + + } } +void pps() { + // pps pulse interrupt detected + pps_ts = micros(); +} # endif diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h b/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h index fad67e87..18f4d396 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h @@ -1,13 +1,25 @@ # ifndef GPS_H # define GPS_H # include //http://librarymanager/All#SparkFun_u-blox_GNSS_v3 +#include // -const uint32_t myLBandFreq = 1556290000; // Uncomment this line to use the US SPARTN 1.8 service +//const uint32_t myLBandFreq = 1556290000; // Uncomment this line to use the US SPARTN 1.8 service //const uint32_t myLBandFreq = 1545260000; // Uncomment this line to use the EU SPARTN 1.8 service #define OK(ok) (ok ? F(" -> OK") : F(" -> ERROR!")) // Convert uint8_t into OK/ERROR + // + +static uint32_t pps_ts = 0; + +typedef struct GpsM_t { + uint64_t cputime = 0; + int64_t ppsdiff = 0; + uint64_t gpstime = 0; + double lat = 0.0; +} GpsM; void setup_gps(); void loop_gps(); +void pps(); # endif From 29931240e9527b0ead8ab1fcbb43ef11cf8dadf0 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Fri, 27 Sep 2024 13:30:48 +0200 Subject: [PATCH 08/14] max-m10s --- sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile | 6 ++ sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp | 66 +++++++++++++++---- .../sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino | 10 +++ sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h | 7 +- 4 files changed, 76 insertions(+), 13 deletions(-) diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile index 2bf85352..878a9ba8 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/Makefile @@ -22,3 +22,9 @@ docker-run: bin: arduino-cli compile -e --output-dir build --build-cache-path /tmp/build -v -b SparkFun:apollo3:artemis . + +flash: + python ../../../tools/svl/svl.py -f build/ext-gps-mod.ino.bin /dev/ttyUSB0 + +com: + picocom -b 115000 /dev/ttyUSB0 diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp b/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp index b47b93dd..4e14b868 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp @@ -1,23 +1,21 @@ # ifndef GPS # include "gps.h" -static uint32_t last = 0; +static uint64_t last = 0; # define RATE 20 // Hz std::vector msgs; -void setup_gps() { - Serial.println(F("GPS: DEMO GPS initiated.")); -} +TwoWire GnssWire(3); +SFE_UBLOX_GNSS gnss; -void loop_gps() { - if (micros() - last > (1000000. / RATE)) { +void getPVT(UBX_NAV_PVT_data_t *ubxDataStruct) +{ + last = micros(); + Serial.print(F("DEMOGPS: New sample, queue: ")); + Serial.println(msgs.size()); - pps(); // trigger fake PPS in DEMO - delay(100); // fake delay between PPS, and read sample - last = micros(); - Serial.println(F("DEMOGPS: New sample")); // push new measurement. GpsM m; @@ -26,12 +24,58 @@ void loop_gps() { m.gpstime = 0; msgs.push_back(m); +} + +void setup_gps() { + Serial.println(F("GPS: Initiating GNSS.")); + + GnssWire.begin(); + delay(1000); // Give it time to power up + + if (!gnss.begin(GnssWire, 0x42)){ + Serial.println(F("problem starting GNSS")); + return; + + // power things down + delay(500); + } else{ + Serial.println(F("success starting GNSS")); } + + uint8_t ok = gnss.setI2COutput(COM_TYPE_UBX); //Turn off NMEA noise + if (ok) ok = gnss.setI2CInput(COM_TYPE_UBX); + if (ok) ok = gnss.setUART1Output(0); + if (ok) ok = gnss.setUART1Input(0); + if (ok) ok = gnss.setUART2Output(0); + /* if (ok) ok = gnss.setUART2Input(COM_TYPE_SPARTN); //Be sure SPARTN input is enabled */ + /* if (ok) ok = gnss.setDGNSSConfiguration(SFE_UBLOX_DGNSS_MODE_FIXED); // Set the differential mode - ambiguities are fixed whenever possible */ + if (ok) ok = gnss.setNavigationFrequency(1); //Set output in Hz. + /* if (ok) ok = myGNSS.setVal8(UBLOX_CFG_SPARTN_USE_SOURCE, 0); // Use "IP" source, not L-Band. We are injecting raw SPARTN, not PMP */ + /* if (ok) ok = myGNSS.setVal8(UBLOX_CFG_MSGOUT_UBX_RXM_COR_I2C, 1); // Enable UBX-RXM-COR messages on I2C */ + + // now we know that we can talk to the gnss + /* delay(100); */ + + // If we are going to change the dynamic platform model, let's do it here. + // Possible values are: + // PORTABLE,STATIONARY,PEDESTRIAN,AUTOMOTIVE,SEA,AIRBORNE1g,AIRBORNE2g,AIRBORNE4g,WRIST,BIKE + /* if (!gnss.setDynamicModel(DYN_MODEL_STATIONARY)){ */ + /* Serial.println(F("GNSS could not set dynamic model")); */ + /* } */ + + /* gnss.setAutoPVT(true); */ + gnss.setAutoPVTcallbackPtr(&getPVT); // Enable automatic NAV PVT messages with callback to printPVTdata so we can watch the carrier solution go to fixed } +void loop_gps() { + gnss.checkUblox(); + gnss.checkCallbacks(); +} + + void pps() { - // pps pulse interrupt detected + // pps pulse interrupt: should be triggered at the start of every gps second. pps_ts = micros(); } diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino b/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino index 6080b0b5..6d9acdc8 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/ext-gps-mod.ino @@ -18,6 +18,9 @@ void setup() JsonDocument doc; doc["status"] = "startup"; serializeJson(doc, sfy); + + pinMode(PPS_PIN, INPUT_PULLUP); + attachInterrupt(digitalPinToInterrupt(PPS_PIN), main_pps, RISING); } //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -25,4 +28,11 @@ void setup() void loop() { loop_gps(); + Serial.print("."); + delay(50); +} + +void main_pps() { + Serial.println("PPS!"); + pps(); } diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h b/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h index 18f4d396..755f798f 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/gps.h @@ -7,15 +7,18 @@ //const uint32_t myLBandFreq = 1545260000; // Uncomment this line to use the EU SPARTN 1.8 service #define OK(ok) (ok ? F(" -> OK") : F(" -> ERROR!")) // Convert uint8_t into OK/ERROR - // -static uint32_t pps_ts = 0; +const uint16_t PPS_PIN = 11; // ~AD2 + +static uint64_t pps_ts = 0; typedef struct GpsM_t { uint64_t cputime = 0; int64_t ppsdiff = 0; uint64_t gpstime = 0; double lat = 0.0; + double lon = 0.0; + double height = 0.0; } GpsM; void setup_gps(); From 40065e8288d8ee7f99369dc6cd6b548139e40b95 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Fri, 27 Sep 2024 18:42:30 +0200 Subject: [PATCH 09/14] sparkfun suggestions: https://github.com/sparkfun/SparkFun_u-blox_GNSS_v3/issues/67 --- sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp b/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp index 4e14b868..cf4ee06d 100644 --- a/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp +++ b/sfy-buoy/sfy-ext-gps/ext-gps-mod/demo_gps.cpp @@ -37,38 +37,30 @@ void setup_gps() { return; - // power things down delay(500); } else{ Serial.println(F("success starting GNSS")); } + // factory reset (no need to do this every time, only once). + gnss.factoryDefault(); + delay(5000); + uint8_t ok = gnss.setI2COutput(COM_TYPE_UBX); //Turn off NMEA noise if (ok) ok = gnss.setI2CInput(COM_TYPE_UBX); if (ok) ok = gnss.setUART1Output(0); if (ok) ok = gnss.setUART1Input(0); - if (ok) ok = gnss.setUART2Output(0); - /* if (ok) ok = gnss.setUART2Input(COM_TYPE_SPARTN); //Be sure SPARTN input is enabled */ - /* if (ok) ok = gnss.setDGNSSConfiguration(SFE_UBLOX_DGNSS_MODE_FIXED); // Set the differential mode - ambiguities are fixed whenever possible */ if (ok) ok = gnss.setNavigationFrequency(1); //Set output in Hz. - /* if (ok) ok = myGNSS.setVal8(UBLOX_CFG_SPARTN_USE_SOURCE, 0); // Use "IP" source, not L-Band. We are injecting raw SPARTN, not PMP */ - /* if (ok) ok = myGNSS.setVal8(UBLOX_CFG_MSGOUT_UBX_RXM_COR_I2C, 1); // Enable UBX-RXM-COR messages on I2C */ - - // now we know that we can talk to the gnss - /* delay(100); */ - // If we are going to change the dynamic platform model, let's do it here. - // Possible values are: - // PORTABLE,STATIONARY,PEDESTRIAN,AUTOMOTIVE,SEA,AIRBORNE1g,AIRBORNE2g,AIRBORNE4g,WRIST,BIKE - /* if (!gnss.setDynamicModel(DYN_MODEL_STATIONARY)){ */ - /* Serial.println(F("GNSS could not set dynamic model")); */ - /* } */ + Serial.print(F("GPS setup flag: ")); + Serial.println(ok); /* gnss.setAutoPVT(true); */ gnss.setAutoPVTcallbackPtr(&getPVT); // Enable automatic NAV PVT messages with callback to printPVTdata so we can watch the carrier solution go to fixed } void loop_gps() { + // TODO: move these to PPS? gnss.checkUblox(); gnss.checkCallbacks(); } @@ -77,6 +69,10 @@ void loop_gps() { void pps() { // pps pulse interrupt: should be triggered at the start of every gps second. pps_ts = micros(); + + Serial.println("GNSS: PPS!"); + + // TODO: checkUblox + checkCallbacks } # endif From e756593c2210200abeba4d57c77b5b45c54b056b Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Fri, 27 Sep 2024 20:40:58 +0200 Subject: [PATCH 10/14] sync algo --- sfy-buoy/sfy-ext-gps/README.md | 40 ++++++++++++++++++++++++++++++++ sfy-buoy/sfy-ext-gps/src/main.rs | 7 ++++++ 2 files changed, 47 insertions(+) create mode 100644 sfy-buoy/sfy-ext-gps/README.md diff --git a/sfy-buoy/sfy-ext-gps/README.md b/sfy-buoy/sfy-ext-gps/README.md new file mode 100644 index 00000000..429d54d2 --- /dev/null +++ b/sfy-buoy/sfy-ext-gps/README.md @@ -0,0 +1,40 @@ +# SFY with RTK relay + +[ sfy ] <-- [ ext-gps-mod ] <-- [ Ublox RTK-GPS ] + +## Communication + +ext-gps-mod runs arduino code to read ublox data. it decodes and transmits those +to the sfy as JSON. + +The sfy reads JSON and sends those data using the notecard. + +## Synchronization + +ext-gps-mod: +* PPS from ublox. +* AutoPVT from ublox. + +sfy: +* PPS from ext-gps-mod +* GPS data from UART. + +Notes: +* If there are more than one telegram on the UART we have lost synchronization. + +## Timeline + +If all of this happens in less than 1 ms we are happy: + +- Ublox PVT updated ( 20 Hz) +- Ublox PPS -> ext-gps-mod +- pps_time = ext-gps-mod.micros() +- ext-gps-mod PPS -> SFY +- SFY: stores sfy_pps_time: for incoming PVT telegram +- read_time = ext-gps-mod.micros() +- ext-gps-mod reads PVT related to PPS. Is the T updated or is it fixed to the + PPS? maybe all of this is fast enough to ignore. +- ext-gps-mod push PVT to SFY + (read_time - pps_time) +- sfy_read_time = sfy.micros()/RTC +- SFY reads PVT related to PPS +- SFY sets local time to T + (sfy_read_time - sfy_pps_time) diff --git a/sfy-buoy/sfy-ext-gps/src/main.rs b/sfy-buoy/sfy-ext-gps/src/main.rs index 27962097..9223dab3 100644 --- a/sfy-buoy/sfy-ext-gps/src/main.rs +++ b/sfy-buoy/sfy-ext-gps/src/main.rs @@ -435,6 +435,13 @@ fn reset(note: &mut Notecarrier, delay: &mut impl DelayMs Date: Fri, 27 Sep 2024 20:45:46 +0200 Subject: [PATCH 11/14] ci: sfy-buoy -> sfy-artemis --- .github/workflows/sfy-buoy.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/sfy-buoy.yml b/.github/workflows/sfy-buoy.yml index 6d972541..23cc095b 100644 --- a/.github/workflows/sfy-buoy.yml +++ b/.github/workflows/sfy-buoy.yml @@ -55,20 +55,20 @@ jobs: run: | mkdir -p target/bins make T=r bin - mv target/sfy-buoy.bin target/bins/sfy-fw-default-no-storage.bin + mv target/sfy-artemis.bin target/bins/sfy-fw-default-no-storage.bin CARGO_FLAGS="--features storage" make T=r bin - mv target/sfy-buoy.bin target/bins/sfy-fw-default-with-storage.bin + mv target/sfy-artemis.bin target/bins/sfy-fw-default-with-storage.bin - name: Build firmware (5 min GPS) working-directory: sfy-buoy/ run: | mkdir -p target/bins GPS_PERIOD=300 GPS_HEARTBEAT=-5 SYNC_PERIOD=20 make T=r bin - mv target/sfy-buoy.bin target/bins/sfy-fw-5min-gps-no-storage.bin + mv target/sfy-artemis.bin target/bins/sfy-fw-5min-gps-no-storage.bin GPS_PERIOD=300 GPS_HEARTBEAT=-5 SYNC_PERIOD=20 CARGO_FLAGS="--features storage" make T=r bin - mv target/sfy-buoy.bin target/bins/sfy-fw-5min-gps-with-storage.bin + mv target/sfy-artemis.bin target/bins/sfy-fw-5min-gps-with-storage.bin - name: Build firmware (surf) @@ -76,40 +76,40 @@ jobs: run: | mkdir -p target/bins GPS_PERIOD=300 GPS_HEARTBEAT=-5 SYNC_PERIOD=20 CARGO_FLAGS="--features surf" make T=r bin - mv target/sfy-buoy.bin target/bins/sfy-fw-surf-no-storage.bin + mv target/sfy-artemis.bin target/bins/sfy-fw-surf-no-storage.bin GPS_PERIOD=300 GPS_HEARTBEAT=-5 SYNC_PERIOD=20 CARGO_FLAGS="--features surf,storage" make T=r bin - mv target/sfy-buoy.bin target/bins/sfy-fw-surf-with-storage.bin + mv target/sfy-artemis.bin target/bins/sfy-fw-surf-with-storage.bin - name: Build firmware (26Hz, 10min GPS, drifter) working-directory: sfy-buoy/ run: | mkdir -p target/bins GPS_PERIOD=300 GPS_HEARTBEAT=-5 SYNC_PERIOD=20 CARGO_FLAGS="--features 20Hz" make T=r bin - mv target/sfy-buoy.bin target/bins/sfy-fw-26Hz-drifter-no-storage.bin + mv target/sfy-artemis.bin target/bins/sfy-fw-26Hz-drifter-no-storage.bin GPS_PERIOD=300 GPS_HEARTBEAT=-5 SYNC_PERIOD=20 CARGO_FLAGS="--features 20Hz,storage" make T=r bin - mv target/sfy-buoy.bin target/bins/sfy-fw-26Hz-drifter-with-storage.bin + mv target/sfy-artemis.bin target/bins/sfy-fw-26Hz-drifter-with-storage.bin - name: Build firmware (Mooring, 1h gps, 26Hz) working-directory: sfy-buoy/ run: | mkdir -p target/bins GPS_PERIOD=3600 GPS_HEARTBEAT=1 SYNC_PERIOD=40 CARGO_FLAGS="--features 20Hz" make T=r bin - mv target/sfy-buoy.bin target/bins/sfy-fw-26Hz-mooring-no-storage.bin + mv target/sfy-artemis.bin target/bins/sfy-fw-26Hz-mooring-no-storage.bin GPS_PERIOD=3600 GPS_HEARTBEAT=1 SYNC_PERIOD=40 CARGO_FLAGS="--features 20Hz,storage" make T=r bin - mv target/sfy-buoy.bin target/bins/sfy-fw-26Hz-mooring-with-storage.bin + mv target/sfy-artemis.bin target/bins/sfy-fw-26Hz-mooring-with-storage.bin - name: Build firmware (Mooring, 1h gps, 52Hz) working-directory: sfy-buoy/ run: | mkdir -p target/bins GPS_PERIOD=3600 GPS_HEARTBEAT=1 SYNC_PERIOD=40 make T=r bin - mv target/sfy-buoy.bin target/bins/sfy-fw-52Hz-mooring-no-storage.bin + mv target/sfy-artemis.bin target/bins/sfy-fw-52Hz-mooring-no-storage.bin GPS_PERIOD=3600 GPS_HEARTBEAT=1 SYNC_PERIOD=40 CARGO_FLAGS="--features storage" make T=r bin - mv target/sfy-buoy.bin target/bins/sfy-fw-52Hz-mooring-with-storage.bin + mv target/sfy-artemis.bin target/bins/sfy-fw-52Hz-mooring-with-storage.bin - uses: actions/upload-artifact@v4 with: From 1499e5ba704a701cd8e507f358934a886949d2b4 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Fri, 27 Sep 2024 20:51:57 +0200 Subject: [PATCH 12/14] rtk sketch --- sfy-buoy/sfy-ext-gps/README.md | 2 ++ sfy-buoy/sfy-ext-gps/sfy-rtk.png | Bin 0 -> 250638 bytes 2 files changed, 2 insertions(+) create mode 100644 sfy-buoy/sfy-ext-gps/sfy-rtk.png diff --git a/sfy-buoy/sfy-ext-gps/README.md b/sfy-buoy/sfy-ext-gps/README.md index 429d54d2..baa9b75d 100644 --- a/sfy-buoy/sfy-ext-gps/README.md +++ b/sfy-buoy/sfy-ext-gps/README.md @@ -2,6 +2,8 @@ [ sfy ] <-- [ ext-gps-mod ] <-- [ Ublox RTK-GPS ] + + ## Communication ext-gps-mod runs arduino code to read ublox data. it decodes and transmits those diff --git a/sfy-buoy/sfy-ext-gps/sfy-rtk.png b/sfy-buoy/sfy-ext-gps/sfy-rtk.png new file mode 100644 index 0000000000000000000000000000000000000000..c0f914acc187496267f78ec3f425d5f30412576e GIT binary patch literal 250638 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 Date: Sat, 28 Sep 2024 09:48:21 +0200 Subject: [PATCH 13/14] spec stats: missing nan --- sfy-processing/sfy/xr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sfy-processing/sfy/xr.py b/sfy-processing/sfy/xr.py index 162e0694..a468ab29 100644 --- a/sfy-processing/sfy/xr.py +++ b/sfy-processing/sfy/xr.py @@ -99,7 +99,7 @@ def stat(zz, yy, xx): if np.any(np.isnan(zz)): logger.warning(f'NaN values in signal, spectra is set to NaN') a = np.full((4096 // 2 + 1, ), np.nan) - return np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, a, a, a, a + return np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, a, np.nan, a, a, a f, Pz = signal.welch(freq, zz, nperseg, order) f, Py = signal.welch(freq, yy, nperseg, order) From cd6a683c276559b284013a0df98ba110db8fbdb3 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Mon, 30 Sep 2024 09:47:22 +0200 Subject: [PATCH 14/14] update toolchain to 1.79 nightly --- sfy-buoy/Cargo.lock | 585 ++++++++++++++------------------ sfy-buoy/rust-toolchain.toml | 2 +- sfy-buoy/sfy-ext-gps/Cargo.toml | 1 - sfy-buoy/sfy-ext-gps/src/gps.rs | 9 +- sfy-buoy/src/fir.rs | 2 +- 5 files changed, 258 insertions(+), 341 deletions(-) diff --git a/sfy-buoy/Cargo.lock b/sfy-buoy/Cargo.lock index 4f313ce7..744bdf28 100644 --- a/sfy-buoy/Cargo.lock +++ b/sfy-buoy/Cargo.lock @@ -3,16 +3,16 @@ version = 3 [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -22,7 +22,7 @@ name = "ahrs-fusion" version = "0.4.0" source = "git+https://github.com/gauteh/ahrs-fusion#dd057f7ccf3549ed939509e31916921a7c87b86b" dependencies = [ - "bindgen 0.69.2", + "bindgen 0.70.1", "cc", "cty", ] @@ -30,7 +30,7 @@ dependencies = [ [[package]] name = "ambiq-apollo3-pac2" version = "0.2.0" -source = "git+https://github.com/gauteh/ambiq-rs#76e7cc78e2ddd17eceda7c9dc302699d1a45a4ea" +source = "git+https://github.com/gauteh/ambiq-rs#7c91bbdc52e8a8d269b64e7c6dfe7d487d740e69" dependencies = [ "bare-metal 0.2.5", "cortex-m", @@ -41,7 +41,7 @@ dependencies = [ [[package]] name = "ambiq-hal" version = "0.3.3" -source = "git+https://github.com/gauteh/ambiq-rs#76e7cc78e2ddd17eceda7c9dc302699d1a45a4ea" +source = "git+https://github.com/gauteh/ambiq-rs#7c91bbdc52e8a8d269b64e7c6dfe7d487d740e69" dependencies = [ "ambiq-apollo3-pac2", "ambiq-hal-sys", @@ -60,7 +60,7 @@ dependencies = [ [[package]] name = "ambiq-hal-sys" version = "0.1.0" -source = "git+https://github.com/gauteh/ambiq-rs#76e7cc78e2ddd17eceda7c9dc302699d1a45a4ea" +source = "git+https://github.com/gauteh/ambiq-rs#7c91bbdc52e8a8d269b64e7c6dfe7d487d740e69" dependencies = [ "bindgen 0.59.2", "cc", @@ -79,9 +79,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "argh" @@ -102,7 +102,7 @@ dependencies = [ "argh_shared", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.79", ] [[package]] @@ -120,7 +120,7 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" dependencies = [ - "critical-section 1.1.2", + "critical-section 1.1.3", ] [[package]] @@ -136,9 +136,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "az" @@ -169,9 +169,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.7" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bindgen" @@ -198,25 +198,22 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.2" +version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c69fae65a523209d34240b60abe0c42d33d1045d445c0839d8a4894a736e2d" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.6.0", "cexpr", "clang-sys", - "lazy_static", - "lazycell", + "itertools", "log", - "peeking_take_while", "prettyplease", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", - "syn 2.0.48", - "which", + "syn 2.0.79", ] [[package]] @@ -233,14 +230,14 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "blues-notecard" version = "0.3.2" -source = "git+https://github.com/gauteh/notecard-rs#340484a676d0461bcd11f8bc8d6e0fc5731f0d91" +source = "git+https://github.com/gauteh/notecard-rs#ab8fa27a639e5ca7241d9b38350d8023e7c641d9" dependencies = [ "defmt", "embedded-hal", @@ -251,22 +248,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.5.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" +checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.79", ] [[package]] @@ -277,11 +274,11 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.0.83" +version = "1.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "9540e661f81799159abee814118cc139a2004b3a3aa3ea37724a1b66530b90e0" dependencies = [ - "libc", + "shlex", ] [[package]] @@ -301,18 +298,18 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "num-traits", ] [[package]] name = "clang-sys" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", @@ -360,26 +357,6 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" -[[package]] -name = "const_format" -version = "0.2.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673" -dependencies = [ - "const_format_proc_macros", -] - -[[package]] -name = "const_format_proc_macros" -version = "0.2.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - [[package]] name = "cortex-m" version = "0.7.7" @@ -388,7 +365,7 @@ checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" dependencies = [ "bare-metal 0.2.5", "bitfield", - "critical-section 1.1.2", + "critical-section 1.1.3", "embedded-hal", "volatile-register", ] @@ -424,9 +401,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] @@ -438,14 +415,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1706d332edc22aef4d9f23a6bb1c92360a403013c291af51247a737472dcae6" dependencies = [ "bare-metal 1.0.0", - "critical-section 1.1.2", + "critical-section 1.1.3", ] [[package]] name = "critical-section" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" +checksum = "f64009896348fc5af4222e9cf7d7d82a95a256c634ebcf61c53e4ea461422242" [[package]] name = "crunchy" @@ -461,9 +438,9 @@ checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" [[package]] name = "defmt" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a2d011b2fee29fb7d659b83c43fce9a2cb4df453e16d441a51448e448f3f98" +checksum = "a99dd22262668b887121d4672af5a64b238f026099f1a2a1b322066c9ecfe9e0" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -471,33 +448,33 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "0.3.6" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54f0216f6c5acb5ae1a47050a6645024e6edafc2ee32d421955eccfef12ef92e" +checksum = "e3a9f309eff1f79b3ebdf252954d90ae440599c26c2c553fe87a2d17195f2dcb" dependencies = [ "defmt-parser", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.79", ] [[package]] name = "defmt-parser" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "269924c02afd7f94bc4cecbfa5c379f6ffcf9766b3408fe63d22c728654eccd0" +checksum = "ff4a5fefe330e8d7f31b16a318f9ce81000d8e35e69b93eae154d16d2278f70f" dependencies = [ "thiserror", ] [[package]] name = "defmt-rtt" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "609923761264dd99ed9c7d209718cda4631c5fe84668e0f0960124cbb844c49f" +checksum = "bab697b3dbbc1750b7c8b821aa6f6e7f2480b47a99bc057a2ed7b170ebef0c51" dependencies = [ - "critical-section 1.1.2", + "critical-section 1.1.3", "defmt", ] @@ -515,9 +492,9 @@ dependencies = [ [[package]] name = "defmt-test" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c629c79c479057fa5b63e6095c2aa94367762524dbe791ecb611ef5a25e08851" +checksum = "290966e8c38f94b11884877242de876280d0eab934900e9642d58868e77c5df1" dependencies = [ "cortex-m-rt", "cortex-m-semihosting", @@ -527,20 +504,20 @@ dependencies = [ [[package]] name = "defmt-test-macros" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a0dfea4063d72e1ba20494dfbc4667f67420869328cf3670b5824a38a22dc1" +checksum = "984bc6eca246389726ac2826acc2488ca0fe5fcd6b8d9b48797021951d76a125" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.79", ] [[package]] name = "either" -version = "1.9.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "embedded-hal" @@ -587,9 +564,9 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -597,21 +574,21 @@ dependencies = [ [[package]] name = "fixed" -version = "1.24.0" +version = "1.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c69ce7e7c0f17aa18fdd9d0de39727adb9c6281f2ad12f57cbe54ae6e76e7d" +checksum = "85c6e0b89bf864acd20590dbdbad56f69aeb898abfc9443008fd7bd48b2cc85a" dependencies = [ "az", "bytemuck", - "half 2.3.1", + "half 2.4.1", "typenum", ] [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "miniz_oxide", @@ -634,9 +611,9 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -660,7 +637,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.79", ] [[package]] @@ -671,9 +648,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "half" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" dependencies = [ "bytemuck", "serde", @@ -681,9 +658,9 @@ dependencies = [ [[package]] name = "half" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" dependencies = [ "cfg-if", "crunchy", @@ -707,7 +684,7 @@ dependencies = [ "atomic-polyfill", "defmt", "hash32", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "serde", "spin", "stable_deref_trait", @@ -757,17 +734,26 @@ dependencies = [ "embedded-hal", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lazycell" @@ -777,18 +763,18 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.152" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libloading" -version = "0.8.1" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-sys 0.48.0", + "windows-targets", ] [[package]] @@ -799,15 +785,15 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -815,15 +801,15 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "micromath" @@ -839,11 +825,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] @@ -895,19 +881,18 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -927,24 +912,27 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" +dependencies = [ + "portable-atomic", +] [[package]] name = "panic-probe" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa6fa5645ef5a760cd340eaa92af9c1ce131c8c09e7f8926d8a24b59d26652b9" +checksum = "4047d9235d1423d66cc97da7d07eddb54d4f154d6c13805c6d0793956f4f25b0" dependencies = [ "cortex-m", "defmt", @@ -952,9 +940,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "peeking_take_while" @@ -970,18 +958,17 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "portable-atomic" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d30538d42559de6b034bc76fd6dd4c38961b1ee5c6c56e3808c50128fdbc22ce" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "postcard" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" +checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" dependencies = [ "cobs", - "const_format", "heapless", "postcard-derive", "serde", @@ -989,9 +976,9 @@ dependencies = [ [[package]] name = "postcard-derive" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4b01218787dd4420daf63875163a787a78294ad48a24e9f6fa8c6507759a79" +checksum = "0239fa9c1d225d4b7eb69925c25c5e082307a141e470573fbbe3a817ce6a7a37" dependencies = [ "proc-macro2", "quote", @@ -1000,12 +987,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.16" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.48", + "syn 2.0.79", ] [[package]] @@ -1040,27 +1027,27 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.76" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] [[package]] name = "regex" -version = "1.10.2" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", @@ -1070,9 +1057,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -1081,29 +1068,30 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "ring" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", + "cfg-if", "getrandom", "libc", "spin", "untrusted", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "rtcc" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3623619ce77c09a7d87cf7c61c5c887b9c7dee8805f66af6c4aa5824be4d9930" +checksum = "95973c3a0274adc4f3c5b70d2b5b85618d6de9559a6737d3293ecae9a2fc0839" dependencies = [ "chrono", ] @@ -1125,20 +1113,20 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.21", + "semver 1.0.23", ] [[package]] name = "rustix" -version = "0.38.30" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -1147,31 +1135,41 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.10" +version = "0.23.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" dependencies = [ "log", + "once_cell", "ring", + "rustls-pki-types", "rustls-webpki", - "sct", + "subtle", + "zeroize", ] +[[package]] +name = "rustls-pki-types" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" + [[package]] name = "rustls-webpki" -version = "0.101.7" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", + "rustls-pki-types", "untrusted", ] [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scopeguard" @@ -1179,16 +1177,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "semver" version = "0.9.0" @@ -1200,9 +1188,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "semver-parser" @@ -1212,9 +1200,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.195" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -1232,22 +1220,23 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.195" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.79", ] [[package]] name = "serde_json" -version = "1.0.111" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -1267,7 +1256,7 @@ dependencies = [ "defmt", "embedded-hal", "embedded-sdmmc", - "half 1.8.2", + "half 1.8.3", "heapless", "ism330dhcx", "libm", @@ -1318,15 +1307,14 @@ dependencies = [ "panic-probe", "sfy", "static_cell", - "ublox", "ufmt", ] [[package]] name = "shlex" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "spin" @@ -1364,6 +1352,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "syn" version = "1.0.109" @@ -1377,9 +1371,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -1429,29 +1423,29 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.79", ] [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -1468,30 +1462,6 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "ublox" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad0c3df1bc466bd97f94ab437aab9116d5c15909c8a5cb9905ee3c11df998e8" -dependencies = [ - "bitflags 2.4.1", - "chrono", - "num-traits", - "serde", - "ublox_derive", -] - -[[package]] -name = "ublox_derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea60f23c86d2329b7162f6ebb82854bc77b992a9984e1fdfe8707f88e0e3e69" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "ufmt" version = "0.1.2" @@ -1523,36 +1493,30 @@ checksum = "e87a2ed6b42ec5e28cc3b94c09982969e9227600b2e3dcbc1db927a84c06bd69" [[package]] name = "unicode-bidi" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "untrusted" @@ -1562,25 +1526,25 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.9.1" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97" +checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "flate2", "log", "once_cell", "rustls", - "rustls-webpki", + "rustls-pki-types", "url", "webpki-roots", ] [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -1601,9 +1565,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "void" @@ -1628,9 +1592,12 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "webpki-roots" -version = "0.25.3" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +dependencies = [ + "rustls-pki-types", +] [[package]] name = "which" @@ -1662,11 +1629,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -1675,137 +1642,93 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets", ] [[package]] -name = "windows-targets" -version = "0.48.5" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-targets", ] [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] -name = "windows_i686_gnu" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "windows_x86_64_msvc" -version = "0.52.0" +name = "zeroize" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" [[package]] name = "zip" diff --git a/sfy-buoy/rust-toolchain.toml b/sfy-buoy/rust-toolchain.toml index 073f9750..249b88bb 100644 --- a/sfy-buoy/rust-toolchain.toml +++ b/sfy-buoy/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "nightly-2023-08-14" +channel = "nightly-2024-09-30" components = [ "rustfmt", "rustc-dev" ] targets = [ "thumbv7em-none-eabihf" ] profile = "minimal" diff --git a/sfy-buoy/sfy-ext-gps/Cargo.toml b/sfy-buoy/sfy-ext-gps/Cargo.toml index de778db7..c7397eff 100644 --- a/sfy-buoy/sfy-ext-gps/Cargo.toml +++ b/sfy-buoy/sfy-ext-gps/Cargo.toml @@ -23,7 +23,6 @@ git-version = "0.3.5" chrono = { version = "0.4.19", default-features = false } defmt-serial = { version = "0.6.0", optional = true } ufmt = { version = "0.1.0", optional = true } -ublox = { version = "0.4.5", default-features = false, features = ["serde"] } static_cell = "2.1.0" [dependencies.ambiq-hal] diff --git a/sfy-buoy/sfy-ext-gps/src/gps.rs b/sfy-buoy/sfy-ext-gps/src/gps.rs index 33e2f8fc..a260858e 100644 --- a/sfy-buoy/sfy-ext-gps/src/gps.rs +++ b/sfy-buoy/sfy-ext-gps/src/gps.rs @@ -6,18 +6,13 @@ use defmt::{debug, error, info, println, trace, warn}; use heapless::Vec; use static_cell::StaticCell; -use ublox::{FixedLinearBuffer, Parser}; static BUF: StaticCell> = StaticCell::new(); -struct Gps { - parser: Parser>, -} +struct Gps {} impl Gps { pub fn new(buf: &'static mut [u8]) -> Gps { - let buf = FixedLinearBuffer::new(buf); - let parser = Parser::new(buf); - Gps { parser } + Gps {} } } diff --git a/sfy-buoy/src/fir.rs b/sfy-buoy/src/fir.rs index aeca6562..fb5aa329 100644 --- a/sfy-buoy/src/fir.rs +++ b/sfy-buoy/src/fir.rs @@ -1,4 +1,4 @@ -use core::simd::{f32x4, SimdFloat}; +use core::simd::{f32x4, num::SimdFloat}; use heapless::Deque; /// Sample rate.