Rename example models crates to types #271

Merged
muellerr merged 1 commits from rename-model-crates-to-types into main 2026-08-25 14:19:17 +02:00
44 changed files with 230 additions and 233 deletions
+2 -2
View File
@@ -4,12 +4,12 @@ members = [
"satrs",
"satrs-mib",
"satrs-example",
"satrs-example/models",
"satrs-example/types",
"satrs-example/client",
"satrs-example/minisim",
"satrs-shared",
"embedded-examples/embedded-client",
"embedded-examples/models",
"embedded-examples/types",
]
exclude = [
+1 -1
View File
@@ -9,7 +9,7 @@ serialport = "4"
toml = "0.9"
serde = { version = "1", features = ["derive"] }
spacepackets = { version = "0.18" }
embedded-models = { path = "../models" }
embedded-types = { path = "../types" }
tmtc-utils = { git = "https://egit.irs.uni-stuttgart.de/rust/tmtc-utils.git", version = "0.1", rev = "d8015379a45e77400dd9c71afbf22ca415ed67d1" }
postcard = { version = "1", features = ["alloc"] }
anyhow = "1"
@@ -4,7 +4,7 @@ use anyhow::bail;
use clap::Parser;
use cobs::CobsDecoderOwned;
use embedded_client::setup_logger;
use embedded_models::stm32f3;
use embedded_types::stm32f3;
use spacepackets::{CcsdsPacketCreatorOwned, CcsdsPacketReader, SpHeader};
use tmtc_utils::transport::serial::PacketTransportSerialCobs;
@@ -34,7 +34,7 @@ fn main() -> anyhow::Result<()> {
let mut transport = PacketTransportSerialCobs::new(serial, CobsDecoderOwned::new(1024));
if cli.ping {
let tc = create_stm32f3_tc(&embedded_models::stm32f3::Request::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()
@@ -66,6 +66,6 @@ fn main() -> anyhow::Result<()> {
fn create_stm32f3_tc(request: &stm32f3::Request) -> CcsdsPacketCreatorOwned {
let req_raw = postcard::to_allocvec(&request).unwrap();
let sp_header = SpHeader::new_from_apid(embedded_models::stm32f3::PUS_APID);
let sp_header = SpHeader::new_from_apid(embedded_types::stm32f3::PUS_APID);
CcsdsPacketCreatorOwned::new_tc_with_checksum(sp_header, &req_raw).unwrap()
}
@@ -3,7 +3,7 @@ use std::{net::UdpSocket, time::Duration};
use anyhow::{Context as _, bail};
use clap::Parser;
use embedded_client::setup_logger;
use embedded_models::{TmHeader, stm32h7};
use embedded_types::{TmHeader, stm32h7};
use spacepackets::{CcsdsPacketCreatorOwned, CcsdsPacketReader, SpHeader};
use tmtc_utils::transport::udp::PacketTransportUdp;
@@ -40,7 +40,7 @@ fn main() -> anyhow::Result<()> {
.with_context(|| "crateing UDP transport failed")?;
if cli.ping {
let tc = create_stm32h7_tc(&embedded_models::stm32h7::Request::Ping);
let tc = create_stm32h7_tc(&embedded_types::stm32h7::Request::Ping);
log::info!(
"Sending ping request with TC ID: {:#010x}",
tc.ccsds_packet_id_and_psc().raw()
@@ -90,6 +90,6 @@ fn main() -> anyhow::Result<()> {
fn create_stm32h7_tc(request: &stm32h7::Request) -> CcsdsPacketCreatorOwned {
let req_raw = postcard::to_allocvec(&request).unwrap();
let sp_header = SpHeader::new_from_apid(embedded_models::stm32h7::PUS_APID);
let sp_header = SpHeader::new_from_apid(embedded_types::stm32h7::PUS_APID);
CcsdsPacketCreatorOwned::new_tc_with_checksum(sp_header, &req_raw).unwrap()
}
+12 -12
View File
@@ -633,17 +633,6 @@ dependencies = [
"embedded-io 0.7.1",
]
[[package]]
name = "embedded-models"
version = "0.1.0"
dependencies = [
"arbitrary-int",
"defmt 1.1.1",
"postcard",
"serde",
"spacepackets",
]
[[package]]
name = "embedded-storage"
version = "0.3.1"
@@ -659,6 +648,17 @@ 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"
@@ -1164,7 +1164,7 @@ dependencies = [
"embassy-sync",
"embassy-time",
"embedded-hal 1.0.0",
"embedded-models",
"embedded-types",
"enumset",
"heapless 0.9.3",
"panic-probe",
@@ -7,7 +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", features = ["defmt"] }
embedded-types = { path = "../types", features = ["defmt"] }
cortex-m = { version = "0.7", features = ["critical-section-single-core"] }
cortex-m-rt = "0.7"
defmt = "1"
@@ -3,7 +3,7 @@
use arbitrary_int::u14;
use cortex_m_semihosting::debug::{self, EXIT_FAILURE, EXIT_SUCCESS};
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
use embedded_models::{create_tm_packet, stm32f3, tm_size, TmHeader};
use embedded_types::{create_tm_packet, stm32f3, tm_size, TmHeader};
use spacepackets::{CcsdsPacketCreationError, CcsdsPacketIdAndPsc, SpHeader};
use defmt_rtt as _; // global logger
@@ -50,7 +50,7 @@ mod app {
use super::*;
use arbitrary_int::u14;
use embassy_time::Timer;
use embedded_models::stm32f3::{Request, Response};
use embedded_types::stm32f3::{Request, Response};
use rtic::Mutex;
use rtic_sync::{
channel::{Receiver, Sender},
+12 -12
View File
@@ -575,17 +575,6 @@ dependencies = [
"embedded-io",
]
[[package]]
name = "embedded-models"
version = "0.1.0"
dependencies = [
"arbitrary-int",
"defmt 1.1.0",
"postcard",
"serde",
"spacepackets",
]
[[package]]
name = "embedded-nal"
version = "0.9.0"
@@ -620,6 +609,17 @@ dependencies = [
"embedded-storage",
]
[[package]]
name = "embedded-types"
version = "0.1.0"
dependencies = [
"arbitrary-int",
"defmt 1.1.0",
"postcard",
"serde",
"spacepackets",
]
[[package]]
name = "equivalent"
version = "1.0.2"
@@ -1032,7 +1032,7 @@ dependencies = [
"embassy-sync",
"embassy-time",
"embedded-alloc",
"embedded-models",
"embedded-types",
"panic-probe",
"postcard",
"rtic",
@@ -14,7 +14,7 @@ name = "integration"
harness = false
[dependencies]
embedded-models = { path = "../models", features = ["defmt"] }
embedded-types = { path = "../types", features = ["defmt"] }
cortex-m = { version = "0.7", features = ["critical-section-single-core"] }
arbitrary-int = "2"
@@ -39,10 +39,10 @@ mod app {
use embassy_time::Duration;
use embassy_time::Timer;
use embassy_time::WithTimeout as _;
use embedded_models::create_tm_packet;
use embedded_models::stm32h7;
use embedded_models::tm_size;
use embedded_models::TmHeader;
use embedded_types::create_tm_packet;
use embedded_types::stm32h7;
use embedded_types::tm_size;
use embedded_types::TmHeader;
use spacepackets::CcsdsPacketCreationError;
use spacepackets::CcsdsPacketIdAndPsc;
use spacepackets::CcsdsPacketReader;
@@ -1,5 +1,5 @@
[package]
name = "embedded-models"
name = "embedded-types"
version = "0.1.0"
edition = "2024"
+1 -1
View File
@@ -29,7 +29,7 @@ serde = { version = "1", features = ["derive"] }
serde_json = "1"
satrs = { path = "../satrs", features = ["test_util"] }
models = { path = "./models" }
types = { path = "./types" }
satrs-minisim = { path = "./minisim" }
satrs-mib = { path = "../satrs-mib" }
+1 -1
View File
@@ -10,7 +10,7 @@ fern = "0.7"
humantime = "2"
serde = { version = "1" }
satrs-example = { path = ".." }
models = { path = "../models" }
types = { path = "../types" }
spacepackets = { version = "0.18", default-features = false }
bitbybit = "2"
arbitrary-int = "2"
+55 -56
View File
@@ -1,7 +1,6 @@
use anyhow::bail;
use arbitrary_int::u11;
use clap::Parser as _;
use models::{Apid, MessageType, TcHeader, acs::mgm::request::HkRequest};
use satrs_example::config::{OBSW_SERVER_ADDR, SERVER_PORT};
use spacepackets::{CcsdsPacketIdAndPsc, SpacePacketHeader};
use std::{
@@ -12,6 +11,7 @@ use std::{
},
time::{Duration, SystemTime},
};
use types::{Apid, MessageType, TcHeader, acs::mgm::request::HkRequest};
#[derive(clap::Parser)]
pub struct Cli {
@@ -33,11 +33,11 @@ enum Commands {
impl Commands {
#[inline]
pub fn target_id(&self) -> models::ComponentId {
pub fn target_id(&self) -> types::ComponentId {
match self {
Commands::Mgm0(_mgm_args) => models::ComponentId::AcsMgm0,
Commands::Mgm1(_mgm_args) => models::ComponentId::AcsMgm1,
Commands::MgmAssy(_mgm_assembly_args) => models::ComponentId::AcsMgmAssembly,
Commands::Mgm0(_mgm_args) => types::ComponentId::AcsMgm0,
Commands::Mgm1(_mgm_args) => types::ComponentId::AcsMgm1,
Commands::MgmAssy(_mgm_assembly_args) => types::ComponentId::AcsMgmAssembly,
}
}
}
@@ -104,10 +104,10 @@ fn main() -> anyhow::Result<()> {
client.set_read_timeout(Some(Duration::from_millis(200)))?;
if cli.ping {
let request = models::ccsds::CcsdsTcPacketOwned::new_with_request(
let request = types::ccsds::CcsdsTcPacketOwned::new_with_request(
SpacePacketHeader::new_from_apid(u11::new(Apid::Tmtc as u16)),
TcHeader::new(models::ComponentId::Controller, models::MessageType::Ping),
models::control::request::Request::Ping,
TcHeader::new(types::ComponentId::Controller, types::MessageType::Ping),
types::control::request::Request::Ping,
);
let sent_tc_id = CcsdsPacketIdAndPsc::new_from_ccsds_packet(&request.sp_header);
log::info!("sending ping request with TC ID {:#010x}", sent_tc_id.raw());
@@ -115,10 +115,10 @@ fn main() -> anyhow::Result<()> {
client.send_to(&request_packet, addr).unwrap();
}
if cli.test_event {
let request = models::ccsds::CcsdsTcPacketOwned::new_with_request(
let request = types::ccsds::CcsdsTcPacketOwned::new_with_request(
SpacePacketHeader::new_from_apid(u11::new(Apid::Tmtc as u16)),
TcHeader::new(models::ComponentId::Controller, models::MessageType::Event),
models::control::request::Request::TestEvent,
TcHeader::new(types::ComponentId::Controller, types::MessageType::Event),
types::control::request::Request::TestEvent,
);
let sent_tc_id = CcsdsPacketIdAndPsc::new_from_ccsds_packet(&request.sp_header);
log::info!(
@@ -133,10 +133,10 @@ fn main() -> anyhow::Result<()> {
match cmd {
Commands::Mgm0(args) | Commands::Mgm1(args) => {
if args.ping {
let request = models::ccsds::CcsdsTcPacketOwned::new_with_request(
let request = types::ccsds::CcsdsTcPacketOwned::new_with_request(
SpacePacketHeader::new_from_apid(u11::new(Apid::Acs as u16)),
TcHeader::new(cmd.target_id(), models::MessageType::Ping),
models::acs::mgm::request::Request::Ping,
TcHeader::new(cmd.target_id(), types::MessageType::Ping),
types::acs::mgm::request::Request::Ping,
);
let sent_tc_id = CcsdsPacketIdAndPsc::new_from_ccsds_packet(&request.sp_header);
log::info!(
@@ -148,12 +148,12 @@ fn main() -> anyhow::Result<()> {
client.send_to(&request_packet, addr).unwrap();
}
if args.request_hk {
let request = models::ccsds::CcsdsTcPacketOwned::new_with_request(
let request = types::ccsds::CcsdsTcPacketOwned::new_with_request(
SpacePacketHeader::new_from_apid(u11::new(Apid::Acs as u16)),
TcHeader::new(target_id, models::MessageType::Hk),
models::acs::mgm::request::Request::Hk(HkRequest {
id: models::acs::mgm::request::HkId::Sensor,
req_type: models::HkRequestType::OneShot,
TcHeader::new(target_id, types::MessageType::Hk),
types::acs::mgm::request::Request::Hk(HkRequest {
id: types::acs::mgm::request::HkId::Sensor,
req_type: types::HkRequestType::OneShot,
}),
);
let sent_tc_id = CcsdsPacketIdAndPsc::new_from_ccsds_packet(&request.sp_header);
@@ -167,15 +167,15 @@ fn main() -> anyhow::Result<()> {
}
if let Some(mode) = args.mode {
let dev_mode = match mode {
DeviceModeSelect::Off => models::DeviceMode::Off,
DeviceModeSelect::Normal => models::DeviceMode::Normal,
DeviceModeSelect::Off => types::DeviceMode::Off,
DeviceModeSelect::Normal => types::DeviceMode::Normal,
};
let request = models::ccsds::CcsdsTcPacketOwned::new_with_request(
let request = types::ccsds::CcsdsTcPacketOwned::new_with_request(
SpacePacketHeader::new_from_apid(u11::new(Apid::Acs as u16)),
TcHeader::new(target_id, models::MessageType::Mode),
models::acs::mgm::request::Request::Mode(
models::acs::mgm::request::ModeRequest::SetMode(dev_mode),
TcHeader::new(target_id, types::MessageType::Mode),
types::acs::mgm::request::Request::Mode(
types::acs::mgm::request::ModeRequest::SetMode(dev_mode),
),
);
let sent_tc_id = CcsdsPacketIdAndPsc::new_from_ccsds_packet(&request.sp_header);
@@ -190,10 +190,10 @@ fn main() -> anyhow::Result<()> {
}
Commands::MgmAssy(mgm_assembly_args) => {
if mgm_assembly_args.ping {
let request = models::ccsds::CcsdsTcPacketOwned::new_with_request(
let request = types::ccsds::CcsdsTcPacketOwned::new_with_request(
SpacePacketHeader::new_from_apid(u11::new(Apid::Acs as u16)),
TcHeader::new(cmd.target_id(), models::MessageType::Ping),
models::acs::mgm::request::Request::Ping,
TcHeader::new(cmd.target_id(), types::MessageType::Ping),
types::acs::mgm::request::Request::Ping,
);
let sent_tc_id = CcsdsPacketIdAndPsc::new_from_ccsds_packet(&request.sp_header);
log::info!(
@@ -207,21 +207,21 @@ fn main() -> anyhow::Result<()> {
if let Some(mode) = mgm_assembly_args.mode {
let assembly_mode = match mode {
AssemblyModeSelect::NoModeKeeping => {
models::acs::mgm_assembly::Mode::NoModeKeeping
types::acs::mgm_assembly::Mode::NoModeKeeping
}
AssemblyModeSelect::Off => {
models::acs::mgm_assembly::Mode::Device(models::DeviceMode::Off)
types::acs::mgm_assembly::Mode::Device(types::DeviceMode::Off)
}
AssemblyModeSelect::Normal => {
models::acs::mgm_assembly::Mode::Device(models::DeviceMode::Normal)
types::acs::mgm_assembly::Mode::Device(types::DeviceMode::Normal)
}
};
let request = models::ccsds::CcsdsTcPacketOwned::new_with_request(
let request = types::ccsds::CcsdsTcPacketOwned::new_with_request(
SpacePacketHeader::new_from_apid(u11::new(Apid::Acs as u16)),
TcHeader::new(target_id, models::MessageType::Mode),
models::acs::mgm_assembly::request::Request::Mode(
models::acs::mgm_assembly::request::ModeRequest::SetMode(assembly_mode),
TcHeader::new(target_id, types::MessageType::Mode),
types::acs::mgm_assembly::request::Request::Mode(
types::acs::mgm_assembly::request::ModeRequest::SetMode(assembly_mode),
),
);
let sent_tc_id = CcsdsPacketIdAndPsc::new_from_ccsds_packet(&request.sp_header);
@@ -262,8 +262,7 @@ fn main() -> anyhow::Result<()> {
fn handle_raw_tm_packet(data: &[u8]) -> anyhow::Result<()> {
match spacepackets::CcsdsPacketReader::new_with_checksum(data) {
Ok(packet) => {
let tm_header_result =
postcard::take_from_bytes::<models::TmHeader>(packet.user_data());
let tm_header_result = postcard::take_from_bytes::<types::TmHeader>(packet.user_data());
if let Err(e) = tm_header_result {
bail!("Failed to deserialize TM header: {}", e);
}
@@ -283,7 +282,7 @@ fn handle_raw_tm_packet(data: &[u8]) -> anyhow::Result<()> {
);
}
if tm_header.message_type == MessageType::Event {
let response = postcard::from_bytes::<models::Event>(remainder);
let response = postcard::from_bytes::<types::Event>(remainder);
log::info!(
"Received event from {:?}: {:?}",
tm_header.sender_id,
@@ -292,43 +291,43 @@ fn handle_raw_tm_packet(data: &[u8]) -> anyhow::Result<()> {
return Ok(());
}
match tm_header.sender_id {
models::ComponentId::EpsPcdu => {
types::ComponentId::EpsPcdu => {
let response =
postcard::from_bytes::<models::pcdu::response::Response>(remainder);
postcard::from_bytes::<types::pcdu::response::Response>(remainder);
log::info!("Received response from PCDU: {:?}", response.unwrap());
}
models::ComponentId::Controller => {
types::ComponentId::Controller => {
let response =
postcard::from_bytes::<models::control::response::Response>(remainder);
postcard::from_bytes::<types::control::response::Response>(remainder);
log::info!("Received response from controller: {:?}", response.unwrap());
}
models::ComponentId::AcsMgmAssembly => {
types::ComponentId::AcsMgmAssembly => {
let response = postcard::from_bytes::<
models::acs::mgm_assembly::response::Response,
types::acs::mgm_assembly::response::Response,
>(remainder);
log::info!(
"Received response from MGM Assembly: {:?}",
response.unwrap()
);
}
models::ComponentId::AcsMgm0 => {
types::ComponentId::AcsMgm0 => {
let response =
postcard::from_bytes::<models::acs::mgm::response::Response>(remainder);
postcard::from_bytes::<types::acs::mgm::response::Response>(remainder);
log::info!("Received response from MGM0: {:?}", response.unwrap());
}
models::ComponentId::AcsMgm1 => {
types::ComponentId::AcsMgm1 => {
let response =
postcard::from_bytes::<models::acs::mgm::response::Response>(remainder);
postcard::from_bytes::<types::acs::mgm::response::Response>(remainder);
log::info!("Received response from MGM1: {:?}", response.unwrap());
}
models::ComponentId::AcsSubsystem => todo!(),
models::ComponentId::EpsSubsystem => todo!(),
models::ComponentId::UdpServer => todo!(),
models::ComponentId::TcpServer => todo!(),
models::ComponentId::Ground => todo!(),
models::ComponentId::EventManager => {}
models::ComponentId::AcsController => todo!(),
models::ComponentId::AcsMgt => todo!(),
types::ComponentId::AcsSubsystem => todo!(),
types::ComponentId::EpsSubsystem => todo!(),
types::ComponentId::UdpServer => todo!(),
types::ComponentId::TcpServer => todo!(),
types::ComponentId::Ground => todo!(),
types::ComponentId::EventManager => {}
types::ComponentId::AcsController => todo!(),
types::ComponentId::AcsMgt => todo!(),
}
}
Err(_) => todo!(),
+1 -1
View File
@@ -18,7 +18,7 @@ tai-time = { version = "0.3", features = ["serde"] }
nexosim = { version = "0.3.1" }
satrs = { path = "../../satrs" }
models = { path = "../models" }
types = { path = "../types" }
[dev-dependencies]
delegate = "0.13"
+2 -2
View File
@@ -1,6 +1,5 @@
use std::{f32::consts::PI, sync::mpsc, time::Duration};
use models::pcdu::SwitchStateBinary;
use nexosim::{
model::{Context, Model},
ports::Output,
@@ -12,6 +11,7 @@ use satrs_minisim::{
},
SimReply,
};
use types::pcdu::SwitchStateBinary;
use crate::time::current_millis;
@@ -179,7 +179,6 @@ impl Model for MagnetorquerModel {}
pub mod tests {
use std::time::Duration;
use models::pcdu::{SwitchId, SwitchStateBinary};
use satrs_minisim::{
acs::{
lis3mdl::{self, MgmLis3MdlReply},
@@ -187,6 +186,7 @@ pub mod tests {
},
SerializableSimMsgPayload, SimComponent, SimMessageProvider, SimRequest,
};
use types::pcdu::{SwitchId, SwitchStateBinary};
use crate::{eps::tests::switch_device_on, test_helpers::SimTestbench};
+2 -2
View File
@@ -1,11 +1,11 @@
use std::{sync::mpsc, time::Duration};
use models::pcdu::{SwitchId, SwitchMapBinaryWrapper, SwitchStateBinary};
use nexosim::{
model::{Context, Model},
ports::Output,
};
use satrs_minisim::{eps::PcduReply, SimReply};
use types::pcdu::{SwitchId, SwitchMapBinaryWrapper, SwitchStateBinary};
pub const SWITCH_INFO_DELAY_MS: u64 = 10;
@@ -73,10 +73,10 @@ pub(crate) mod tests {
use super::*;
use std::time::Duration;
use models::pcdu::SwitchMapBinary;
use satrs_minisim::{
eps::PcduRequest, SerializableSimMsgPayload, SimComponent, SimMessageProvider, SimRequest,
};
use types::pcdu::SwitchMapBinary;
use crate::test_helpers::SimTestbench;
+2 -2
View File
@@ -161,7 +161,7 @@ impl From<SimRequestError> for SimCtrlReply {
pub mod eps {
use super::*;
use models::pcdu::{SwitchId, SwitchMapBinary, SwitchStateBinary};
use types::pcdu::{SwitchId, SwitchMapBinary, SwitchStateBinary};
#[derive(Debug, Copy, Clone)]
#[repr(u8)]
@@ -197,7 +197,7 @@ pub mod eps {
pub mod acs {
use std::time::Duration;
use models::pcdu::SwitchStateBinary;
use types::pcdu::SwitchStateBinary;
use super::*;
+21 -21
View File
@@ -1,8 +1,3 @@
use models::acs::mgm::SensorData;
use models::acs::mgm::request::ModeRequest;
use models::acs::mgm::response::ModeResponse;
use models::pcdu::SwitchId;
use models::{ComponentId, DeviceMode, HkRequestType, acs::mgm};
use satrs::spacepackets::CcsdsPacketIdAndPsc;
use satrs_example::{HkHelperSingleSet, ModeHelper, TimestampHelper, TmtcQueues};
use satrs_minisim::acs::MgmRequestLis3Mdl;
@@ -13,6 +8,11 @@ use satrs_minisim::{SerializableSimMsgPayload, SimReply, SimRequest};
use std::sync::mpsc;
use std::sync::{Arc, Mutex};
use std::time::Duration;
use types::acs::mgm::SensorData;
use types::acs::mgm::request::ModeRequest;
use types::acs::mgm::response::ModeResponse;
use types::pcdu::SwitchId;
use types::{ComponentId, DeviceMode, HkRequestType, acs::mgm};
use satrs::request::MessageMetadata;
@@ -308,7 +308,7 @@ impl MgmHandlerLis3Mdl {
pub fn handle_hk_request(
&mut self,
tc_id: Option<CcsdsPacketIdAndPsc>,
hk_request: &models::acs::mgm::request::HkRequest,
hk_request: &types::acs::mgm::request::HkRequest,
) {
match hk_request.req_type {
HkRequestType::OneShot => {
@@ -460,14 +460,14 @@ mod tests {
};
use arbitrary_int::u11;
use models::{
use satrs::{request::GenericMessage, spacepackets::SpacePacketHeader};
use satrs_minisim::acs::lis3mdl::MgmLis3RawValues;
use types::{
Apid, ComponentId, TcHeader,
acs::mgm::request::HkRequest,
ccsds::{CcsdsTcPacketOwned, CcsdsTmPacketOwned},
pcdu::{SwitchRequest, SwitchState, SwitchStateBinary},
};
use satrs::{request::GenericMessage, spacepackets::SpacePacketHeader};
use satrs_minisim::acs::lis3mdl::MgmLis3RawValues;
use crate::eps::pcdu::{SharedSwitchSet, SwitchMap, SwitchSet};
@@ -490,11 +490,11 @@ mod tests {
pub fn create_request_tc(
select: MgmSelect,
request: models::acs::mgm::request::Request,
) -> models::ccsds::CcsdsTcPacketOwned {
models::ccsds::CcsdsTcPacketOwned::new_with_request(
request: types::acs::mgm::request::Request,
) -> types::ccsds::CcsdsTcPacketOwned {
types::ccsds::CcsdsTcPacketOwned::new_with_request(
SpacePacketHeader::new_from_apid(u11::new(Apid::Acs as u16)),
TcHeader::new(select.id(), models::MessageType::Ping),
TcHeader::new(select.id(), types::MessageType::Ping),
request,
)
}
@@ -602,9 +602,9 @@ mod tests {
assert_eq!(tm_packet.tm_header.sender_id, ComponentId::AcsMgm0);
let response =
postcard::from_bytes::<models::acs::mgm::response::Response>(&tm_packet.payload)
postcard::from_bytes::<types::acs::mgm::response::Response>(&tm_packet.payload)
.expect("failed to deserialize mode reply");
matches!(response, models::acs::mgm::response::Response::Ok);
matches!(response, types::acs::mgm::response::Response::Ok);
// The device should have been polled once.
assert_eq!(testbench.test_spi_interface().call_count, 1);
let mgm_set = *testbench.handler.shared_mgm_set.lock().unwrap();
@@ -691,9 +691,9 @@ mod tests {
assert_eq!(tm_packet.tm_header.sender_id, ComponentId::AcsMgm0);
let response =
postcard::from_bytes::<models::acs::mgm::response::Response>(&tm_packet.payload)
postcard::from_bytes::<types::acs::mgm::response::Response>(&tm_packet.payload)
.expect("failed to deserialize mode reply");
if let models::acs::mgm::response::Response::Hk(mgm::response::HkResponse::MgmData(data)) =
if let types::acs::mgm::response::Response::Hk(mgm::response::HkResponse::MgmData(data)) =
response
{
assert_eq!(data.valid, false);
@@ -743,17 +743,17 @@ mod tests {
assert_eq!(mode_tm.tm_header.sender_id, ComponentId::AcsMgm0);
let response =
postcard::from_bytes::<models::acs::mgm::response::Response>(&mode_tm.payload)
postcard::from_bytes::<types::acs::mgm::response::Response>(&mode_tm.payload)
.expect("failed to deserialize mode reply");
matches!(response, models::acs::mgm::response::Response::Ok);
matches!(response, types::acs::mgm::response::Response::Ok);
let hk_tm = testbench.tm_rx.try_recv().expect("no hk reply generated");
assert_eq!(hk_tm.tm_header.sender_id, ComponentId::AcsMgm0);
let response = postcard::from_bytes::<models::acs::mgm::response::Response>(&hk_tm.payload)
let response = postcard::from_bytes::<types::acs::mgm::response::Response>(&hk_tm.payload)
.expect("failed to deserialize mode reply");
if let models::acs::mgm::response::Response::Hk(mgm::response::HkResponse::MgmData(data)) =
if let types::acs::mgm::response::Response::Hk(mgm::response::HkResponse::MgmData(data)) =
response
{
// Set is now valid.
+33 -33
View File
@@ -1,11 +1,11 @@
use std::{sync::mpsc, time::Duration};
use models::{
use satrs::spacepackets::CcsdsPacketIdAndPsc;
use satrs_example::{ModeHelper, TmtcQueues};
use types::{
ComponentId, DeviceMode,
acs::mgm_assembly::{Mode, request, response},
};
use satrs::spacepackets::CcsdsPacketIdAndPsc;
use satrs_example::{ModeHelper, TmtcQueues};
use crate::ccsds::pack_ccsds_tm_packet_for_now;
@@ -16,8 +16,8 @@ pub struct ParentQueueHelper {
/// Helper component for communication with a parent component, which is usually as assembly.
pub struct ChildrenQueueHelper {
pub request_tx_queues: [mpsc::SyncSender<models::acs::mgm::request::ModeRequest>; 2],
pub report_rx_queues: [mpsc::Receiver<models::acs::mgm::response::ModeResponse>; 2],
pub request_tx_queues: [mpsc::SyncSender<types::acs::mgm::request::ModeRequest>; 2],
pub report_rx_queues: [mpsc::Receiver<types::acs::mgm::response::ModeResponse>; 2],
}
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
@@ -80,14 +80,14 @@ impl Assembly {
match self.tmtc_queues.tc_rx.try_recv() {
Ok(packet) => {
let tc_id = CcsdsPacketIdAndPsc::new_from_ccsds_packet(&packet.sp_header);
match postcard::from_bytes::<models::acs::mgm_assembly::request::Request>(
match postcard::from_bytes::<types::acs::mgm_assembly::request::Request>(
&packet.payload,
) {
Ok(request) => match request {
models::acs::mgm_assembly::request::Request::Ping => {
types::acs::mgm_assembly::request::Request::Ping => {
self.send_telemetry(Some(tc_id), response::Response::Ok)
}
models::acs::mgm_assembly::request::Request::Mode(request) => {
types::acs::mgm_assembly::request::Request::Mode(request) => {
match request {
request::ModeRequest::SetMode(assembly_mode) => {
self.start_transition(false, assembly_mode, Some(tc_id))
@@ -117,7 +117,7 @@ impl Assembly {
pub fn send_telemetry(
&self,
tc_id: Option<CcsdsPacketIdAndPsc>,
response: models::acs::mgm_assembly::response::Response,
response: types::acs::mgm_assembly::response::Response,
) {
match pack_ccsds_tm_packet_for_now(Self::ID, tc_id, &response) {
Ok(packet) => {
@@ -165,12 +165,12 @@ impl Assembly {
loop {
match rx.try_recv() {
Ok(report) => match report {
models::acs::mgm::response::ModeResponse::Mode(device_mode) => {
types::acs::mgm::response::ModeResponse::Mode(device_mode) => {
self.mgm_modes[idx].mode = Some(device_mode);
self.mgm_modes[idx].reply_received = true;
mode_report_received = true;
}
models::acs::mgm::response::ModeResponse::SetModeTimeout => {
types::acs::mgm::response::ModeResponse::SetModeTimeout => {
// Ignore, handle this with our own timeout.
log::warn!("MGM {} mode timeout", idx);
}
@@ -275,7 +275,7 @@ impl Assembly {
pub fn command_children(&self, mode: DeviceMode) {
for tx in &self.children_queues.request_tx_queues {
tx.send(models::acs::mgm::request::ModeRequest::SetMode(mode))
tx.send(types::acs::mgm::request::ModeRequest::SetMode(mode))
.unwrap();
}
}
@@ -320,20 +320,20 @@ mod tests {
use std::sync::mpsc::TryRecvError;
use arbitrary_int::u11;
use models::{
use satrs::spacepackets::SpacePacketHeader;
use types::{
Apid, Message, MessageType, TcHeader,
acs::mgm_assembly,
ccsds::{CcsdsTcPacketOwned, CcsdsTmPacketOwned},
};
use satrs::spacepackets::SpacePacketHeader;
use super::*;
pub struct Testbench {
subsystem_req_tx: mpsc::SyncSender<request::ModeRequest>,
subsystem_report_rx: mpsc::Receiver<response::ModeResponse>,
mgm_request_rx: [mpsc::Receiver<models::acs::mgm::request::ModeRequest>; 2],
mgm_report_tx: [mpsc::SyncSender<models::acs::mgm::response::ModeResponse>; 2],
mgm_request_rx: [mpsc::Receiver<types::acs::mgm::request::ModeRequest>; 2],
mgm_report_tx: [mpsc::SyncSender<types::acs::mgm::response::ModeResponse>; 2],
tc_tx: mpsc::SyncSender<CcsdsTcPacketOwned>,
tm_rx: mpsc::Receiver<CcsdsTmPacketOwned>,
assembly: Assembly,
@@ -396,9 +396,9 @@ mod tests {
}
pub fn create_request_tc(
request: models::acs::mgm_assembly::request::Request,
) -> models::ccsds::CcsdsTcPacketOwned {
models::ccsds::CcsdsTcPacketOwned::new_with_request(
request: types::acs::mgm_assembly::request::Request,
) -> types::ccsds::CcsdsTcPacketOwned {
types::ccsds::CcsdsTcPacketOwned::new_with_request(
SpacePacketHeader::new_from_apid(u11::new(Apid::Acs as u16)),
TcHeader::new(Assembly::ID, request.message_type()),
request,
@@ -429,13 +429,13 @@ mod tests {
let request = rx.try_recv().unwrap();
assert_eq!(
request,
models::acs::mgm::request::ModeRequest::SetMode(DeviceMode::Normal)
types::acs::mgm::request::ModeRequest::SetMode(DeviceMode::Normal)
);
}
// Confirm the mode is set.
for tx in tb.mgm_report_tx.iter() {
tx.send(models::acs::mgm::response::ModeResponse::Mode(
tx.send(types::acs::mgm::response::ModeResponse::Mode(
DeviceMode::Normal,
))
.unwrap();
@@ -467,13 +467,13 @@ mod tests {
let request = rx.try_recv().unwrap();
assert_eq!(
request,
models::acs::mgm::request::ModeRequest::SetMode(DeviceMode::Normal)
types::acs::mgm::request::ModeRequest::SetMode(DeviceMode::Normal)
);
}
// Confirm the mode is set.
for tx in tb.mgm_report_tx.iter() {
tx.send(models::acs::mgm::response::ModeResponse::Mode(
tx.send(types::acs::mgm::response::ModeResponse::Mode(
DeviceMode::Normal,
))
.unwrap();
@@ -505,18 +505,18 @@ mod tests {
let request = rx.try_recv().unwrap();
assert_eq!(
request,
models::acs::mgm::request::ModeRequest::SetMode(DeviceMode::Normal)
types::acs::mgm::request::ModeRequest::SetMode(DeviceMode::Normal)
);
}
// One device is sufficient.
tb.mgm_report_tx[0]
.send(models::acs::mgm::response::ModeResponse::Mode(
.send(types::acs::mgm::response::ModeResponse::Mode(
DeviceMode::Normal,
))
.unwrap();
tb.mgm_report_tx[1]
.send(models::acs::mgm::response::ModeResponse::Mode(
.send(types::acs::mgm::response::ModeResponse::Mode(
DeviceMode::Off,
))
.unwrap();
@@ -547,13 +547,13 @@ mod tests {
let request = rx.try_recv().unwrap();
assert_eq!(
request,
models::acs::mgm::request::ModeRequest::SetMode(DeviceMode::Normal)
types::acs::mgm::request::ModeRequest::SetMode(DeviceMode::Normal)
);
}
// Confirm the mode is set.
for tx in tb.mgm_report_tx.iter() {
tx.send(models::acs::mgm::response::ModeResponse::Mode(
tx.send(types::acs::mgm::response::ModeResponse::Mode(
DeviceMode::Off,
))
.unwrap();
@@ -585,13 +585,13 @@ mod tests {
let request = rx.try_recv().unwrap();
assert_eq!(
request,
models::acs::mgm::request::ModeRequest::SetMode(DeviceMode::Normal)
types::acs::mgm::request::ModeRequest::SetMode(DeviceMode::Normal)
);
}
// Confirm the mode is set.
for tx in tb.mgm_report_tx.iter() {
tx.send(models::acs::mgm::response::ModeResponse::Mode(
tx.send(types::acs::mgm::response::ModeResponse::Mode(
DeviceMode::Normal,
))
.unwrap();
@@ -608,7 +608,7 @@ mod tests {
);
for tx in tb.mgm_report_tx.iter() {
tx.send(models::acs::mgm::response::ModeResponse::Mode(
tx.send(types::acs::mgm::response::ModeResponse::Mode(
DeviceMode::Off,
))
.unwrap();
@@ -621,13 +621,13 @@ mod tests {
let request = rx.try_recv().unwrap();
assert_eq!(
request,
models::acs::mgm::request::ModeRequest::SetMode(DeviceMode::Normal)
types::acs::mgm::request::ModeRequest::SetMode(DeviceMode::Normal)
);
}
// Let the mode keeping fail.
for tx in tb.mgm_report_tx.iter() {
tx.send(models::acs::mgm::response::ModeResponse::Mode(
tx.send(types::acs::mgm::response::ModeResponse::Mode(
DeviceMode::Off,
))
.unwrap();
+37 -39
View File
@@ -4,16 +4,16 @@ use std::{
time::Duration,
};
use models::{
ComponentId,
acs::subsystem::{Mode, response},
};
use satrs::{
mode_tree::{ModeStoreProvider, ModeStoreVec, SequenceModeTables, TargetModeTables},
spacepackets::CcsdsPacketIdAndPsc,
subsystem::SubsystemCommandingHelper,
};
use satrs_example::{ModeHelper, TmtcQueues};
use types::{
ComponentId,
acs::subsystem::{Mode, response},
};
#[derive(Debug)]
pub struct TransitionInfo {
@@ -29,16 +29,16 @@ pub enum TransitionState {
#[derive(Debug)]
pub struct ChildModes {
mgm_assembly_mode: models::acs::mgm_assembly::Mode,
mgt_mode: models::acs::mgt::Mode,
controller_mode: models::acs::ctrl::Mode,
mgm_assembly_mode: types::acs::mgm_assembly::Mode,
mgt_mode: types::acs::mgt::Mode,
controller_mode: types::acs::ctrl::Mode,
}
#[derive(Debug)]
pub struct TransitionCommands {
mgm_assembly_mode: Option<(models::acs::mgm_assembly::Mode, TransitionInfo)>,
mgt_mode: Option<(models::acs::mgt::Mode, TransitionInfo)>,
controller_mode: Option<(models::acs::ctrl::Mode, TransitionInfo)>,
mgm_assembly_mode: Option<(types::acs::mgm_assembly::Mode, TransitionInfo)>,
mgt_mode: Option<(types::acs::mgt::Mode, TransitionInfo)>,
controller_mode: Option<(types::acs::ctrl::Mode, TransitionInfo)>,
}
const OFF_SEQUENCE: [TransitionCommands; 2] = [
@@ -46,7 +46,7 @@ const OFF_SEQUENCE: [TransitionCommands; 2] = [
mgm_assembly_mode: None,
mgt_mode: None,
controller_mode: Some((
models::acs::ctrl::Mode::Passive,
types::acs::ctrl::Mode::Passive,
TransitionInfo {
check_mode_reached: true,
},
@@ -54,13 +54,13 @@ const OFF_SEQUENCE: [TransitionCommands; 2] = [
},
TransitionCommands {
mgm_assembly_mode: Some((
models::acs::mgm_assembly::Mode::Device(models::DeviceMode::Off),
types::acs::mgm_assembly::Mode::Device(types::DeviceMode::Off),
TransitionInfo {
check_mode_reached: false,
},
)),
mgt_mode: Some((
models::acs::mgt::Mode::Off,
types::acs::mgt::Mode::Off,
TransitionInfo {
check_mode_reached: false,
},
@@ -72,13 +72,13 @@ const OFF_SEQUENCE: [TransitionCommands; 2] = [
const SAFE_SEQUENCE: [TransitionCommands; 2] = [
TransitionCommands {
mgm_assembly_mode: Some((
models::acs::mgm_assembly::Mode::Device(models::DeviceMode::Normal),
types::acs::mgm_assembly::Mode::Device(types::DeviceMode::Normal),
TransitionInfo {
check_mode_reached: false,
},
)),
mgt_mode: Some((
models::acs::mgt::Mode::Normal,
types::acs::mgt::Mode::Normal,
TransitionInfo {
check_mode_reached: false,
},
@@ -89,7 +89,7 @@ const SAFE_SEQUENCE: [TransitionCommands; 2] = [
mgm_assembly_mode: None,
mgt_mode: None,
controller_mode: Some((
models::acs::ctrl::Mode::Safe,
types::acs::ctrl::Mode::Safe,
TransitionInfo {
check_mode_reached: false,
},
@@ -99,21 +99,21 @@ const SAFE_SEQUENCE: [TransitionCommands; 2] = [
#[derive(Debug)]
pub struct ModeRequestSenders {
pub mode_request_ctrl: SyncSender<models::acs::ctrl::request::ModeRequest>,
pub mode_request_assy: SyncSender<models::acs::mgm_assembly::request::ModeRequest>,
pub mode_request_mgt: SyncSender<models::acs::mgt::request::ModeRequest>,
pub mode_request_ctrl: SyncSender<types::acs::ctrl::request::ModeRequest>,
pub mode_request_assy: SyncSender<types::acs::mgm_assembly::request::ModeRequest>,
pub mode_request_mgt: SyncSender<types::acs::mgt::request::ModeRequest>,
}
#[derive(Debug)]
pub struct ModeReportReceivers {
pub mode_response_ctrl: Receiver<models::acs::ctrl::response::ModeReport>,
pub mode_response_assy: Receiver<models::acs::mgm_assembly::response::ModeResponse>,
pub mode_response_mgt: Receiver<models::acs::mgt::response::ModeReport>,
pub mode_response_ctrl: Receiver<types::acs::ctrl::response::ModeReport>,
pub mode_response_assy: Receiver<types::acs::mgm_assembly::response::ModeResponse>,
pub mode_response_mgt: Receiver<types::acs::mgt::response::ModeReport>,
}
#[derive(Debug)]
pub struct Subsystem {
mode_helper: ModeHelper<models::acs::subsystem::Mode, TransitionState>,
mode_helper: ModeHelper<types::acs::subsystem::Mode, TransitionState>,
transition_step: usize,
current_child_modes: Option<ChildModes>,
mode_request_senders: ModeRequestSenders,
@@ -134,19 +134,19 @@ impl Subsystem {
mode_store_vec
.add_component(
ComponentId::AcsMgmAssembly as satrs::ComponentId,
models::acs::mgm_assembly::Mode::NoModeKeeping.into(),
types::acs::mgm_assembly::Mode::NoModeKeeping.into(),
)
.unwrap();
mode_store_vec
.add_component(
ComponentId::AcsController as satrs::ComponentId,
models::acs::ctrl::Mode::Passive.into(),
types::acs::ctrl::Mode::Passive.into(),
)
.unwrap();
mode_store_vec
.add_component(
ComponentId::AcsMgt as satrs::ComponentId,
models::acs::mgt::Mode::Off.into(),
types::acs::mgt::Mode::Off.into(),
)
.unwrap();
@@ -156,7 +156,7 @@ impl Subsystem {
Self {
mode_helper: ModeHelper::new(
models::acs::subsystem::Mode::Off,
types::acs::subsystem::Mode::Off,
Duration::from_millis(2000),
),
current_child_modes: None,
@@ -181,14 +181,14 @@ impl Subsystem {
match self.tmtc_queues.tc_rx.try_recv() {
Ok(packet) => {
let tc_id = CcsdsPacketIdAndPsc::new_from_ccsds_packet(&packet.sp_header);
match postcard::from_bytes::<models::acs::subsystem::request::Request>(
match postcard::from_bytes::<types::acs::subsystem::request::Request>(
&packet.payload,
) {
Ok(request) => match request {
models::acs::subsystem::request::Request::Ping => {
types::acs::subsystem::request::Request::Ping => {
self.send_telemetry(Some(tc_id), response::Response::Ok)
}
models::acs::subsystem::request::Request::Mode(mode_request) => {
types::acs::subsystem::request::Request::Mode(mode_request) => {
self.handle_mode_request(mode_request);
}
},
@@ -216,7 +216,7 @@ impl Subsystem {
if let Some((target_mode, _info)) = &step.mgm_assembly_mode {
self.mode_request_senders
.mode_request_assy
.send(models::acs::mgm_assembly::request::ModeRequest::SetMode(
.send(types::acs::mgm_assembly::request::ModeRequest::SetMode(
*target_mode,
))
.expect("failed to send mode request to MGM assembly");
@@ -224,15 +224,13 @@ impl Subsystem {
if let Some((target_mode, _info)) = &step.mgt_mode {
self.mode_request_senders
.mode_request_mgt
.send(models::acs::mgt::request::ModeRequest::SetMode(
*target_mode,
))
.send(types::acs::mgt::request::ModeRequest::SetMode(*target_mode))
.expect("failed to send mode request to MGM assembly");
}
if let Some((target_mode, _info)) = &step.controller_mode {
self.mode_request_senders
.mode_request_ctrl
.send(models::acs::ctrl::request::ModeRequest::SetMode(
.send(types::acs::ctrl::request::ModeRequest::SetMode(
*target_mode,
))
.expect("failed to send mode request to MGM assembly");
@@ -241,10 +239,10 @@ impl Subsystem {
pub fn handle_mode_request(
&mut self,
mode_request: models::acs::subsystem::request::ModeRequest,
mode_request: types::acs::subsystem::request::ModeRequest,
) {
match mode_request {
models::acs::subsystem::request::ModeRequest::SetMode(target_mode) => {
types::acs::subsystem::request::ModeRequest::SetMode(target_mode) => {
self.mode_helper.start(target_mode);
self.transition_step = 0;
let first_step = Self::transition_sequence_for_mode(target_mode)
@@ -252,7 +250,7 @@ impl Subsystem {
.expect("empty transition table");
self.execute_transition_step(first_step);
}
models::acs::subsystem::request::ModeRequest::ReadMode => {
types::acs::subsystem::request::ModeRequest::ReadMode => {
self.send_telemetry(
None,
response::Response::Mode(response::ModeResponse::Mode(
@@ -266,7 +264,7 @@ impl Subsystem {
pub fn send_telemetry(
&self,
tc_id: Option<CcsdsPacketIdAndPsc>,
response: models::acs::subsystem::response::Response,
response: types::acs::subsystem::response::Response,
) {
match crate::ccsds::pack_ccsds_tm_packet_for_now(Self::ID, tc_id, &response) {
Ok(packet) => {
+1 -1
View File
@@ -1,10 +1,10 @@
use arbitrary_int::u11;
use models::{Apid, ComponentId, Message, TmHeader, ccsds::CcsdsTmPacketOwned};
use satrs::spacepackets::{
CcsdsPacketIdAndPsc, SpHeader,
time::{StdTimestampError, cds::CdsTime},
};
use serde::Serialize;
use types::{Apid, ComponentId, Message, TmHeader, ccsds::CcsdsTmPacketOwned};
#[derive(Debug, thiserror::Error)]
pub enum CcsdsTmCreationError {
+2 -2
View File
@@ -39,14 +39,14 @@ pub const SERVER_PORT: u16 = 7301;
lazy_static! {
pub static ref PACKET_ID_VALIDATOR: HashSet<PacketId> = {
let mut set = HashSet::new();
for id in models::Apid::iter() {
for id in types::Apid::iter() {
set.insert(PacketId::new(PacketType::Tc, true, u11::new(id as u16)));
}
set
};
pub static ref APID_VALIDATOR: HashSet<u16> = {
let mut set = HashSet::new();
for id in models::Apid::iter() {
for id in types::Apid::iter() {
set.insert(id as u16);
}
set
+2 -2
View File
@@ -1,9 +1,9 @@
use models::{
use satrs::spacepackets::CcsdsPacketIdAndPsc;
use types::{
ComponentId,
ccsds::{CcsdsTcPacketOwned, CcsdsTmPacketOwned},
control,
};
use satrs::spacepackets::CcsdsPacketIdAndPsc;
use crate::ccsds::pack_ccsds_tm_packet_for_now;
+1 -1
View File
@@ -1,6 +1,6 @@
use derive_new::new;
use models::pcdu::{SwitchId, SwitchRequest, SwitchState, SwitchStateBinary};
use std::{cell::RefCell, collections::VecDeque, sync::mpsc, time::Duration};
use types::pcdu::{SwitchId, SwitchRequest, SwitchState, SwitchStateBinary};
use satrs::{
queue::GenericSendError,
+17 -17
View File
@@ -5,14 +5,6 @@ use std::{
};
use derive_new::new;
use models::{
ComponentId, DeviceMode,
ccsds::{CcsdsTcPacketOwned, CcsdsTmPacketOwned},
pcdu::{
self, SwitchId, SwitchMapBinary, SwitchMapBinaryWrapper, SwitchRequest, SwitchState,
SwitchStateBinary, SwitchesBitfield,
},
};
use num_enum::{IntoPrimitive, TryFromPrimitive};
use satrs::{request::GenericMessage, spacepackets::CcsdsPacketIdAndPsc};
use satrs_example::TimestampHelper;
@@ -22,6 +14,14 @@ use satrs_minisim::{
};
use serde::{Deserialize, Serialize};
use strum::IntoEnumIterator as _;
use types::{
ComponentId, DeviceMode,
ccsds::{CcsdsTcPacketOwned, CcsdsTmPacketOwned},
pcdu::{
self, SwitchId, SwitchMapBinary, SwitchMapBinaryWrapper, SwitchRequest, SwitchState,
SwitchStateBinary, SwitchesBitfield,
},
};
use crate::ccsds::pack_ccsds_tm_packet_for_now;
@@ -531,21 +531,21 @@ mod tests {
use std::sync::mpsc;
use arbitrary_int::u11;
use models::{
Apid, TcHeader,
pcdu::{SwitchMapBinary, SwitchStateBinary},
};
use satrs::{
request::{GenericMessage, MessageMetadata},
spacepackets::SpacePacketHeader,
};
use types::{
Apid, TcHeader,
pcdu::{SwitchMapBinary, SwitchStateBinary},
};
use super::*;
pub fn create_request_tc(
request: models::pcdu::request::Request,
) -> models::ccsds::CcsdsTcPacketOwned {
models::ccsds::CcsdsTcPacketOwned::new_with_request(
request: types::pcdu::request::Request,
) -> types::ccsds::CcsdsTcPacketOwned {
types::ccsds::CcsdsTcPacketOwned::new_with_request(
SpacePacketHeader::new_from_apid(u11::new(Apid::Eps as u16)),
TcHeader::new(ComponentId::EpsPcdu, request.message_type()),
request,
@@ -589,8 +589,8 @@ mod tests {
#[allow(dead_code)]
pub struct PcduTestbench {
pub mode_request_tx: mpsc::SyncSender<models::pcdu::request::Request>,
pub mode_reply_rx_to_parent: mpsc::Receiver<models::pcdu::response::Response>,
pub mode_request_tx: mpsc::SyncSender<types::pcdu::request::Request>,
pub mode_reply_rx_to_parent: mpsc::Receiver<types::pcdu::response::Response>,
pub tc_tx: mpsc::SyncSender<CcsdsTcPacketOwned>,
pub tm_rx: mpsc::Receiver<CcsdsTmPacketOwned>,
pub switch_request_tx: mpsc::Sender<GenericMessage<SwitchRequest>>,
+1 -1
View File
@@ -1,4 +1,4 @@
use models::{ComponentId, Event, Message, ccsds::CcsdsTmPacketOwned, control};
use types::{ComponentId, Event, Message, ccsds::CcsdsTmPacketOwned, control};
use crate::ccsds::pack_ccsds_tm_packet_for_now;
+2 -2
View File
@@ -4,10 +4,10 @@ use std::net::{SocketAddr, UdpSocket};
use std::sync::{Arc, Mutex, mpsc};
use log::warn;
use models::ccsds::CcsdsTmPacketOwned;
use satrs::hal::std::udp_server::{ReceiveResult, UdpTcServer};
use satrs::pus::HandlingStatus;
use satrs::queue::GenericSendError;
use types::ccsds::CcsdsTmPacketOwned;
use crate::tmtc::sender::TmTcSender;
@@ -112,7 +112,6 @@ mod tests {
use arbitrary_int::traits::Integer as _;
use arbitrary_int::u14;
use models::Apid;
use satrs::spacepackets::ecss::{CreatorConfig, MessageTypeId};
use satrs::{
ComponentId,
@@ -122,6 +121,7 @@ mod tests {
},
};
use satrs_example::config::OBSW_SERVER_ADDR;
use types::Apid;
use crate::tmtc::sender::MockSender;
+2 -2
View File
@@ -5,9 +5,9 @@ use std::{
time::{Duration, Instant},
};
pub use models::ComponentId;
use models::ccsds::{CcsdsTcPacketOwned, CcsdsTmPacketOwned};
use satrs::spacepackets::{CcsdsPacketIdAndPsc, time::cds::CdsTime};
pub use types::ComponentId;
use types::ccsds::{CcsdsTcPacketOwned, CcsdsTmPacketOwned};
pub mod config;
+2 -2
View File
@@ -20,7 +20,6 @@ use interface::{
};
use log::info;
use logger::setup_logger;
use models::{ComponentId, DeviceMode};
use satrs::{
hal::std::{tcp_server::ServerConfig, udp_server::UdpTcServer},
pus::HandlingStatus,
@@ -35,6 +34,7 @@ use satrs_example::{
};
use tmtc::sender::TmTcSender;
use tmtc::{tc_source::TcSourceTask, tm_sink::TmSink};
use types::{ComponentId, DeviceMode};
use crate::{
acs::{mgm, mgm_assembly, subsystem},
@@ -263,7 +263,7 @@ fn main() {
// The PCDU is a critical component which should be in normal mode immediately.
pcdu_handler_mode_tx
.send(models::pcdu::request::Request::Mode(DeviceMode::Normal))
.send(types::pcdu::request::Request::Mode(DeviceMode::Normal))
.expect("sending initial mode request failed");
info!("Starting TMTC and UDP task");
+1 -1
View File
@@ -1,4 +1,3 @@
use models::{ComponentId, TcHeader, ccsds::CcsdsTcPacketOwned};
use satrs::{
pus::HandlingStatus,
spacepackets::{CcsdsPacketReader, ChecksumType},
@@ -8,6 +7,7 @@ use std::{
collections::HashMap,
sync::mpsc::{self, TryRecvError},
};
use types::{ComponentId, TcHeader, ccsds::CcsdsTcPacketOwned};
pub type CcsdsDistributor = HashMap<ComponentId, std::sync::mpsc::SyncSender<CcsdsTcPacketOwned>>;
+1 -1
View File
@@ -4,8 +4,8 @@ use std::{
};
use arbitrary_int::{u11, u14};
use models::ccsds::CcsdsTmPacketOwned;
use satrs::spacepackets::seq_count::{SequenceCounter, SequenceCounterCcsdsSimple};
use types::ccsds::CcsdsTmPacketOwned;
use crate::interface::tcp::SyncTcpTmSource;
@@ -1,5 +1,5 @@
[package]
name = "models"
name = "types"
version = "0.1.0"
edition = "2024"