pub struct PusServiceHelper<TcInMemConverter: EcssTcInMemConverter> {
pub common: PusServiceBase,
pub tc_in_mem_converter: TcInMemConverter,
}std only.Expand description
This is a high-level PUS packet handler helper.
It performs some of the boilerplate acitivities involved when handling PUS telecommands and it can be used to implement the handling of PUS telecommands for certain PUS telecommands groups (for example individual services).
This base class can handle PUS telecommands backed by different memory storage machanisms by using the EcssTcInMemConverter abstraction. This object provides some convenience methods to make the generic parts of TC handling easier.
Fields§
§common: PusServiceBase§tc_in_mem_converter: TcInMemConverterImplementations§
Source§impl<TcInMemConverter: EcssTcInMemConverter> PusServiceHelper<TcInMemConverter>
impl<TcInMemConverter: EcssTcInMemConverter> PusServiceHelper<TcInMemConverter>
pub fn new( tc_receiver: Box<dyn EcssTcReceiver>, tm_sender: Box<dyn EcssTmSender>, tm_apid: u16, verification_handler: VerificationReporterWithSender, tc_in_mem_converter: TcInMemConverter, ) -> Self
Sourcepub fn retrieve_and_accept_next_packet(
&mut self,
) -> Result<Option<AcceptedEcssTcAndToken>, PusPacketHandlingError>
pub fn retrieve_and_accept_next_packet( &mut self, ) -> Result<Option<AcceptedEcssTcAndToken>, PusPacketHandlingError>
This function can be used to poll the internal EcssTcReceiver object for the next
telecommand packet. It will return Ok(None) if there are not packets available.
In any other case, it will perform the acceptance of the ECSS TC packet using the
internal VerificationReporterWithSender object. It will then return the telecommand
and the according accepted token.
Auto Trait Implementations§
impl<TcInMemConverter> !Freeze for PusServiceHelper<TcInMemConverter>
impl<TcInMemConverter> !RefUnwindSafe for PusServiceHelper<TcInMemConverter>
impl<TcInMemConverter> Send for PusServiceHelper<TcInMemConverter>where
TcInMemConverter: Send,
impl<TcInMemConverter> !Sync for PusServiceHelper<TcInMemConverter>
impl<TcInMemConverter> Unpin for PusServiceHelper<TcInMemConverter>where
TcInMemConverter: Unpin,
impl<TcInMemConverter> !UnwindSafe for PusServiceHelper<TcInMemConverter>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.