Skip to content

Commit 4155d17

Browse files
Address review comments: fix VCID description, simplify osal.md, add missing links, remove implementation details from framework.md, remove system-services.md
- ccsds-protocol.md: Fix VCID limitation to reflect that multiple VCIDs can be received but all route to same uplink path in default config - osal.md: Replace with brief page linking to OSAL SDD (was duplicating it) - index.md: Add links to Dictionary and Sequencing entries - framework.md: Remove implementation-detail sections (Communication Buffers, File Packets, Data Structures) keeping only first-class concepts - system-services.md: Remove page (arbitrary grouping of unrelated components) Co-Authored-By: michael.d.starch <michael.d.starch@jpl.nasa.gov>
1 parent dbafff5 commit 4155d17

5 files changed

Lines changed: 8 additions & 135 deletions

File tree

docs/reference/system-functional/ccsds-protocol.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ By default, APIDs are assigned based on the F Prime data descriptor type (comman
3333

3434
### TM Space Data Link Protocol
3535

36-
The TM Framer implements the CCSDS Telemetry (TM) Space Data Link Protocol (132.0-B-3) for downlink. It wraps payload data (such as Space Packets) into TM Transfer Frames for transmission over the space link. The current implementation supports a single Virtual Channel Identifier (VCID).
36+
The [TM Framer](https://github.com/nasa/fprime/blob/devel/Svc/Ccsds/TmFramer/docs/sdd.md) implements the CCSDS Telemetry (TM) Space Data Link Protocol (132.0-B-3) for downlink. It wraps payload data (such as Space Packets) into TM Transfer Frames for transmission over the space link.
3737

3838
### TC Space Data Link Protocol
3939

@@ -51,7 +51,7 @@ The CCSDS components can be stacked to provide multiple protocol layers. A typic
5151

5252
The current CCSDS implementation does not support:
5353

54-
- Multiple Virtual Channel Identifiers (VCIDs) — only a single VCID is available per TM Framer or TC Deframer instance.
54+
- Per-VCID routing — Multiple VCIDs can be received, but the default configuration routes all VCIDs to the same uplink path. Missions requiring per-VCID routing must provide a custom routing configuration.
5555

5656
### Off Nominal
5757

docs/reference/system-functional/framework.md

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@
1212
- [Fw::Prm SDD](https://github.com/nasa/fprime/blob/devel/Fw/Prm/docs/sdd.md)
1313
- [Fw::Time SDD](https://github.com/nasa/fprime/blob/devel/Fw/Time/docs/sdd.md)
1414
- [Fw::Buffer SDD](https://github.com/nasa/fprime/blob/devel/Fw/Buffer/docs/sdd.md)
15-
- [Fw::Com SDD](https://github.com/nasa/fprime/blob/devel/Fw/Com/docs/sdd.md)
1615
- [Fw::Dp SDD](https://github.com/nasa/fprime/blob/devel/Fw/Dp/docs/sdd.md)
17-
- [Fw::FilePacket SDD](https://github.com/nasa/fprime/blob/devel/Fw/FilePacket/docs/sdd.md)
18-
- [Fw::DataStructures SDD](https://github.com/nasa/fprime/blob/devel/Fw/DataStructures/docs/sdd.md)
1916
- [FPP User Guide](https://nasa.github.io/fpp/fpp-users-guide.html)
2017

2118
## Overview
@@ -96,10 +93,6 @@ The framework provides a time representation that includes a time base (project-
9693

9794
The framework provides a buffer type that wraps a pointer to allocated memory along with its size and an origin-tracking context value. Buffers avoid copying data by passing references to allocated memory between components. The framework defines ports for requesting buffers from a buffer manager and for sending buffers between components. Buffers must be checked for validity before use, as allocation may fail. See [Buffer Management](buffer-management.md) for allocation strategies.
9895

99-
### Communication Buffers
100-
101-
Communication buffers provide the serialization containers for data that is transmitted between the flight software and external systems. The framework defines a base packet class with type identification and a communication buffer class for holding serialized packet data. Command packets, telemetry packets, and other data types extend this base for their specific needs. See [Communication Stack](communication.md) for the data path between flight software and external systems.
102-
10396
### Data Products
10497

10598
Data products are structured file data intended for downlink. The framework defines:
@@ -109,14 +102,6 @@ Data products are structured file data intended for downlink. The framework defi
109102

110103
The serialized container format includes a header, a header hash for integrity, data records, and a data hash. Ports are provided for requesting, getting, sending, and responding to data product buffer operations. See [Data Products](data-products.md) for the full lifecycle.
111104

112-
### File Packets
113-
114-
File packets provide the serialization format for transferring files between the flight software and ground system. This supports both uplink (ground to flight) and downlink (flight to ground) file transfers. See [File Management](file-management.md) for file transfer operations.
115-
116-
### Data Structures
117-
118-
The framework provides reusable data structure implementations including maps and other collections used internally by framework services and components.
119-
120105
### State Machines
121106

122107
The framework includes support for hierarchical state machines that can be attached to components. State machines are defined in FPP models and auto-generated into C++ implementations. They provide a structured way to manage complex component behavior with well-defined states, transitions, and actions.

docs/reference/system-functional/index.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ The system functional documentation provides a functional or capability descript
1111
### Core
1212

1313
- __[Framework](framework.md)__ - Core types, ports, components, serialization, commands, events, telemetry, parameters, time, buffers, and data products
14-
- __[OSAL](osal.md)__ - Operating system abstraction layer for tasks, files, mutexes, queues, and system resources
14+
- __[OSAL](osal.md)__ - Operating system abstraction layer (see [OSAL SDD](https://github.com/nasa/fprime/blob/devel/Os/docs/sdd.md) for details)
1515

1616
### Capabilities
1717

1818
- __[Command Dispatch](command-dispatch.md)__ - Command decoding, routing, and status tracking
19-
- __Dictionary__ - Dictionary (commands, telemetry, events, data products, parameters)
20-
- __Sequencing__ - Command sequencing functionality
19+
- __[Dictionary](dictionary.md)__ - Dictionary (commands, telemetry, events, data products, parameters)
20+
- __[Sequencing](sequencing.md)__ - Command sequencing functionality
2121
- __Telemetry__ - [Channel-based (TlmChan)](telemetry-chan.md) | [Packetized (TlmPacketizer)](telemetry-packetizer.md)
2222
- __[Event Management](event-management.md)__ - Event collection, distribution, text logging, and fatal handling
2323
- __[Rate Group Scheduling](rate-group-scheduling.md)__ - Periodic execution of components at configurable rates
@@ -29,7 +29,6 @@ The system functional documentation provides a functional or capability descript
2929
- __[Buffer Management](buffer-management.md)__ - Memory allocation and buffer lifecycle services
3030
- __[Parameter Management](parameters.md)__ - Persistent configuration value storage and retrieval
3131
- __[Time Services](time-services.md)__ - System time sources and cycle generation
32-
- __[System Services](system-services.md)__ - Resource monitoring, version reporting, assertion handling, and polymorphic database
3332
- __[Hardware Drivers](hardware-drivers.md)__ - Byte stream, network, serial, GPIO, I2C, and SPI driver abstractions
3433

3534
### Subtopologies
Lines changed: 3 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,8 @@
11

22
# Operating System Abstraction Layer (OSAL)
33

4-
## References
4+
The OSAL provides a portable interface to operating system services (tasks, files, mutexes, queues, and system resources), enabling F Prime applications to run on multiple platforms without source code changes.
55

6-
- [OSAL SDD](https://github.com/nasa/fprime/blob/devel/Os/docs/sdd.md)
7-
- [Generic Services SDD](https://github.com/nasa/fprime/blob/devel/Os/Generic/docs/sdd.md)
8-
- [How-To: Implement an OSAL](https://github.com/nasa/fprime/blob/devel/docs/how-to/implement-osal.md)
6+
For full documentation including architecture, API details, and implementation guidance, see the [OSAL SDD](https://github.com/nasa/fprime/blob/devel/Os/docs/sdd.md).
97

10-
## Overview
11-
12-
The Operating System Abstraction Layer (OSAL) provides a portable interface to operating system services, enabling F Prime applications to run on multiple operating systems without source code modifications. All platform-specific functionality (threads, files, synchronization, system resources) is accessed through the OSAL rather than through direct OS calls. The OSAL ships with a POSIX backend for Linux/macOS and a stub backend for platforms without full OS support. Additional backends (Zephyr, VxWorks, FreeRTOS) are available through community platform support packages.
13-
14-
### Concurrency
15-
16-
The OSAL provides the following concurrency primitives:
17-
18-
- **Tasks** — Thread creation, joining, and lifecycle management. Tasks support start/stop callbacks and can be delayed for a specified duration. Tasks are the execution context for active components.
19-
- **Mutexes** — Mutual-exclusion locks for protecting shared data. An RAII scope lock helper is provided for automatic acquire/release within a scope.
20-
- **Condition Variables** — Signaling mechanism paired with mutexes for producer/consumer patterns and other synchronization needs.
21-
- **Queues** — Inter-task message passing with configurable depth, optional priority support, and blocking modes. Queues are the underlying mechanism for active component message dispatch.
22-
23-
### File System
24-
25-
The OSAL provides file and directory access:
26-
27-
- **Files** — Open, read, write, seek, flush, and CRC computation on individual files.
28-
- **Directories** — Open, iterate, and create directory entries.
29-
- **File System Operations** — Higher-level operations including remove, move/rename, copy, stat, free space queries, and working directory management.
30-
31-
### System Resources
32-
33-
The OSAL provides access to system-level information:
34-
35-
- **Raw Time** — Access to the system clock for measuring time intervals.
36-
- **CPU** — CPU count and per-CPU usage statistics.
37-
- **Memory** — System memory usage statistics.
38-
39-
### Console
40-
41-
The console service provides a mechanism for writing messages to the system console output, used primarily for text event logging and diagnostic output.
42-
43-
### Generic Services
44-
45-
In addition to the platform-specific core services, the OSAL provides generic services that are implemented independently of the underlying OS:
46-
47-
- **Priority Queue** — A heap-based priority queue implementation used by the framework for priority-aware message dispatch.
48-
49-
### Implementation Architecture
50-
51-
The OSAL uses a delegate pattern where each service has three layers:
52-
53-
1. **Interface** — A pure-virtual base class defining the service contract
54-
2. **Wrapper** — A final concrete class that application code interacts with, forwarding calls to the delegate
55-
3. **Implementation** — A platform-specific class that implements the interface
56-
57-
Services are accessed either as singletons (for global operations like file system queries and CPU statistics) or as handles (for stateful objects like individual files, mutexes, and tasks). The OSAL is initialized once at system startup, though singletons will self-initialize on first use if explicit initialization is omitted.
58-
59-
### Error Handling
60-
61-
All OSAL operations return typed status enumerations specific to each service. Platform backends translate native error codes into these status values so that application code never needs to interpret platform-specific errors.
62-
63-
### Available Backends
64-
65-
- **Posix** — Full implementation using POSIX APIs (pthreads, file I/O, clock_gettime). Default for Linux and macOS.
66-
- **Stub** — No-op implementations that return NOT_SUPPORTED. Used as a starting point for platforms where some services are not yet implemented.
67-
- **Community** — Additional backends for Zephyr RTOS, VxWorks, and FreeRTOS are maintained in the fprime-community GitHub organization.
8+
For instructions on porting the OSAL to a new platform, see [How-To: Implement an OSAL](https://github.com/nasa/fprime/blob/devel/docs/how-to/implement-osal.md).

docs/reference/system-functional/system-services.md

Lines changed: 0 additions & 52 deletions
This file was deleted.

0 commit comments

Comments
 (0)