Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
185 commits
Select commit Hold shift + click to select a range
fea5c79
Added CfdpManager skeleton
Brian-Campuzano Dec 12, 2025
7210036
Copy PDU packet layer as-is
Brian-Campuzano Dec 12, 2025
e43b38a
Bring in other header dependencies
Brian-Campuzano Dec 15, 2025
2600d2f
Updates to get the packet layer to compile
Brian-Campuzano Dec 16, 2025
4f88fcc
Bring in CFDP engine files
Brian-Campuzano Dec 16, 2025
a3e5388
Bring in addititional CF depedencies and refactor CF asserts into FW_…
Brian-Campuzano Dec 16, 2025
f37d4af
c -> c++ updates
Brian-Campuzano Dec 16, 2025
9ad7fa3
c to c++ conversion checkpoint
Brian-Campuzano Dec 17, 2025
7e2cb25
Os directory checkpoint
Brian-Campuzano Dec 17, 2025
430d729
Add custom timer soloution to replace CFE timer implementation
Brian-Campuzano Dec 18, 2025
9c87f41
Os File stub completion
Brian-Campuzano Dec 18, 2025
feedb58
Update CRC
Brian-Campuzano Dec 18, 2025
1551013
Added buffer management and removed pipes/semaphores
Brian-Campuzano Dec 19, 2025
46071c6
Beggining of buffer refactor
Brian-Campuzano Dec 19, 2025
69c38ad
Buffer management checkpoint
Brian-Campuzano Dec 19, 2025
331d83c
Brought in cf_utils for list traversals
Brian-Campuzano Dec 19, 2025
3757bf6
Convert CfdpEngine into a class
Brian-Campuzano Dec 22, 2025
cd7e799
Revert "Convert CfdpEngine into a class"
Brian-Campuzano Dec 22, 2025
a9fe74c
Additional CFE OS stubs
Brian-Campuzano Dec 22, 2025
9d06019
Fixed container pointer arithmatic for C++
Brian-Campuzano Dec 23, 2025
4c50ca8
Completed refactor of cf_utils
Brian-Campuzano Dec 23, 2025
69fe755
Beginning of adding parameters
Brian-Campuzano Dec 23, 2025
8356a3e
Refactor CF_CFDP_S_CheckAndRespondNak to separate out error logic and…
Brian-Campuzano Dec 26, 2025
ccfb9ae
CFDP send checkpoint
Brian-Campuzano Dec 26, 2025
739eb7a
Completed CFDP send updates
Brian-Campuzano Dec 26, 2025
d26b713
Completed CFDP receive refactor
Brian-Campuzano Dec 29, 2025
ef241a2
CFDP refactor checkpoint
Brian-Campuzano Dec 30, 2025
1ea5039
Playback directory checkpoint
Brian-Campuzano Dec 30, 2025
e1f5f25
CfdpManager compiles!
Brian-Campuzano Dec 31, 2025
ade7fb2
Added PDU receive data paths/hooks
Brian-Campuzano Jan 2, 2026
53f8236
CF -> CFDP file rename
Brian-Campuzano Jan 2, 2026
3fad49c
CF -> CFDP file rename complete
Brian-Campuzano Jan 2, 2026
543f2e7
Remove header comments
Brian-Campuzano Jan 2, 2026
710cf82
Refactor CFDP variable size types
Brian-Campuzano Jan 5, 2026
0b5b839
Refactor default_cf_extern_typedefs.hpp into CfdpTypes.fpp and CfdpTy…
Brian-Campuzano Jan 5, 2026
4cbf3ab
Refactor default_cf_interface_cfg.hpp to CfdpCfg.hpp
Brian-Campuzano Jan 5, 2026
d3a93ba
Revert history init
Brian-Campuzano Jan 5, 2026
29939f4
Move CFDP types and configs
Brian-Campuzano Jan 5, 2026
74a0c2e
UT skeleton
Brian-Campuzano Jan 5, 2026
b1c8af0
Split parameters to separate include file
Brian-Campuzano Jan 5, 2026
6ac17b4
Implemented the SendFile command
Brian-Campuzano Jan 6, 2026
9ac0f43
Added CFDP playback directory command
Brian-Campuzano Jan 6, 2026
a3f8ee8
Added freeze/thaw command
Brian-Campuzano Jan 6, 2026
d94df63
Add buffer return for failure to send case
Brian-Campuzano Jan 6, 2026
0a544de
Added polling directory commands
Brian-Campuzano Jan 6, 2026
2668bab
Fixed comment offsets
Brian-Campuzano Jan 6, 2026
d7d7622
Converted CF_WrappedOpenCreate calls to Os::File::open
Brian-Campuzano Jan 6, 2026
155e8b5
Convert CF_WrappedWrite to Os::File::write
Brian-Campuzano Jan 6, 2026
27df902
Replaced CF_WrappedRead with Os::File::Read
Brian-Campuzano Jan 6, 2026
c921a51
Replaced CF_WrappedClose with Os::File::close
Brian-Campuzano Jan 6, 2026
e18bb88
Replaced OS_ObjectIdDefined with Os::File::isOpen
Brian-Campuzano Jan 6, 2026
fe08fa2
Replaced CF_WrappedLseek with Os::File::seek
Brian-Campuzano Jan 7, 2026
6497c81
Refactor CF_CFDP_MoveFile to Os::FileSystem::moveFile + string refact…
Brian-Campuzano Jan 7, 2026
01f2cc5
Refactored OS_remove to Os::FileSystem::removeFile
Brian-Campuzano Jan 7, 2026
37b036c
Refactored OS_mv to Os::FileSystem::moveFile
Brian-Campuzano Jan 7, 2026
6fab913
Replaced OS_DirectoryOpen with Os::Directory::open
Brian-Campuzano Jan 7, 2026
8a287cc
Replaced OS_DirectoryRead with Os::Directory::read
Brian-Campuzano Jan 7, 2026
b331ef5
Replaced OS_DirectoryClose with Os::Directory::close
Brian-Campuzano Jan 7, 2026
868c4ca
Deleted CfeStubs
Brian-Campuzano Jan 8, 2026
1ee2a22
Remove CfeStubs.hpp includes and add CfdpMaxPduSize constants
Brian-Campuzano Jan 15, 2026
1f6083d
Data pointer refactor to remove void*
Brian-Campuzano Jan 16, 2026
590ea13
Rework receive init to use Fw::String
Brian-Campuzano Jan 16, 2026
bbbb6cd
Fix compilation errors
Brian-Campuzano Jan 16, 2026
86a4b49
Made include paths absolute and moved file size type def to config
Brian-Campuzano Jan 21, 2026
732ac69
Added separate metadata serailizable
Brian-Campuzano Jan 21, 2026
8a7654e
Rework enums that did not need to serializables
Brian-Campuzano Jan 22, 2026
3f39ef6
Completed metadata UT
Brian-Campuzano Jan 22, 2026
4788860
Split PDUs to separate whitespace
Brian-Campuzano Jan 22, 2026
e49539b
Added FileData PDU and UTs
Brian-Campuzano Jan 22, 2026
409a99e
Added file data PDU test
Brian-Campuzano Jan 22, 2026
ae8b574
Added end-of-file PDU and UTs
Brian-Campuzano Jan 22, 2026
3a129c9
Added missing file
Brian-Campuzano Jan 22, 2026
598951e
Added end of file PDU UT to CfdpManager
Brian-Campuzano Jan 22, 2026
0be648c
Refactor UTs to separate out validation functions
Brian-Campuzano Jan 22, 2026
d512ef1
Implemented FinPdu class and UTs
Brian-Campuzano Jan 22, 2026
48f7ef6
Added CfdpManager FinPdu UT
Brian-Campuzano Jan 22, 2026
91be718
Added AckPdu implementation and UTs
Brian-Campuzano Jan 22, 2026
0bfb001
Added AckPdu UT for CfdpManager
Brian-Campuzano Jan 22, 2026
fba8b22
Added missing CRC check
Brian-Campuzano Jan 22, 2026
7c8af63
Added NakPdu implementaiton and UTs
Brian-Campuzano Jan 22, 2026
2ce3bc3
Added CfdpManager NackPdu UT
Brian-Campuzano Jan 22, 2026
9642f74
Refactor PDU tests to a new file
Brian-Campuzano Jan 22, 2026
44108bf
Refactored test helpers to deserialize and validate PDUs
Brian-Campuzano Jan 22, 2026
dd11db9
Added class 1 TX transaction text
Brian-Campuzano Jan 23, 2026
af0f1bc
Added output PDU throttling
Brian-Campuzano Jan 23, 2026
4e8d696
Started a class 2 TX UT and added helper functions for uplinking PDUs
Brian-Campuzano Jan 23, 2026
c48a9bd
Code cleanup
Brian-Campuzano Jan 23, 2026
9b5b504
Debugging failed chunk allocation for class 2 transactions
Brian-Campuzano Jan 26, 2026
f182891
Updated class 1 transaction UT to expire the inactivity timer. Also s…
Brian-Campuzano Jan 26, 2026
5d01adf
Updated class 2 TX UT to have correct PDU ordering
Brian-Campuzano Jan 26, 2026
23a219e
Added CFDP subtopology
Brian-Campuzano Jan 26, 2026
5061c01
Completed TX class 2 transaction UT
Brian-Campuzano Jan 26, 2026
0c20f12
Added class 2 transaction UT with a nack
Brian-Campuzano Jan 26, 2026
128c635
Refactor UTs to make them more readable
Brian-Campuzano Jan 26, 2026
1e4fa60
Added a class 1 RX unit test
Brian-Campuzano Jan 26, 2026
eb83642
Added class 2 RX transaction UT
Brian-Campuzano Jan 27, 2026
f9bddd2
Add RX transaction UT with NAck
Brian-Campuzano Jan 27, 2026
2090e33
Refactored CfdpEngine into child-class of CfdpManager
Brian-Campuzano Jan 27, 2026
b188146
Created CfdpChannel class
Brian-Campuzano Jan 28, 2026
2e9b2c6
Refactor CfdpEngineData to be CfdpEngine member variables
Brian-Campuzano Jan 28, 2026
104ff16
Moved CF_Channel_t data into CfdpChannel member variables. There is s…
Brian-Campuzano Jan 28, 2026
b95c593
Fixed testMetaDataPdu UT
Brian-Campuzano Jan 28, 2026
1e1f7f3
Updated remaining PDU tests
Brian-Campuzano Jan 28, 2026
b8aaf7b
Removed lingering CF_Channel_t references and functions
Brian-Campuzano Jan 28, 2026
aab3cce
Created new CfdpTransaction class and skeletons
Brian-Campuzano Jan 28, 2026
9f075b5
Ported TX functions to new class
Brian-Campuzano Jan 29, 2026
f295d6f
Ported RX functions to new Transaciton class
Brian-Campuzano Jan 29, 2026
d593b66
Additional transaction class rework
Brian-Campuzano Jan 29, 2026
3ff48f6
Refactor CfdpTransaction as stepping stone toward struct removal
Brian-Campuzano Jan 29, 2026
f062e00
Moved CF dispatch functions into the CfdpTransaction class
Brian-Campuzano Jan 29, 2026
2e076ac
Completed CfdpTransaction refactor
Brian-Campuzano Jan 29, 2026
a2d87c5
Rework memory initialization for better encapsulation
Brian-Campuzano Jan 29, 2026
eabed81
Friend class cleanup
Brian-Campuzano Jan 29, 2026
df34674
Refactored CfdpChunk into a C++ class
Brian-Campuzano Jan 29, 2026
5d18ba9
Additional C++ refactor cleanup
Brian-Campuzano Jan 29, 2026
6730a7e
Moved CFDP types and renames Pdu folder to Types folder
Brian-Campuzano Jan 29, 2026
08c5d75
Removed internal buffer test pool
Brian-Campuzano Jan 30, 2026
e6b0e1e
Refactored Tx functions to use Pdu classes instead of the CF codec fu…
Brian-Campuzano Jan 30, 2026
c708389
Refactored Rx functions to use Pdu classes
Brian-Campuzano Jan 30, 2026
031e5e7
Completed deprecated codec removal and fixed UTs
Brian-Campuzano Jan 30, 2026
38e41a7
Added TLV support and refactor cleanup
Brian-Campuzano Jan 30, 2026
42634fc
Added CF attribution file
Brian-Campuzano Jan 30, 2026
614fbdd
Removed PDU union wrapper in-favor of PDU class inheritance. Updated …
Brian-Campuzano Feb 3, 2026
b627b2e
Cleanup post class refactor
Brian-Campuzano Feb 3, 2026
b02d9cf
Code cleanup and file size type updates
Brian-Campuzano Feb 5, 2026
cd3a1f0
Start of CF -> CFDP rename/refactor
Brian-Campuzano Feb 5, 2026
8a41bd3
Remove last vestigages of CF types
Brian-Campuzano Feb 5, 2026
153ea5e
Updated UTs post CF -> CFDP rename
Brian-Campuzano Feb 5, 2026
8bf4634
Start of CFDP class addition, starting removal of deprecated CF types
Brian-Campuzano Feb 9, 2026
4bea27c
Completed Cfdp namespace addition
Brian-Campuzano Feb 9, 2026
ab2350d
Consolidate Cfdp types to a single file
Brian-Campuzano Feb 9, 2026
a71a994
Renamed transaction files so they will sort correctly
Brian-Campuzano Feb 9, 2026
cf18349
Cleanup some todos and make comment style consistent
Brian-Campuzano Feb 9, 2026
99778fe
Added CFDP overview SDD section
Brian-Campuzano Feb 9, 2026
1e6e1db
Added port based file transfer requests similar to FileDownlink
Brian-Campuzano Feb 9, 2026
b017ae8
Added Tx port based file transfer UT
Brian-Campuzano Feb 9, 2026
e83fb1e
Added additional UTs
Brian-Campuzano Feb 9, 2026
1ed86df
Added ping port and fixed issues from fprime sync
Brian-Campuzano Feb 9, 2026
fb44beb
Added CfdpManager class diagram
Brian-Campuzano Feb 9, 2026
aab447f
Fixed component class diagram
Brian-Campuzano Feb 9, 2026
e805ae9
Reworked class diagram
Brian-Campuzano Feb 9, 2026
b6537f0
Added CfdpManager usage diagram and updated port naming to be consistent
Brian-Campuzano Feb 9, 2026
1febea0
Playing with color themes
Brian-Campuzano Feb 9, 2026
f9f813a
Another theme iteration
Brian-Campuzano Feb 10, 2026
bb1dfa9
Added component design section
Brian-Campuzano Feb 10, 2026
e837b67
Added TX transaction sequence diagrams
Brian-Campuzano Feb 10, 2026
ea03d2e
Added class 2 RX sequence diagram
Brian-Campuzano Feb 10, 2026
ad4cd84
Fixed bug in file deletion
Brian-Campuzano Feb 10, 2026
53d9f2b
Added command and telemetry section
Brian-Campuzano Feb 10, 2026
44a3921
Added proposed telemetry
Brian-Campuzano Feb 10, 2026
98a26ad
Populated requirements section
Brian-Campuzano Feb 10, 2026
6d5139a
SDD rework and added section numbers
Brian-Campuzano Feb 10, 2026
cad4531
Add configuration section to the SDD and took a pass at cleaning up t…
Brian-Campuzano Feb 10, 2026
0c402f3
First pass a getting the spell check to pass
Brian-Campuzano Feb 10, 2026
8e39947
Added new CFDP terms
Brian-Campuzano Feb 10, 2026
6d79e11
Another spelling iteration. EVS will be removed with F' events are im…
Brian-Campuzano Feb 10, 2026
a3505e4
Fix spelling goofs
Brian-Campuzano Feb 10, 2026
9c64fa5
Removed duplicate spelling exceptions
Brian-Campuzano Feb 13, 2026
ecbe333
Replace commented out cFE Events with F' Events
Feb 13, 2026
a96f293
Directly use Cfdp.Class for events
Feb 16, 2026
b0d5040
Remove recvAck()
Feb 17, 2026
ad0a6d6
Added TX/RX throttling SDD section and made class, keep, and priority…
Brian-Campuzano Feb 12, 2026
49a6b85
Updated class 2 sequence diagrams to make timer values explicit. Also…
Brian-Campuzano Feb 19, 2026
8f17d01
Added transaction management commands
Brian-Campuzano Feb 19, 2026
89b2ae1
Move tmp_dir and fail_dir from global parameters to per-channel param…
Brian-Campuzano Feb 12, 2026
0cbb6fe
Purge the terms configuration table and wakeup which were CF terminology
Brian-Campuzano Feb 12, 2026
35ba5c6
Added Deep Space Timer Configuration section to account for light spe…
Brian-Campuzano Feb 12, 2026
794d41b
Added documentation on NAK behavior during file data transmission
Brian-Campuzano Feb 12, 2026
bd0dcdd
Remove AI slop
Brian-Campuzano Feb 12, 2026
f702d35
Rewording to make spell checker happy
Brian-Campuzano Feb 19, 2026
0901d83
Swap SUSPEND and RESUME enum
Mar 26, 2026
8ff8223
Clarify success criteria doesn't care about current state
Mar 26, 2026
06b0ba0
Update transaction canceled comment
Mar 26, 2026
ee7772c
Implement CfdpManager telemetry
Feb 26, 2026
59d0a70
Send events when transaction completes successfully
Mar 5, 2026
753158a
Add size to TxFileTransferStarted event
Mar 6, 2026
59c6a87
Update cached_pos right after successful file read
Mar 6, 2026
5a281d5
Rename channel current transaction variable
Mar 12, 2026
ccc3798
Fix issue when reaching max_outgoing_pdus_per_cycle
Mar 12, 2026
8cb4c21
Strip packet type descriptor before reading PDU
Apr 1, 2026
8c886c0
Reset timer during CRC calculation period
Apr 6, 2026
047d93b
Fix spelling check CI pipeline
Apr 7, 2026
b971f32
Connect CfdpManager directly to ComQueue
Apr 10, 2026
99340f8
Remove duplicate words
Apr 16, 2026
6634aac
Update defaults to speed up transactions
Apr 30, 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
43 changes: 42 additions & 1 deletion .github/actions/spelling/expect.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
Aadil
AArray
acknak
AClass
ACTIVERATEGROUP
ACTIVERATEGROUPCFG
Expand Down Expand Up @@ -75,13 +76,16 @@ CBLOCK
CCACHE
CCB
CComponent
CCs
ccsds
ccsparc
cdh
CDHCORE
CDHCORESUBTOPOLOGY
cerrno
CFDP
cfdp
CFDPMANAGER
CFDPTIMER
cff
cflag
cfsetispeed
Expand All @@ -91,7 +95,9 @@ Chieu
CHIPINFO
CHK
CHNG
chunklist
CIRCULARSTATE
clist
CLOSEFILE
cloudbees
CMDDISP
Expand Down Expand Up @@ -166,11 +172,13 @@ deployables
DEPRECATEDLIST
deser
Deserial
destq
DEVICESM
DHTML
diafile
diles
dinkel
diropen
dnf
dnp
docbook
Expand Down Expand Up @@ -208,6 +216,7 @@ eay
ECLIPSEHELP
EEnum
EHAs
eid
eip
Elts
emptydir
Expand All @@ -217,6 +226,7 @@ endmacro
endraw
enduml
EPP
eod
ERRORCHECK
errornum
ert
Expand All @@ -231,6 +241,8 @@ evt
externalproject
FAKELOGGER
fbuild
fdir
fdirective
FDISP
fdp
featherm
Expand All @@ -247,15 +259,21 @@ FILEDISPATCHERCFG
FILEDOWNLINK
FILEDOWNLINKCFG
FILEHANDLING
FILEHANDLINGCFDP
FILEHANDLINGCFDPSUBTOPOLOGY
FILEHANDLINGSUBTOPOLOGY
FILEID
FILEMANAGERCONFIG
FILEOPENERROR
filestore
FILEWRITEERROR
finack
fio
fle
fnames
FNDELAY
fne
foffs
fontcolor
FONTPATH
foodoodie
Expand All @@ -279,6 +297,7 @@ freeram
Fregoso
frsize
fsblkcnt
fsize
fsw
FWCASSERT
gcda
Expand All @@ -305,6 +324,7 @@ Graphviz
grayscales
GROUNDINTERFACERULES
GSE
GSW
gtags
gtest
gtimeout
Expand Down Expand Up @@ -412,6 +432,7 @@ lseek
LTK
lvar
LVL
LVs
lxml
MACROFILE
MACROSTART
Expand Down Expand Up @@ -453,6 +474,7 @@ mutexattr
Mutexed
muxed
mycompany
NAKs
nasafprime
nbits
ncsl
Expand Down Expand Up @@ -529,6 +551,7 @@ PKTS
plainnat
plantuml
PNGs
polldir
pollfd
POLLIN
POLYDB
Expand Down Expand Up @@ -560,8 +583,10 @@ projectnumber
propget
propput
protothreading
psn
ptbool
ptf
PTFO
pthread
ptrt
pvn
Expand All @@ -570,6 +595,7 @@ qhelpgenerator
QHG
qhp
qsf
queueidx
RAII
randtbl
raspberrypi
Expand Down Expand Up @@ -602,11 +628,14 @@ Rizvi
ROOTDIR
rpi
rptr
rsp
RSubstate
SAlias
sanitizers
sats
SBF
SBINDIR
sbintf
sbom
scid
scm
Expand Down Expand Up @@ -659,7 +688,9 @@ sqa
srandom
SRCS
sreddy
sret
sss
SSubstate
STAMEM
startuml
stdbool
Expand Down Expand Up @@ -692,6 +723,8 @@ tabdnp
tabkermit
tagfile
tbase
tbd
tbl
tcanham
tcflush
tcgetattr
Expand Down Expand Up @@ -728,16 +761,21 @@ TLMPACKET
TLMPACKETIZER
TLMPACKETIZERCOMPONENTIMPLCFG
TLMPACKETIZERTYPES
tlv
TODOLIST
TOKENBUCKETTESTER
topologydefs
totalram
tparam
TPP
trinomials
tsn
tts
Tumbar
tumbar
txa
txm
txw
typedef
typedef'ed
uart
Expand All @@ -747,6 +785,7 @@ uge
uitofp
UML
umod
unack
unconfigured
UNEXP
unistd
Expand Down Expand Up @@ -777,6 +816,7 @@ WORKDIR
wrs
wxgui
wxy
XACT
Xapian
XBee
xdf
Expand All @@ -786,3 +826,4 @@ xxxx
XXYY
ziext
zimri

3 changes: 3 additions & 0 deletions .github/actions/spelling/patterns.txt
Original file line number Diff line number Diff line change
Expand Up @@ -146,3 +146,6 @@ TeX/AMS
# .get...() .set...() autocoded functions
\.get\w+\(
\.set\w+\(

# CCSDS specification version numbers (e.g., CCSDS 727.0-B-5)
\bCCSDS\s+\d+\.\d+-[A-Z]-\d+(?:\s+section\s+\d+(?:\.\d+)?)?(?:,\s+section\s+\d+(?:\.\d+)?(?:,\s+table\s+[-\d]+)?)?
22 changes: 11 additions & 11 deletions Os/File.hpp
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you do a pass to make sure that there's no diff where there doesn't need to be?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Brian-Campuzano Any chance you remember why it was needed to fix the comment offsets? 2668bab

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pretty sure it was just the inconsistency triggering my OCD.

Original file line number Diff line number Diff line change
Expand Up @@ -27,28 +27,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 @@ -6,3 +6,4 @@ add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/TcDeframer/")
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/TmFramer/")
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/AosFramer/")
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
Loading