Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
190 commits
Select commit Hold shift + click to select a range
e7d9b28
Added CfdpManager skeleton
Brian-Campuzano Dec 12, 2025
a8d20de
Copy PDU packet layer as-is
Brian-Campuzano Dec 12, 2025
676c595
Bring in other header dependencies
Brian-Campuzano Dec 15, 2025
7b7b248
Updates to get the packet layer to compile
Brian-Campuzano Dec 16, 2025
a8417b3
Bring in CFDP engine files
Brian-Campuzano Dec 16, 2025
44d0660
Bring in addititional CF depedencies and refactor CF asserts into FW_…
Brian-Campuzano Dec 16, 2025
a81d937
c -> c++ updates
Brian-Campuzano Dec 16, 2025
2194258
c to c++ conversion checkpoint
Brian-Campuzano Dec 17, 2025
89fcab3
Os directory checkpoint
Brian-Campuzano Dec 17, 2025
ffaccb8
Add custom timer soloution to replace CFE timer implementation
Brian-Campuzano Dec 18, 2025
e5542e5
Os File stub completion
Brian-Campuzano Dec 18, 2025
cec7325
Update CRC
Brian-Campuzano Dec 18, 2025
1111a33
Added buffer management and removed pipes/semaphores
Brian-Campuzano Dec 19, 2025
8364b49
Beggining of buffer refactor
Brian-Campuzano Dec 19, 2025
fa2548c
Buffer management checkpoint
Brian-Campuzano Dec 19, 2025
4ef83b9
Brought in cf_utils for list traversals
Brian-Campuzano Dec 19, 2025
36423d7
Convert CfdpEngine into a class
Brian-Campuzano Dec 22, 2025
5afba79
Revert "Convert CfdpEngine into a class"
Brian-Campuzano Dec 22, 2025
d733f34
Additional CFE OS stubs
Brian-Campuzano Dec 22, 2025
e5ac3b4
Fixed container pointer arithmatic for C++
Brian-Campuzano Dec 23, 2025
1cbf9e5
Completed refactor of cf_utils
Brian-Campuzano Dec 23, 2025
68ed031
Beginning of adding parameters
Brian-Campuzano Dec 23, 2025
07a2bee
Refactor CF_CFDP_S_CheckAndRespondNak to separate out error logic and…
Brian-Campuzano Dec 26, 2025
eb29119
CFDP send checkpoint
Brian-Campuzano Dec 26, 2025
385f5e7
Completed CFDP send updates
Brian-Campuzano Dec 26, 2025
b2e2b44
Completed CFDP receive refactor
Brian-Campuzano Dec 29, 2025
2886c73
CFDP refactor checkpoint
Brian-Campuzano Dec 30, 2025
85976a8
Playback directory checkpoint
Brian-Campuzano Dec 30, 2025
64ddc57
CfdpManager compiles!
Brian-Campuzano Dec 31, 2025
d1d6ee0
Added PDU receive data paths/hooks
Brian-Campuzano Jan 2, 2026
8bc9f66
CF -> CFDP file rename
Brian-Campuzano Jan 2, 2026
e29f932
CF -> CFDP file rename complete
Brian-Campuzano Jan 2, 2026
b7c88d6
Remove header comments
Brian-Campuzano Jan 2, 2026
e3300df
Refactor CFDP variable size types
Brian-Campuzano Jan 5, 2026
db525b2
Refactor default_cf_extern_typedefs.hpp into CfdpTypes.fpp and CfdpTy…
Brian-Campuzano Jan 5, 2026
4666674
Refactor default_cf_interface_cfg.hpp to CfdpCfg.hpp
Brian-Campuzano Jan 5, 2026
28e6dba
Revert history init
Brian-Campuzano Jan 5, 2026
04a7dd4
Move CFDP types and configs
Brian-Campuzano Jan 5, 2026
9d2d037
UT skeleton
Brian-Campuzano Jan 5, 2026
0dc4928
Split parameters to separate include file
Brian-Campuzano Jan 5, 2026
e41c94a
Implemented the SendFile command
Brian-Campuzano Jan 6, 2026
f029f40
Added CFDP playback directory command
Brian-Campuzano Jan 6, 2026
1113fe2
Added freeze/thaw command
Brian-Campuzano Jan 6, 2026
f46f354
Add buffer return for failure to send case
Brian-Campuzano Jan 6, 2026
0401851
Added polling directory commands
Brian-Campuzano Jan 6, 2026
9939696
Fixed comment offsets
Brian-Campuzano Jan 6, 2026
50aee70
Converted CF_WrappedOpenCreate calls to Os::File::open
Brian-Campuzano Jan 6, 2026
ccaf0df
Convert CF_WrappedWrite to Os::File::write
Brian-Campuzano Jan 6, 2026
0313fdf
Replaced CF_WrappedRead with Os::File::Read
Brian-Campuzano Jan 6, 2026
8f2611a
Replaced CF_WrappedClose with Os::File::close
Brian-Campuzano Jan 6, 2026
35001e0
Replaced OS_ObjectIdDefined with Os::File::isOpen
Brian-Campuzano Jan 6, 2026
cb306e0
Replaced CF_WrappedLseek with Os::File::seek
Brian-Campuzano Jan 7, 2026
ff0e9f9
Refactor CF_CFDP_MoveFile to Os::FileSystem::moveFile + string refact…
Brian-Campuzano Jan 7, 2026
7000c06
Refactored OS_remove to Os::FileSystem::removeFile
Brian-Campuzano Jan 7, 2026
ec92b85
Refactored OS_mv to Os::FileSystem::moveFile
Brian-Campuzano Jan 7, 2026
39c9da6
Replaced OS_DirectoryOpen with Os::Directory::open
Brian-Campuzano Jan 7, 2026
fb11e82
Replaced OS_DirectoryRead with Os::Directory::read
Brian-Campuzano Jan 7, 2026
37bf9f3
Replaced OS_DirectoryClose with Os::Directory::close
Brian-Campuzano Jan 7, 2026
544fdd8
Deleted CfeStubs
Brian-Campuzano Jan 8, 2026
5e66eae
Remove CfeStubs.hpp includes and add CfdpMaxPduSize constants
Brian-Campuzano Jan 15, 2026
66b4941
Data pointer refactor to remove void*
Brian-Campuzano Jan 16, 2026
8281ba0
Rework receive init to use Fw::String
Brian-Campuzano Jan 16, 2026
bd518d4
Fix compilation errors
Brian-Campuzano Jan 16, 2026
53f26ef
Made include paths absolute and moved file size type def to config
Brian-Campuzano Jan 21, 2026
d20d9f7
Added separate metadata serailizable
Brian-Campuzano Jan 21, 2026
77eea4c
Rework enums that did not need to serializables
Brian-Campuzano Jan 22, 2026
7a92fff
Completed metadata UT
Brian-Campuzano Jan 22, 2026
7d8408c
Split PDUs to separate whitespace
Brian-Campuzano Jan 22, 2026
3299e7d
Added FileData PDU and UTs
Brian-Campuzano Jan 22, 2026
339cf30
Added file data PDU test
Brian-Campuzano Jan 22, 2026
d46fd86
Added end-of-file PDU and UTs
Brian-Campuzano Jan 22, 2026
830f7f8
Added missing file
Brian-Campuzano Jan 22, 2026
b838dce
Added end of file PDU UT to CfdpManager
Brian-Campuzano Jan 22, 2026
576e7d1
Refactor UTs to separate out validation functions
Brian-Campuzano Jan 22, 2026
c5af8a6
Implemented FinPdu class and UTs
Brian-Campuzano Jan 22, 2026
257d3e0
Added CfdpManager FinPdu UT
Brian-Campuzano Jan 22, 2026
1d995a6
Added AckPdu implementation and UTs
Brian-Campuzano Jan 22, 2026
261a0fa
Added AckPdu UT for CfdpManager
Brian-Campuzano Jan 22, 2026
b8e8036
Added missing CRC check
Brian-Campuzano Jan 22, 2026
1b7805c
Added NakPdu implementaiton and UTs
Brian-Campuzano Jan 22, 2026
6a501bd
Added CfdpManager NackPdu UT
Brian-Campuzano Jan 22, 2026
6b85467
Refactor PDU tests to a new file
Brian-Campuzano Jan 22, 2026
fb0ceb8
Refactored test helpers to deserialize and validate PDUs
Brian-Campuzano Jan 22, 2026
2ae9028
Added class 1 TX transaction text
Brian-Campuzano Jan 23, 2026
1753f20
Added output PDU throttling
Brian-Campuzano Jan 23, 2026
0fbfd4c
Started a class 2 TX UT and added helper functions for uplinking PDUs
Brian-Campuzano Jan 23, 2026
b2ac193
Code cleanup
Brian-Campuzano Jan 23, 2026
2552beb
Debugging failed chunk allocation for class 2 transactions
Brian-Campuzano Jan 26, 2026
5dd5661
Updated class 1 transaction UT to expire the inactivity timer. Also s…
Brian-Campuzano Jan 26, 2026
db2f95a
Updated class 2 TX UT to have correct PDU ordering
Brian-Campuzano Jan 26, 2026
5254ed5
Added CFDP subtopology
Brian-Campuzano Jan 26, 2026
816055e
Completed TX class 2 transaction UT
Brian-Campuzano Jan 26, 2026
3fada10
Added class 2 transaction UT with a nack
Brian-Campuzano Jan 26, 2026
2a7b922
Refactor UTs to make them more readable
Brian-Campuzano Jan 26, 2026
838fe1d
Added a class 1 RX unit test
Brian-Campuzano Jan 26, 2026
9c9cd65
Added class 2 RX transaction UT
Brian-Campuzano Jan 27, 2026
97d5150
Add RX transaction UT with NAck
Brian-Campuzano Jan 27, 2026
0a4ba78
Refactored CfdpEngine into child-class of CfdpManager
Brian-Campuzano Jan 27, 2026
d81d623
Created CfdpChannel class
Brian-Campuzano Jan 28, 2026
17f90a9
Refactor CfdpEngineData to be CfdpEngine member variables
Brian-Campuzano Jan 28, 2026
0d55888
Moved CF_Channel_t data into CfdpChannel member variables. There is s…
Brian-Campuzano Jan 28, 2026
eed08fd
Fixed testMetaDataPdu UT
Brian-Campuzano Jan 28, 2026
8f144e2
Updated remaining PDU tests
Brian-Campuzano Jan 28, 2026
64e5f36
Removed lingering CF_Channel_t references and functions
Brian-Campuzano Jan 28, 2026
bab01f1
Created new CfdpTransaction class and skeletons
Brian-Campuzano Jan 28, 2026
668895e
Ported TX functions to new class
Brian-Campuzano Jan 29, 2026
4db19fb
Ported RX functions to new Transaciton class
Brian-Campuzano Jan 29, 2026
9a7465e
Additional transaction class rework
Brian-Campuzano Jan 29, 2026
054ab76
Refactor CfdpTransaction as stepping stone toward struct removal
Brian-Campuzano Jan 29, 2026
08769de
Moved CF dispatch functions into the CfdpTransaction class
Brian-Campuzano Jan 29, 2026
202b24b
Completed CfdpTransaction refactor
Brian-Campuzano Jan 29, 2026
aedd4cb
Rework memory initialization for better encapsulation
Brian-Campuzano Jan 29, 2026
2abe732
Friend class cleanup
Brian-Campuzano Jan 29, 2026
0db83af
Refactored CfdpChunk into a C++ class
Brian-Campuzano Jan 29, 2026
b6ddf58
Additional C++ refactor cleanup
Brian-Campuzano Jan 29, 2026
3cd0d9c
Moved CFDP types and renames Pdu folder to Types folder
Brian-Campuzano Jan 29, 2026
75a6688
Removed internal buffer test pool
Brian-Campuzano Jan 30, 2026
f82d309
Refactored Tx functions to use Pdu classes instead of the CF codec fu…
Brian-Campuzano Jan 30, 2026
93ea44d
Refactored Rx functions to use Pdu classes
Brian-Campuzano Jan 30, 2026
ecaddce
Completed deprecated codec removal and fixed UTs
Brian-Campuzano Jan 30, 2026
c954822
Added TLV support and refactor cleanup
Brian-Campuzano Jan 30, 2026
6e2b510
Added CF attribution file
Brian-Campuzano Jan 30, 2026
c921ebe
Removed PDU union wrapper in-favor of PDU class inheritance. Updated …
Brian-Campuzano Feb 3, 2026
2b0cb92
Cleanup post class refactor
Brian-Campuzano Feb 3, 2026
53c5eff
Code cleanup and file size type updates
Brian-Campuzano Feb 5, 2026
8eecaa1
Start of CF -> CFDP rename/refactor
Brian-Campuzano Feb 5, 2026
bf0133f
Remove last vestigages of CF types
Brian-Campuzano Feb 5, 2026
5507a57
Updated UTs post CF -> CFDP rename
Brian-Campuzano Feb 5, 2026
15929e9
Start of CFDP class addition, starting removal of deprecated CF types
Brian-Campuzano Feb 9, 2026
95971ad
Completed Cfdp namespace addition
Brian-Campuzano Feb 9, 2026
a450176
Consolidate Cfdp types to a single file
Brian-Campuzano Feb 9, 2026
59d6193
Renamed transaction files so they will sort correctly
Brian-Campuzano Feb 9, 2026
113aa04
Cleanup some todos and make comment style consistent
Brian-Campuzano Feb 9, 2026
3e34927
Added CFDP overview SDD section
Brian-Campuzano Feb 9, 2026
68c551c
Added port based file transfer requests similar to FileDownlink
Brian-Campuzano Feb 9, 2026
8c1ef2f
Added Tx port based file transfer UT
Brian-Campuzano Feb 9, 2026
c8b8737
Added additional UTs
Brian-Campuzano Feb 9, 2026
222d71a
Added ping port and fixed issues from fprime sync
Brian-Campuzano Feb 9, 2026
f11f36a
Added CfdpManager class diagram
Brian-Campuzano Feb 9, 2026
b9989f1
Fixed component class diagram
Brian-Campuzano Feb 9, 2026
86116d8
Reworked class diagram
Brian-Campuzano Feb 9, 2026
80ff04b
Added CfdpManager usage diagram and updated port naming to be consistent
Brian-Campuzano Feb 9, 2026
f809fcb
Playing with color themes
Brian-Campuzano Feb 9, 2026
6bd7920
Another theme iteration
Brian-Campuzano Feb 10, 2026
4ad0650
Added component design section
Brian-Campuzano Feb 10, 2026
0466a3c
Added TX transaction sequence diagrams
Brian-Campuzano Feb 10, 2026
b9f4d98
Added class 2 RX sequence diagram
Brian-Campuzano Feb 10, 2026
7b48ee8
Fixed bug in file deletion
Brian-Campuzano Feb 10, 2026
a311693
Added command and telemetry section
Brian-Campuzano Feb 10, 2026
bcbdd0c
Added proposed telemetry
Brian-Campuzano Feb 10, 2026
dbe7065
Populated requirements section
Brian-Campuzano Feb 10, 2026
c360794
SDD rework and added section numbers
Brian-Campuzano Feb 10, 2026
7eb48ee
Add configuration section to the SDD and took a pass at cleaning up t…
Brian-Campuzano Feb 10, 2026
2a9af07
First pass a getting the spell check to pass
Brian-Campuzano Feb 10, 2026
ba3a789
Another spelling iteration. EVS will be removed with F' events are im…
Brian-Campuzano Feb 10, 2026
130d4ae
Replace commented out cFE Events with F' Events
pepepr08 Feb 13, 2026
e40839f
Directly use Cfdp.Class for events
pepepr08 Feb 16, 2026
885487d
Remove recvAck()
pepepr08 Feb 17, 2026
e1c3dd1
Added TX/RX throttling SDD section and made class, keep, and priority…
Brian-Campuzano Feb 12, 2026
b39a8c8
Updated class 2 sequence diagrams to make timer values explicit. Also…
Brian-Campuzano Feb 19, 2026
6b42e1a
Added transaction management commands
Brian-Campuzano Feb 19, 2026
9f5c2d3
Move tmp_dir and fail_dir from global parameters to per-channel param…
Brian-Campuzano Feb 12, 2026
feb79d2
Purge the terms configuration table and wakeup which were CF terminology
Brian-Campuzano Feb 12, 2026
8db30ec
Added Deep Space Timer Configuration section to account for light spe…
Brian-Campuzano Feb 12, 2026
9c76d92
Added documentation on NAK behavior during file data transmission
Brian-Campuzano Feb 12, 2026
06f2229
Remove AI slop
Brian-Campuzano Feb 12, 2026
a4181ea
Rewording to make spell checker happy
Brian-Campuzano Feb 19, 2026
ce5d0e4
Swap SUSPEND and RESUME enum
pepepr08 Mar 26, 2026
790dd02
Clarify success criteria doesn't care about current state
pepepr08 Mar 26, 2026
5eb4087
Update transaction canceled comment
pepepr08 Mar 26, 2026
905429e
Implement CfdpManager telemetry
pepepr08 Feb 26, 2026
440b315
Send events when transaction completes successfully
pepepr08 Mar 5, 2026
49bc976
Add size to TxFileTransferStarted event
pepepr08 Mar 6, 2026
f0e620d
Update cached_pos right after successful file read
pepepr08 Mar 6, 2026
77870ad
Rename channel current transaction variable
pepepr08 Mar 12, 2026
7693fb3
Fix issue when reaching max_outgoing_pdus_per_cycle
pepepr08 Mar 12, 2026
c7ae709
Strip packet type descriptor before reading PDU
pepepr08 Apr 1, 2026
974cde6
Reset timer during CRC calculation period
pepepr08 Apr 6, 2026
24f214f
Connect CfdpManager directly to ComQueue
pepepr08 Apr 10, 2026
d4050db
Update defaults to speed up transactions
pepepr08 Apr 30, 2026
b40fde9
Add README to clarify the CFDP/Checksum usage
pepepr08 May 1, 2026
1c8fb28
Updating Documentation (port type)
pepepr08 May 1, 2026
97dc5c8
Spelling check update
pepepr08 May 1, 2026
a5a4b77
Increase PDU buffer size to include Descriptor
pepepr08 May 4, 2026
310525f
Add helper function for sending PDUs
pepepr08 May 4, 2026
e397fef
Move PDU Type Enum to FPP
pepepr08 May 5, 2026
8a72a58
Assert to nullptr instead of just NULL
pepepr08 May 8, 2026
40959a4
SpacePacketFramer/Deframer: add sequence flags support
shan-zh-26 Jul 17, 2026
2d07bc7
Update documentation for sequence flags support
shan-zh-26 Jul 20, 2026
828cfbe
Resolved packetSequenceControl CI RHEL8 issue
shan-zh-26 Jul 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions CFDP/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# CFDP Utilities

## Overview

This directory contains CFDP utility classes used by the F' Framework.

## Contents

- **Checksum/**: CCSDS CFDP-compliant 32-bit checksum implementation

## Where is CfdpManager?

The main CFDP protocol implementation is located at:

**`Svc/Ccsds/CfdpManager/`**

If you're looking for the CFDP file transfer component, you'll find it there.

## Why is Checksum here?

The Checksum utility is used by the F' Framework's FilePacket class (`Fw/FilePacket/FilePacket.hpp`), which predates the CfdpManager component and supports legacy file transfer components (FileUplink, FileDownlink). To maintain framework independence, Checksum cannot be moved into CfdpManager.

## Future

A long-term solution would be to relocate Checksum to a framework utilities directory (e.g., `Fw/Utils/`), further clarifying the architectural separation.
22 changes: 11 additions & 11 deletions Os/File.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,28 +29,28 @@ struct FileHandle {};
class FileInterface {
public:
enum Mode {
OPEN_NO_MODE, //!< File mode not yet selected
OPEN_READ, //!< Open file for reading
OPEN_NO_MODE, //!< File mode not yet selected
OPEN_READ, //!< Open file for reading
OPEN_CREATE, //!< Open file for writing and truncates file if it exists, ie same flags as creat()
OPEN_WRITE, //!< Open file for writing
OPEN_SYNC_WRITE, //!< Open file for writing; writes don't return until data is on disk
OPEN_WRITE, //!< Open file for writing
OPEN_SYNC_WRITE, //!< Open file for writing; writes don't return until data is on disk
OPEN_APPEND, //!< Open file for appending
MAX_OPEN_MODE //!< Maximum value of mode
};

enum Status {
OP_OK, //!< Operation was successful
DOESNT_EXIST, //!< File doesn't exist (for read)
NO_SPACE, //!< No space left
NO_PERMISSION, //!< No permission to read/write file
BAD_SIZE, //!< Invalid size parameter
NOT_OPENED, //!< file hasn't been opened yet
OP_OK, //!< Operation was successful
DOESNT_EXIST, //!< File doesn't exist (for read)
NO_SPACE, //!< No space left
NO_PERMISSION, //!< No permission to read/write file
BAD_SIZE, //!< Invalid size parameter
NOT_OPENED, //!< file hasn't been opened yet
FILE_EXISTS, //!< file already exist (for CREATE with O_EXCL enabled)
NOT_SUPPORTED, //!< Kernel or file system does not support operation
INVALID_MODE, //!< Mode for file access is invalid for current operation
INVALID_ARGUMENT, //!< Invalid argument passed in
NO_MORE_RESOURCES, //!< No more available resources
OTHER_ERROR, //!< A catch-all for other errors. Have to look in implementation-specific code
OTHER_ERROR, //!< A catch-all for other errors. Have to look in implementation-specific code
MAX_STATUS //!< Maximum value of status
};

Expand Down
1 change: 1 addition & 0 deletions Svc/Ccsds/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/TmFramer/")
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/AosFramer/")
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/AosDeframer/")
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/ApidManager/")
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/CfdpManager/")
58 changes: 58 additions & 0 deletions Svc/Ccsds/CfdpManager/ATTRIBUTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# CFDP Manager Attribution

This component implements the CCSDS File Delivery Protocol (CFDP) for F-Prime (F'). It includes both ported code from NASA's Core Flight System (cFS) CFDP application and new F' implementations.

## Source Attribution

Portions of this code are derived from the NASA Core Flight System (cFS) CFDP (CF) Application:
- **Repository**: https://github.com/nasa/CF
- **Version**: 3.0.0
- **License**: Apache License 2.0
- **Copyright**: Copyright (c) 2019 United States Government as represented by the Administrator of the National Aeronautics and Space Administration
- **NASA Docket**: GSC-18,447-1

## Files Ported from CF

The following files are ports/adaptations from CF source code and retain the original NASA copyright:

### Core Engine & Transaction Management
- `Engine.hpp` / `.cpp` - from `cf_cfdp.c` / `cf_cfdp.h`
- `Transaction.hpp` - from `cf_cfdp_r.h` / `cf_cfdp_s.h` / `cf_cfdp_dispatch.h`
- `TransactionTx.cpp` - from `cf_cfdp_s.c` / `cf_cfdp_dispatch.c`
- `TransactionRx.cpp` - from `cf_cfdp_r.c` / `cf_cfdp_dispatch.c`

### Data Structures & Utilities
- `Types/Types.hpp` - from `cf_cfdp_types.h`
- `Utils.hpp` / `.cpp` - from `cf_utils.h` / `cf_utils.c`
- `Channel.hpp` / `.cpp` - from channel functions in `cf_cfdp.c` / `cf_utils.c`
- `Chunk.hpp` / `.cpp` - from `cf_chunks.h` / `cf_chunks.c`
- `Clist.hpp` / `.cpp` - from `cf_clist.h` / `cf_clist.c`

Each of these files includes the full NASA copyright notice and Apache 2.0 license text in its header.

## New F-Prime Implementations

The following files are new implementations for F-Prime and do not contain CF-derived code:

### Integration Layer
- `CfdpManager.hpp` / `.cpp` - F-Prime component wrapper
- `Timer.hpp` / `.cpp` - F-Prime timer implementation

### PDU Object-Oriented Implementation
All files in the `Types/` directory are new F' serializable implementations based on the CFDP Blue Book specification (CCSDS 727.0-B-5):
- `Types/PduBase.hpp` - Base class for all PDU types
- `Types/PduHeader.hpp` / `.cpp` - PDU header encoding/decoding
- `Types/MetadataPdu.hpp` / `.cpp` - Metadata PDU
- `Types/FileDataPdu.hpp` / `.cpp` - File Data PDU
- `Types/EofPdu.hpp` / `.cpp` - End of File PDU
- `Types/FinPdu.hpp` / `.cpp` - Finished PDU
- `Types/AckPdu.hpp` / `.cpp` - Acknowledge PDU
- `Types/NakPdu.hpp` / `.cpp` - Negative Acknowledge PDU

These files implement CFDP PDU encoding/decoding based on the specification rather than porting CF's C-style codec.

## License

This component as a whole is licensed under the Apache License 2.0. See the top-level [LICENSE.txt](../../../LICENSE.txt) for the full license text.

The CF-derived portions retain their original NASA copyright and Apache 2.0 license as documented in their file headers.
43 changes: 43 additions & 0 deletions Svc/Ccsds/CfdpManager/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
####
# F Prime CMakeLists.txt:
#
# SOURCES: list of source files (to be compiled)
# AUTOCODER_INPUTS: list of files to be passed to the autocoders
# DEPENDS: list of libraries that this module depends on
#
# More information in the F´ CMake API documentation:
# https://fprime.jpl.nasa.gov/latest/docs/reference/api/cmake/API/
#
####

register_fprime_library(
AUTOCODER_INPUTS
"${CMAKE_CURRENT_LIST_DIR}/CfdpManager.fpp"
SOURCES
"${CMAKE_CURRENT_LIST_DIR}/CfdpManager.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Engine.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Chunk.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Clist.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Utils.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Timer.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Channel.cpp"
"${CMAKE_CURRENT_LIST_DIR}/TransactionTx.cpp"
"${CMAKE_CURRENT_LIST_DIR}/TransactionRx.cpp"
DEPENDS
CFDP_Checksum
Svc_Ccsds_CfdpManager_Types
)

### Subdirectories ###
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Types/")

### Unit Tests ###
register_fprime_ut(
AUTOCODER_INPUTS
"${CMAKE_CURRENT_LIST_DIR}/CfdpManager.fpp"
SOURCES
"${CMAKE_CURRENT_LIST_DIR}/test/ut/CfdpManagerTestMain.cpp"
"${CMAKE_CURRENT_LIST_DIR}/test/ut/CfdpManagerTester.cpp"
"${CMAKE_CURRENT_LIST_DIR}/test/ut/PduTester.cpp"
UT_AUTO_HELPERS
)
Loading