cfdp#
Pure OCaml implementation of CCSDS File Delivery Protocol (CCSDS 727.0-B-5) for reliable file transfer in space communications.
Overview#
CFDP provides file transfer services for space missions with support for high-delay and disruption-prone links. It operates above the underlying data link layer and provides:
- Class 1: Unacknowledged (unreliable) transfers
- Class 2: Acknowledged (reliable) transfers with NAK-based retransmission
Features#
- Full PDU header encoding/decoding
- Entity ID support (1-8 bytes, up to 2^63-1)
- Transaction sequence numbers
- CRC-32 checksum support
- File directive PDUs (Metadata, EOF, ACK, NAK, Finished)
- Segmented file data transfers
Installation#
opam install cfdp
Usage#
open Cfdp
(* Create entity IDs *)
let source = Entity_id.of_int64 1L
let dest = Entity_id.of_int64 2L
(* Create a transaction *)
let seq_nr = Seq_nr.of_int64 42L
(* Build a file data PDU *)
let header = Pdu_header.v
~source_entity:source
~dest_entity:dest
~seq_nr
~direction:`Toward_receiver
~transmission_mode:`Acknowledged
()
(* Encode to bytes *)
let bytes = Pdu_header.encode header
Related Work#
References#
- CCSDS 727.0-B-5 - CFDP Blue Book
- CCSDS 720.1-G-4 - CFDP Green Book
Licence#
ISC License. See LICENSE.md for details.