This is a basic project that shows F Prime/YAMCS integration. It has two key features:
- It uses
Drv.Udpas the communication driver - It has YAMCS and F Prime/YAMCS packages in
requirements.txt - It encrypts the space link with SDLS AES-256-GCM (
Svc.ComCcsdsSdlswithSvc.Ccsds.AesGcmEncryptor/AesGcmDecryptor)
Install the tooling into a virtual environment first: python3 -m venv fprime-venv && . fprime-venv/bin/activate && pip install -r requirements.txt. requirements.txt includes the framework's lib/fprime/requirements.txt, which
carries fprime-gds, fprime-yamcs, yamcs-client, and fprime-xtce.
The AES-GCM components require OpenSSL 3.0 or newer. If it is not the system default, point CMake at it with
-DOPENSSL_ROOT_DIR=/path/to/openssl when generating.
Building is done in the standard F Prime way:
fprime-util generatefprime-util build
The deployment and YAMCS share one 32-byte AES-256 key, read by Svc.Ccsds.SdlsFileKeyManager on the flight side
and by YAMCS's SecurityAssociationAes256Gcm128 on the ground side. Generate one at the project root (it is
.gitignored; never commit real key material):
head -c 32 /dev/urandom > sdls.keyThen run fprime-yamcs and open http://localhost:8090 in your browser! fprime-gds.yml passes
--communication-selection udp, so the deployment's Drv.Udp talks to YAMCS directly instead of through the
fprime-yamcs-comm bridge that fprime-yamcs starts by default for TCP/UART deployments, and
--yamcs-sdls-key-file sdls.key, which configures YAMCS to decrypt TM/encrypt TC on SPI 1, and
--application-arguments -p 50000 -a 0.0.0.0 -k sdls.key, which launches the deployment with the same key.
Running the binary by hand: ./FprimeYamcsReference_YamcsDeployment -a 127.0.0.1 -p 50000 -k sdls.key.