Compare commits
12 Commits
d4d3bb819b
...
main
Author | SHA1 | Date | |
---|---|---|---|
cbe211fe8b | |||
![]() |
e379bc3fd7 | ||
a61ee85796 | |||
![]() |
81473b30f9
|
||
22675a73f9 | |||
![]() |
c68e3d4f75
|
||
3deedfba17 | |||
![]() |
533caea0fe
|
||
848fe6f207 | |||
![]() |
cf64fea7d9 | ||
4948db3fa5 | |||
![]() |
1920e4878c
|
@@ -61,6 +61,8 @@ Each project has its own `CHANGELOG.md`.
|
|||||||
packet protocol implementations. This repository is re-exported in the
|
packet protocol implementations. This repository is re-exported in the
|
||||||
[`satrs`](https://egit.irs.uni-stuttgart.de/rust/satrs/src/branch/main/satrs)
|
[`satrs`](https://egit.irs.uni-stuttgart.de/rust/satrs/src/branch/main/satrs)
|
||||||
crate.
|
crate.
|
||||||
|
* [`cfdp`](https://egit.irs.uni-stuttgart.de/rust/cfdp): CCSDS File Delivery Protocol
|
||||||
|
(CFDP) high-level library components.
|
||||||
|
|
||||||
# Flight Heritage
|
# Flight Heritage
|
||||||
|
|
||||||
|
@@ -18,7 +18,7 @@ csv = "1"
|
|||||||
num_enum = "0.7"
|
num_enum = "0.7"
|
||||||
thiserror = "2"
|
thiserror = "2"
|
||||||
lazy_static = "1"
|
lazy_static = "1"
|
||||||
strum = { version = "0.26", features = ["derive"] }
|
strum = { version = "0.27", features = ["derive"] }
|
||||||
derive-new = "0.7"
|
derive-new = "0.7"
|
||||||
cfg-if = "1"
|
cfg-if = "1"
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1", features = ["derive"] }
|
||||||
|
@@ -83,7 +83,7 @@ impl SpiInterface for SpiSimInterface {
|
|||||||
.sim_request_tx
|
.sim_request_tx
|
||||||
.send(SimRequest::new_with_epoch_time(mgm_sensor_request))
|
.send(SimRequest::new_with_epoch_time(mgm_sensor_request))
|
||||||
{
|
{
|
||||||
log::error!("failed to send MGM LIS3 request: {}", e);
|
log::error!("failed to send MGM LIS3 request: {e}");
|
||||||
}
|
}
|
||||||
match self.sim_reply_rx.recv_timeout(Duration::from_millis(50)) {
|
match self.sim_reply_rx.recv_timeout(Duration::from_millis(50)) {
|
||||||
Ok(sim_reply) => {
|
Ok(sim_reply) => {
|
||||||
@@ -97,7 +97,7 @@ impl SpiInterface for SpiSimInterface {
|
|||||||
.copy_from_slice(&sim_reply_lis3.raw.z.to_le_bytes());
|
.copy_from_slice(&sim_reply_lis3.raw.z.to_le_bytes());
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::warn!("MGM LIS3 SIM reply timeout: {}", e);
|
log::warn!("MGM LIS3 SIM reply timeout: {e}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@@ -401,7 +401,7 @@ impl<ComInterface: SerialInterface> PcduHandler<ComInterface> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}) {
|
}) {
|
||||||
log::warn!("receiving PCDU replies failed: {:?}", e);
|
log::warn!("receiving PCDU replies failed: {e:?}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -24,7 +24,7 @@ pub fn create_sim_client(sim_request_rx: mpsc::Receiver<SimRequest>) -> Option<S
|
|||||||
return Some(sim_client);
|
return Some(sim_client);
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::warn!("sim client creation error: {}", e);
|
log::warn!("sim client creation error: {e}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None
|
None
|
||||||
@@ -116,7 +116,7 @@ impl SimClientUdp {
|
|||||||
.udp_client
|
.udp_client
|
||||||
.send_to(request_json.as_bytes(), self.simulator_addr)
|
.send_to(request_json.as_bytes(), self.simulator_addr)
|
||||||
{
|
{
|
||||||
log::error!("error sending data to UDP SIM server: {}", e);
|
log::error!("error sending data to UDP SIM server: {e}");
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
no_sim_requests_handled = false;
|
no_sim_requests_handled = false;
|
||||||
@@ -151,7 +151,7 @@ impl SimClientUdp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::warn!("failed to deserialize SIM reply: {}", e);
|
log::warn!("failed to deserialize SIM reply: {e}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -161,7 +161,7 @@ impl SimClientUdp {
|
|||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
log::error!("error receiving data from UDP SIM server: {}", e);
|
log::error!("error receiving data from UDP SIM server: {e}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -31,7 +31,7 @@ impl SpacePacketValidator for SimplePacketValidator {
|
|||||||
if self.valid_ids.contains(&sp_header.packet_id()) {
|
if self.valid_ids.contains(&sp_header.packet_id()) {
|
||||||
return SpValidity::Valid;
|
return SpValidity::Valid;
|
||||||
}
|
}
|
||||||
log::warn!("ignoring space packet with header {:?}", sp_header);
|
log::warn!("ignoring space packet with header {sp_header:?}");
|
||||||
// We could perform a CRC check.. but lets keep this simple and assume that TCP ensures
|
// We could perform a CRC check.. but lets keep this simple and assume that TCP ensures
|
||||||
// data integrity.
|
// data integrity.
|
||||||
SpValidity::Skip
|
SpValidity::Skip
|
||||||
|
@@ -102,7 +102,7 @@ impl PusTcDistributor {
|
|||||||
sender_id,
|
sender_id,
|
||||||
pus_tc_result.unwrap_err()
|
pus_tc_result.unwrap_err()
|
||||||
);
|
);
|
||||||
log::warn!("raw data: {:x?}", raw_tc);
|
log::warn!("raw data: {raw_tc:x?}");
|
||||||
// TODO: Shouldn't this be an error?
|
// TODO: Shouldn't this be an error?
|
||||||
return Ok(HandlingStatus::HandledOne);
|
return Ok(HandlingStatus::HandledOne);
|
||||||
}
|
}
|
||||||
|
@@ -11,7 +11,7 @@ serde_json = "1"
|
|||||||
log = "0.4"
|
log = "0.4"
|
||||||
thiserror = "2"
|
thiserror = "2"
|
||||||
fern = "0.7"
|
fern = "0.7"
|
||||||
strum = { version = "0.26", features = ["derive"] }
|
strum = { version = "0.27", features = ["derive"] }
|
||||||
num_enum = "0.7"
|
num_enum = "0.7"
|
||||||
humantime = "2"
|
humantime = "2"
|
||||||
tai-time = { version = "0.3", features = ["serde"] }
|
tai-time = { version = "0.3", features = ["serde"] }
|
||||||
|
@@ -120,7 +120,7 @@ impl SimController {
|
|||||||
fn handle_ctrl_request(&mut self, request: &SimRequest) -> Result<(), SimRequestError> {
|
fn handle_ctrl_request(&mut self, request: &SimRequest) -> Result<(), SimRequestError> {
|
||||||
let sim_ctrl_request = SimCtrlRequest::from_sim_message(request)?;
|
let sim_ctrl_request = SimCtrlRequest::from_sim_message(request)?;
|
||||||
if SIM_CTRL_REQ_WIRETAPPING {
|
if SIM_CTRL_REQ_WIRETAPPING {
|
||||||
log::info!("received sim ctrl request: {:?}", sim_ctrl_request);
|
log::info!("received sim ctrl request: {sim_ctrl_request:?}");
|
||||||
}
|
}
|
||||||
match sim_ctrl_request {
|
match sim_ctrl_request {
|
||||||
SimCtrlRequest::Ping => {
|
SimCtrlRequest::Ping => {
|
||||||
@@ -139,7 +139,7 @@ impl SimController {
|
|||||||
) -> Result<(), SimRequestError> {
|
) -> Result<(), SimRequestError> {
|
||||||
let mgm_request = MgmRequestLis3Mdl::from_sim_message(request)?;
|
let mgm_request = MgmRequestLis3Mdl::from_sim_message(request)?;
|
||||||
if MGM_REQ_WIRETAPPING {
|
if MGM_REQ_WIRETAPPING {
|
||||||
log::info!("received MGM request: {:?}", mgm_request);
|
log::info!("received MGM request: {mgm_request:?}");
|
||||||
}
|
}
|
||||||
match mgm_request {
|
match mgm_request {
|
||||||
MgmRequestLis3Mdl::RequestSensorData => {
|
MgmRequestLis3Mdl::RequestSensorData => {
|
||||||
@@ -160,7 +160,7 @@ impl SimController {
|
|||||||
fn handle_pcdu_request(&mut self, request: &SimRequest) -> Result<(), SimRequestError> {
|
fn handle_pcdu_request(&mut self, request: &SimRequest) -> Result<(), SimRequestError> {
|
||||||
let pcdu_request = PcduRequest::from_sim_message(request)?;
|
let pcdu_request = PcduRequest::from_sim_message(request)?;
|
||||||
if PCDU_REQ_WIRETAPPING {
|
if PCDU_REQ_WIRETAPPING {
|
||||||
log::info!("received PCDU request: {:?}", pcdu_request);
|
log::info!("received PCDU request: {pcdu_request:?}");
|
||||||
}
|
}
|
||||||
match pcdu_request {
|
match pcdu_request {
|
||||||
PcduRequest::RequestSwitchInfo => {
|
PcduRequest::RequestSwitchInfo => {
|
||||||
@@ -188,7 +188,7 @@ impl SimController {
|
|||||||
fn handle_mgt_request(&mut self, request: &SimRequest) -> Result<(), SimRequestError> {
|
fn handle_mgt_request(&mut self, request: &SimRequest) -> Result<(), SimRequestError> {
|
||||||
let mgt_request = MgtRequest::from_sim_message(request)?;
|
let mgt_request = MgtRequest::from_sim_message(request)?;
|
||||||
if MGT_REQ_WIRETAPPING {
|
if MGT_REQ_WIRETAPPING {
|
||||||
log::info!("received MGT request: {:?}", mgt_request);
|
log::info!("received MGT request: {mgt_request:?}");
|
||||||
}
|
}
|
||||||
match mgt_request {
|
match mgt_request {
|
||||||
MgtRequest::ApplyTorque { duration, dipole } => self
|
MgtRequest::ApplyTorque { duration, dipole } => self
|
||||||
|
@@ -130,7 +130,7 @@ fn main() {
|
|||||||
let mut udp_server =
|
let mut udp_server =
|
||||||
SimUdpServer::new(SIM_CTRL_PORT, request_sender, reply_receiver, 200, None)
|
SimUdpServer::new(SIM_CTRL_PORT, request_sender, reply_receiver, 200, None)
|
||||||
.expect("could not create UDP request server");
|
.expect("could not create UDP request server");
|
||||||
log::info!("starting UDP server on port {}", SIM_CTRL_PORT);
|
log::info!("starting UDP server on port {SIM_CTRL_PORT}");
|
||||||
// This thread manages the simulator UDP server.
|
// This thread manages the simulator UDP server.
|
||||||
let udp_tc_thread = thread::spawn(move || {
|
let udp_tc_thread = thread::spawn(move || {
|
||||||
udp_server.run();
|
udp_server.run();
|
||||||
|
@@ -11,7 +11,7 @@ license = "Apache-2.0"
|
|||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
spacepackets = { version = ">=0.14, <=0.15", git = "https://egit.irs.uni-stuttgart.de/rust/spacepackets.git", default-features = false }
|
spacepackets = { version = ">=0.14, <=0.15", default-features = false }
|
||||||
|
|
||||||
[dependencies.serde]
|
[dependencies.serde]
|
||||||
version = "1"
|
version = "1"
|
||||||
|
@@ -8,6 +8,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
# [v0.3.0-alpha.1] 2025-07-22
|
||||||
|
|
||||||
|
`spacepackets` range v0.14 to v0.15
|
||||||
|
|
||||||
# [v0.3.0-alpha.0] 2025-02-18
|
# [v0.3.0-alpha.0] 2025-02-18
|
||||||
|
|
||||||
`spacepackets` v0.13
|
`spacepackets` v0.13
|
||||||
@@ -198,3 +202,7 @@ docs-rs hotfix
|
|||||||
# [v0.1.0] 2024-02-12
|
# [v0.1.0] 2024-02-12
|
||||||
|
|
||||||
Initial release.
|
Initial release.
|
||||||
|
|
||||||
|
[unreleased]: https://egit.irs.uni-stuttgart.de/rust/sat-rs/compare/satrs-v0.3.0-alpha.1...HEAD
|
||||||
|
[v0.3.0-alpha.1]: https://egit.irs.uni-stuttgart.de/rust/sat-rs/compare/satrs-v0.3.0-alpha.0...satrs-v0.3.0-alpha.1
|
||||||
|
[v0.3.0-alpha.0]: https://egit.irs.uni-stuttgart.de/rust/sat-rs/compare/satrs-v0.2.1...satrs-v0.3.0-alpha.0
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "satrs"
|
name = "satrs"
|
||||||
version = "0.3.0-alpha.0"
|
version = "0.3.0-alpha.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.82.0"
|
rust-version = "1.82.0"
|
||||||
authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"]
|
authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"]
|
||||||
@@ -14,13 +14,13 @@ categories = ["aerospace", "aerospace::space-protocols", "no-std", "hardware-sup
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
satrs-shared = { version = "0.2.2", path = "../satrs-shared" }
|
satrs-shared = { version = "0.2.2", path = "../satrs-shared" }
|
||||||
spacepackets = { version = ">=0.14, <=0.15", git = "https://egit.irs.uni-stuttgart.de/rust/spacepackets.git", default-features = false }
|
spacepackets = { version = ">=0.14, <=0.15", default-features = false }
|
||||||
|
|
||||||
delegate = ">0.7, <=0.13"
|
delegate = ">0.7, <=0.13"
|
||||||
paste = "1"
|
paste = "1"
|
||||||
derive-new = ">=0.6, <=0.7"
|
derive-new = ">=0.6, <=0.7"
|
||||||
num_enum = { version = ">0.5, <=0.7", default-features = false }
|
num_enum = { version = ">0.5, <=0.7", default-features = false }
|
||||||
cobs = { version = "0.4", default-features = false, git = "https://github.com/jamesmunns/cobs.rs.git", branch = "main" }
|
cobs = { version = "0.4", default-features = false }
|
||||||
thiserror = { version = "2", default-features = false }
|
thiserror = { version = "2", default-features = false }
|
||||||
|
|
||||||
hashbrown = { version = ">=0.14, <=0.15", optional = true }
|
hashbrown = { version = ">=0.14, <=0.15", optional = true }
|
||||||
@@ -31,9 +31,9 @@ downcast-rs = { version = "2", default-features = false, optional = true }
|
|||||||
bus = { version = "2.2", optional = true }
|
bus = { version = "2.2", optional = true }
|
||||||
crossbeam-channel = { version = "0.5", default-features = false, optional = true }
|
crossbeam-channel = { version = "0.5", default-features = false, optional = true }
|
||||||
serde = { version = "1", default-features = false, optional = true }
|
serde = { version = "1", default-features = false, optional = true }
|
||||||
socket2 = { version = "0.5", features = ["all"], optional = true }
|
socket2 = { version = "0.6", features = ["all"], optional = true }
|
||||||
mio = { version = "1", features = ["os-poll", "net"], optional = true }
|
mio = { version = "1", features = ["os-poll", "net"], optional = true }
|
||||||
defmt = { version = "0.3", optional = true }
|
defmt = { version = "1", optional = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
serde = "1"
|
serde = "1"
|
||||||
|
Reference in New Issue
Block a user