From e103702184edc20766936383e65ace9ba1ddfcb4 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 29 Sep 2026 15:51:08 +0200 Subject: [PATCH] remove STM32F3 Disco example - target MCU not large enough for larger example featuring sat-rs and also does not have ethernet/networking support --- Cargo.toml | 3 - README.md | 7 - examples/embedded-client/Cargo.toml | 19 - examples/embedded-client/config.toml | 2 - .../embedded-client/src/bin/stm32f3-client.rs | 71 - examples/embedded-client/src/lib.rs | 42 - examples/embedded-types/Cargo.toml | 11 - examples/embedded-types/src/lib.rs | 62 - .../{config.toml.template => config.toml} | 0 examples/stm32f3-disco-rtic/.gitignore | 4 - examples/stm32f3-disco-rtic/Cargo.lock | 1532 ----------------- examples/stm32f3-disco-rtic/Cargo.toml | 64 - examples/stm32f3-disco-rtic/LICENSE-APACHE | 201 --- examples/stm32f3-disco-rtic/NOTICE | 1 - examples/stm32f3-disco-rtic/README.md | 106 -- examples/stm32f3-disco-rtic/src/bin/blinky.rs | 56 - examples/stm32f3-disco-rtic/src/lib.rs | 145 -- examples/stm32f3-disco-rtic/src/main.rs | 336 ---- examples/stm32f3-disco-rtic/vscode/.gitignore | 2 - .../stm32f3-disco-rtic/vscode/extensions.json | 12 - .../stm32f3-disco-rtic/vscode/launch.json | 22 - .../vscode/openocd-helpers.tcl | 18 - examples/stm32f3-disco-rtic/vscode/tasks.json | 20 - justfile | 6 +- 24 files changed, 1 insertion(+), 2741 deletions(-) delete mode 100644 examples/embedded-client/Cargo.toml delete mode 100644 examples/embedded-client/config.toml delete mode 100644 examples/embedded-client/src/bin/stm32f3-client.rs delete mode 100644 examples/embedded-client/src/lib.rs delete mode 100644 examples/embedded-types/Cargo.toml delete mode 100644 examples/embedded-types/src/lib.rs rename examples/stm32f3-disco-rtic/.cargo/{config.toml.template => config.toml} (100%) delete mode 100644 examples/stm32f3-disco-rtic/.gitignore delete mode 100644 examples/stm32f3-disco-rtic/Cargo.lock delete mode 100644 examples/stm32f3-disco-rtic/Cargo.toml delete mode 100644 examples/stm32f3-disco-rtic/LICENSE-APACHE delete mode 100644 examples/stm32f3-disco-rtic/NOTICE delete mode 100644 examples/stm32f3-disco-rtic/README.md delete mode 100644 examples/stm32f3-disco-rtic/src/bin/blinky.rs delete mode 100644 examples/stm32f3-disco-rtic/src/lib.rs delete mode 100644 examples/stm32f3-disco-rtic/src/main.rs delete mode 100644 examples/stm32f3-disco-rtic/vscode/.gitignore delete mode 100644 examples/stm32f3-disco-rtic/vscode/extensions.json delete mode 100644 examples/stm32f3-disco-rtic/vscode/launch.json delete mode 100644 examples/stm32f3-disco-rtic/vscode/openocd-helpers.tcl delete mode 100644 examples/stm32f3-disco-rtic/vscode/tasks.json diff --git a/Cargo.toml b/Cargo.toml index 4773a5c..5d3d286 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,12 +10,9 @@ members = [ "examples/minisim-types", "satrs-shared", "tmtc-utils", - "examples/embedded-client", - "examples/embedded-types", ] exclude = [ - "examples/stm32f3-disco-rtic", "examples/stm32h7-nucleo-rtic", "examples/stm32h7-nucleo-embassy", ] diff --git a/README.md b/README.md index 8f306ea..bba91f6 100644 --- a/README.md +++ b/README.md @@ -51,10 +51,6 @@ All examples and their helper crates are located inside the * [`client`](https://egit.irs.uni-stuttgart.de/rust/sat-rs/src/branch/main/examples/client): Ground client to command the `example-std` application and the STM32H7 examples. * [`types`](https://egit.irs.uni-stuttgart.de/rust/sat-rs/src/branch/main/examples/types): Telecommand and telemetry definitions shared by the `example-std` application, the STM32H7 examples and the `client`. -* [`stm32f3-disco-rtic`](https://egit.irs.uni-stuttgart.de/rust/sat-rs/src/branch/main/examples/stm32f3-disco-rtic): - Simple example using low-level sat-rs components on a bare-metal system with constrained - resources. This example uses the [RTIC](https://github.com/rtic-rs/rtic) framework on the - STM32F3-Discovery device. * [`stm32h7-nucleo-rtic`](https://egit.irs.uni-stuttgart.de/rust/sat-rs/src/branch/main/examples/stm32h7-nucleo-rtic): Simple example using sat-rs components on a bare-metal system with constrained resources. This example uses the [RTIC](https://github.com/rtic-rs/rtic) framework on the NUCLEO-H753ZI @@ -62,9 +58,6 @@ All examples and their helper crates are located inside the * [`stm32h7-nucleo-embassy`](https://egit.irs.uni-stuttgart.de/rust/sat-rs/src/branch/main/examples/stm32h7-nucleo-embassy): Same as `stm32h7-nucleo-rtic`, but using the [embassy](https://embassy.dev/) executor instead of RTIC. -* [`embedded-client`](https://egit.irs.uni-stuttgart.de/rust/sat-rs/src/branch/main/examples/embedded-client) and - [`embedded-types`](https://egit.irs.uni-stuttgart.de/rust/sat-rs/src/branch/main/examples/embedded-types): Client and telecommand and telemetry - definitions for the STM32F3 example, which uses its own protocol. The library crates and the `example-std` application have their own `CHANGELOG.md`. diff --git a/examples/embedded-client/Cargo.toml b/examples/embedded-client/Cargo.toml deleted file mode 100644 index f1a04ea..0000000 --- a/examples/embedded-client/Cargo.toml +++ /dev/null @@ -1,19 +0,0 @@ -[package] -name = "embedded-client" -version = "0.1.0" -edition = "2024" - -[dependencies] -clap = { version = "4", features = ["derive"] } -serialport = "4" -toml = "1" -serde = { version = "1", features = ["derive"] } -spacepackets = { version = "0.18" } -embedded-types = { path = "../embedded-types" } -tmtc-utils = { path = "../../tmtc-utils" } -postcard = { version = "1", features = ["alloc"] } -anyhow = "1" -cobs = "0.5" -fern = "0.7" -humantime = "2" -log = "0.4" diff --git a/examples/embedded-client/config.toml b/examples/embedded-client/config.toml deleted file mode 100644 index 5b018b6..0000000 --- a/examples/embedded-client/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[interface] -serial_port = "/dev/ttyUSB0" diff --git a/examples/embedded-client/src/bin/stm32f3-client.rs b/examples/embedded-client/src/bin/stm32f3-client.rs deleted file mode 100644 index 5fb8d3d..0000000 --- a/examples/embedded-client/src/bin/stm32f3-client.rs +++ /dev/null @@ -1,71 +0,0 @@ -use std::time::Duration; - -use anyhow::bail; -use clap::Parser; -use cobs::CobsDecoderOwned; -use embedded_client::setup_logger; -use embedded_types::stm32f3; -use spacepackets::{CcsdsPacketCreatorOwned, CcsdsPacketReader, SpHeader}; -use tmtc_utils::transport::serial::PacketTransportSerialCobs; - -#[derive(Parser, Debug)] -struct Cli { - #[arg(short, long)] - ping: bool, - - /// Set frequency in milliseconds. - #[arg(short, long)] - set_led_frequency: Option, -} - -fn main() -> anyhow::Result<()> { - setup_logger().expect("failed to initialize logger"); - println!("-- STM32F3 TMTC client --"); - let cli = Cli::parse(); - let config = embedded_client::Config::new_from_file(); - - if config.interface.serial_port.is_none() { - bail!("Serial port not specified in configuration file."); - } - let serial_port = config.interface.serial_port.as_ref().unwrap(); - let serial = serialport::new(serial_port, 115200) - .open() - .expect("opening serial port failed"); - let mut transport = PacketTransportSerialCobs::new(serial, CobsDecoderOwned::new(1024)); - - if cli.ping { - let tc = create_stm32f3_tc(&embedded_types::stm32f3::Request::Ping); - log::info!( - "Sending ping request with TC ID: {:#010x}", - tc.ccsds_packet_id_and_psc().raw() - ); - transport.send(&tc.to_vec()).unwrap(); - } - - if let Some(freq_ms) = cli.set_led_frequency { - let request = stm32f3::Request::ChangeBlinkFrequency(Duration::from_millis(freq_ms as u64)); - let tc = create_stm32f3_tc(&request); - log::info!( - "Sending change blink frequency request {:?} with TC ID: {:#010x}", - request, - tc.ccsds_packet_id_and_psc().raw() - ); - transport.send(&tc.to_vec()).unwrap(); - } - - log::info!("Waiting for response..."); - loop { - transport - .receive(|packet: &[u8]| { - let reader = CcsdsPacketReader::new_with_checksum(packet); - log::info!("Received packet: {:?}", reader); - }) - .unwrap(); - } -} - -fn create_stm32f3_tc(request: &stm32f3::Request) -> CcsdsPacketCreatorOwned { - let req_raw = postcard::to_allocvec(&request).unwrap(); - let sp_header = SpHeader::new_from_apid(embedded_types::stm32f3::PUS_APID); - CcsdsPacketCreatorOwned::new_tc_with_checksum(sp_header, &req_raw).unwrap() -} diff --git a/examples/embedded-client/src/lib.rs b/examples/embedded-client/src/lib.rs deleted file mode 100644 index f5d2c4d..0000000 --- a/examples/embedded-client/src/lib.rs +++ /dev/null @@ -1,42 +0,0 @@ -use std::{fs::File, io::Read as _, path::Path, time::SystemTime}; - -#[derive(Debug, serde::Deserialize)] -pub struct Config { - pub interface: Interface, -} - -#[derive(Debug, serde::Deserialize)] -pub struct Interface { - pub serial_port: Option, -} - -impl Config { - pub fn new_from_file() -> Self { - let mut config_file = - File::open(Path::new("config.toml")).expect("opening config.toml file failed"); - let mut toml_str = String::new(); - config_file - .read_to_string(&mut toml_str) - .expect("reading config.toml file failed"); - let config: Config = toml::from_str(&toml_str).expect("parsing config.toml file failed"); - config - } -} - -pub fn setup_logger() -> Result<(), fern::InitError> { - fern::Dispatch::new() - .format(|out, message, record| { - out.finish(format_args!( - "[{} {} {}] {}", - humantime::format_rfc3339_seconds(SystemTime::now()), - record.level(), - record.target(), - message - )) - }) - .level(log::LevelFilter::Info) - .chain(std::io::stdout()) - .chain(fern::log_file("output.log")?) - .apply()?; - Ok(()) -} diff --git a/examples/embedded-types/Cargo.toml b/examples/embedded-types/Cargo.toml deleted file mode 100644 index 3f6d446..0000000 --- a/examples/embedded-types/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "embedded-types" -version = "0.1.0" -edition = "2024" - -[dependencies] -serde = { version = "1", default-features = false } -defmt = { version = "1", optional = true } -spacepackets = { version = "0.18", default-features = false, features = ["defmt", "serde"] } -postcard = { version = "1", features = ["defmt"] } -arbitrary-int = "2" diff --git a/examples/embedded-types/src/lib.rs b/examples/embedded-types/src/lib.rs deleted file mode 100644 index 6de874d..0000000 --- a/examples/embedded-types/src/lib.rs +++ /dev/null @@ -1,62 +0,0 @@ -#![no_std] - -use spacepackets::{ - CcsdsPacketCreationError, CcsdsPacketCreatorWithReservedData, CcsdsPacketIdAndPsc, - SpacePacketHeader, ccsds_packet_len_for_user_data_len_with_checksum, -}; - -pub mod stm32f3 { - use arbitrary_int::u11; - use core::time::Duration; - - pub const PUS_APID: u11 = u11::new(0x02); - - #[derive(Copy, Clone, Debug, serde::Serialize, serde::Deserialize)] - #[cfg_attr(feature = "defmt", derive(defmt::Format))] - pub enum Request { - Ping, - ChangeBlinkFrequency(Duration), - } - - #[derive(Debug, serde::Serialize, serde::Deserialize)] - #[cfg_attr(feature = "defmt", derive(defmt::Format))] - pub enum Response { - Ok, - } -} - -#[derive(Debug, serde::Serialize, serde::Deserialize)] -#[cfg_attr(feature = "defmt", derive(defmt::Format))] -pub struct TmHeader { - pub tc_packet_id: Option, - pub uptime_millis: u64, -} - -pub fn tm_size(tm_header: &TmHeader, response: &Response) -> usize { - ccsds_packet_len_for_user_data_len_with_checksum( - postcard::experimental::serialized_size(tm_header).unwrap() - + postcard::experimental::serialized_size(response).unwrap(), - ) - .unwrap() -} - -pub fn create_tm_packet( - buf: &mut [u8], - sp_header: SpacePacketHeader, - tm_header: TmHeader, - response: Response, -) -> Result { - let packet_data_size = postcard::experimental::serialized_size(&tm_header).unwrap() - + postcard::experimental::serialized_size(&response).unwrap(); - let mut creator = - CcsdsPacketCreatorWithReservedData::new_tm_with_checksum(sp_header, packet_data_size, buf)?; - - let current_index = postcard::to_slice(&tm_header, creator.packet_data_mut()) - .unwrap() - .len(); - postcard::to_slice(&response, &mut creator.packet_data_mut()[current_index..]).unwrap(); - Ok(creator.finish()) -} - -#[cfg(test)] -mod tests {} diff --git a/examples/stm32f3-disco-rtic/.cargo/config.toml.template b/examples/stm32f3-disco-rtic/.cargo/config.toml similarity index 100% rename from examples/stm32f3-disco-rtic/.cargo/config.toml.template rename to examples/stm32f3-disco-rtic/.cargo/config.toml diff --git a/examples/stm32f3-disco-rtic/.gitignore b/examples/stm32f3-disco-rtic/.gitignore deleted file mode 100644 index b2d79a6..0000000 --- a/examples/stm32f3-disco-rtic/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/target -/itm.txt -/.cargo/config.toml -/.vscode diff --git a/examples/stm32f3-disco-rtic/Cargo.lock b/examples/stm32f3-disco-rtic/Cargo.lock deleted file mode 100644 index b6e050e..0000000 --- a/examples/stm32f3-disco-rtic/Cargo.lock +++ /dev/null @@ -1,1532 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "aligned" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685" -dependencies = [ - "as-slice", -] - -[[package]] -name = "arbitrary-int" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993a810118f8f37e9c4411c86f1c4c940a09a7ab34b7bf2d88d06f50c553fab7" -dependencies = [ - "defmt 1.1.1", - "serde", -] - -[[package]] -name = "as-slice" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "atomic-polyfill" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" -dependencies = [ - "critical-section", -] - -[[package]] -name = "autocfg" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" - -[[package]] -name = "bare-metal" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3" -dependencies = [ - "rustc_version 0.2.3", -] - -[[package]] -name = "bare-metal" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8fe8f5a8a398345e52358e18ff07cc17a568fbca5c6f73873d3a62056309603" - -[[package]] -name = "bit_field" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" - -[[package]] -name = "bitbybit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d2a3353d70ac1091a33cbf31fc7e77b19091538a7e306e3740712af19807ca" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "bitfield" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" - -[[package]] -name = "block-device-driver" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c051592f59fe68053524b4c4935249b806f72c1f544cfb7abe4f57c3be258e" -dependencies = [ - "aligned", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "cc" -version = "1.2.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" -dependencies = [ - "find-msvc-tools", - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "chrono" -version = "0.4.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" -dependencies = [ - "num-traits", - "serde", -] - -[[package]] -name = "cobs" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" -dependencies = [ - "thiserror", -] - -[[package]] -name = "cobs" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd93fd2c1b27acd030440c9dbd9d14c1122aad622374fe05a670b67a4bc034be" -dependencies = [ - "defmt 1.1.1", - "heapless 0.9.3", - "thiserror", -] - -[[package]] -name = "cortex-m" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" -dependencies = [ - "bare-metal 0.2.5", - "bitfield", - "critical-section", - "embedded-hal 0.2.7", - "volatile-register", -] - -[[package]] -name = "cortex-m-rt" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "801d4dec46b34c299ccf6b036717ae0fce602faa4f4fe816d9013b9a7c9f5ba6" -dependencies = [ - "cortex-m-rt-macros", -] - -[[package]] -name = "cortex-m-rt-macros" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "cortex-m-semihosting" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c23234600452033cc77e4b761e740e02d2c4168e11dbf36ab14a0f58973592b0" -dependencies = [ - "cortex-m", -] - -[[package]] -name = "crc" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" - -[[package]] -name = "critical-section" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" - -[[package]] -name = "darling" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "darling_macro" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "defmt" -version = "0.3.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" -dependencies = [ - "defmt 1.1.1", -] - -[[package]] -name = "defmt" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" -dependencies = [ - "bitflags 1.3.2", - "defmt-macros", -] - -[[package]] -name = "defmt-macros" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" -dependencies = [ - "defmt-parser", - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "defmt-parser" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" -dependencies = [ - "thiserror", -] - -[[package]] -name = "defmt-rtt" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05144944c117db54127a8ac17a3c9a28d55e7047bfddb950bcd20b4a94c79b10" -dependencies = [ - "critical-section", - "defmt 1.1.1", -] - -[[package]] -name = "defmt-test" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d326e211b94939affafdf96f5c1baf8745b960037dcf763f813597d32b03d51" -dependencies = [ - "defmt 1.1.1", - "defmt-test-macros", - "semihosting", -] - -[[package]] -name = "defmt-test-macros" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a7563a5468e1a1bd97f44cb75b658c2feec75af2b1389e70f4c0677b8402edd" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "delegate" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "780eb241654bf097afb00fc5f054a09b687dad862e485fdcf8399bb056565370" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "document-features" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" -dependencies = [ - "litrs", -] - -[[package]] -name = "embassy-embedded-hal" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0641612053b2f34fc250bb63f6630ae75de46e02ade7f457268447081d709ce" -dependencies = [ - "defmt 1.1.1", - "embassy-futures", - "embassy-hal-internal 0.4.0", - "embassy-sync", - "embassy-time", - "embedded-hal 0.2.7", - "embedded-hal 1.0.0", - "embedded-hal-async", - "embedded-storage", - "embedded-storage-async", - "nb 1.1.0", -] - -[[package]] -name = "embassy-executor-timer-queue" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fc328bf943af66b80b98755db9106bf7e7471b0cf47dc8559cd9a6be504cc9c" - -[[package]] -name = "embassy-futures" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" - -[[package]] -name = "embassy-hal-internal" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f10ce10a4dfdf6402d8e9bd63128986b96a736b1a0a6680547ed2ac55d55dba" -dependencies = [ - "num-traits", -] - -[[package]] -name = "embassy-hal-internal" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "568659fc53866d3d85c60fa33723fb751aa69e71507634fc2c19e7649432fb75" -dependencies = [ - "cortex-m", - "critical-section", - "defmt 1.1.1", - "num-traits", -] - -[[package]] -name = "embassy-net-driver" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524eb3c489760508f71360112bca70f6e53173e6fe48fc5f0efd0f5ab217751d" -dependencies = [ - "defmt 0.3.100", -] - -[[package]] -name = "embassy-stm32" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486c0622deb5a519fc4d2cb8e3ef324f7568fcdfff201ff8fcab46557d663ceb" -dependencies = [ - "aligned", - "bit_field", - "bitflags 2.13.0", - "block-device-driver", - "cfg-if", - "cortex-m", - "cortex-m-rt", - "critical-section", - "defmt 1.1.1", - "document-features", - "embassy-embedded-hal", - "embassy-futures", - "embassy-hal-internal 0.5.0", - "embassy-net-driver", - "embassy-sync", - "embassy-time", - "embassy-time-driver", - "embassy-time-queue-utils", - "embassy-usb-driver", - "embassy-usb-synopsys-otg", - "embedded-can", - "embedded-hal 0.2.7", - "embedded-hal 1.0.0", - "embedded-hal-async", - "embedded-hal-nb", - "embedded-io 0.7.1", - "embedded-io-async 0.7.0", - "embedded-storage", - "embedded-storage-async", - "futures-util", - "heapless 0.9.3", - "nb 1.1.0", - "proc-macro2", - "quote", - "rand_core 0.6.4", - "rand_core 0.9.5", - "regex", - "sdio-host", - "static_assertions", - "stm32-fmc", - "stm32-metapac", - "trait-set", - "vcell", - "volatile-register", -] - -[[package]] -name = "embassy-sync" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bbd85cf5a5ae56bdf26f618364af642d1d0a4e245cdd75cd9aabda382f65a81" -dependencies = [ - "cfg-if", - "critical-section", - "defmt 1.1.1", - "embedded-io-async 0.7.0", - "futures-core", - "futures-sink", - "heapless 0.9.3", -] - -[[package]] -name = "embassy-time" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "592b0c143ec626e821d4d90da51a2bd91d559d6c442b7c74a47d368c9e23d97a" -dependencies = [ - "cfg-if", - "critical-section", - "defmt 1.1.1", - "document-features", - "embassy-time-driver", - "embassy-time-queue-utils", - "embedded-hal 0.2.7", - "embedded-hal 1.0.0", - "embedded-hal-async", - "futures-core", -] - -[[package]] -name = "embassy-time-driver" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee71af1b3a0deaa53eaf2d39252f83504c853646e472400b763060389b9fcc9" -dependencies = [ - "document-features", -] - -[[package]] -name = "embassy-time-queue-utils" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168297bf80aaf114b3c9ad589bf38b01b3009b9af7f97cd18086c5bbf96f5693" -dependencies = [ - "embassy-executor-timer-queue", - "heapless 0.9.3", -] - -[[package]] -name = "embassy-usb-driver" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa675c5f4349b6aa0fcffc4bf9b241f18cd11b97c1f8323273fb9a5449937fbd" -dependencies = [ - "defmt 1.1.1", - "embedded-io-async 0.6.1", - "embedded-io-async 0.7.0", -] - -[[package]] -name = "embassy-usb-synopsys-otg" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb205e26d59e483e8c48f91f637ec217ec7e2cfb0b61d50482301b991b4ff431" -dependencies = [ - "critical-section", - "defmt 1.1.1", - "embassy-sync", - "embassy-time", - "embassy-usb-driver", - "portable-atomic", -] - -[[package]] -name = "embedded-can" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9d2e857f87ac832df68fa498d18ddc679175cf3d2e4aa893988e5601baf9438" -dependencies = [ - "nb 1.1.0", -] - -[[package]] -name = "embedded-hal" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff" -dependencies = [ - "nb 0.1.3", - "void", -] - -[[package]] -name = "embedded-hal" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89" - -[[package]] -name = "embedded-hal-async" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4c685bbef7fe13c3c6dd4da26841ed3980ef33e841cddfa15ce8a8fb3f1884" -dependencies = [ - "embedded-hal 1.0.0", -] - -[[package]] -name = "embedded-hal-bus" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513e0b3a8fb7d3013a8ae17a834283f170deaf7d0eeab0a7c1a36ad4dd356d22" -dependencies = [ - "critical-section", - "embedded-hal 1.0.0", - "embedded-hal-async", -] - -[[package]] -name = "embedded-hal-nb" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fba4268c14288c828995299e59b12babdbe170f6c6d73731af1b4648142e8605" -dependencies = [ - "embedded-hal 1.0.0", - "nb 1.1.0", -] - -[[package]] -name = "embedded-io" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" - -[[package]] -name = "embedded-io" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eb1aa714776b75c7e67e1da744b81a129b3ff919c8712b5e1b32252c1f07cc7" -dependencies = [ - "defmt 1.1.1", -] - -[[package]] -name = "embedded-io-async" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff09972d4073aa8c299395be75161d582e7629cd663171d62af73c8d50dba3f" -dependencies = [ - "embedded-io 0.6.1", -] - -[[package]] -name = "embedded-io-async" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2564b9f813c544241430e147d8bc454815ef9ac998878d30cc3055449f7fd4c0" -dependencies = [ - "defmt 1.1.1", - "embedded-io 0.7.1", -] - -[[package]] -name = "embedded-storage" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21dea9854beb860f3062d10228ce9b976da520a73474aed3171ec276bc0c032" - -[[package]] -name = "embedded-storage-async" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1763775e2323b7d5f0aa6090657f5e21cfa02ede71f5dc40eead06d64dcd15cc" -dependencies = [ - "embedded-storage", -] - -[[package]] -name = "embedded-types" -version = "0.1.0" -dependencies = [ - "arbitrary-int", - "defmt 1.1.1", - "postcard", - "serde", - "spacepackets", -] - -[[package]] -name = "enumset" -version = "1.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "839c4174b41e75c8f7306110b2c51996a293b8d1d850edd529011841d9fede7d" -dependencies = [ - "enumset_derive", -] - -[[package]] -name = "enumset_derive" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd536557b58c682b217b8fb199afdff47cd3eff260623f19e77074eb073d63a" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "find-msvc-tools" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "futures-core" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" - -[[package]] -name = "futures-sink" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" - -[[package]] -name = "futures-task" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" - -[[package]] -name = "futures-util" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" -dependencies = [ - "futures-core", - "futures-task", - "pin-project-lite", -] - -[[package]] -name = "generator" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" -dependencies = [ - "cc", - "cfg-if", - "libc", - "log", - "rustversion", - "windows-link", - "windows-result", -] - -[[package]] -name = "hash32" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hash32" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hashbrown" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" - -[[package]] -name = "heapless" -version = "0.7.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" -dependencies = [ - "atomic-polyfill", - "hash32 0.2.1", - "rustc_version 0.4.1", - "serde", - "spin", - "stable_deref_trait", -] - -[[package]] -name = "heapless" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" -dependencies = [ - "hash32 0.3.1", - "stable_deref_trait", -] - -[[package]] -name = "heapless" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4" -dependencies = [ - "hash32 0.3.1", - "stable_deref_trait", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "indexmap" -version = "2.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libc" -version = "0.2.186" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" - -[[package]] -name = "litrs" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" - -[[package]] -name = "loom" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" -dependencies = [ - "cfg-if", - "generator", - "pin-utils", - "scoped-tls", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "matchers" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "memchr" -version = "2.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" - -[[package]] -name = "nb" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" -dependencies = [ - "nb 1.1.0", -] - -[[package]] -name = "nb" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" - -[[package]] -name = "nu-ansi-term" -version = "0.50.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_enum" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "once_cell" -version = "1.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" - -[[package]] -name = "panic-probe" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd402d00b0fb94c5aee000029204a46884b1262e0c443f166d86d2c0747e1a1a" -dependencies = [ - "cortex-m", - "defmt 1.1.1", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "pin-project-lite" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "portable-atomic" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" - -[[package]] -name = "postcard" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" -dependencies = [ - "cobs 0.3.0", - "defmt 1.1.1", - "heapless 0.7.17", - "serde", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" - -[[package]] -name = "regex" -version = "1.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" - -[[package]] -name = "rtic" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bc68b1fa2eefbb7ad6747b299b79c8fca92163dfa46f0e279f39109cf272186" -dependencies = [ - "bare-metal 1.0.0", - "cortex-m", - "critical-section", - "portable-atomic", - "rtic-core", - "rtic-macros", -] - -[[package]] -name = "rtic-common" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67caeecca87cb20e1101eb104b0f05604633b7ab1035cce777417c6fb7c8f9a0" -dependencies = [ - "critical-section", - "portable-atomic", -] - -[[package]] -name = "rtic-core" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9369355b04d06a3780ec0f51ea2d225624db777acbc60abd8ca4832da5c1a42" - -[[package]] -name = "rtic-macros" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f387b12bd6c01d2c9d4776dddeefaf0ae51b9497c83c0186b1693f6821ff3c4a" -dependencies = [ - "indexmap", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "rtic-sync" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d378d811a8e25411a139f1428804e390fb2dc9b5bcf84e880a19c25feaa89a2a" -dependencies = [ - "critical-section", - "embedded-hal 1.0.0", - "embedded-hal-async", - "embedded-hal-bus", - "heapless 0.8.0", - "loom", - "portable-atomic", - "rtic-common", -] - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver 1.0.28", -] - -[[package]] -name = "rustversion" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" - -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sdio-host" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b328e2cb950eeccd55b7f55c3a963691455dcd044cfb5354f0c5e68d2c2d6ee2" - -[[package]] -name = "semihosting" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8e4abf97879f4e80db69a9fba7bd64998e9bdad25f58ef045a778e191172fd4" - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" - -[[package]] -name = "smallvec" -version = "1.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" - -[[package]] -name = "spacepackets" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93b9cf1b8372119e7c79383f1578f3e845b2ca2e6d07073e96f475ba354f44e3" -dependencies = [ - "arbitrary-int", - "bitbybit", - "chrono", - "crc", - "defmt 1.1.1", - "delegate", - "num-traits", - "num_enum", - "paste", - "serde", - "thiserror", - "zerocopy", -] - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "static_cell" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0530892bb4fa575ee0da4b86f86c667132a94b74bb72160f58ee5a4afec74c23" -dependencies = [ - "portable-atomic", -] - -[[package]] -name = "stm32-fmc" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72692594faa67f052e5e06dd34460951c21e83bc55de4feb8d2666e2f15480a2" -dependencies = [ - "embedded-hal 1.0.0", -] - -[[package]] -name = "stm32-metapac" -version = "21.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e74b78632cea498cfb28386a29f8bfae7476d6570a78733eb5fecbee66c2f4ce" -dependencies = [ - "cortex-m", - "cortex-m-rt", - "defmt 0.3.100", -] - -[[package]] -name = "stm32f3-disco-rtic" -version = "0.1.0" -dependencies = [ - "arbitrary-int", - "cobs 0.5.1", - "cortex-m", - "cortex-m-rt", - "cortex-m-semihosting", - "defmt 1.1.1", - "defmt-rtt", - "defmt-test", - "embassy-stm32", - "embassy-sync", - "embassy-time", - "embedded-hal 1.0.0", - "embedded-types", - "enumset", - "heapless 0.9.3", - "panic-probe", - "postcard", - "rtic", - "rtic-sync", - "serde", - "spacepackets", - "static_cell", - "thiserror", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.118" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "thread_local" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex-automata", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "trait-set" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b79e2e9c9ab44c6d7c20d5976961b47e8f49ac199154daa514b77cd1ab536625" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "vcell" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002" - -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - -[[package]] -name = "volatile-register" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de437e2a6208b014ab52972a27e59b33fa2920d3e00fe05026167a1c509d19cc" -dependencies = [ - "vcell", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "zerocopy" -version = "0.8.53" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75726053136156d419e285b9b7eddaaea9e3fea6ce32eed44a89901f0bd98de1" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.53" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4714fd92cf900833d49538023a9b3915155210801d1c1169eba513b2addefd71" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] diff --git a/examples/stm32f3-disco-rtic/Cargo.toml b/examples/stm32f3-disco-rtic/Cargo.toml deleted file mode 100644 index a5b93ab..0000000 --- a/examples/stm32f3-disco-rtic/Cargo.toml +++ /dev/null @@ -1,64 +0,0 @@ -[package] -name = "stm32f3-disco-rtic" -version = "0.1.0" -edition = "2024" -default-run = "stm32f3-disco-rtic" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -embedded-types = { path = "../embedded-types", features = ["defmt"] } -cortex-m = { version = "0.7", features = ["critical-section-single-core"] } -cortex-m-rt = "0.7" -defmt = "1" -defmt-rtt = { version = "1" } -panic-probe = { version = "1", features = ["print-defmt"] } -embedded-hal = "1" -cortex-m-semihosting = "0.5.0" -embassy-stm32 = { version = "0.6", features = ["defmt", "stm32f303vc", "memory-x", "unstable-pac", "time-driver-any"] } -embassy-time = { version = "0.5", features = ["defmt", "generic-queue-16", "defmt-timestamp-uptime-ms"]} -enumset = "1" -heapless = "0.9" -embassy-sync = "0.8" -spacepackets = { version = "0.18", default-features = false, features = ["defmt", "serde"] } -static_cell = "2" -cobs = { version = "0.5", default-features = false, features = ["defmt"] } -postcard = { version = "1" } -arbitrary-int = "2" -thiserror = { version = "2", default-features = false } -serde = { version = "1", default-features = false, features = ["derive"] } - -rtic = { version = "2", features = ["thumbv7-backend"] } -rtic-sync = { version = "1" } - -[dev-dependencies] -defmt-test = "0.5" - -# cargo test -[profile.test] -codegen-units = 1 -debug = 2 -debug-assertions = true # <- -incremental = false -opt-level = "s" # <- -overflow-checks = true # <- - -# cargo build/run --release -[profile.release] -codegen-units = 1 -debug = 2 -debug-assertions = false # <- -incremental = false -lto = 'fat' -opt-level = "s" # <- -overflow-checks = false # <- - -# cargo test --release -[profile.bench] -codegen-units = 1 -debug = 2 -debug-assertions = false # <- -incremental = false -lto = 'fat' -opt-level = "s" # <- -overflow-checks = false # <- diff --git a/examples/stm32f3-disco-rtic/LICENSE-APACHE b/examples/stm32f3-disco-rtic/LICENSE-APACHE deleted file mode 100644 index 16fe87b..0000000 --- a/examples/stm32f3-disco-rtic/LICENSE-APACHE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/examples/stm32f3-disco-rtic/NOTICE b/examples/stm32f3-disco-rtic/NOTICE deleted file mode 100644 index 717a583..0000000 --- a/examples/stm32f3-disco-rtic/NOTICE +++ /dev/null @@ -1 +0,0 @@ -This software contains code developed at the University of Stuttgart's Institute of Space Systems. diff --git a/examples/stm32f3-disco-rtic/README.md b/examples/stm32f3-disco-rtic/README.md deleted file mode 100644 index 32a1935..0000000 --- a/examples/stm32f3-disco-rtic/README.md +++ /dev/null @@ -1,106 +0,0 @@ -sat-rs example for the STM32F3-Discovery board -======= - -This example application shows how the [sat-rs library](https://egit.irs.uni-stuttgart.de/rust/sat-rs) -can be used on an embedded target. -It also shows how a relatively simple OBSW could be built when no standard runtime is available. -It uses [RTIC](https://rtic.rs/2/book/en/) as the concurrency framework and the -[defmt](https://defmt.ferrous-systems.com/) framework for logging. - -The STM32F3-Discovery device was picked because it is a cheap Cortex-M4 based device which is also -used by the [Rust Embedded Book](https://docs.rust-embedded.org/book/intro/hardware.html) and the -[Rust Discovery](https://docs.rust-embedded.org/discovery/f3discovery/) book as an introduction -to embedded Rust. - -## Pre-Requisites - -Make sure the following tools are installed: - -1. [`probe-rs`](https://probe.rs/): Application used to flash and debug the MCU. -2. Optional and recommended: [VS Code](https://code.visualstudio.com/) with - [probe-rs plugin](https://marketplace.visualstudio.com/items?itemName=probe-rs.probe-rs-debugger) - for debugging. - -## Preparing Rust and the repository - -Building an application requires the `thumbv7em-none-eabihf` cross-compiler toolchain. -If you have not installed it yet, you can do so with - -```sh -rustup target add thumbv7em-none-eabihf -``` - -A default `.cargo` config file is provided for this project, but needs to be copied to have -the correct name. This is so that the config file can be updated or edited for custom needs -without being tracked by git. - -```sh -cp .cargo/config.toml.template .cargo/config.toml -``` - -The configuration file will also set the target so it does not always have to be specified with -the `--target` argument. - -## Building - -After that, assuming that you have a `.cargo/config.toml` setting the correct build target, -you can simply build the application with - -```sh -cargo build -``` - -## Flashing from the command line - -You can flash the application from the command line using `probe-rs`: - -```sh -probe-rs run --chip STM32F303VCTx -``` - -## Debugging with VS Code - -The STM32F3-Discovery comes with an on-board ST-Link so all that is required to flash and debug -the board is a Mini-USB cable. The code in this repository was debugged using [`probe-rs`](https://probe.rs/docs/tools/debuggerA) -and the VS Code [`probe-rs` plugin](https://marketplace.visualstudio.com/items?itemName=probe-rs.probe-rs-debugger). -Make sure to install this plugin first. - -Sample configuration files are provided inside the `vscode` folder. -Use `cp vscode .vscode -r` to use them for your project. - -Some sample configuration files for VS Code were provided as well. You can simply use `Run` and `Debug` -to automatically rebuild and flash your application. - -The `tasks.json` and `launch.json` files are generic and you can use them immediately by opening -the folder in VS code or adding it to a workspace. - -## Commanding the board - -When the software is running on the Discovery board, you can command the MCU via a serial -interface. The telecommands are CCSDS space packets with a [`postcard`](https://docs.rs/postcard) -serialized payload, using [COBS](https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing) -as the packet framing format. - -The packets are exchanged using a dedicated serial interface. You can use any generic USB-to-UART -converter device with the TX pin connected to the PA3 pin and the RX pin connected to the PA2 pin. - -The [`embedded-client`](../embedded-client) application is used to command the board. Set the -serial port of your USB-to-UART converter inside `embedded-client/config.toml`: - -```toml -[interface] -serial_port = "/dev/ttyUSB0" -``` - -Then run the client from inside the `embedded-client` directory. For example, you can send a ping -to the MCU using - -```sh -cargo run --bin stm32f3-client -- --ping -``` - -and set the LED blink frequency to 500 ms using - -```sh -cargo run --bin stm32f3-client -- --set-led-frequency 500 -``` diff --git a/examples/stm32f3-disco-rtic/src/bin/blinky.rs b/examples/stm32f3-disco-rtic/src/bin/blinky.rs deleted file mode 100644 index bc750b8..0000000 --- a/examples/stm32f3-disco-rtic/src/bin/blinky.rs +++ /dev/null @@ -1,56 +0,0 @@ -#![no_main] -#![no_std] - -use panic_probe as _; -use rtic::app; - -#[app(device = embassy_stm32)] -mod app { - use embassy_time::Timer; - use stm32f3_disco_rtic::{Direction, LedPinSet, Leds}; - - #[shared] - struct Shared {} - - #[local] - struct Local { - leds: Leds, - current_dir: Direction, - } - - #[init] - fn init(_cx: init::Context) -> (Shared, Local) { - let p = embassy_stm32::init(Default::default()); - - defmt::info!("Starting sat-rs demo application for the STM32F3-Discovery using RTICv2"); - - let led_pin_set = LedPinSet { - pin_n: p.PE8, - pin_ne: p.PE9, - pin_e: p.PE10, - pin_se: p.PE11, - pin_s: p.PE12, - pin_sw: p.PE13, - pin_w: p.PE14, - pin_nw: p.PE15, - }; - let leds = Leds::new(led_pin_set); - - blinky::spawn().expect("failed to spawn blinky task"); - ( - Shared {}, - Local { - leds, - current_dir: Direction::North, - }, - ) - } - - #[task(local = [leds, current_dir])] - async fn blinky(cx: blinky::Context) { - loop { - cx.local.leds.blink_next(cx.local.current_dir); - Timer::after_millis(200).await; - } - } -} diff --git a/examples/stm32f3-disco-rtic/src/lib.rs b/examples/stm32f3-disco-rtic/src/lib.rs deleted file mode 100644 index 65693dc..0000000 --- a/examples/stm32f3-disco-rtic/src/lib.rs +++ /dev/null @@ -1,145 +0,0 @@ -#![no_main] -#![no_std] - -use defmt_rtt as _; -use panic_probe as _; - -use arbitrary_int::u11; -use embassy_stm32::gpio::Output; - -pub const APID: u11 = u11::new(0x02); - -#[derive(defmt::Format, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Copy)] -pub enum Direction { - North, - NorthEast, - East, - SouthEast, - South, - SouthWest, - West, - NorthWest, -} - -impl Direction { - pub fn switch_to_next(&mut self) -> (Self, Self) { - let curr = *self; - *self = match self { - Direction::North => Direction::NorthEast, - Direction::NorthEast => Direction::East, - Direction::East => Direction::SouthEast, - Direction::SouthEast => Direction::South, - Direction::South => Direction::SouthWest, - Direction::SouthWest => Direction::West, - Direction::West => Direction::NorthWest, - Direction::NorthWest => Direction::North, - }; - (curr, *self) - } -} - -pub struct Leds { - pub north: Output<'static>, - pub north_east: Output<'static>, - pub east: Output<'static>, - pub south_east: Output<'static>, - pub south: Output<'static>, - pub south_west: Output<'static>, - pub west: Output<'static>, - pub north_west: Output<'static>, -} - -impl Leds { - pub fn blink_next(&mut self, current_dir: &mut Direction) { - let (prev, curr) = current_dir.switch_to_next(); - self.set_dir_low(prev); - self.set_dir_high(curr); - } - - pub fn set_dir(&mut self, dir: Direction, level: embassy_stm32::gpio::Level) { - match dir { - Direction::North => self.north.set_level(level), - Direction::NorthEast => self.north_east.set_level(level), - Direction::East => self.east.set_level(level), - Direction::SouthEast => self.south_east.set_level(level), - Direction::South => self.south.set_level(level), - Direction::SouthWest => self.south_west.set_level(level), - Direction::West => self.west.set_level(level), - Direction::NorthWest => self.north_west.set_level(level), - } - } - - pub fn set_dir_low(&mut self, dir: Direction) { - self.set_dir(dir, embassy_stm32::gpio::Level::Low); - } - - pub fn set_dir_high(&mut self, dir: Direction) { - self.set_dir(dir, embassy_stm32::gpio::Level::High); - } -} - -pub struct LedPinSet { - pub pin_n: embassy_stm32::Peri<'static, embassy_stm32::peripherals::PE8>, - pub pin_ne: embassy_stm32::Peri<'static, embassy_stm32::peripherals::PE9>, - pub pin_e: embassy_stm32::Peri<'static, embassy_stm32::peripherals::PE10>, - pub pin_se: embassy_stm32::Peri<'static, embassy_stm32::peripherals::PE11>, - pub pin_s: embassy_stm32::Peri<'static, embassy_stm32::peripherals::PE12>, - pub pin_sw: embassy_stm32::Peri<'static, embassy_stm32::peripherals::PE13>, - pub pin_w: embassy_stm32::Peri<'static, embassy_stm32::peripherals::PE14>, - pub pin_nw: embassy_stm32::Peri<'static, embassy_stm32::peripherals::PE15>, -} - -impl Leds { - pub fn new(pin_set: LedPinSet) -> Self { - let led_n = Output::new( - pin_set.pin_n, - embassy_stm32::gpio::Level::Low, - embassy_stm32::gpio::Speed::Medium, - ); - let led_ne = Output::new( - pin_set.pin_ne, - embassy_stm32::gpio::Level::Low, - embassy_stm32::gpio::Speed::Medium, - ); - let led_e = Output::new( - pin_set.pin_e, - embassy_stm32::gpio::Level::Low, - embassy_stm32::gpio::Speed::Medium, - ); - let led_se = Output::new( - pin_set.pin_se, - embassy_stm32::gpio::Level::Low, - embassy_stm32::gpio::Speed::Medium, - ); - let led_s = Output::new( - pin_set.pin_s, - embassy_stm32::gpio::Level::Low, - embassy_stm32::gpio::Speed::Medium, - ); - let led_sw = Output::new( - pin_set.pin_sw, - embassy_stm32::gpio::Level::Low, - embassy_stm32::gpio::Speed::Medium, - ); - let led_w = Output::new( - pin_set.pin_w, - embassy_stm32::gpio::Level::Low, - embassy_stm32::gpio::Speed::Medium, - ); - let led_nw = Output::new( - pin_set.pin_nw, - embassy_stm32::gpio::Level::Low, - embassy_stm32::gpio::Speed::Medium, - ); - Self { - north: led_n, - north_east: led_ne, - east: led_e, - south_east: led_se, - south: led_s, - south_west: led_sw, - west: led_w, - north_west: led_nw, - } - } -} diff --git a/examples/stm32f3-disco-rtic/src/main.rs b/examples/stm32f3-disco-rtic/src/main.rs deleted file mode 100644 index 0654e80..0000000 --- a/examples/stm32f3-disco-rtic/src/main.rs +++ /dev/null @@ -1,336 +0,0 @@ -#![no_std] -#![no_main] -use arbitrary_int::u14; -use cortex_m_semihosting::debug::{self, EXIT_FAILURE, EXIT_SUCCESS}; -use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; -use embedded_types::{TmHeader, create_tm_packet, stm32f3, tm_size}; -use spacepackets::{CcsdsPacketCreationError, CcsdsPacketIdAndPsc, SpHeader}; - -use defmt_rtt as _; // global logger -use panic_probe as _; - -use rtic::app; - -const UART_BAUD: u32 = 115200; -const DEFAULT_BLINK_FREQ_MS: u32 = 1000; -const MAX_TC_LEN: usize = 128; -const MAX_TM_LEN: usize = 128; - -// This is the predictable maximum overhead of the COBS encoding scheme. -// It is simply the maximum packet lenght dividied by 254 rounded up. -const COBS_TM_OVERHEAD: usize = cobs::max_encoding_overhead(MAX_TM_LEN); - -const TM_BUF_LEN: usize = MAX_TC_LEN + COBS_TM_OVERHEAD; - -const TC_DMA_BUF_LEN: usize = 512; - -type TmPacket = heapless::Vec; - -static TM_QUEUE: embassy_sync::channel::Channel = - embassy_sync::channel::Channel::new(); - -#[derive(Debug, defmt::Format, thiserror::Error)] -pub enum TmSendError { - #[error("packet creation error: {0}")] - PacketCreation(#[from] CcsdsPacketCreationError), - #[error("queue error")] - Queue, -} - -#[derive(Debug, defmt::Format)] -pub struct RequestWithTcId { - pub request: stm32f3::Request, - pub tc_id: CcsdsPacketIdAndPsc, -} - -#[app(device = embassy_stm32)] -mod app { - use core::time::Duration; - - use super::*; - use arbitrary_int::u14; - use embassy_time::Timer; - use embedded_types::stm32f3::{Request, Response}; - use rtic::Mutex; - use rtic_sync::{ - channel::{Receiver, Sender}, - make_channel, - }; - use spacepackets::CcsdsPacketReader; - use stm32f3_disco_rtic::LedPinSet; - - embassy_stm32::bind_interrupts!(struct Irqs { - USART2 => embassy_stm32::usart::InterruptHandler; - DMA1_CHANNEL6 => embassy_stm32::dma::InterruptHandler; - DMA1_CHANNEL7 => embassy_stm32::dma::InterruptHandler; - }); - - #[shared] - struct Shared { - blink_freq: Duration, - } - - #[local] - struct Local { - leds: stm32f3_disco_rtic::Leds, - current_dir: stm32f3_disco_rtic::Direction, - seq_count: u14, - tx: embassy_stm32::usart::UartTx<'static, embassy_stm32::mode::Async>, - rx: embassy_stm32::usart::RingBufferedUartRx<'static>, - } - - #[init] - fn init(_cx: init::Context) -> (Shared, Local) { - static DMA_BUF: static_cell::ConstStaticCell<[u8; TC_DMA_BUF_LEN]> = - static_cell::ConstStaticCell::new([0; TC_DMA_BUF_LEN]); - - let p = embassy_stm32::init(Default::default()); - - let (req_sender, req_receiver) = make_channel!(RequestWithTcId, 16); - - defmt::info!("sat-rs demo application for the STM32F3-Discovery with RTICv2"); - let led_pin_set = LedPinSet { - pin_n: p.PE8, - pin_ne: p.PE9, - pin_e: p.PE10, - pin_se: p.PE11, - pin_s: p.PE12, - pin_sw: p.PE13, - pin_w: p.PE14, - pin_nw: p.PE15, - }; - let leds = stm32f3_disco_rtic::Leds::new(led_pin_set); - - let mut config = embassy_stm32::usart::Config::default(); - config.baudrate = UART_BAUD; - let uart = embassy_stm32::usart::Uart::new( - p.USART2, p.PA3, p.PA2, p.DMA1_CH7, p.DMA1_CH6, Irqs, config, - ) - .unwrap(); - - let (tx, rx) = uart.split(); - defmt::info!("Spawning tasks"); - blinky::spawn().unwrap(); - serial_tx_handler::spawn().unwrap(); - serial_rx_handler::spawn(req_sender).unwrap(); - req_handler::spawn(req_receiver).unwrap(); - - ( - Shared { - blink_freq: Duration::from_millis(DEFAULT_BLINK_FREQ_MS as u64), - }, - Local { - leds, - tx, - seq_count: u14::new(0), - rx: rx.into_ring_buffered(DMA_BUF.take()), - current_dir: stm32f3_disco_rtic::Direction::North, - }, - ) - } - - #[task(local = [leds, current_dir], shared=[blink_freq])] - async fn blinky(mut cx: blinky::Context) { - loop { - cx.local.leds.blink_next(cx.local.current_dir); - let current_blink_freq = cx.shared.blink_freq.lock(|current| *current); - Timer::after_millis(current_blink_freq.as_millis() as u64).await; - } - } - - #[task( - local = [ - tx, - encoded_buf: [u8; TM_BUF_LEN] = [0; TM_BUF_LEN] - ], - shared = [], - )] - async fn serial_tx_handler(cx: serial_tx_handler::Context) { - loop { - loop { - let vec = TM_QUEUE.receive().await; - let encoded_len = - cobs::encode_including_sentinels(&vec[0..vec.len()], cx.local.encoded_buf); - defmt::debug!("sending {} bytes over UART", encoded_len); - cx.local - .tx - .write(&cx.local.encoded_buf[0..encoded_len]) - .await - .unwrap(); - } - } - } - - #[task( - local = [ - rx, - read_buf: [u8; 128] = [0; 128], - decode_buf: [u8; MAX_TC_LEN] = [0; MAX_TC_LEN], - ], - shared = [blink_freq] - )] - async fn serial_rx_handler( - cx: serial_rx_handler::Context, - mut sender: Sender<'static, RequestWithTcId, 16>, - ) { - let mut decoder = cobs::CobsDecoder::new(cx.local.decode_buf); - loop { - match cx.local.rx.read(cx.local.read_buf).await { - Ok(bytes) => { - defmt::debug!("received {} bytes over UART", bytes); - for byte in cx.local.read_buf[0..bytes].iter() { - match decoder.feed(*byte) { - Ok(None) => (), - Ok(Some(packet_size)) => { - match CcsdsPacketReader::new_with_checksum( - &decoder.dest()[0..packet_size], - ) { - Ok(packet) => { - let tc_packet_id = - CcsdsPacketIdAndPsc::new_from_ccsds_packet(&packet); - if let Ok(request) = - postcard::from_bytes::(packet.packet_data()) - { - sender - .send(RequestWithTcId { - request, - tc_id: tc_packet_id, - }) - .await - .unwrap(); - } - } - Err(e) => { - defmt::error!("error unpacking ccsds packet: {}", e); - } - } - } - Err(e) => { - defmt::error!("cobs decoding error: {}", e); - } - } - } - } - Err(e) => { - defmt::error!("uart read error: {}", e); - } - } - } - } - - #[task(shared = [blink_freq], local = [seq_count])] - async fn req_handler( - mut cx: req_handler::Context, - mut receiver: Receiver<'static, RequestWithTcId, 16>, - ) { - loop { - match receiver.recv().await { - Ok(request_with_tc_id) => { - let tm_send_result = match request_with_tc_id.request { - Request::Ping => { - handle_ping_request(&mut cx, request_with_tc_id.tc_id).await - } - Request::ChangeBlinkFrequency(duration) => { - handle_change_blink_frequency_request( - &mut cx, - request_with_tc_id.tc_id, - duration, - ) - .await - } - }; - if let Err(e) = tm_send_result { - defmt::error!("error sending TM response: {}", e); - } - } - Err(_e) => defmt::error!("request receive error"), - } - } - } - - async fn handle_ping_request( - cx: &mut req_handler::Context<'_>, - tc_packet_id: CcsdsPacketIdAndPsc, - ) -> Result<(), TmSendError> { - defmt::info!("Received PUS ping telecommand, sending ping reply"); - send_tm(tc_packet_id, Response::Ok, *cx.local.seq_count).await?; - *cx.local.seq_count = cx.local.seq_count.wrapping_add(u14::new(1)); - Ok(()) - } - - async fn handle_change_blink_frequency_request( - cx: &mut req_handler::Context<'_>, - tc_packet_id: CcsdsPacketIdAndPsc, - duration: Duration, - ) -> Result<(), TmSendError> { - defmt::info!( - "Received ChangeBlinkFrequency request, new frequency: {} ms", - duration.as_millis() - ); - cx.shared - .blink_freq - .lock(|blink_freq| *blink_freq = duration); - send_tm(tc_packet_id, Response::Ok, *cx.local.seq_count).await?; - *cx.local.seq_count = cx.local.seq_count.wrapping_add(u14::new(1)); - Ok(()) - } -} - -async fn send_tm( - tc_packet_id: CcsdsPacketIdAndPsc, - response: stm32f3::Response, - current_seq_count: u14, -) -> Result<(), TmSendError> { - let sp_header = SpHeader::new_for_unseg_tm(stm32f3::PUS_APID, current_seq_count, 0); - let tm_header = TmHeader { - tc_packet_id: Some(tc_packet_id), - uptime_millis: embassy_time::Instant::now().as_millis(), - }; - let mut tm_packet = TmPacket::new(); - let tm_size = tm_size(&tm_header, &response); - tm_packet.resize(tm_size, 0).expect("vec resize failed"); - create_tm_packet(&mut tm_packet, sp_header, tm_header, response)?; - TM_QUEUE.send(tm_packet).await; - Ok(()) -} - -// same panicking *behavior* as `panic-probe` but doesn't print a panic message -// this prevents the panic message being printed *twice* when `defmt::panic` is invoked -#[defmt::panic_handler] -fn panic() -> ! { - cortex_m::asm::udf() -} - -/// Terminates the application and makes a semihosting-capable debug tool exit -/// with status code 0. -pub fn exit() -> ! { - loop { - debug::exit(EXIT_SUCCESS); - } -} - -/// Hardfault handler. -/// -/// Terminates the application and makes a semihosting-capable debug tool exit -/// with an error. This seems better than the default, which is to spin in a -/// loop. -#[cortex_m_rt::exception] -unsafe fn HardFault(_frame: &cortex_m_rt::ExceptionFrame) -> ! { - loop { - debug::exit(EXIT_FAILURE); - } -} - -// defmt-test 0.3.0 has the limitation that this `#[tests]` attribute can only be used -// once within a crate. the module can be in any file but there can only be at most -// one `#[tests]` module in this library crate -#[cfg(test)] -#[defmt_test::tests] -mod unit_tests { - use defmt::assert; - - #[test] - fn it_works() { - assert!(true) - } -} diff --git a/examples/stm32f3-disco-rtic/vscode/.gitignore b/examples/stm32f3-disco-rtic/vscode/.gitignore deleted file mode 100644 index 3cdd741..0000000 --- a/examples/stm32f3-disco-rtic/vscode/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/settings.json -/.cortex-debug.* diff --git a/examples/stm32f3-disco-rtic/vscode/extensions.json b/examples/stm32f3-disco-rtic/vscode/extensions.json deleted file mode 100644 index b310f9b..0000000 --- a/examples/stm32f3-disco-rtic/vscode/extensions.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. - // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - - // List of extensions which should be recommended for users of this workspace. - "recommendations": [ - "rust-lang.rust", - "probe-rs.probe-rs-debugger" - ], - // List of extensions recommended by VS Code that should not be recommended for users of this workspace. - "unwantedRecommendations": [] -} diff --git a/examples/stm32f3-disco-rtic/vscode/launch.json b/examples/stm32f3-disco-rtic/vscode/launch.json deleted file mode 100644 index 2a4592c..0000000 --- a/examples/stm32f3-disco-rtic/vscode/launch.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "preLaunchTask": "${defaultBuildTask}", - "type": "probe-rs-debug", - "request": "launch", - "name": "probe-rs Debugging ", - "flashingConfig": { - "flashingEnabled": true - }, - "chip": "STM32F303VCTx", - "coreConfigs": [ - { - "programBinary": "${workspaceFolder}/target/thumbv7em-none-eabihf/debug/stm32f3-disco-rtic", - "rttEnabled": true, - "svdFile": "STM32F303.svd" - } - ] - } - ] -} \ No newline at end of file diff --git a/examples/stm32f3-disco-rtic/vscode/openocd-helpers.tcl b/examples/stm32f3-disco-rtic/vscode/openocd-helpers.tcl deleted file mode 100644 index a1116b6..0000000 --- a/examples/stm32f3-disco-rtic/vscode/openocd-helpers.tcl +++ /dev/null @@ -1,18 +0,0 @@ -# -# Cortex-Debug extension calls this function during initialization. You can copy this -# file, modify it and specifyy it as one of the config files supplied in launch.json -# preferably at the beginning. -# -# Note that this file simply defines a function for use later when it is time to configure -# for SWO. -# -set USE_SWO 0 -proc CDSWOConfigure { CDCPUFreqHz CDSWOFreqHz CDSWOOutput } { - # Alternative option: Pipe ITM output into itm.txt file - # tpiu config internal itm.txt uart off $CDCPUFreqHz - - # Default option so SWO display of VS code works. Please note that this might not be required - # anymore starting at openocd v0.12.0 - tpiu config internal $CDSWOOutput uart off $CDCPUFreqHz $CDSWOFreqHz - itm port 0 on -} diff --git a/examples/stm32f3-disco-rtic/vscode/tasks.json b/examples/stm32f3-disco-rtic/vscode/tasks.json deleted file mode 100644 index 200a837..0000000 --- a/examples/stm32f3-disco-rtic/vscode/tasks.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the tasks.json format - "version": "2.0.0", - "tasks": [ - { - "label": "cargo build", - "type": "shell", - "command": "~/.cargo/bin/cargo", // note: full path to the cargo - "args": [ - "build" - ], - "group": { - "kind": "build", - "isDefault": true - } - }, - - ] -} \ No newline at end of file diff --git a/justfile b/justfile index 06f5633..76e5350 100644 --- a/justfile +++ b/justfile @@ -11,7 +11,7 @@ test: cargo nextest run --all-features cargo test --doc --all-features -embedded: embedded-stm32h7 embedded-stm32h7-embassy embedded-stm32f3 +embedded: embedded-stm32h7 embedded-stm32h7-embassy cargo check -p satrs --target=thumbv7em-none-eabihf --no-default-features [working-directory:"examples/stm32h7-nucleo-rtic"] @@ -22,10 +22,6 @@ embedded-stm32h7: embedded-stm32h7-embassy: cargo build --target=thumbv7em-none-eabihf --release -[working-directory:"examples/stm32f3-disco-rtic"] -embedded-stm32f3: - cargo build --target=thumbv7em-none-eabihf --release - check-fmt: cargo fmt --all -- --check