Introduction
Geon has developed an innovative solution that simplifies VITA 49 development and integration. A baseline specification derived from VITA 49.2 has been defined and mapped to YAML, which is then processed by different code generators that support C++, Python, and Wireshark. This approach, and the workflow described below, addresses some of the challenges facing the community as it relates to VITA 49.
Overview
In software development, a well-polished interface makes everyone’s job a little easier. Developers know exactly how to write their code and users know exactly what to expect when they make a function call. A well-defined communications standard is no different. All parties involved agree to communicate according to a specific model, building the foundation for interoperability. One such standard that promises interoperability is the VITA Radio Transport (VRT) standard, also known as VITA 49.
VITA 49 has undergone two major iterations to date. VITA 49.0 focused on the distribution of digitized radio frequency (RF) or intermediate frequency (IF) data along with associated metadata. Lacking in this first iteration was the command-and-control (C2) functionality necessary to provide device-level control, such as tuning commands or device discovery mechanisms. VITA 49.2 was developed to address this gap while also providing a rich framework for unambiguous association between on-the-wire metadata and data. This all sounds great – now there is a solution space for the three primary challenges associated with an open, service-oriented, RF digital architecture: device C2, management, and data distribution. So, why hasn’t VITA 49 taken over the world; what’s the rub?
Despite the promise of VITA 49.2, there is a misunderstanding in the developer community about its purpose. The standard itself is not a specification that can be used to develop interoperability as discussed above, but rather it is a framework for the development of such specifications. The end result of this fundamental disagreement is that it is possible for two different vendors to comply with the VITA 49 standard yet not be interoperable. In short, another standard must be built using the VITA 49 framework as its scaffolding.
The reason for this additional level of standardization is that RF data distribution and management is such a broad topic covering a diverse set of concepts of operation, that it is not feasible for all interested parties to agree on what must be part of the standard, what is optional, and what is un-allowed. Geon’s aim is not to produce a new standard based on VITA 49, but to create the tooling such that any group or organization that develops a standard or “spec” for its own community can do so quickly and in a way that is easily transformed into operational code.
Workflow
The supported workflow starts with the definition of a VITA 49.2 specification in a human- and computer-readable format. This specification is then used to generate libraries in the desired language (e.g.: C++, Python, Java, VHDL). Figure 1 shows this workflow, where an agreed-upon specification is used to yield functional library code.
The developed libraries provide both a developer-facing API that is intuitive and simple, and a wire-facing API that conforms to the VITA 49.2 defined specification, as seen in Figure 2.
Human-Readable Mapping
When developing software, what seems so easy on paper often ends up requiring way more code than preferred. When interpreting a standard, the “easy” part is writing code for a purpose that is explicitly stated within that standard. The interpretation becomes truly difficult when the program flow goes into corners not specified in the standard. The classic example of this is an error condition. While the standard may call for a particular error message to be generated, it leaves up to the implementer to determine what error recovery looks like. It is in these logical edges that the code balloons in complexity and interoperability fails.
The specification to this point is simply words in a PDF file that stakeholders have agreed should be implemented. As developers, we must make sure the transition from PDF to functioning code is as smooth and understandable as possible. To that end, Geon has developed a plain text declarative model for our VITA 49.2 specification using YAML.
YAML allows users and developers to describe their specific packet information using a human-readable text file. The YAML file(s) are then processed by automated code generators that have a consistent behavior for all sides of each transaction in each aspect of the specification described. The generated code can be in a variety of languages, allowing developers in different domains to interact over a common data/metadata layer; the same declarative model is used to create libraries in different languages that are guaranteed to interact correctly. In other words, C++ software on a microprocessor can interact with code on an FPGA synthesized from the generated VHDL.
Effectively we have now:
- Greatly reduced implementation errors because bugs will be scoped to the automated code generators and not at and individual developer level
- Enabled the use of multiple languages
- Allowed for platform-specific performance tuning through tweaks in the generated code
- Eased the integration of future enhancements and extensions without major code refactoring by offering the developer a stable API that isolates them from details of traffic over the wire
Current State
Geon has developed a solution implementing in part the major pieces shown in Figure 3. A baseline specification derived from VITA 49.2 has been defined and mapped to YAML. This YAML is then processed by different code generators that support C++, Python, and Wireshark.
One of the interesting aspects of this approach is that it can be tailored to extend mature tooling; in this case, Wireshark. While Wireshark already has a VITA 49 plug-in, the plug-in developed with Geon’s technology provides insight into control and data packets in far more detail than that originally available. This enhanced Wireshark tooling has been invaluable in debugging systems using VITA 49.
Over the next couple of months, Geon will continue enhancing this VITA 49.2 tooling to include extending the specification to support additional required functionality, extending the YAML tooling to support the additional needed packet types, and an enhancement of the programmable API to simplify the integration cost of the generated library/package with user code.
If you are interested in learning more about this capability, please contact us at info@geontech.com.