introduce new embedded-models lib

This commit is contained in:
Robin Mueller
2026-05-13 09:37:51 +02:00
parent 9d15dbcf09
commit b6612ed861
8 changed files with 42 additions and 14 deletions
+1
View File
@@ -9,6 +9,7 @@ members = [
"satrs-example/minisim",
"satrs-shared",
"embedded-examples/embedded-client",
"embedded-examples/models",
]
exclude = [
@@ -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"
@@ -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;
+8
View File
@@ -0,0 +1,8 @@
[package]
name = "embedded-models"
version = "0.1.0"
edition = "2024"
[dependencies]
serde = "1"
defmt = { version = "1", optional = true }
+19
View File
@@ -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 {}
+10 -1
View File
@@ -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",
@@ -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"
@@ -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<CcsdsPacketIdAndPsc>,
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()