Telecommand Encoder Shell package - Detailed description
The Telecommand Encoder Shell is a software package which implements the ground based parts of a packet telecommand system. The software is highly portable - the only requirement is an ANSI C compiler.
The Shell is a software component which contains the complexity of the telecommand protocols. It is easy to integrate into a system and is ideal for building:
- spacecraft control systems
- spacecraft ground testing systems (EGSE)
- training systems for spacecraft operators.
The Telecommand Encoder Shell accepts service requests for the telecommand services and returns responses to the requests:
- MAP Packet (MAPP)
- MAP Access (MAPA)
- Virtual Channel Packet (VCP)
- Virtual Channel Access (VCA)
- Virtual Channel Frame (VCF)
- Master Channel Frame (MCF)
- COP Management (COPM), used for passing directives to COP-1
(See the separate description for details of this and other telecommand features supported by the Telecommand Encoder Shell.)
The Shell delivers Communications Link Transmission Units (CLTUs), ready for serialisation and
The Shell also accepts Communications Link Control Words (CLCWs) from the spacecraft
The Telecommand Encoder Shell is a software package, designed to be built into a software system for a telecommand application. The part of the software system which lies outside the Shell is the Telecommand Encoder Environment. The API (Application Programming Interface) consists of function calls between the Environment and the Telecommand Encoder Shell.
Telecommand interfaces in the API
The Environment calls the Shell to:
- make service requests to the Shell
- deliver Communications Link Control Words (CLCWs) to the Shell
- handle flow control for Communications Link Transmission Units (CLTUs).
The Shell calls the Environment to:
- provide responses to service requests
- pass indications to the Environment (Alert, Suspend)
- deliver CLTUs to the Environment.
(shown by downwards arrows in the diagram)
The Environment calls the Telecommand Encoder Shell to:
- initialise, configure and terminate the Shell
- pass control of the CPU to the Shell (scheduling)
- get optional status reports
The Telecommand Encoder Shell calls the Environment for storage allocation and for the optional logging of messages.
Other interfaces in the API
In addition to the function calls shown in the diagram, the Shell has interfaces for the options. The interfaces allow the Environment to configure and use the optional features:
- Telecommand Authentication with ESA AU
- Segment Level Security Interface (SLSI) for external implementation of security features.
The Telecommand Encoder Shell package consists of:
- a set of C header files defining the interfaces
- a sample user program to demonstrate use of the Shell, including examples of all the Environment functions which are called by the Shell
- a library of modules implementing the Telecommand Encoder Shell
- the Telecommand Encoder Shell Software User Manual.
A telecommand system built with this package is likely to cost very much less than independent development of an equivalent capability.
Licensing and support may be negotiated according to requirements. All the telecommand features are included in the standard Telecommand Encoder Shell licence. The ESA Telecommand Authentication and the SLSI security interface are licensed as optional extras.
The Telecommand Encoder Shell consists of approximately 10,000 lines of C code divided into about 120 modules. All code is written in ANSI/ISO 9899-1990 C and is highly modular and easy to maintain. The code makes no calls to the operating system run-time libraries. It is therefore easily portable to different computer architectures.
It has been demonstrated running on processors from HP, Intel, Motorola, Silicon Graphics, Sun and many others.
The code has been compiled by several independent ANSI C
compilers and the demonstration program produces identical results
in each case.
Please contact us for further information on technical questions or licensing conditions for the Telecommand Encoder Shell package.