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,
}
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 themax_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 themax_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 frommax_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
impl RemoteEntityConfig
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
impl Clone for RemoteEntityConfig
source§fn clone(&self) -> RemoteEntityConfig
fn clone(&self) -> RemoteEntityConfig
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for RemoteEntityConfig
impl Debug for RemoteEntityConfig
impl Copy for RemoteEntityConfig
Auto Trait Implementations§
impl Freeze for RemoteEntityConfig
impl RefUnwindSafe for RemoteEntityConfig
impl Send for RemoteEntityConfig
impl Sync for RemoteEntityConfig
impl Unpin for RemoteEntityConfig
impl UnwindSafe for RemoteEntityConfig
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.