//! data units (PDU). CFPD has an unacknowledged and acknowledged mode, with the option to request
//! the most complex mode which includes multiple mechanism to ensure succesfull packet transaction
//! even for unreliable connections, including lost segment detection. As such, it can be compared
//! software and of ground software. It has support to make integration on [std] systems as simple
//! It is recommended to activate the `alloc` feature at the very least to allow using the primary
//! components provided by this crate. These components will only allocate memory at initialization
//! respectively. You can find high-level and API documentation for both handlers in the respective
//! The [end-to-end test](https://egit.irs.uni-stuttgart.de/rust/cfdp/src/branch/main/tests/end-to-end.rs)
//! The [Python Interoperability](https://egit.irs.uni-stuttgart.de/rust/cfdp/src/branch/main/examples/python-interop)
//! Both examples feature implementations of the [UserFaultHookProvider] and the [user::CfdpUser]
//! moved into a [std::collections::HashMap] structure which is then scheduled inside a thread, or
/// This trait also allows the creation of different check timers depending on context and purpose
/// fault after sending an EOF PDU with requested closure. This allows a timeout of the transfer.
/// counter after an EOF PDU is received for an incomplete file transfer. This allows out-of-order
/// The timer will be used to perform the NAK activity check as specified in 4.6.4.7 of the CFDP
/// 4.7. 1of the CFDP standard. The expiration period will be provided by the Positive ACK timer
/// This structure models the remote entity configuration information as specified in chapter 8.3
/// were omitted. Some other fields which are not contained inside the standard but are considered
/// 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).
/// 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
/// * `max_packet_len` - This determines of all PDUs generated for that remote entity in addition
/// * `closure_requested_by_default` - If the closure requested field is not supplied as part of
/// * `disposition_on_cancellation` - Determines whether an incomplete received file is discard on
/// * `default_crc_type` - Default checksum type used to calculate for all file transmissions to
/// reception of file data PDUs and EOF PDUs. Also see 4.6.3.3 of the CFDP standard. Defaults to
/// * `immediate_nak_mode` - Specifies whether a NAK sequence should be issued immediately when a
/// * `nak_timer_interval_seconds` - See the notes on the Deferred Lost Segment Procedure inside
/// * `nak_timer_expiration_limit` - See the notes on the Deferred Lost Segment Procedure inside
/// It is passed into the CFDP handlers as part of the [UserFaultHookProvider] and the local entity
fn ignore_cb(&mut self, _transaction_id: TransactionId, _cond: ConditionCode, _progress: u64) {}
/// This structure is used to implement the fault handling as specified in chapter 4.8 of the CFDP
/// It does so by mapping each applicable [spacepackets::cfdp::ConditionCode] to a fault handler
/// - Checksum failures will be ignored by default. This is because for unacknowledged transfers,
/// cancelling the transfer immediately would interfere with the check limit mechanism specified
/// For all other faults, the default fault handling operation will be to cancel the transaction.
/// The CFDP transaction ID of a CFDP transaction consists of the source entity ID and the sequence
/// Entry in CRC catalogue: <https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32>
/// Entry in CRC catalogue: <https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-iscsi>
/// Generic trait which models a raw CFDP packet data unit (PDU) block with some additional context