Svc/Subtopologies/FileHandling/docs/sdd.md
The FileHandling subtopology packages the core file-transfer services commonly needed in F´ deployments: file uplink (ground → flight), file downlink (flight → ground), on-board file management, and parameter management via filesystem. By providing these as a pre-wired subgraph, integration engineers avoid repetitive wiring and get a consistent, reusable baseline for file operations.
| ID | Description | Validation |
|---|---|---|
| SVC-FILEHANDLING-001 | The subtopology shall provide file uplink functionality to receive and reconstruct files from ground. | Inspection |
| SVC-FILEHANDLING-002 | The subtopology shall provide file downlink functionality to segment and transmit files to ground. | Inspection |
| SVC-FILEHANDLING-003 | The subtopology shall provide on-board file management functionality (e.g., list, remove, hash, mkdir). | Inspection |
| SVC-FILEHANDLING-004 | The subtopology shall provide parameter management via the filesystem. | Inspection |
| SVC-FILEHANDLING-005 | The subtopology shall support configurable instance properties (IDs, queue sizes, stack sizes, priorities, CPU affinities). | Inspection |
| SVC-FILEHANDLING-006 | The subtopology shall expose rate-group connection points for any rate-drive components it contains. | Inspection |
| Instance name | Type (Svc) | Kind | Purpose (core function) |
|---|---|---|---|
fileUplink | FileUplink | Active | Ingest deframed file packets; reconstruct files. |
fileDownlink | FileDownlink | Active | Read files; segment into packets for downlink. |
fileManager | FileManager | Active | Local file operations. |
prmDb | PrmDb | Active | Filesystem based parameter management. |
FileHandlingConfig for these static instances (see §4).fileDownlink.FileHandling::prmDb.configure(<file name>) from your topology setup code before parameters are loaded; the subtopology does not set a file name itself, and PrmDb asserts if parameters are read or saved without one.ComCcsds, ComFprime, FramingFprime, FramingCcsds) to complete uplink/downlink paths.[!WARNING] This subtopology is not configured to be secure by default. For backwards compatibility, it intentionally does not configure the file-access sandboxes of its components, leaving them fail-open:
fileUplinkmay write,fileDownlinkmay read, andprmDb(PRM_LOAD_FILE) may load from any absolute path accessible to the process via ground command. Security-conscious deployments must call the following from topology setup code:
FileHandling::fileUplink.configure(<directory>)— restrict uplinked file writes.FileHandling::fileDownlink.configure(<directory>)— restrict downlink reads (note: theconfigure(cooldown, cycleTime, fileQueueDepth)overload called by this subtopology does not set a sandbox).FileHandling::prmDb.configureLoadSandbox(<directory>)— restrictPRM_LOAD_FILEreads (note:prmDb.configure(<file name>)sets the store-file name and is not a load sandbox).
Focused on file transfer and on-board file ops only. It does not provide general uplink/downlink routing for non-file traffic, framing/deframing for non-file data, or broader CDH services.
topology Flight {
instance FileHandling.Subtopology
param connections instance FileHandling.prmDb
# Schedule the active/queued file components (example)
connections RateGroups {
rg.RateGroupMemberOut[0] -> FileHandling.Subtopology.fileDownlinkRun
}
connections ComCcsds_FileHandling {
# File Downlink <-> ComQueue
FileHandling.Subtopology.fileDownlinkBufferSendOut -> ComCcsds.Subtopology.bufferQueueIn[ComCcsds.Ports_ComBufferQueue.FILE]
ComCcsds.Subtopology.bufferReturnOut[ComCcsds.Ports_ComBufferQueue.FILE] -> FileHandling.Subtopology.fileDownlinkBufferReturn
# Router <-> FileUplink
ComCcsds.Subtopology.fileUplinkOut -> FileHandling.Subtopology.fileUplinkBufferSendIn
FileHandling.Subtopology.fileUplinkBufferSendOut -> ComCcsds.Subtopology.fileUplinkReturnIn
}
Configure only the instance properties for the static instances owned by the subtopology. All knobs live under:
Svc/Subtopologies/FileHandling/FileHandlingConfig/FileHandlingConfig.fpp. The generated constants header for this module (e.g.,FppConstantsAc.hpp) reflects these settings. ([FPrime][2])
FileHandlingConfig.fpp)fileUplink, fileDownlink, fileManager.fileUplink, fileDownlink).TASK_DEFAULT (no pinning).These knobs tailor runtime footprint and scheduling without modifying the subtopology wiring.
| Requirement ID | Satisfied by |
|---|---|
| SVC-FILEHANDLING-001 | fileUplink — Svc.FileUplink |
| SVC-FILEHANDLING-002 | fileDownlink — Svc.FileDownlink |
| SVC-FILEHANDLING-003 | fileManager — Svc.FileManager |
| SVC-FILEHANDLING-004 | prmDb — Svc.PrmDb |
| SVC-FILEHANDLING-005 | FileHandlingConfig (instance properties) |
| SVC-FILEHANDLING-006 | Run/scheduling connection specifiers |