clean this code up a bit
Some checks failed
Rust/sat-rs/pipeline/pr-main There was a failure building this commit

This commit is contained in:
Robin Müller 2024-04-14 12:09:53 +02:00
parent 11bfa52a89
commit ec3a53d498
Signed by: muellerr
GPG Key ID: A649FB78196E3849
2 changed files with 37 additions and 43 deletions

View File

@ -10,6 +10,8 @@ use satrs::{
pool::{PoolProviderWithGuards, SharedStaticMemoryPool}, pool::{PoolProviderWithGuards, SharedStaticMemoryPool},
}; };
use crate::pus::HandlingStatus;
pub trait UdpTmHandler { pub trait UdpTmHandler {
fn send_tm_to_udp_client(&mut self, socket: &UdpSocket, recv_addr: &SocketAddr); fn send_tm_to_udp_client(&mut self, socket: &UdpSocket, recv_addr: &SocketAddr);
} }
@ -81,27 +83,32 @@ impl<
> UdpTmtcServer<TcSender, TmHandler, SendError> > UdpTmtcServer<TcSender, TmHandler, SendError>
{ {
pub fn periodic_operation(&mut self) { pub fn periodic_operation(&mut self) {
while self.poll_tc_server() {} loop {
if self.poll_tc_server() == HandlingStatus::Empty {
break;
}
}
if let Some(recv_addr) = self.udp_tc_server.last_sender() { if let Some(recv_addr) = self.udp_tc_server.last_sender() {
self.tm_handler self.tm_handler
.send_tm_to_udp_client(&self.udp_tc_server.socket, &recv_addr); .send_tm_to_udp_client(&self.udp_tc_server.socket, &recv_addr);
} }
} }
fn poll_tc_server(&mut self) -> bool { fn poll_tc_server(&mut self) -> HandlingStatus {
match self.udp_tc_server.try_recv_tc() { match self.udp_tc_server.try_recv_tc() {
Ok(_) => true, Ok(_) => HandlingStatus::HandledOne,
Err(e) => match e { Err(e) => {
match e {
ReceiveResult::NothingReceived => (),
ReceiveResult::Io(e) => { ReceiveResult::Io(e) => {
warn!("IO error {e}"); warn!("IO error {e}");
false
} }
ReceiveResult::NothingReceived => false,
ReceiveResult::Send(send_error) => { ReceiveResult::Send(send_error) => {
warn!("send error {send_error:?}"); warn!("send error {send_error:?}");
false
} }
}, }
HandlingStatus::Empty
}
} }
} }
} }

View File

@ -14,7 +14,6 @@ use satrs::queue::{GenericReceiveError, GenericSendError};
use satrs::request::{Apid, GenericMessage, MessageMetadata}; use satrs::request::{Apid, GenericMessage, MessageMetadata};
use satrs::spacepackets::ecss::tc::PusTcReader; use satrs::spacepackets::ecss::tc::PusTcReader;
use satrs::spacepackets::ecss::PusServiceId; use satrs::spacepackets::ecss::PusServiceId;
use satrs::tmtc::tc_helper::StoreAndSendError;
use satrs::ComponentId; use satrs::ComponentId;
use satrs_example::config::components::PUS_ROUTING_SERVICE; use satrs_example::config::components::PUS_ROUTING_SERVICE;
use satrs_example::config::{tmtc_err, CustomPusServiceId}; use satrs_example::config::{tmtc_err, CustomPusServiceId};
@ -80,7 +79,7 @@ impl<TmSender: EcssTmSenderCore> PusTcDistributor<TmSender> {
tc_in_memory: TcInMemory, tc_in_memory: TcInMemory,
service: u8, service: u8,
pus_tc: &PusTcReader, pus_tc: &PusTcReader,
) -> Result<PusPacketHandlerResult, StoreAndSendError> { ) -> Result<PusPacketHandlerResult, GenericSendError> {
let init_token = self.verif_reporter.add_tc(pus_tc); let init_token = self.verif_reporter.add_tc(pus_tc);
self.stamp_helper.update_from_now(); self.stamp_helper.update_from_now();
let accepted_token = self let accepted_token = self
@ -90,38 +89,26 @@ impl<TmSender: EcssTmSenderCore> PusTcDistributor<TmSender> {
let service = PusServiceId::try_from(service); let service = PusServiceId::try_from(service);
match service { match service {
Ok(standard_service) => match standard_service { Ok(standard_service) => match standard_service {
PusServiceId::Test => self PusServiceId::Test => self.pus_router.test_tc_sender.send(EcssTcAndToken {
.pus_router
.test_tc_sender
.send(EcssTcAndToken {
tc_in_memory, tc_in_memory,
token: Some(accepted_token.into()), token: Some(accepted_token.into()),
}) })?,
.map_err(|_| GenericSendError::RxDisconnected)?, PusServiceId::Housekeeping => {
PusServiceId::Housekeeping => self self.pus_router.hk_tc_sender.send(EcssTcAndToken {
.pus_router
.hk_tc_sender
.send(EcssTcAndToken {
tc_in_memory, tc_in_memory,
token: Some(accepted_token.into()), token: Some(accepted_token.into()),
}) })?
.map_err(|_| GenericSendError::RxDisconnected)?, }
PusServiceId::Event => self PusServiceId::Event => self.pus_router.event_tc_sender.send(EcssTcAndToken {
.pus_router
.event_tc_sender
.send(EcssTcAndToken {
tc_in_memory, tc_in_memory,
token: Some(accepted_token.into()), token: Some(accepted_token.into()),
}) })?,
.map_err(|_| GenericSendError::RxDisconnected)?, PusServiceId::Scheduling => {
PusServiceId::Scheduling => self self.pus_router.sched_tc_sender.send(EcssTcAndToken {
.pus_router
.sched_tc_sender
.send(EcssTcAndToken {
tc_in_memory, tc_in_memory,
token: Some(accepted_token.into()), token: Some(accepted_token.into()),
}) })?
.map_err(|_| GenericSendError::RxDisconnected)?, }
_ => { _ => {
let result = self.verif_reporter.start_failure( let result = self.verif_reporter.start_failure(
&self.tm_sender, &self.tm_sender,