YETI allows developers to import telemetry definitions and use them to generate critical telemetry support software, eliminating the need to develop and maintain time-consuming telemetry infrastructure by hand. Through the use of FRCTL, Emergent’s lightweight, flexible code generation framework, YETI exposes the entire code generation pipeline to developers in a way that can be modified quickly and easily to support a wide range of workflows and integration touchpoints. YETI’s generic representation of telemetry artifacts allows for translation between common industry-standard formats, allowing for rapid integration of flight, ground, and simulation software.
Message Format Abstraction
YETI’s “SpaceAppMessage” format allows for autogenerated translations between common message formats and provides flight-quality runtime APIs for interacting with messages.
YETI packages individual artifact generation pipelines in a modular “plug-and-play” way that can be quickly configured and dropped into existing workflows.
YETI generates serialization code using common formats such as Protobuf, providing off-the-shelf serialization capabilities to telemetry messages defined as basic C-structs.
YETI generates Python interfaces for message structures through SWIG, enabling rapid prototyping and I&T from an interpreter level.
FRCTL is a lightweight, modular code generation framework designed to promote the transfer and reuse of common transformation logic between projects. Through heavy utilization of graph theory and recursion, FRCTL takes tasks that traditionally require large amounts of highly specific logic and accomplishes them in a generic fashion that requires less code by orders of magnitude. FRCTL takes full advantage of hyper-modern programming techniques to take the headache out of code generation, encouraging developers to adopt maintainable practices and quickly deliver flexible, reusable generation pipelines.
FRCTL’s software architecture mirrors that of the data structures on which it operates, encouraging developers to view code generation through the modern lens of tree traversal and graph transforms. While allowing for a wide range of strategies, FRCTL gently pushes developers toward modern, maintainable practices.
FRCTL can be used in a multitude of ways. As an ad-hoc solution for rapid prototyping, FRCTL can be called directly from the command line as an executable. For a transparent approach (ideal for large projects) that is hidden from developers, FRCTL can be integrated into compilation pipelines via Make or CMake. As a “happy medium” between the two, FRCTL provides a script-based approach via Python that allows developers to create deterministic, highly traceable code generation pipelines that can be transferred between projects.
Cross-Language Syntax Trees
Although FRCTL is primarily intended for C and C++, it represents code in a serializable format that can represent any programming language. This allows for rapid generation of cross-language interfaces. FRCTL can generate Python interfaces for C and C++ functions and data structures out-of-the-box, requiring no prior knowledge of Python/C++ language bindings.