From f95de5beddf168b4a6c6352d96f23a3fdcfbb151 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 12 Jan 2026 16:22:17 +0100 Subject: [PATCH] introduce client binary and models lib --- Cargo.toml | 2 + satrs-example/client/Cargo.toml | 6 +++ satrs-example/client/src/main.rs | 1 + satrs-example/models/Cargo.toml | 8 ++++ satrs-example/models/src/lib.rs | 36 +++++++++++++++++ satrs-example/src/bin/test.rs | 66 -------------------------------- 6 files changed, 53 insertions(+), 66 deletions(-) create mode 100644 satrs-example/client/Cargo.toml create mode 100644 satrs-example/client/src/main.rs create mode 100644 satrs-example/models/Cargo.toml create mode 100644 satrs-example/models/src/lib.rs delete mode 100644 satrs-example/src/bin/test.rs diff --git a/Cargo.toml b/Cargo.toml index 4b29c5f..6cb62dc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,6 +4,8 @@ members = [ "satrs", "satrs-mib", "satrs-example", + "satrs-example/models", + "satrs-example/client", "satrs-minisim", "satrs-shared", "embedded-examples/embedded-client", diff --git a/satrs-example/client/Cargo.toml b/satrs-example/client/Cargo.toml new file mode 100644 index 0000000..09c50c3 --- /dev/null +++ b/satrs-example/client/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "client" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/satrs-example/client/src/main.rs b/satrs-example/client/src/main.rs new file mode 100644 index 0000000..f328e4d --- /dev/null +++ b/satrs-example/client/src/main.rs @@ -0,0 +1 @@ +fn main() {} diff --git a/satrs-example/models/Cargo.toml b/satrs-example/models/Cargo.toml new file mode 100644 index 0000000..c96a438 --- /dev/null +++ b/satrs-example/models/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "models" +version = "0.1.0" +edition = "2024" + +[dependencies] +serde = { version = "1", features = ["derive"] } +spacepackets = { version = "0.17" } diff --git a/satrs-example/models/src/lib.rs b/satrs-example/models/src/lib.rs new file mode 100644 index 0000000..3efd4d8 --- /dev/null +++ b/satrs-example/models/src/lib.rs @@ -0,0 +1,36 @@ +use spacepackets::{CcsdsPacketIdAndPsc, time::cds::CdsTime}; + +#[derive(serde::Serialize, serde::Deserialize, Clone, Copy, Debug)] +pub enum ComponentId { + Controller, + Scheduler, + Pcdu, +} + +#[derive(serde::Serialize, serde::Deserialize, Clone, Copy, Debug)] +pub struct TcHeader { + pub target: ComponentId, +} + +#[derive(serde::Serialize, serde::Deserialize, Clone, Copy, Debug)] +pub struct TmHeader { + pub tc_id: Option, + pub timestamp: CdsTime, +} + +pub mod request { + #[derive(serde::Serialize, serde::Deserialize, Clone, Copy, Debug)] + pub enum Request { + Ping, + } +} + +pub mod response { + #[derive(serde::Serialize, serde::Deserialize, Clone, Copy, Debug)] + pub enum Response { + Ok, + } +} + +#[cfg(test)] +mod tests {} diff --git a/satrs-example/src/bin/test.rs b/satrs-example/src/bin/test.rs deleted file mode 100644 index c40a04d..0000000 --- a/satrs-example/src/bin/test.rs +++ /dev/null @@ -1,66 +0,0 @@ -#![allow(dead_code)] - -use crossbeam_channel::{bounded, Receiver, Sender}; -use std::sync::atomic::{AtomicU16, Ordering}; -use std::thread; -use zerocopy::{FromBytes, Immutable, IntoBytes, NetworkEndian, Unaligned, U16}; - -trait FieldDataProvider: Send { - fn get_data(&self) -> &[u8]; -} - -struct FixedFieldDataWrapper { - data: [u8; 8], -} - -impl FixedFieldDataWrapper { - pub fn from_two_u32(p0: u32, p1: u32) -> Self { - let mut data = [0; 8]; - data[0..4].copy_from_slice(p0.to_be_bytes().as_slice()); - data[4..8].copy_from_slice(p1.to_be_bytes().as_slice()); - Self { data } - } -} - -impl FieldDataProvider for FixedFieldDataWrapper { - fn get_data(&self) -> &[u8] { - self.data.as_slice() - } -} - -type FieldDataTraitObj = Box; - -struct ExampleMgmSet { - mgm_vec: [f32; 3], - temperature: u16, -} - -#[derive(FromBytes, IntoBytes, Immutable, Unaligned)] -#[repr(C)] -struct ExampleMgmSetZc { - mgm_vec: [u8; 12], - temperatur: U16, -} - -fn main() { - let (s0, r0): (Sender, Receiver) = bounded(5); - let data_wrapper = FixedFieldDataWrapper::from_two_u32(2, 3); - s0.send(Box::new(data_wrapper)).unwrap(); - let jh0 = thread::spawn(move || { - let data = r0.recv().unwrap(); - let raw = data.get_data(); - println!("Received data {raw:?}"); - }); - let jh1 = thread::spawn(|| {}); - jh0.join().unwrap(); - jh1.join().unwrap(); - //let mut max_val: u16 = u16::MAX; - //max_val += 1; - //println!("Max val: {}", max_val); - let atomic_u16: AtomicU16 = AtomicU16::new(u16::MAX); - atomic_u16.fetch_add(1, Ordering::SeqCst); - println!( - "atomic after overflow: {}", - atomic_u16.load(Ordering::SeqCst) - ); -}