Larger update #49

Merged
muellerr merged 41 commits from this-is-complex into main 2023-07-08 15:02:42 +02:00
Showing only changes of commit 3f47474393 - Show all commits

View File

@ -93,6 +93,24 @@ impl Service17CustomWrapper {
} }
} }
pub trait PusServiceHandler {
fn psb(&mut self) -> &mut PusServiceBase;
fn handle_one_tc(
&mut self,
addr: StoreAddr,
token: VerificationToken<TcStateAccepted>,
) -> Result<PusPacketHandlerResult, PusPacketHandlingError>;
fn handle_next_packet(&mut self) -> Result<PusPacketHandlerResult, PusPacketHandlingError> {
return match self.psb().tc_rx.try_recv() {
Ok((addr, token)) => self.handle_one_tc(addr, token),
Err(e) => match e {
TryRecvError::Empty => Ok(PusPacketHandlerResult::Empty),
TryRecvError::Disconnected => Err(PusPacketHandlingError::QueueDisconnected),
},
};
}
}
pub struct PusService17TestHandler { pub struct PusService17TestHandler {
psb: PusServiceBase, psb: PusServiceBase,
} }
@ -125,18 +143,14 @@ impl PusService17TestHandler {
pub fn pus_tc_buf(&self) -> (&[u8], usize) { pub fn pus_tc_buf(&self) -> (&[u8], usize) {
(&self.psb.pus_buf, self.psb.pus_size) (&self.psb.pus_buf, self.psb.pus_size)
} }
}
pub fn handle_next_packet(&mut self) -> Result<PusPacketHandlerResult, PusPacketHandlingError> { impl PusServiceHandler for PusService17TestHandler {
return match self.psb.tc_rx.try_recv() { fn psb(&mut self) -> &mut PusServiceBase {
Ok((addr, token)) => self.handle_one_tc(addr, token), &mut self.psb
Err(e) => match e {
TryRecvError::Empty => Ok(PusPacketHandlerResult::Empty),
TryRecvError::Disconnected => Err(PusPacketHandlingError::QueueDisconnected),
},
};
} }
pub fn handle_one_tc( fn handle_one_tc(
&mut self, &mut self,
addr: StoreAddr, addr: StoreAddr,
token: VerificationToken<TcStateAccepted>, token: VerificationToken<TcStateAccepted>,
@ -203,4 +217,4 @@ impl PusService17TestHandler {
} }
Ok(PusPacketHandlerResult::CustomSubservice(token)) Ok(PusPacketHandlerResult::CustomSubservice(token))
} }
} }