Struct satrs::cfdp::RemoteEntityConfig

source ·
pub struct RemoteEntityConfig {
Show 14 fields pub entity_id: UnsignedByteField, pub max_packet_len: usize, pub max_file_segment_len: usize, pub closure_requested_by_default: bool, pub crc_on_transmission_by_default: bool, pub default_transmission_mode: TransmissionMode, pub default_crc_type: ChecksumType, pub positive_ack_timer_interval_seconds: f32, pub positive_ack_timer_expiration_limit: u32, pub check_limit: u32, pub disposition_on_cancellation: bool, pub immediate_nak_mode: bool, pub nak_timer_interval_seconds: f32, pub nak_timer_expiration_limit: u32,
}
Available on crate feature alloc only.
Expand description

This structure models the remote entity configuration information as specified in chapter 8.3 of the CFDP standard. Some of the fields which were not considered necessary for the Rust implementation were omitted. Some other fields which are not contained inside the standard but are considered necessary for the Rust implementation are included.

§Notes on Positive Acknowledgment Procedures

The positive_ack_timer_interval_seconds and positive_ack_timer_expiration_limit will be used for positive acknowledgement procedures as specified in CFDP chapter 4.7. The sending entity will start the timer for any PDUs where an acknowledgment is required (e.g. EOF PDU). Once the expected ACK response has not been received for that interval, as counter will be incremented and the timer will be reset. Once the counter exceeds the positive_ack_timer_expiration_limit, a Positive ACK Limit Reached fault will be declared.

§Notes on Deferred Lost Segment Procedures

This procedure will be active if an EOF (No Error) PDU is received in acknowledged mode. After issuing the NAK sequence which has the whole file scope, a timer will be started. The timer is reset when missing segments or missing metadata is received. The timer will be deactivated if all missing data is received. If the timer expires, a new NAK sequence will be issued and a counter will be incremented, which can lead to a NAK Limit Reached fault being declared.

§Fields

  • entity_id - The ID of the remote entity.
  • max_packet_len - This determines of all PDUs generated for that remote entity in addition to the max_file_segment_len attribute which also determines the size of file data PDUs.
  • max_file_segment_len The maximum file segment length which determines the maximum size of file data PDUs in addition to the max_packet_len attribute. If this field is set to None, the maximum file segment length will be derived from the maximum packet length. If this has some value which is smaller than the segment value derived from max_packet_len, this value will be picked.
  • closure_requested_by_default - If the closure requested field is not supplied as part of the Put Request, it will be determined from this field in the remote configuration.
  • crc_on_transmission_by_default - If the CRC option is not supplied as part of the Put Request, it will be determined from this field in the remote configuration.
  • default_transmission_mode - If the transmission mode is not supplied as part of the Put Request, it will be determined from this field in the remote configuration.
  • disposition_on_cancellation - Determines whether an incomplete received file is discard on transaction cancellation. Defaults to False.
  • default_crc_type - Default checksum type used to calculate for all file transmissions to this remote entity.
  • check_limit - This timer determines the expiry period for incrementing a check counter after an EOF PDU is received for an incomplete file transfer. This allows out-of-order reception of file data PDUs and EOF PDUs. Also see 4.6.3.3 of the CFDP standard. Defaults to 2, so the check limit timer may expire twice.
  • positive_ack_timer_interval_seconds- See the notes on the Positive Acknowledgment Procedures inside the class documentation. Expected as floating point seconds. Defaults to 10 seconds.
  • positive_ack_timer_expiration_limit - See the notes on the Positive Acknowledgment Procedures inside the class documentation. Defaults to 2, so the timer may expire twice.
  • immediate_nak_mode - Specifies whether a NAK sequence should be issued immediately when a file data gap or lost metadata is detected in the acknowledged mode. Defaults to True.
  • nak_timer_interval_seconds - See the notes on the Deferred Lost Segment Procedure inside the class documentation. Expected as floating point seconds. Defaults to 10 seconds.
  • nak_timer_expiration_limit - See the notes on the Deferred Lost Segment Procedure inside the class documentation. Defaults to 2, so the timer may expire two times.

Fields§

§entity_id: UnsignedByteField§max_packet_len: usize§max_file_segment_len: usize§closure_requested_by_default: bool§crc_on_transmission_by_default: bool§default_transmission_mode: TransmissionMode§default_crc_type: ChecksumType§positive_ack_timer_interval_seconds: f32§positive_ack_timer_expiration_limit: u32§check_limit: u32§disposition_on_cancellation: bool§immediate_nak_mode: bool§nak_timer_interval_seconds: f32§nak_timer_expiration_limit: u32

Implementations§

source§

impl RemoteEntityConfig

source

pub fn new_with_default_values( entity_id: UnsignedByteField, max_file_segment_len: usize, max_packet_len: usize, closure_requested_by_default: bool, crc_on_transmission_by_default: bool, default_transmission_mode: TransmissionMode, default_crc_type: ChecksumType ) -> Self

Trait Implementations§

source§

impl Clone for RemoteEntityConfig

source§

fn clone(&self) -> RemoteEntityConfig

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for RemoteEntityConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Copy for RemoteEntityConfig

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Downcast for T
where T: Any,

source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> DynClone for T
where T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.