Integration of ASN.1 SCC in cFS #274
Replies: 1 comment 4 replies
-
Although we have done a poor job communication this, Peter Fieldman’s comment of "no pre-established data exchange format used" was and is being actively addressed. There is a CCSDS standard data exchange format for cFS, “XML Specification for SOIS Electronic Data Sheet (SEDS)” https://public.ccsds.org/Pubs/876x0b1.pdf Peter was just not aware of the standard or tooling. The SEDS standards are also called out as requirements in the International Deep Space Interoperability Standards https://www.internationaldeepspacestandards.com/. |
Beta Was this translation helpful? Give feedback.
-
Hi folks! I would like to discuss the possible integration of ASN.1 into cFS, in particular the ESA/ESTEC ASN.1 SCC.
Context
I just reread the presentations from the 14th Annual (2021) Flight Software Workshop, especially the second day presentation by Peter Fieldman of Blue Origin "An Outsider's perspective on cFS" and some passages stood out to me.
The presenter highlights some of the problems that cFS would have: there is a lot of "manual" message processing code and there is no pre-established data exchange format used (slides 15-19).
The presenter suggested using the ASN.1 protocol, which automatically generates message encoders/decoders instead of writing them by hand.
Not having been able to attend the workshop at the moment I don't know what the situation is, if there were any actions/reactions following this presentation.
Question 🤔
Is it planned to have ASN.1 to define Cmd/Tlm between two cFS based software?
If not, do you think it would be interesting for cFS to integrate the ASN.1 protocol by default, or optionally according to the specific needs of the projects?
If so, I would suggest integrating the ESA/ESTEC ASN.1 SCC version.
Rationale
Personally I am largely in favor of ASN.1 and more specifically ASN.1 SCC developed by ESA/ESTEC, and here is why.
ESA has been developing for several years its TASTE framework [1] [2] for flight software, such as cFS or F Prime. This framework is based on two key languages: AADL and ASN.1. It is the second language that I draw attention to here, ASN.1.
As a reminder, ASN.1 is an OSI presentation layer protocol widely used in telecommunications to make systems communicate in heterogeneous environments. It allows messages to be described in an abstract (human-understandable) and physical (bitstream) way.
ESA has developed a complete and mature implementation of ASN.1 called ASN.1 SCC (Space Certifiable Compiler) [3] [4] to cover all data modeling needs of space applications.
This compiler targets safe systems and generates Spark/Ada, C, SCALE or SDL code.
The source code generated to encode and decode the upstream and downstream streams makes no memory allocation at runtime, no system calls, no dependencies on an external library, has a tiny footprint, and generates test cases for code coverage.
I think this would probably reduce the complexity of interfacing cFS-based software communicating with other space segment software (SSEG) such as instruments (e.g., star sights), but also with custom ground systems, since they agree on the definition of Cmd and Tlm.
This would also make the interfacing of cFS-based software with TASTE-based software more or less transparent.
It also opens the door to the use of the ESA-funded open source library asn1-pusc-lib [5], which is an ASN.1 implementation of ECSS-E-ST-70-41C PUS [6] [7].
I personally had to develop a project from scratch for the European Commission where I was forced to use ASN.1 SCC because my client's AOCS had been developed with TASTE. I have to admit that ASN.1 saved me time on the implementation of Cmd/Tlm: I used the same autogenerated ASN.1 SCC encoding/decoding library on my FSW and on my EGSE.
References
[1] TASTE Overview https://hal.archives-ouvertes.fr/hal-02191871/document
[2] TASTE repo: https://gitrepos.estec.esa.int/taste/taste-setup
[3] ASN.1 SCC GitHub repo: https://github.com/ttsiodras/asn1scc
[4] ASN.1 SCC Overview https://www.thanassis.space/asn1.html
[5] ASN1 SCC - PUS-C library GitHub repo: https://github.com/n7space/asn1-pusc-lib
[6] ECSS PUS-C https://ecss.nl/standard/ecss-e-st-70-41c-space-engineering-telemetry-and-telecommand-packet-utilization-15-april-2016/
[7] Tailoring of PUS-C for Future ESA Missions https://arc.aiaa.org/doi/pdf/10.2514/6.2018-2399
Beta Was this translation helpful? Give feedback.
All reactions