fprime-yamcs: A YAMCS to F Prime Bridge Package
fprime-yamcs is designed to run YAMCS as the ground system when working with fprime. It operates similar to fprime-gds where it launches YAMCS in-lieu of the fprime-gds data pipelines.
Requirements
fprime-yamcs requires the users to have mvn installed. See: https://maven.apache.org/.
[!CAUTION]
mvnrequires JDK to be installed
Usage
Install this package and run fprime-yamcs on a compatible F Prime deployment.
fprime-yamcs-events: Event Processor
fprime-yamcs-events runs the F Prime event processor standalone: it reads the F Prime JSON topology dictionary and publishes F Prime events into YAMCS. It is launched automatically by fprime-yamcs; run it directly when operating YAMCS without the full fprime-yamcs launcher.
F´ Events Web Display
The YAMCS web interface gains an F´ Events page (sidebar item, served at /ext/fprime-events) providing the event display F Prime developers know from fprime-gds:
- Whole-row colors by F Prime severity (FATAL, WARNING_HI, WARNING_LO, ACTIVITY_HI, ACTIVITY_LO, COMMAND, DIAGNOSTIC), using a color-blind-safe palette derived from Okabe-Ito.
- Filtering by event ID (hex or decimal), event name, message text, severity (per-severity toggles), and time range.
- A virtualized table (only on-screen rows are rendered) with infinite scroll-back into the YAMCS event archive, plus a "Follow latest" toggle that keeps the view pinned to the newest event.
This works because the event processor publishes each event with structured extra fields (fprime_severity, fprime_event_id, fprime_event_name) preserving the full 7-level F Prime severity set, which YAMCS's native 5-level severity model cannot represent. The page is registered by the FprimeEventsWebExtension YAMCS plugin bundled with the YAMCS project that fprime-yamcs builds; no additional configuration is required. Events published by older versions of the event processor (without the extra fields) are shown with a best-effort severity derived from the YAMCS severity.
fprime-yamcs-comm: Communication Bridge
fprime-yamcs-comm bridges bidirectional communication between an F Prime endpoint and the YAMCS UDP intake/outlet:
- The endpoint side is reached through an F Prime GDS communication adapter plugin (
--communication-selection:uart,ip, or any installed adapter plugin). - The YAMCS side pushes deframed packets as UDP datagrams to the telemetry intake (
--tm-host/--tm-port, default127.0.0.1:50000) and receives command datagrams on a local UDP port (--tc-host/--tc-port, default127.0.0.1:50001). Command datagrams are only accepted from the TM host, loopback (127.0.0.1), and any hosts supplied via--tc-allowed-source; hostnames are resolved to IPv4 addresses once at startup and compared against the datagram source IP. - One stage of framing/deframing sits in between, provided by an F Prime GDS framing plugin (
--framing-selection). The default is the packagedno-opframer/deframer, which passes data through unchanged since YAMCS nominally performs framing/deframing itself. Selectfprimeto apply the standard F Prime framing (start word, length, data, checksum) on the endpoint side.
[!NOTE] The UDP-transport requirement described under Caveats applies to connecting F Prime directly to YAMCS;
fprime-yamcs-commlifts it by bridging non-UDP endpoints (e.g. UART) to the YAMCS UDP links.
[!WARNING] With
no-opframing over a stream-oriented adapter (uart,ip), packet boundaries depend on read timing: packets may be split or merged across UDP datagrams. Use a boundary-recovering framing plugin (e.g.--framing-selection fprime) unless the endpoint stream carries self-delimiting data that YAMCS deframes. The bridge warns on startup for the built-in stream adapters only; third-party stream adapters are not detected.
Operational notes: the bridge exits with a non-zero code if either data pump fails abnormally, so supervisors can detect and restart it; buffered downlink data that the framing plugin cannot deframe is discarded (with a warning) once it exceeds ten maximum-size datagrams (~640 KB).
Example, bridging a UART device to YAMCS with F Prime framing recovering packet boundaries (all UDP flags shown use their default values):
fprime-yamcs-comm --communication-selection uart --uart-device /dev/ttyUSB0 --uart-baud 115200 \
--framing-selection fprime --tm-host 127.0.0.1 --tm-port 50000 --tc-port 50001
flowchart LR
subgraph COMM["fprime-yamcs-comm"]
ADPT["Comm Adapter Plugin<br/>(--communication-selection)"]
FRAME["Framing Plugin<br/>(--framing-selection, default no-op)"]
UDP["YAMCS UDP Endpoints<br/>(TM out / TC in)"]
ADPT <--> FRAME
FRAME <--> UDP
end
EP["F´ Endpoint<br/>(UART, IP, ...)"] <--> ADPT
UDP <--> YAMCS["YAMCS UDP intake/outlet"]
Testing
The bridge's integration tests (tests/test_comm_bridge.py) require socat to emulate a UART endpoint; without it only the unit tests run (the integration tests are skipped). CI environments running these tests should install socat.
Configuration
YAMCS is powerful and has many configuration properties. fprime-yamcs requires one instance of YAMCS defined in the configuration to have the following MDB:
mdb:
- type: xtce
args:
file: .../fprime.xtce.xml
This is to allow for automatic dictionary generation. Users declining this service must specify: --no-convert-dictionary.
Web Extensions
Projects may extend the YAMCS web interface with their own JavaScript:
fprime-yamcs --yamcs-web-extension-dirs path/to/extension-dir ...
Every top-level .js file in each directory is loaded as a module script by
the YAMCS web interface, and the directory's files are served alongside the
webapp's static files. Paths must not contain commas or whitespace.
Caveats
Currently, the default configuration of YAMCS requires F Prime to connect a CCSDS TC/TM framer/deframer to the Drv.Udp component ensuring that UDP is the transport mechanism.
flowchart LR
subgraph FPRIME["F´"]
FPD["F´ Dictionary<br/>(JSON topology dictionary)"]
end
subgraph OUTER["fprime-yamcs CLI"]
subgraph FY["fprime-yamcs"]
XTCEC["XTCE Converter<br/>(fprime-xtce)"]
EVENTS["F Prime Event Processor"]
BASECFG["Standard Config<br/>(yamcs.yml, processors, links, etc.)"]
end
XTCE["XTCE Dictionary<br/>(YAMCS dialect XML)"]
subgraph YSYS["YAMCS"]
YAMCS["Mission Control / Ground System"]
end
end
FPD --> XTCEC
FPD --> EVENTS
XTCEC --> XTCE
XTCE --> YAMCS
EVENTS --> YAMCS
BASECFG --> YAMCS
%% Make the outer box dotted with no background
style OUTER stroke-dasharray: 5 5, fill:none
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fprime_yamcs-0.1.5.tar.gz.
File metadata
- Download URL: fprime_yamcs-0.1.5.tar.gz
- Upload date:
- Size: 77.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
986253795b82735a8fd799ef671a2b4560293db99b3b894c624a56c75040fab7
|
|
| MD5 |
4fe433239a919a564bd0d8906b72117e
|
|
| BLAKE2b-256 |
a5415d53b3f50d858a4c6c1bcd7495d9409b643eba82b9aff03f824e50d63b26
|
Provenance
The following attestation bundles were made for fprime_yamcs-0.1.5.tar.gz:
Publisher:
publish.yml on fprime-community/fprime-yamcs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fprime_yamcs-0.1.5.tar.gz -
Subject digest:
986253795b82735a8fd799ef671a2b4560293db99b3b894c624a56c75040fab7 - Sigstore transparency entry: 2444577472
- Sigstore integration time:
-
Permalink:
fprime-community/fprime-yamcs@5d7e6cafd25a29be77c9b846c4dfca92c42093ee -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/fprime-community
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5d7e6cafd25a29be77c9b846c4dfca92c42093ee -
Trigger Event:
release
-
Statement type:
File details
Details for the file fprime_yamcs-0.1.5-py3-none-any.whl.
File metadata
- Download URL: fprime_yamcs-0.1.5-py3-none-any.whl
- Upload date:
- Size: 77.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea19b7969782d87aa6f6bab99d7cbb9a052e5331d481bdd6d03a503cc794ee3a
|
|
| MD5 |
a3debfb8714bda6ff3a25f7faf20f330
|
|
| BLAKE2b-256 |
5288a4822e666254999d8bd6e6b5cdb068a174f68f917ee41cbeb9049d0fd560
|
Provenance
The following attestation bundles were made for fprime_yamcs-0.1.5-py3-none-any.whl:
Publisher:
publish.yml on fprime-community/fprime-yamcs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fprime_yamcs-0.1.5-py3-none-any.whl -
Subject digest:
ea19b7969782d87aa6f6bab99d7cbb9a052e5331d481bdd6d03a503cc794ee3a - Sigstore transparency entry: 2444577610
- Sigstore integration time:
-
Permalink:
fprime-community/fprime-yamcs@5d7e6cafd25a29be77c9b846c4dfca92c42093ee -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/fprime-community
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5d7e6cafd25a29be77c9b846c4dfca92c42093ee -
Trigger Event:
release
-
Statement type: