From b6612ed8614531e57152a18aeb8d72b49d7b8f04 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 13 May 2026 09:37:51 +0200 Subject: [PATCH] introduce new embedded-models lib --- Cargo.toml | 1 + embedded-examples/embedded-client/Cargo.toml | 1 + embedded-examples/embedded-client/src/main.rs | 2 +- embedded-examples/models/Cargo.toml | 8 ++++++++ embedded-examples/models/src/lib.rs | 19 +++++++++++++++++++ .../stm32f3-disco-rtic/Cargo.lock | 11 ++++++++++- .../stm32f3-disco-rtic/Cargo.toml | 1 + .../stm32f3-disco-rtic/src/lib.rs | 13 +------------ 8 files changed, 42 insertions(+), 14 deletions(-) create mode 100644 embedded-examples/models/Cargo.toml create mode 100644 embedded-examples/models/src/lib.rs diff --git a/Cargo.toml b/Cargo.toml index bda3c87..525944a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,7 @@ members = [ "satrs-example/minisim", "satrs-shared", "embedded-examples/embedded-client", + "embedded-examples/models", ] exclude = [ diff --git a/embedded-examples/embedded-client/Cargo.toml b/embedded-examples/embedded-client/Cargo.toml index bf41783..5c476b4 100644 --- a/embedded-examples/embedded-client/Cargo.toml +++ b/embedded-examples/embedded-client/Cargo.toml @@ -10,6 +10,7 @@ toml = "0.9" serde = { version = "1", features = ["derive"] } satrs-stm32f3-disco-rtic = { path = "../stm32f3-disco-rtic" } spacepackets = { version = "0.17" } +embedded-models = { path = "../models" } tmtc-utils = { git = "https://egit.irs.uni-stuttgart.de/rust/tmtc-utils.git", version = "0.1" } postcard = { version = "1", features = ["alloc"] } cobs = "0.5" diff --git a/embedded-examples/embedded-client/src/main.rs b/embedded-examples/embedded-client/src/main.rs index 76d1018..d72bfeb 100644 --- a/embedded-examples/embedded-client/src/main.rs +++ b/embedded-examples/embedded-client/src/main.rs @@ -7,7 +7,7 @@ use std::{ use clap::Parser; use cobs::CobsDecoderOwned; -use satrs_stm32f3_disco_rtic::Request; +use embedded_models::Request; use spacepackets::{CcsdsPacketCreatorOwned, CcsdsPacketReader, SpHeader}; use tmtc_utils::transport::serial::PacketTransportSerialCobs; diff --git a/embedded-examples/models/Cargo.toml b/embedded-examples/models/Cargo.toml new file mode 100644 index 0000000..fe66b8d --- /dev/null +++ b/embedded-examples/models/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "embedded-models" +version = "0.1.0" +edition = "2024" + +[dependencies] +serde = "1" +defmt = { version = "1", optional = true } diff --git a/embedded-examples/models/src/lib.rs b/embedded-examples/models/src/lib.rs new file mode 100644 index 0000000..6df8c68 --- /dev/null +++ b/embedded-examples/models/src/lib.rs @@ -0,0 +1,19 @@ +#![no_std] + +use core::time::Duration; + +#[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 { + CommandDone, +} + +#[cfg(test)] +mod tests {} diff --git a/embedded-examples/stm32f3-disco-rtic/Cargo.lock b/embedded-examples/stm32f3-disco-rtic/Cargo.lock index 5eb6565..9acc7f9 100644 --- a/embedded-examples/stm32f3-disco-rtic/Cargo.lock +++ b/embedded-examples/stm32f3-disco-rtic/Cargo.lock @@ -592,6 +592,13 @@ dependencies = [ "embedded-io", ] +[[package]] +name = "embedded-models" +version = "0.1.0" +dependencies = [ + "serde", +] + [[package]] name = "embedded-storage" version = "0.3.1" @@ -1139,6 +1146,7 @@ dependencies = [ "defmt-test", "embassy-stm32", "embedded-hal 1.0.0", + "embedded-models", "enumset", "heapless 0.9.1", "panic-probe", @@ -1245,7 +1253,8 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "spacepackets" version = "0.17.0" -source = "git+https://egit.irs.uni-stuttgart.de/rust/spacepackets.git#2bc61677105765e69cc96bb1ff9960557c00fa8e" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94979a990b4333f43667cba9fe9e72b9c4e9ada82e09fbe8fb250844358590cc" dependencies = [ "arbitrary-int 2.0.0", "bitbybit", diff --git a/embedded-examples/stm32f3-disco-rtic/Cargo.toml b/embedded-examples/stm32f3-disco-rtic/Cargo.toml index 3ebaa76..6eddccf 100644 --- a/embedded-examples/stm32f3-disco-rtic/Cargo.toml +++ b/embedded-examples/stm32f3-disco-rtic/Cargo.toml @@ -7,6 +7,7 @@ default-run = "satrs-stm32f3-disco-rtic" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +embedded-models = { path = "../models" } cortex-m = { version = "0.7", features = ["critical-section-single-core"] } cortex-m-rt = "0.7" defmt = "1" diff --git a/embedded-examples/stm32f3-disco-rtic/src/lib.rs b/embedded-examples/stm32f3-disco-rtic/src/lib.rs index 1f4211d..70ba20d 100644 --- a/embedded-examples/stm32f3-disco-rtic/src/lib.rs +++ b/embedded-examples/stm32f3-disco-rtic/src/lib.rs @@ -2,8 +2,8 @@ #![no_std] use arbitrary_int::u11; -use core::time::Duration; use embassy_stm32::gpio::Output; +use embedded_models::Response; use spacepackets::{ ccsds_packet_len_for_user_data_len_with_checksum, CcsdsPacketCreationError, CcsdsPacketCreatorWithReservedData, CcsdsPacketIdAndPsc, SpacePacketHeader, @@ -40,23 +40,12 @@ impl Direction { } } -#[derive(Copy, Clone, Debug, defmt::Format, serde::Serialize, serde::Deserialize)] -pub enum Request { - Ping, - ChangeBlinkFrequency(Duration), -} - #[derive(Debug, defmt::Format, serde::Serialize, serde::Deserialize)] pub struct TmHeader { pub tc_packet_id: Option, pub uptime_millis: u32, } -#[derive(Debug, defmt::Format, serde::Serialize, serde::Deserialize)] -pub enum Response { - CommandDone, -} - 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()