4626 Part II Software
4626 Part II Software
STANDARDIZATION AGREEMENT
(STANAG)
Promulgated on
NATO UNCLASSIFIED
NATO UNCLASSIFIED
Tel: 707.43.09
2 National staffs are requested to examine page iii of the STANAG and, if they have not
already done so, advise the …… Division of their intention regarding its ratification and
implementation.
Enclosure:
STANAG 4626 Part II (Draft 1)
NATO UNCLASSIFIED i
NATO UNCLASSIFIED
RECORD OF AMENDMENTS
EXPLANATORY NOTES
AGREEMENT
2. No departure may be made from the agreement without consultation with the tasking
authority. Nations may propose changes at any time to the tasking authority where they will be
processed in the same manner as the original agreement.
3. Ratifying nations have agreed the national orders, manuals and instructions implementing
this STANAG will include a reference to the STANAG number for purposes of identification.
DEFINITIONS
4. Ratification is “In NATO Standardization, the fulfillment by which a member nation formally
accepts, with or without reservation, the content of a Standardization Agreement” (AAP-6).
6. Reservation is “In NATO Standardization, the stated qualification by a member nation that
describes the part of a Standardization Agreement that it will not implement or will implement only with
limitations (AAP-6).
7. Page iii gives the details of ratification and implementation of this agreement. If no details are
shown it signifies that the nation has not yet notified the tasking authority of it intentions. Page iv (and
subsequent) gives details of reservations and proprietary rights that have been stated.
FEEDBACK
8. Any comments concerning this publication should be directed to NATO/MAS – Bvd Leopold
III – 1110 Brussels - BE
NATO UNCLASSIFIED ii
NATO UNCLASSIFIED
BE
CA
CZ
DA
FR
GE
HU
IT
LU
NL
NO
PO
SP
TU
UK
US
RESERVATIONS
RESERVES
NATO UNCLASSIFIED iv
NATO UNCLASSIFIED
Related Documents:
(a) STANAG 4626 Part I – Architecture
NATO UNCLASSIFIED 1
NATO UNCLASSIFIED
AIM
1. The aim of this agreement is to define and standardize essential technical characteristics
which shall be incorporated in the design of avionics architectures.
AGREEMENT
2. Participating nations agree to adopt the avionic architectures of future aircraft developments
and upgrades to the Standards and Guidelines of open avionics architectures as described in this
STANAG.
DEFINITIONS
3. The definition of terms and abbreviations used in this Agreement are given in each Part of
the Standard.
GENERAL
4. t.b.d.
DETAILS OF AGREEMENT
each Part being published separately as STANAG 4626 (Part I), STANAG 4626 (Part II), STANAG
4626 (Part III), STANAG 4626 (Part IV), STANAG 4626 (Part V) and STANAG 4626 (Part VI).
NATO UNCLASSIFIED 2
NATO UNCLASSIFIED
ENGLISH VERSION
ASAAC Phase II
Final proposition des standards pour les Entgültiger Entwurf des Standards für Software
software
NATO UNCLASSIFIED 1
NATO UNCLASSIFIED
Table of Contents
0 Introduction .............................................................................................................................. 7
0.1 Purpose .................................................................................................................................... 7
0.2 Document Structure ................................................................................................................ 8
1 Scope ........................................................................................................................................ 9
1.1 Software Architecture Overview ............................................................................................ 9
1.2 Software Architectural Components ..................................................................................... 9
1.2.1 Functional Applications ........................................................................................................ 10
1.2.2 Application Management (AM) ............................................................................................. 10
1.2.3 Operating System (OS) ......................................................................................................... 10
1.2.4 Generic System Management (GSM) ................................................................................... 10
1.2.5 Run-Time Blueprints (RTBP) ................................................................................................ 11
1.2.6 Module Support Layer (MSL) ............................................................................................... 11
1.2.7 Application to OS Interface (APOS) ..................................................................................... 11
1.2.8 Module Support to OS Interface (MOS) ............................................................................... 11
1.2.9 System Management to Blueprints Interface (SMBP) ....................................................... 11
1.2.10 System Management to OS Interface (SMOS) .................................................................... 11
1.2.11 OS Logical Interface (OLI) .................................................................................................... 11
1.2.12 GSM Logical Interface (GLI) ................................................................................................. 11
1.2.13 System Management Logical Interface (SMLI) ................................................................... 12
1.2.14 Module Logical Interface (MLI) ............................................................................................. 12
2 Normative References........................................................................................................... 13
3 Terms, Definitions and Abbreviations................................................................................. 14
3.1 Terms and Definitions ........................................................................................................... 14
3.2 Abbreviations ......................................................................................................................... 14
4 System Functions .................................................................................................................. 18
4.1 System Management Function ............................................................................................ 18
4.1.1 GSM Function ........................................................................................................................ 19
4.1.2 AM Function ........................................................................................................................... 22
4.1.3 Error Handling ....................................................................................................................... 23
4.1.4 Built-In Test ............................................................................................................................ 23
4.2 Communication ..................................................................................................................... 25
4.2.1 ASAAC Communication Model ............................................................................................ 25
4.2.2 Types of Data Transfer.......................................................................................................... 27
4.2.3 Communication Configuration ............................................................................................. 27
4.2.4 Communication Protocols .................................................................................................... 28
4.2.5 Multicast ................................................................................................................................. 31
4.2.6 Distributed Multicast ............................................................................................................. 33
4.2.7 Streaming ............................................................................................................................... 37
4.2.8 Data Representation.............................................................................................................. 37
4.3 Security Management ........................................................................................................... 42
4.3.1 Application Security Management ....................................................................................... 44
4.3.2 Generic Security Management ............................................................................................. 44
4.3.3 Encryption/Decryption and Authentication ........................................................................ 45
4.3.4 Security Audit ........................................................................................................................ 46
4.3.5 Security Reference Monitoring ............................................................................................ 46
4.4 Module Management ............................................................................................................. 46
4.5 Mass Memory Management .................................................................................................. 47
4.5.1 Overview ................................................................................................................................. 47
4.5.2 MMM Local File Management ............................................................................................... 47
4.5.3 Application File Access ........................................................................................................ 48
4.5.4 CFM Download ....................................................................................................................... 48
4.5.5 Application Downloading ..................................................................................................... 50
NATO UNCLASSIFIED 1
NATO UNCLASSIFIED
NATO UNCLASSIFIED 2
NATO UNCLASSIFIED
List of Figures
Figure 1 - ASAAC Standard Documentation Hierarchy .................................................................... 7
Figure 2 - ASAAC Three Layer Software Architecture ..................................................................... 9
Figure 3 - The Software Architecture Model .................................................................................... 10
Figure 4 - Hierarchical Organisation of the System Management ................................................ 19
Figure 5 - GSM Decomposition for RE-Management (Example).................................................... 20
Figure 6 - IA Application Control (Example) .................................................................................... 21
Figure 7 - GSM Decomposition for Module Management (Example) ............................................ 21
Figure 8 - Hierarchical Organisation of the AM (Example) ............................................................. 22
Figure 9 - The ASAAC Communication Stack ................................................................................. 25
Figure 10 - Types of Data Transfer ................................................................................................... 27
Figure 11 - Communication Concept ................................................................................................ 28
Figure 12 - Between AL Communication Routing ........................................................................... 29
Figure 13 - ASAAC Message in BMC Data Transfer ....................................................................... 31
Figure 14- Multicast Scheme With a Single TC ............................................................................... 32
Figure 15 - Multicast Scheme With Multiple Simple TC’s ............................................................... 33
Figure 16 - Data Parallelism............................................................................................................... 34
Figure 17 - Corner Turn ...................................................................................................................... 34
Figure 18 - Corner Turn in Three Dimensions ................................................................................. 35
Figure 19 - Illustration of the Involved Services in DSP1 ............................................................... 36
NATO UNCLASSIFIED 3
NATO UNCLASSIFIED
NATO UNCLASSIFIED 4
NATO UNCLASSIFIED
List of Tables
Table 1 - Software Layer Independence ............................................................................................. 9
Table 2 - CBIT Modes ......................................................................................................................... 24
Table 3 - Routing Information and Data Transfer ............................................................................ 31
Table 4 - IDL Primitive Types ............................................................................................................ 40
Table 5 - IDL Constructive Types ...................................................................................................... 42
Table 6 - Power Switching Services ................................................................................................. 53
Table 7 - Layers, Process Classes, and Standardised Interfaces ................................................. 63
Table 8 - List of SMOS Services for RE-CM ..................................................................................... 71
Table 9 - List of SMOS Services for RE-HM ..................................................................................... 72
Table 10 - List of SMOS Services for RE-FM ................................................................................... 73
Table 11 - List of SMOS Services for RE-SM ................................................................................... 73
Table 12 - List of SMOS Services for IA-CM .................................................................................... 74
Table 13 - List of SMOS Services for IA-FM ..................................................................................... 75
Table 14 - List of SMOS Services for AC-FM ................................................................................... 76
Table 15 – Transition of Thread States ............................................................................................ 78
Table 16 – Condition of State Transition.......................................................................................... 78
Table 17 - Properties of Time Services ............................................................................................ 89
Table 18 - Resource Parameters of Basic Resource Entities ...................................................... 107
Table 19 - Criticality Classes of APOS Services ........................................................................... 108
NATO UNCLASSIFIED 5
NATO UNCLASSIFIED
NATO UNCLASSIFIED 6
NATO UNCLASSIFIED
5 Introduction
5.4 Purpose
The purpose of the ASAAC Programme is to define and validate a set of open architecture standards,
concepts & guidelines for Advanced Avionics Architectures (A3) in order to meet the three main
ASAAC drivers. The standards, concepts and guidelines produced by the Programme are to be
applicable to both new aircraft and update programmes from 2005.
- A set of agreed standards that describe, using a top down approach, the Architecture overview to
all interfaces required to implement the core within avionics system,
The document hierarchy is given hereafter: (in this figure the document is highlighted)
NATO UNCLASSIFIED 7
NATO UNCLASSIFIED
- Section 6, Scope,
- Annex A, AGL.
NATO UNCLASSIFIED 8
NATO UNCLASSIFIED
6 Scope
The purpose of this standard is to establish uniform requirements for design and development of
software architecture for modular avionics systems as defined per ASAAC.
The ASAAC Software Architecture is based on a three-layer stack as shown by a simplified Figure 2.
Application Layer
APOS
MOS
Each layer is described in terms of it dependency/independency on both the aircraft system and the
underlying hardware.
Figure 3 provides an overview of the software architectural components and software interfaces.
NATO UNCLASSIFIED 9
NATO UNCLASSIFIED
Funct. Funct.
AM AM Apps
Apps SMLI SMLI
APOS APOS
S S
Operating GSM M RT-Blueprint RT-Blueprint M GSM Operating
System B B S System
S P P
M M
O O
GLI S
S
OLI
MOS MOS
MSL MLI MSL
- Radar Applications,
- Mission Management,
- Stores Management,
- Health Monitoring,
- Fault Management,
NATO UNCLASSIFIED 10
NATO UNCLASSIFIED
- Configuration Management,
- Security Management.
NATO UNCLASSIFIED 11
NATO UNCLASSIFIED
NATO UNCLASSIFIED 12
NATO UNCLASSIFIED
7 Normative References
This European Standard incorporates, by dated or undated reference, provisions from other
publications. These normative references are cited at the appropriate places in the text and the
publications are listed hereafter. For dated references, subsequent amendments to or revisions of any
of these publications apply to this European Standard only when incorporated in it by amendment or
revision. For updated references the latest edition of the publication referred to applies (including
amendments).
NATO UNCLASSIFIED 13
NATO UNCLASSIFIED
Use of “shall”, “should” and “may” within the standards observe the following rules:
- The word 'SHALL' in the text expresses a mandatory requirement of the standard.
- The word 'SHOULD' in the text expresses a recommendation or advice on implementing such a
requirement of the standard. It is expected that such recommendations or advice be followed
unless good reasons are stated for not doing so.
- The word 'MAY' in the text expresses a permissible practice or action. It does not express a
requirement of the standard.
8.5 Abbreviations
AC Aircraft
AL Application Layer
AM Application manager
CM Configuration Management
COTS Commercial-Off-The-Shelf
NATO UNCLASSIFIED 14
NATO UNCLASSIFIED
EW Electronic Warfare
FC Fibre Channel
FM Fault Management
HM Health Monitoring
HW Hardware
IA Integration Area
ID Identification
IF Interface
LC Logical Configuration
MC Master Clock
NATO UNCLASSIFIED 15
NATO UNCLASSIFIED
NC Network Channel
NW Network
OS Operating System
PE Processing Element
PU Processing Unit
RE Resource Element
RC Remote Clock
RF Radio Frequency
RU Routing Unit
SM Security Management
SW Software
NATO UNCLASSIFIED 16
NATO UNCLASSIFIED
TC Transfer Connection
VC Virtual Channel
VL Video Library
NATO UNCLASSIFIED 17
NATO UNCLASSIFIED
9 System Functions
This section describes the system context and the mapping of system functions onto software
architectural components.
Note: For requirements on the System Management including detailed examples refer to the
respective volumes of the “Final Draft of proposed Guidelines for System Issues” (see reference [4]).
The System Management is responsible for managing the ASAAC system during initialisation, all
operational phases in flight and on ground, and system shutdown until power-off. Thus, its tasks
include:
The System Management is comprised of two functions located on the application and OSL's of the
ASAAC Three-Layer-Stack model (Figure 3):
The underlying principles of this architecture are the separation between hardware and aircraft
dependent layers and the separation between avionics functions represented by functional
applications and system management functions.
The System Management function is organized hierarchically on three level types (Figure 4) covering
the following functionalities:
NATO UNCLASSIFIED 18
NATO UNCLASSIFIED
AC Level:
- The AC level is a single system management entity responsible for controlling/monitoring the
entire IMA core.
IA Level:
- The IA level is a logical grouping of closely integrated functional applications with their resources.
This grouping need not be static, but may be created and deleted dynamically during a mission.
- IA’s may internally be organised hierarchically, i.e. a system may include one or more IA levels. In
this case, the lowest-level IA must control one or more PE’s.
- A system may be designed so that it does not include an IA level. In this case, there is one AC
level, and one or more RE levels.
RE Level:
- The resource element is the lowest addressable level in the system management hierarchy
responsible for managing the functionality of a single Processing Element (PE).
NATO UNCLASSIFIED 19
NATO UNCLASSIFIED
AC
IA1
Functions:
- Configuration Management:
Set-up of the initial configuration, reconfiguration management.
- Health Monitoring:
Monitoring of the health status, error collection, filtering, and transmission to the FM.
- Fault Management:
Masking, filtering, and localisation of faults including the processing of corrective actions.
- Security Management:
Implementation of the system security policy: Authentication, decryption, and encryption.
Hierarchical Organisation:
The following figures illustrate possible mappings of resources to the system management hierarchy:
- RE management (Figure 5): An AC manager controlling 2 IA managers IA1 and IA4; IA1
controlling the IA managers IA2 and IA3; IA2, IA3, and IA4 each controlling 2 RE’s
NATO UNCLASSIFIED 20
NATO UNCLASSIFIED
AC
IA1
IA2
IA2 IA3 IA4
App1 App3
App4 App4
App2 App4
- Application configuration control (Figure 6): An AC manager controlling IA1 and IA4; IA1
controlling IA2 and IA3; IA2 controlling the applications App1 and App2; IA3 controlling the
applications App3 and App4 (redundant); IA4 controlling the redundant application App4.
RACK 1
PCM NSM
1 AC
MMM DPM
1 1
RACK 2
PCM SPM
2 IA1
MMM DPM
2 2 MODULE
S
GPM
IA2 IA3 IA4
DPM
3
- Application configuration control (Figure 7): An AC manager controlling IA1 and IA4; IA1
controlling IA2 and IA3; IA2 controlling the applications App1 and App2; IA3 controlling the
applications App3 and App4 (redundant); IA4 controlling the redundant application App4.
Configuration Data:
The configuration data is obtained from the RTBP via SMBP. The reconfiguration is defined through
dedicated sequences obtained via SMBP.
NATO UNCLASSIFIED 21
NATO UNCLASSIFIED
- Application,
- System,
- Module.
9.4.2 AM Function
The AM function is responsible for the management and control of all AC dependent functions
(functional applications) on the Application Layer (AL). It acts as an interface between the functional
applications and a dedicated instantiation of the GSM.
Hierarchical Organisation:
The AM should only be located on the AC- and IA-levels, as the RE level is resource-oriented,
whereas the AC and IA levels are function-oriented.
An example for the hierarchical organisation of the AM showing the assignment of functional
applications to IA’s is depicted in Figure 8:
AC
AM GSM
Applications
Pilot Interaction
IA1
(RF-IA) GSM
AM
Applications
DASS Mgmt
Internal Interfaces:
The standardised internal interface of the AM is the System Management Logical Interface (SMLI.)
The SMLI includes a request-response protocol for the change of the logical configuration.
NATO UNCLASSIFIED 22
NATO UNCLASSIFIED
External Interfaces:
There are no standardised external interfaces of the AM. All external interfaces are application-
dependent.
The error information shall be accessible to the application itself, but used for debugging purposes
only.
Exceptions to this rule are timeouts and resources, which are managed by the application. Note
however that functional Application Processes shall handle situations where a called APOS service
has timed out. In this case, the application calling a service shall be informed by means of a return
value.
The OS provides the GSM with Services related to the BIT Management at the SMOS interface that
are paired with services at the MOS interface:
- Start CBIT: Runs the CBIT processing and then returns. It allows a specific type of test to be run,
or all tests to be run,
NATO UNCLASSIFIED 23
NATO UNCLASSIFIED
PBIT is used to check the state of the module hardware as part of the boot process. The tests are run
autonomously as part of the MSL before any control is applied from outside the module. The result of
these tests is recorded in the MSL for retrieval by a GSM on a controlling module via the MLI. It is
also available via a MOS/SMOS call to the local GSM.
CBIT is used to continuously check the health of the module during normal operation. CBIT is non-
intrusive. The tests can be run either:
- Under the command of the GSM, if processor support is required to perform the test.
- Callback,
Autonomous Callback CBIT runs autonomously and does not require control from outside the
MSL. When a test fails, the indication of this is flagged to the OSL using a
callback. The service getCbitResult is then used to retrieve the detailed
information about the failure.
Autonomous Polled CBIT runs autonomously and does not require control from outside the
MSL. When a test fails, the result is stored internally in the MSL. No
indication is given to the OSL. GetCbitResult is then used periodically to
retrieve any failure information. If no failure has occurred, no action is
taken. If a failure has occurred, the detailed information about the failure is
returned.
Commanded Callback CBIT runs under the control of the OSL. When a test fails, the indication of
this is flagged to the OSL using a callback. GetCbitResult is then used to
retrieve the detailed information about the failure.
Commanded Polled CBIT runs under the control of the OSL. The time allowed to perform CBIT
each time the service startCbit is called, is MSL specific. When a failure is
detected, GetCbitResult is then used to retrieve the detailed information
about the failure.
IBIT is used to check the state of the module hardware as part of the fault management process. It
performs a comprehensive test of the module in order to help during fault localisation. The tests can
be run remotely under the control of a GSM on a controlling module via the MLI, or via a MOS/SMOS
call (startIbit) from the local GSM when it is available. IBIT can be destructive in its operation. This
means that the current configuration of the module cannot be guaranteed when the tests have been
completed. Care must therefore be taken to ensure the system is not compromised when IBIT is
NATO UNCLASSIFIED 24
NATO UNCLASSIFIED
used. Also, in the case of destructive testing, its use should be restricted to invocation via the MLI.
The result of these tests is recorded in the MSL for retrieval by a GSM on a controlling module via the
MLI or via a MOS/SMOS call (getIbitResult) from the local GSM if it started IBIT.
9.5 Communication
9.5.1.1 Principle
- Multicast (one sender to n receivers (1:N), the case one sender to one receiver is a sub-set of the
previous one (1:1)),
NATO UNCLASSIFIED 25
NATO UNCLASSIFIED
9.5.1.2 VC
- Unidirectional,
The concept allows a single transmitting process to send data to one or more receiving processes. A
receiving process may be resident on the same Processing Element, the same CFM or even a
different CFM to the sending process. The sending process has no knowledge of any receiving
process; it merely outputs certain data onto a particular VC. Similarly, a receiving process has no
knowledge of the sending process; it merely receives certain data from certain VC’s.
The source and destination processes, the data items to be transmitted between them, and the VC’s,
over which they are transmitted, are defined during system design. During run-time this information is
provided by the RTBP. Consequently, for a given system configuration, the set of VC’s used is fixed
and provides a reference against which audit data can be generated.
Each VC shall be associated with a specific message. Therefore, the following properties of
messages are also associated with the VC:
- Modularity: an application must be seen as a message server. During application design, there is
no knowledge about how many users shall be supposed to receive the message.
9.5.1.3 TC
The basic communication link offered by the NII is the Transfer Connection (TC). Data transfer via
TC’s has the following properties:
- The TC is unidirectional.
9.5.1.4 NC
The ASAAC Standard does not establish any requirement against the NC's. The NC's shall be
managed within the MSL.
Blueprint data shall configure the properties of a NC. These are implementation dependent data and
therefore shall be transparent to the OSL software.
NATO UNCLASSIFIED 26
NATO UNCLASSIFIED
VC VC IPC
IPEC
TC TC IMC
BMC
NC NC
The scope of a local VC Id is limited to a single Application Process. Its value is determined by the
implementation of the Application Process it is associated with. This value is unique within that
Application Process. It is independent of the design of the other Application Processes.
GSM uses blueprint data on both sending and receiving sides, and shall initiate the OS to create
communication objects based on blueprint information in order to configure the communication:
- The OS creates an instance of a VC. A global VC Id, which is unique within the System, identifies
a VC. It shall be identical on both sending and receiving sides.
NATO UNCLASSIFIED 27
NATO UNCLASSIFIED
- The OS creates an instance of a TC. A global TC Id, which is unique within the System, identifies
a TC. It shall be identical on both sending and receiving sides.
Sending Part
Receiving Part
Process A
Local Vc Id 1 Local Vc Id 2 Process B AL
VC OSL
Global Vc Id VC
TC Global Tc Id TC
MSL
Network
The definition of NC’s shall be part of the TC parameter set, as NC’s are associated to the definition
of a TC. Therefore, NC’s are not handled as a separate entity.
9.5.4.1 Introduction
The ASAAC Communication stack defines the protocols for establishing a communication between
ASAAC layers.
NATO UNCLASSIFIED 28
NATO UNCLASSIFIED
9.5.4.2 VC to VC
CFM 1 CFM 2
PE PE
AL Process B
Process A
Reaching
Application
VC Process
Setting VC
OSL VC end-point
Header
TC TC
Setting TC
Header
MSL
Reaching PE
end-point
Setting Reaching
Network Network
end-point
Header
NIU NIU
Network
A communication between processes onto two different CFM’s can use the following mechanisms:
- Application processes,
- GSM’s, the inter-GSM communication is a standardised logical interface, namely GLI, see section
12.5,
- Application Manager and GSM, which is a standardised logical interface, namely SMLI, see
section 12.6.
9.5.4.3 TC to TC
The access and control of TC’s shall be at either the boundary between the OSL and MSL, namely
the NII, or within the MSL.
As described above, TC-to-TC communication supports BMC, IMC and IPEC communication. The TC
header is necessary for the IPEC and IMC. The TC and Network headers are both necessary for
BMC.
It shall be noticed that the inter-MSL communication is a standardised logical interface, namely MLI,
see section 12.7.
NATO UNCLASSIFIED 29
NATO UNCLASSIFIED
Raw VC transfer is needed when an Application Process communicates with an MSL on another PE
or with non-core devices, an example of this is the Graphics Management, see section 9.9.
- A CFM or a non-core device will receive the TC. It will be decoded as required.
- When recognised by the OS as a raw VC, it shall be processed without removing the VC header,
- The usage of a raw VC implies that every TC carrying a raw VC is restricted to a single VC.
- An identifier that describes each message layer. This identifier allows the identification of the
routing information in internal tables.
Each header shall provide information to reach an end-point (see Figure 13):
- As several TC’s may use the NC, the TC Header shall identify the TC. This identification allows
the targeted PE to be reached,
- As several VC’s may use the TC, the VC Header shall identify the VC. This identification allows
the targeted Process to be reached.
NATO UNCLASSIFIED 30
NATO UNCLASSIFIED
The layer within the ASAAC Communication stack on which the transfer is happening determines the
set of routing data required. E.g. for IPC only a VC header is sufficient, if only VC communication
functions are involved.
The TC Header and the VC Header are standardised. Table 3 defines their applicability to the data
transfer modes. The Network header is not standardised, as it is technology dependent.
Data Network TC VC
Transfer
IPC No No Yes
9.5.5 Multicast
The ASAAC Communication shall support the Multicast communication. This capability allows a
sender to be connected to many receivers.
The multicast capability shall be supported at VC and TC level of the ASAAC Communication stack.
As there are multiple receivers, this possibly leads to a combination of several types of data transfer
(IPC, IPEC, IMC and BMC) at the same time.
The VC Multicast has a unique identifier. The sender process has no knowledge of its Multicast
behaviour. In IPC that VC shall be attached to all receiver processes.
In case of the VC using TC (IPEC, IMC and BMC), there are two possibilities:
NATO UNCLASSIFIED 31
NATO UNCLASSIFIED
CFM 2
PE 1
Receiver 2
CFM 1
TC VC
PE 1
Receiver 3
Emitter VC TC Network
PE 2
TC VC Receiver 4
Receiver 1
TC VC Receiver 5
Receiver 6 VC TC PE
PE 2 CFM 3
In this example the TC Identifier is unique. According to the figure above, the types of data transfer
are (from the emitter to):
- Receiver 1: IPC, the VC is attached as outgoing to the emitter, and as incoming to the receiver,
- Receiver 4: BMC, it shall be noticed that the TC on CFM2/PE1 and CFM2/PE2 has the same
identifier. It means that the MSL shall be able to handle multiple end-points with the same
identifier,
- Receiver 5: BMC,
- Receiver 6: IMC, the outgoing TC from PE1 goes to both the network and PE2. It is a case of a
handling of a TC with multiple end-points, as well.
1. The MSL at NIU level duplicates the TC message in several messages with the Network Header
corresponding to the end-point onto the Network.
2. The MSL at NIU sends a unique TC message and a Network header indicating the Multicast
behaviour. Then the Network resource handles the Multicast and provides the message to the
end-points.
NATO UNCLASSIFIED 32
NATO UNCLASSIFIED
CFM 2
PE 1
Receiver 2
CFM 1
TC1 VC
PE 1
TC1 Receiver 3
Emitter VC Network
TC2 PE 2
Receiver 1
TC4
TC3 VC Receiver 5
Receiver 6 VC TC4 PE
PE 2 CFM 3
At the sending side the Multicast VC is attached to several TC’s. At OS level the VC Message is sent
out onto several TC’s.
9.5.6.1 Introduction
The Distributed Multicast Communication is only applicable to Signal Processing. The Distributed
Multicast Communication is an N:M communication (N senders to M receivers) using both
multicasting and fragmentation.
Distributed Multicast is involved when it is necessary to use data parallelism for decreasing the time
processing of a sequence of Signal Processing operations. The input data are separated in subparts
that are processed in the same time by the several processors. Different processors process data, but
the executed algorithm is identical.
Processor 1 SP
Subpart 1 algorithm
Subpart 2 Processor 2
Subpart 4 Processor 4
Subpart 5 Processor 5
NATO UNCLASSIFIED 33
NATO UNCLASSIFIED
The distributed multicast allows the re-distribution of data spread over several processors. One typical
case for using distributed multicast is the corner turn. This function inverses the rows and columns of
a table, as it is shown below.
m1
1 ...
c1 a1 a
a2
b1 a1 b1c1 m1 a3
m2...
2 c2b2 a1 a2 b2c2 m2
b3 b2 b1
a2 a3 b3c3 m3 b
a3
m3...c3 b3 c3 c2
c1
3 an
bn c
cn anbncn mn
... m2
mn m1
n
m
In the figure above, [1..n] are senders and [a..m] are receivers. Actually, the matrix to be inverted is
virtually constructed by the communication mechanism.
Each sender shall apply a distribution law for addressing data to each receiver. A distribution law is a
linear law that defines how to fragment an emitted buffer in order to generate the different buffers to
be sent to each receiver.
Each receiver shall apply a collection law for addressing data from each sender. A collection is a
linear law that defines how to build a buffer with the received fragmented buffers from several
senders.
- The sending part as a 1:M multicast communication, where the M receivers get a different
fragment,
The corner turn may be used in a context that needs several dimensions. Data in a radar application
is organised in multi dimensional arrays. In the following radar example, a value is attached to a
particular antenna beam, a particular pulse, and a particular range gate. This leads using a corner in
three dimensions (pulse, range gate, beam).
NATO UNCLASSIFIED 34
NATO UNCLASSIFIED
Pulses Pulses
Range Range
gates gates
Beams Beams
The slices represent a part of the cube that is processed by one processor. The slices may be
overlapped.
9.5.6.2 Requirements
- A Processor involved in distributed multicast may be a sender and a receiver for this transaction,
- Each sender and receiver may be located in one or several Processing Elements, which may be
located in one or several SPM,
- For each sending Processor, one distribution law per receiving Processor shall be defined,
- For each receiving Processor, one collection law per sending Processor shall be defined,
- The signal processing application shall be able to process a fragmentation in one, two or three
dimensions,
The present section introduces how data are sent then received viewed from one processor.
The Application shall use a VC for sending data. This VC shall be specified as a Raw VC. This VC is
attached to a TC specified as a DMC TC.
The OS shall execute the MOS service dedicated to DMC purpose: sendFragmentedTransfer.
The distribution of the DMC TC is performed within the MSL. The individual fragments shall be
assigned to separate TC’s. Each receiver shall be assigned a TC. The TC identifier identifies the
receiver.
The receiving MSL shall collect TC’s with TC Identifier specified as DMC TC, and reconstitute the
message based on Fragment Identifier, which identifies the sender. When the buffer reconstitution is
NATO UNCLASSIFIED 35
NATO UNCLASSIFIED
completed, it is retrieved by the MOS service receiveFragmentedTransfer. The MOS service may use
the same TC Id as the sending point.
The OS shall execute the MOS service receiveFragmentedTransfer for passing data to the
Application through a Raw VC.
Figure 19 introduces a corner turn example for DMC processing on one Processor.
Application
a11 a12 a13 a14 a15 a16 a17 a18 receiveMessage(VC1)
a11 a21 a31 a41 a51 a61
a41 a42 a43 a44 a45 a46 a47 a48
a15 a25 a35 a45 a55 a65
sendMessage(VC1) receiveFragmentedTransfer(TC100)
OS
a11 a21 a31 a41 a51 a61
a11 a12 a13 a14 a15 a16 a17 a18 a15 a25 a35 a45 a55 a65
The message fragmentation processes data selection follows a linear law that provides either a
distribution or collection law depending on whether it is applied respectively on the sending or the
receiving side.
In the corner turn example data addresses shall be computed according the following C-like formula:
- Address0 = initial Address of the internal buffer where the fragmentation is started,
NATO UNCLASSIFIED 36
NATO UNCLASSIFIED
If the fragmentation is processed in the context of two dimensions: N 3 and Inc3 are equal to zero.
9.5.7 Streaming
Streaming data are continuous data. Two basic applications are video or audio purposes. Streaming
data shall only be handled at the TC Level. This stream of data may contain identified blocks of sub-
data, e.g. video data may contain individual frames.
To allow the system to keep up with this stream, data shall be transferred from the Network Interface
Unit (NIU) to the Processing Unit (PU) with the same rate as data arrived at the Network Interface
unit. In case this requirement is not fulfilled, the stream is interrupted, which has to be handled as an
error
For a streaming TC, the NIU will be provided with information to allow the direct transfer of data to the
PU. The implementation of the MSL, which encompasses the NIU and the PU, is project dependent.
Therefore, the configuration data specifying the Streaming behaviour shall be implementation
dependent.
The different types of message, which may be submitted to a data representation, are:
- MSL Level:
- TC supporting VC Messages,
- OSL Level:
The data representation is not configurable at MSL level. It means that all parts of a message that is
under the responsibility of the MSL, are hard-coded.
- TC supporting VC Messages: The TC header structure is fixed and is known, the payload
message is not modified and is given to the OS.
NATO UNCLASSIFIED 37
NATO UNCLASSIFIED
- TC supporting MLI Messages: The structure of all MLI Messages, header and payload message,
is known. The payload message may be processed and given to the OS in the expected format.
(I.e. If the CFM status is requested, it shall be replied in a format, which shall be understandable
by the hosting processor). For more details, refer to MLI section 12.7.
9.5.8.2.1 Principle
The data representation shall not be applied to VC between processes on the same PE.
The data representation shall be based on a subset of the OMG CDR. Big-endian orientation is
selected.
Local to RE A Local to RE B
APOS
MOS
MSL
MSL MSL
MSL
For typed messages, the OS on information contained in blueprints does a local translation of a
message. They translate the message:
- At the sending side, into the OMG CDR format. See referenced document [6] section 15.3,
- At the receiving side, into the format understandable by the hosting processor.
Figure 20 shows the continuation of translation actions made on a message sent from resource
element A and received by resource element B.
NATO UNCLASSIFIED 38
NATO UNCLASSIFIED
The GSM shall configure the data representation processing of the OS with the blueprint information.
The OLI Messages are typed messages. Their description is specified in IDL format. As they are
standardised, they are not described in the blueprints.
The possible APOS clients are the processes in the AL or in the GSM. APOS clients do not manage
data representation and shall not be aware of such translation actions. APOS clients send typed
messages or raw messages through VC’s.
For raw message (stream of bytes), application data shall send and receive without interpretation. In
this case, data representation mechanisms shall not be applied.
In order to apply data representation on typed message APOS clients shall be built according to some
constraints:
- Programming languages and compiler options used for building APOS clients processes and OS
components shall be compliant to generate the standardised memory alignment
Message data type definitions shall be based on a subset of IDL and shall contain:
- Simple types,
- Constructed types.
NATO UNCLASSIFIED 39
NATO UNCLASSIFIED
The table below specifies the subset of IDL primitive types used by simple types or by constructed
types.
1 LSB
3 LSB
7 LSB
octet big-endian
0 s e1
1 e2 f1
2 f2
3 f3
NATO UNCLASSIFIED 40
NATO UNCLASSIFIED
octet big-endian
0 s e1
1 e2 f1
2 f2
3 f3
4 f4
5 f5
6 f6
7 f7
octet big-endian
0 s e1
1 e2
2 f1
3 f2
4 f3
5 f4
6 f5
7 f6
8 f7
9 f8
10 f9
11 f10
12 f11
13 f12
14 f13
15 f14
NATO UNCLASSIFIED 41
NATO UNCLASSIFIED
The table below specifies the constructed types. The APOS client shall use types as described in the
IDL constructed type column. The OS ensures the data representation and shall encode as it is
described in the CDR Encoding column.
array Encoded array elements in sequence. The encoded element may be either a primitive
type or a constructed type. An array shall be associated to a unique type of element.
sequence Number of elements followed by the encoded sequence elements in sequence. The
number of elements shall be a simple unsigned integer type. The encoded element may
be either a primitive type or a constructed type. A sequence shall be associated to a
unique type of element.
string Length of the string followed by the sequence of characters encoded in single-byte form,
including a null character. The length of the string shall be a simple unsigned integer
type. An empty string has a length of one. The length of the string shall be a simple
integer type. The encoded elements shall be an octet.
union Discriminant tag followed by the representation of the selected member. The
discriminant tag shall be a simple unsigned integer type. The selected member may be
either a primitive type or a constructed type.
It is possible to merge several IDL constructed types with either a fixed size or a variable size as long
as they are encapsulated in a structure and the additional information that is added by the CDR
encoding is also an element of the structure. In the Data representation specification of the message,
this additional information shall be a key word depending of the type of the IDL constructed types.
- Sequence: Number of element shall be a part of the structure specified by a key word,
- String: Length of string shall be a part of the structure specified by a key word,
- Union: Discriminant tag shall be a part of the structure specified by a key word.
Security Management is the GSM function that is responsible for the secure transfer of protectively
marked data throughout the system. The key responsibilities of Security Management are the:
NATO UNCLASSIFIED 42
NATO UNCLASSIFIED
Data
Loader
System
Management
GSM
ASM
AC
SM Level
GSM
IA
ASM SM Level
GSM
RE
SM
Level
Security VCs
GLI
Management
The Security Management Function is actually implemented in the form of a platform specific part, the
Application Security Management (as part of AM), and the hierarchy of Generic System Security
Management.
NATO UNCLASSIFIED 43
NATO UNCLASSIFIED
Data MMM
Application
Loader Security Mgr
OS AC DB
GSM-SM
LOG
VC GLI
Communications Communications
Application Application
OS OS
RE RE
GSM-SM GSM-SM
DB = Database
- To act as an interface between the data loader and the rest of the IMA System,
- To act as an interface between the database holding the protectively marked data and the
functional applications which are to process the protectively marked data.
Note: The data loader and its interface are located outside the ASAAC core.
NATO UNCLASSIFIED 44
NATO UNCLASSIFIED
- To enable the secure transmission of protectively marked data through the use of
encryption/decryption and authentication,
Functional
Application
Does this data need ‘A’
to be Encrypted?
Yes it Does
Encryption takes
a place here
b
VC SM
Handler Functional
Application
c
‘B’
OS GSM
GSM Does this data need
OS
d to be Decrypted?
d
Yes it Does
c
SM VC
Handler
b
GSM OS
GSM OS
a
Decryption takes
place here
The set of protectively marked messages is dependent of system mode and defined by means of
blueprints. As part of the initialisation/configuration process, the GSM-SM resident on RE’s
processing protectively marked data undergo a set of predefined actions. The final action of the GSM-
SM in this mode changing process shall be to call the SMOS service getPMData.
This shall be a blocking call and will only be serviced when the OS requires a security related action
to be performed on some protectively marked data. This call will return the VC Id transferring the data
in question and the data being transferred. The GSM-SM will then use the VC Id as an entry into a
look-up table that has been generated during the configuration phase in order to determine what
action to perform on the data and what key to use.
The processed data will then be returned to the OS VC services using the SMOS service
returnPMData.
NATO UNCLASSIFIED 45
NATO UNCLASSIFIED
The key purpose of the security Audit is for logging any attempted security breaches during aircraft
operation.
These shall be reported to the GSM-SM, by means of the SMOS service getAuditData.
- The OS shall be responsible for reporting any breaches of the security policy,
- The Reference Monitoring shall be responsible for capturing any breaches of the multi-level
security policy,
- The GSM-SM itself will be responsible for detecting the failing of authentication.
- The data being transferred between the process thread and the service.
- From an internal point of view: where the CFM is booted, and then goes to a state where it is
ready to download the whole TLS,
- From an external point of view: where a super-ordinate CFM controls the initialisation of a
subordinate CFM.
The Module Logical Interface (MLI) supports these two aspects of Module Management. The MLI
shall allow access to a CFM after the CFM has been powered-up and initialised via a defined network
route. It shall provide the following functions:
NATO UNCLASSIFIED 46
NATO UNCLASSIFIED
The MLI protocol shall be the same for all CFM types. The MLI allows initialisation, configuration and
synchronisation of the CFM’s in an ASAAC Core system.
9.8.1 Overview
The MMM is providing a Mass Memory Storage capability. It provides the other CFM with the file
access and storage functions in an ASAAC System.
The MMM may contain several types of file, dependent on implementation, e.g.:
- Images incorporating the components of the TLS: MSL, OS, GSM and blueprints,
- Software Applications,
- Data configuration for the CFM communication at power up time (Routing Table),
The MMM provides servers to CFM that need to access to these files. The layer containing the server
depends upon the layer containing the requester.
The direct file access is performed only on the MMM. The other CFM’s use the OLI to perform remote
file access.
It shall be noticed that remote CFM rights to file access are not supported by the Mass Memory
Management. It is a part of the Security Management policy. It is based on a secure communication
and possible encryption.
There shall be a set of File Handling services in the APOS specific to the MMM. There shall be a set
of data storage handling in the MOS specific to the MMM.
The APOS File Handling provides a set of services that allows multiple accesses. This means multiple
users shall be able to process a file (different processes or different threads within a process). The
different users shall be able to perform concurrent operations. Only the file access rights shall cause
access restrictions.
NATO UNCLASSIFIED 47
NATO UNCLASSIFIED
The communication is
based on VC with a specific
logical interface Application Logical
MMM CFM
Interface
Application
File Application
Server Process
GetCbitResul
t SPB
Data Cbit
error
Network
The MMM performs the APOS File Handling service and sends the result to the requesting
Application.
This shall be a specific logical interface. Its definition depends on the implementation.
Software or configuration information can be loaded from a CFM/PE with a complete TLS to a remote
PE or MSU with only a MSL resident.
- Images incorporating the components of the TLS: OS, GSM and blueprints,
The communication mechanism for this is the Module Logical Interface (MLI) based on TC’s.
The MMM is assigned with the responsibility for the GSM Module Control. The TC’s between the
MMM and a set of controlled CFM are defined within the blueprints and have been configured.
NATO UNCLASSIFIED 48
NATO UNCLASSIFIED
The communication is
based on TC/MLI
MMM SubordinateCFM
AL
requestDownloadToCfm
CFM
OSL GSM Loader
MLI
GetCbitResult SPB
MSL CFM
Cbit error
Booter
Network
- The TC’s on the MMM are defined within the blueprint and have been configured,
- Reading the Blueprint the GSM initiates a download by a SMOS service passing all necessary
information to the OS,
- Then the OS builds messages and sends them in performing dedicated MOS service, which uses
TC on a protocol compliant to MLI Download Management.
At initialisation, the receiving CFM has one default TC ready to receive an MLI message.
First, the Network configuration is downloaded onto the NSM. The other CFM’s are then reachable.
Next, the configuration for the CFM communication is downloaded. The CFM is then able to respond
to the MLI request as the reply MLI TC’s corresponding to the request MLI TC are known and
configured.
Finally, after the PBIT result request, the images incorporating the TLS components can be
downloaded.
NATO UNCLASSIFIED 49
NATO UNCLASSIFIED
AL
requestDownloadToCfm
OLI OLI OLI
Client
OSL GSM Server
Network
In this case, this CFM is not able to download files by its own on a targeted CFM.
- The VC’s between the MMM and requesting CFM are defined within the blueprints and have been
configured,
- The TC’s between the MMM and the targeted CFM are defined within the blueprints,
- Reading the blueprints the requesting CFM/GSM initiates a download by a SMOS service passing
all necessary information to the OS,
- The requesting CFM/OS builds and sends the OLI request message in using VC on a protocol
compliant to OLI Download Management,
- The MMM/OS receives the OLI request and accesses to the file to be downloaded,
- The MMM/OS sends an OLI reply on VC to requesting CFM/OS when the download process is
over. The VC Id of the OLI reply is computed from a rule that depends on the OS implementation.
The requesting CFM can initiate the three download previously cited in the first case.
NATO UNCLASSIFIED 50
NATO UNCLASSIFIED
The communication is
based on VC/OLI
MMM CFM
CreateProcess
Application OLI Application
Processes Processes
Server Downloader GSM
GetCbitResult SPB
Cbit error
Network
- The VC’s between the MMM and the CFM are defined within the blueprints and have been
configured,
- The CFM/OS sends an OLI request using VC on a protocol compliant to OLI file reading,
- The MMM/OS receives the OLI request and accesses the file to be sent,
- The MMM/OS sends an OLI reply on a VC to the CFM/OS with the required data. The VC Id of
the OLI reply is computed from a rule that depends on the OS implementation.
The File Application is retrieved by the CFM/OS, which creates the Application Process.
The ASAAC Graphics concept provides a system graphics capability for driving cockpit and
maintenance panel displays. The concept maximises the potential for software portability and re-use
and employs the standard ASAAC architectural components (e.g. APOS, VC’s etc) wherever
possible.
The graphics capability is realised through the use of one or more graphics functional applications
(hosted on a data processor) in conjunction with one or more graphics engines (hosted on a Graphics
Processing Module).
NATO UNCLASSIFIED 51
NATO UNCLASSIFIED
DPM GPM
Graphics Engine
DP with TLS DP with TLS DP
Graphics Graphics
App Graphics App
Graphics
Library
Library
APOS APOS
VC Mgmt Rendering
VC Mgmt
Software
MOS MOS
Comms Comms
AGL Graphic
Graphic
Interpreter
sAccelerat
Accelerator
s
or
AGL
The graphics functional applications generate a stream of graphical commands (AGL), which are then
transferred over raw VC’s to the graphics engines. The graphics engines take the ASAAC Graphics
tags, interpret and render them and then convert the resulting data into a bit-map image (frame) prior
to transmitting it to one or more displays via the network as shown in Figure 28.
Graphics
Graphics
Application AGL
AGL
Application AGL Interpreter
Interpreter
Graphics
Graphics Rendering
Rendering
Library
Library Software
Software
Graphics
Graphics
Accelerator
Accelerator
The graphics application developer does not write applications using AGL but writes software using
the graphics language/standard of their choice and it is these commands that get translated into AGL
through the use of an appropriate graphics library and then interpreted by the Graphics Engine. See
Figure 29. It is the use of AGL that promotes software re-use and portability and also allows the
functional applications to be hosted remotely from the graphics engines and it is AGL that is defined
as an ASAAC Standard. A full definition of AGL can be seen in Annex A.
NATO UNCLASSIFIED 52
NATO UNCLASSIFIED
A PCM has the capability to switch power on/off from other CFM’s, thus allowing CFM’s to be
powered up and down in a controlled fashion. This section deals with the services necessary to
control the power switches.
The ASAAC Power management concept offers three possible solutions to how these switches might
be managed. The solution chosen by any programme would be entirely at the discretion of the system
designer. They are:
- Application Controlled,
- GSM Controlled,
- MLI Controlled.
The PCM MSL contains ‘power switching’ services (available at the APOS and MOS) enabling it drive
a bank of power switches and it is these switches that are responsible for switching power on/off the
other CFM’s in the rack.
These services are only applicable for the application controlled or GSM controlled solutions.
NATO UNCLASSIFIED 53
NATO UNCLASSIFIED
Power
Management
Application
OSL
APOS
MSL
OS
MOS
Power Switching
Services
As we have already mentioned in the previous section, the DP on the PCM is capable of hosting a
TLS and with that comes the OSL complete with GSM functionality.
The RE Level GSM resident on a PCM, is a GSM just like any other. Consequently it takes its place in
the System Management hierarchy and as with any other RE GSM, it is controlled by a super ordinate
GSM.
NATO UNCLASSIFIED 54
NATO UNCLASSIFIED
Superordinate GSM
The GSM at RE level shall control the power switch settings based upon information it retrieves from
the RTBP in response to ‘mode change requests’ it receives from its super ordinate GSM. Each
request to change mode received by the PCM GSM would result in it getting the relevant CFM
switching information for that mode from the RTBP and then passing it on to the OS using the power
switching services made available within the APOS.
The GSM at IA or AC levels on a distant CFM shall manage the PCM Power Switches configuration.
Reading the RTBP, the GSM sends Power Switches configuration data using the SMOS service
requestDownloadToCfm with the service Id LOAD_POWER_CONFIGURATION and checks the
return status. See section 11.7 SMOS. The OS and the MSL transform this service into MLI
messages.
- The CFM sends the Power Switches configuration data to the PCM in an MLI Message,
- The CFM receives the status of the previous operation onto the PCM on an MLI Message.
NATO UNCLASSIFIED 55
NATO UNCLASSIFIED
The Power Management via MLI shall provide services to monitor the Power Supply and Switching
capabilities.
The GSM at IA or AC levels uses the SMOS service getRemoteInfo with the service Id
POWER_STATUS. The OS sends an MLI request to the PCM. A message, with the status of all
switches is replied. See section 11.7 SMOS.
A Network shall use a single technology throughout. The physical nature of a Network is dependent
on the implementation technology.
- Network for module-internal communication, i.e. IPC, IPEC and IMC, which is described in the
MSL section 10.4.2,
- Network for module-external communication, i.e. BMC, which is described is the present section.
The CFM at power up time is silent and is able to receive a Message from the Network onto a default
TC.
The CFM’s receive the MLI Message Routing Table (see section 12.7.2.2.2.2), which configures the
CFM access to the Network during the initialisation phase.
The GSM at IA or AC levels that manages the CFM, shall read the blueprints, and then shall send
Routing Table using the SMOS service requestDownloadToCfm with the service Id
LOAD_ROUTING_TABLE to the CFM to be configured. The routing table information defines the type
of routing configuration operation it is required to perform within the CFM.
This capability is important because it provides flexibility at initialisation time allowing any Module set
up and running to manage the initialisation of the others. See section 12.7, MLI.
After the CFM initialisation, when it is set up and running with a complete TLS, the GSM may
configure the Network capability of the CFM in using the dedicated SMOS then MOS services. See
section 10.4.2 MSL Communication Capability.
NATO UNCLASSIFIED 56
NATO UNCLASSIFIED
An NSM is started with a default configuration, which is dependent on the network technology applied.
This default configuration sets up a default routing scheme that allows as minimum the configuration
of the NSM at the very beginning of system initialisation. Then the NSM is able to receive a
configuration from an external CFM.
The GSM at IA or AC levels manage the Network Configuration. Reading the RTBP, the GSM sends
configuration data using the SMOS service requestDownloadToCfm with the service Id
LOAD_NETWORK_CONFIGURATION via the connected link between the CFM and the NSM. See
section 11.7.8.1.
To configure the NSM the following operations are performed: (In the following text the numbers (1),
(2) and (3) identify the messages in the Figure 32)
- The CFM sends the ASAAC switch configuration data (1) to the NSM.
- The Message comprises all necessary headers to pass through the network switch (Message
Network Header), to reach the end point in the NSM/MSL (TC Header) and finally to be
interpreted by the SCU (MLI Header).
- The SCU receives the ASAAC switch configuration data (2). Then, it translates these data into the
Network switch configuration data, which are understandable by the switch.
- The SCU sends the Network switch configuration data (3) to the switch.
CFM
AL
NSM
SMOS sendLocalInfo
OS
OS
OSL RTBP GSM Switch
(1) (3)
NIU
NIU NIU
NIU
(2)
NATO UNCLASSIFIED 57
NATO UNCLASSIFIED
Message
Message (3)
Network Header
Network Header
Configuration
Configuration
TC Header
TC Header Network Header
Network Header
MLI Header
MLI Header Network Switch
Configuration
ASAAC Switch Data
Configuration
Data
The GSM at RE level is able to check whether the hosting CFM has its network interface resource
onto the NIU is sane in using the SMOS then the MOS services getNetworkPortStatus. See
section 11.5.1.3.6 and 11.7.4.4.
The GSM at IA or AC levels may be able to check all remote end-point communication either
internally (. e.g. a PE in the same CFM) or externally (. e.g. a PE in a distant CFM) to the CFM. The
GSM uses the SMOS service getRemoteInfo with the service Id TEST_MESSAGE. This test
mechanism is based on an MLI message on TC. The TC is an end-point wherever in a CFM. It may
be either a remote MSU or a remote PE. See section 11.7.8.2.
The GSM at IA or AC levels is able to retrieve the status of the whole Network. The GSM shall use
the SMOS service getRemoteInfo with the service Id NETWORK_STATUS. Actually the OS sends an
MLI request to the NSM. A message, with the status of all ports physically connected up to the NSM,
is replied. See section 11.7.8.2.
The change of the Network Topology shall not have an impact on the MSL implementation of the
CFM. At a level above the MSL a change of Network Topology shall imply the change of the Network
configuration data within the blueprints.
NATO UNCLASSIFIED 58
NATO UNCLASSIFIED
- The OSL:
- The GSM, responsible for the configuration and the Fault Management of the Time,
- The OS, bridging between the MSL and the APOS client or the GSM.
The Time Management is based on three time references, a hierarchy of Clocks, and the
management of the Clock on each CFM.
This is essentially the time of day, universally known both inside and outside the aircraft and therefore
inside and outside an IMA system. Absolute global time is usually provided in terms of year, month,
day, hour, minute and second, with fractional seconds if required, and is usually local to the current
time zone (e.g. GMT).
The resolution and accuracy will be constrained by that of data transmitted to the aircraft from sources
such as GPS.
The concept for the Absolute Global Time specifies that this time reference shall be:
- Distributed to all the Common Functional Modules (CFM) within the IMA system,
The Absolute Local Time is the system time reference within an IMA processing system. ALT shall be
initialised upon the occurrence of a system event such as the application of power. ALT will have a
NATO UNCLASSIFIED 59
NATO UNCLASSIFIED
higher resolution than AGT, and as such, it may be used by functional applications requiring high
levels of synchronisation such as the implementation of multiple redundant processing lanes.
The concept for the Absolute Local Time specifies that this time reference shall be:
- Distributed/synchronised throughout the CFM’s that form the IMA System to cope with the system
(global) time resolution requirement,
- Exhibiting no discontinuities, i.e. the clock shall not jump forwards or backwards,
Relative Local Time is local to a CFM and can be of a higher resolution than the two other time
references. RLT is used:
- Made available to the OSL and AL through the use of MOS and APOS services.
The concept for the Relative Local Time specifies that this time reference shall be independent from
the ALT.
During the system initialisation process, blueprint information shall determine the position of a
particular clock in the hierarchy in terms of it assuming the functionality of either a:
NATO UNCLASSIFIED 60
NATO UNCLASSIFIED
MRC
MRC
(CFM)
(CFM)
MC
MC MC
MC
(CFM) (CFM)
(CFM) (CFM)
RC
RC RC
RC
(CFM) (CFM)
(CFM) (CFM)
RC
RC
(CFM)
(CFM)
MC
MC MC
MC MC
MC MC
MC MC
MC
(CFM) (CFM) (CFM) (CFM) (CFM)
(CFM) (CFM) (CFM) (CFM) (CFM)
MC
MC MC MC
MC
(CFM)
MC (CFM)
(CFM) (CFM) (CFM)
(CFM)
The Clock hierarchy is designed for each implementation. The basic rules of this hierarchy are:
- The MRC shall be unique in the Time hierarchy. It is the highest level of the hierarchy. It shall be
able to be in charge of several RC or MC.
- The RC shall be under the control of an upper Clock that may be an RC or an MRC. It shall be
able to be in charge of several RC or MC.
- The MC shall be under the control of an upper Clock that may be an RC or an MRC. It is the
lowest level of the hierarchy.
- The TC to communicate with the upper clock (MRC or RC). If the Clock is itself an MRC, it shall
be the TC’s to communicate with the external source.
The configuration of the Federated Clocks (SMOS service attachFederatedClock, section 11.7.9.2,
and MOS service attachFederatedClock, section 11.5.1.2.1.5) to the Clock on this CFM comprises:
The configuration of the Clock is performed once. The configuration of the Federated Clocks may be
multiple (MRC or RC) or never done (MC), it depends on the Clock hierarchy.
NATO UNCLASSIFIED 61
NATO UNCLASSIFIED
If the CFM does not have a TLS and only an MSL available, the Clock is remotely configured with an
MLI message (MLI message Time Configuration, section 12.7.2.2.3.1), which is initiated by a GSM
onto a distant CFM.
The Clock Management depends on which mode it is configured and which Time references it is
managing.
1. Power up,
2. GSM configuration,
3. Time distribution.
- RLT: it may be initialised and available if the dedicated hardware resource is set up and running,
- ALT: As the GSM is not set up and running yet. The ALT is set as unavailable,
Then the GSM has configured the clock in a particular mode. The initialisation of the ALT and AGT
starts depending on the Clock Mode.
- MRC: the ALT is initialised, then ready to be provided. The AGT is requested from an external
source,
- RC: The ALT and the AGT are requested from the upper Clock,
When the AGT and ALT are initialised and available in the MRC, they may be distributed through the
clock hierarchy.
NATO UNCLASSIFIED 62
NATO UNCLASSIFIED
Application Layer
System
Management
Functional Application
Application Management
APOS
MOS
Layer Process Class MOS APOS SMOS SMBP SMLI GLI OLI MLI
Functional
Application - U - - - - - -
AL
Application
Manager - U - - PU - - -
OS U P P - - - PU U
OSL
GSM - U U U PU PU - -
- RTBP - - - P - - - -
NATO UNCLASSIFIED 63
NATO UNCLASSIFIED
MSL - P - - - - - - PU
The “functional application” processes and “application manager” processes are also summarised by
the term “Application Process”.
Note: All processes, which have no visibility of the APOS interface depend on MOS services, and
may also utilise OS internal services.
10.4 MSL
The functions implemented by the MSL and visible at the MOS or MLI (Module Logical Interface see
section 12.7) comprise:
- PE local functions:
- Timer Functions,
- Device Services,
- Callback Services,
- BIT,
NATO UNCLASSIFIED 64
NATO UNCLASSIFIED
- NII Services.
- CFM Initialisation,
- MLI Protocol,
- CFM BIT,
- Logging,
- Time Management.
- The NII: The upper layer uses services of the MOS interface for communicating that are
independent on the technology used within the MSL. This subset of the MOS interface dedicated
to the communication purpose is the NII.
- The TC: The communication means of the MSL is the TC. This object is allocated below the NII,
and the upper layer handles it through NII services.
- The MLI messages: A CFM is able to control a remote CFM at MSL level.
- To make the network implementation and the OS implementation independent of each other,
NATO UNCLASSIFIED 65
NATO UNCLASSIFIED
Extension services have been identified to support some signal processing applications (e.g.
RADAR). They are listed in the following table:
ConfigureFragmentedTransfers (…) Provides to the MSL the distribution and collection laws
associated to fragmented transfers
10.4.2.2 TC
10.4.2.2.1 Identification
Within the MSL Communications, three types of identifiers are used in addressing and routing:
- TC identifier,
- Network identifier,
- Interface identifier.
10.4.2.2.1.1 TC identifier
Each TC is identified throughout the system by a unique TC identifier, and is the same at all
terminations of the TC. Exceptionally, non-unique TC identifiers may be used locally where required,
e.g. during initialisation (See section 10.4.2.2.4).
Each connection between the Network and the CFM is identified throughout the system by a unique
Network Identifier, which is specified as part of the NetworkDescriptor structure. The
NetworkDescriptor consists of two elements:
- Network, which is a value used to identify a particular Network and is unique within the ASAAC
System,
- Port, which is used to identify a port connected to a Network and is a unique value within that
Network.
Each of the internal and external networks or communication mechanisms is identified as a Network.
The CFM is connected up to external Network through NIU. The internal parts of the CFM are
connected to an internal Network through the RU.
NATO UNCLASSIFIED 66
NATO UNCLASSIFIED
The scope over which the network and port parameters are unique depends on the scope of the
particular network:
- For a BMC Network, while the network parameter must be unique within the system, the port
parameter need only be unique within the module,
- For an IMC Network, both parameters must be unique within the module,
- For an IPEC Network, both parameters must be unique within the PE,
- For the IPC Network, nominal values are used for both parameters.
Interfaces of various forms are used for both module-external communication, over the
communication network, and module-internal communication. Interfaces include NIU using for the
communication network for BMC, and RU for IMC.
An interface on a PE is unique within that PE. Interfaces on NIU and RU are unique within the
Module.
The interface identifier value of a physical interface in the module is permanent and given by the
specification of the MSL.
10.4.2.2.2 Configuration
All these identifiers are specified within the blueprints. The OSL handles the blueprints and shall
configure the MSL in using the NII configuration services. That configuration is done in two stages:
1. The configureInterface service maps the interface identifier (not modifiable within the
MSL) to a NetworkDescriptor (modifiable within the blueprints) and configures the interface
devices that may be spread on the PU, MSU and NIU. After this operation, all interfaces have a
unique identifier when they are seen from the NII.
10.4.2.2.3 TC end-point
A TC has two or more (for multi-cast) end-points that may be either on the same Module or on
different Modules. They determine the departure point and the arrival point of the TC. It shall be
noticed that this end-point may be either:
- The NII: in that case TC messages are performed with the NII services sendTransfer and
receiveTransfer,
- Within the MSL: The message is directly performed by the MSL. The upper layer is not notified
and cannot access to the message. This type of end-point shall be used for performing MLI
services.
NATO UNCLASSIFIED 67
NATO UNCLASSIFIED
By default any TC is received by the module. There is no further routing inside the module unless a
routing table is received.
The initial transfer of a routing table is provided in a single message in accordance with the MLI
protocol.
The Module Logical Interface (MLI) is a communication mechanism for holding a dialog between two
MSL layers. This Logical Interface leads to the interoperability of Modules. This Logical Interface is
based onto TC.
It comprises:
- CFM Resources Management, providing a means of managing a remote CFM (particularly one
with only an MSL resident). This may involve retrieving data from or remotely testing such a CFM.
The type of services provided are:
- PBIT result,
- CFM Info,
- CFM Status,
- Load image,
- Power Switch Management, providing a means of managing a remote PCM (particularly one with
only an MSL resident),
NATO UNCLASSIFIED 68
NATO UNCLASSIFIED
Details on the Resident Software are fully specified in the CFM standard (refer to document [2]).
10.5 OSL
10.5.1 GSM
10.5.1.1 Introduction
The GSM is the generic part of the system management that is organised in three levels as a
hierarchy. The GSM is instantiated at these three levels:
For more details about this hierarchy refer to section 4.1 System Management Function.
- Health Monitoring
- Fault Management
- Configuration Management
- Security Management
This breakdown does not drive to a Software design but allows identifying behaviour and involved
interfaces per functions and levels.
GSM's operating at different levels within the system management hierarchy shall communicate with
each other via a logical interface referred to as the GLI. This interface in effect provides
communication paths between the different instances of GSM from the Aircraft Level to RE Level,
passing by possible IA Level.
NATO UNCLASSIFIED 69
NATO UNCLASSIFIED
This figure introduces the interactions between GSM at different levels as an example and highlights
requirements in the following sections.
External Interfaces:
The external interfaces of the GSM are the Application to OS Interface – APOS, the System
Management to OS Interface – SMOS, the System Management to Blueprints Interface – SMBP, and
the GSM Logical Interface – SMLI (Figure 38):
AC
SMOS SM HM CM SMBP
FM
APOS SMLI
IA
SMOS SMBP
SM HM FM CM
APOS SMLI
RE
SMOS SMBP
SM HM FM CM
APOS
NATO UNCLASSIFIED 70
NATO UNCLASSIFIED
10.5.1.3 RE Level
The GSM at RE Level shall be responsible of managing the Resource Element that hosts it in
providing the four main functions.
It shall be under the control of a unique super-ordinate GSM that may be at IA or AC level.
It shall receive the configuration to be applied from its super-ordinate Configuration Management via
the GLI, or its AM via SMLI or the associated Fault Management.
- Time Management.
It shall request the OS to apply the configuration data via the dedicated SMOS service.
stopProcess PROCESS_SET
destroyProcess PROCESS_SET
setSchedulingParameters SCHEDULING_ITEM
VC createVirtualChannel VC_SET
attachChannelToProcessOrThread VCMAPPING_ITEM
detachAllThreadsOfProcessFromVc VCMAPPING_ITEM
attachTransferConnectionToVirtualChannel VC2TCMAPPING_SET
detachTransferConnectionFromVirtualChannel VC2TCMAPPING_SET
NATO UNCLASSIFIED 71
NATO UNCLASSIFIED
It shall maintain the health status of the RE via the SMOS services related to the BIT Management.
It shall reply its health status to its super-ordinate Health Monitoring when required.
It shall get from the RTBP information for processing the error confirmation.
Management startCbit
getCbitResult
It shall access to RTBP in order to get the actions to be performed for the confirmed error. The
actions to be performed may be:
It shall log all types of Message following RTBP actions. Fault Management maintains the
error/message log, as logging is performed via the GSM. Specific areas of memory may be allocated
for different purposes e.g. errors, maintenance, and system moding or events.
NATO UNCLASSIFIED 72
NATO UNCLASSIFIED
getMyCfmInfo
getMyPeId
Management getIbitResult
During configuration of an RE, the RE-GSM-SM accesses the RTBP in order to ascertain whether
protectively marked data is to be processed on this particular PE. If it is, the RE-GSM-SM then enters
a dialogue with its subordinate SM in order to take receipt of the encryption and authentication keys it
will require during the mission.
During normal operation, the RE-GSM-SM will be required to encrypt, decrypt and authenticate any
data sent to it by its OS. The actual action performed on the data will be defined from data retrieved
from the RTBP during the configuration process.
If the RE-GSM-SM is not able to decrypt or validate the authentication of an item of data, it may send
a message via the GLI to its superordinate GSM-SM.
Security getPMData
Management returnPMData
getAuditData
erasePhysicalMemory
10.5.1.4 IA Level
The GSM at IA Level shall be responsible of the generic part of the system management of an
Integration Area in providing the four main functions.
It shall be under the control of a unique super-ordinate GSM that may be at IA or AC level.
NATO UNCLASSIFIED 73
NATO UNCLASSIFIED
It shall receive the configuration to be applied from its super-ordinate Configuration Management via
the GLI, or its AM via SMLI or the associated Fault Management.
It shall manage the initialisation phase of associated CFM’s, which may be PCFM, NSM and PCM, in
terms of:
It shall be responsible of the Power Management and the Network Management for its set of
subsequent CFM’s.
It shall maintain the health status of the IA via the dedicated GLI Messages (Are you/I am alive).
It shall reply its health status to its super-ordinate Health Monitoring when required.
It shall get from the RTBP information for processing the error consolidation and then its confirmation.
It shall access to RTBP in order to get the actions to be performed for the confirmed error. It may
perform the following actions:
NATO UNCLASSIFIED 74
NATO UNCLASSIFIED
The IA-GSM-SM is capable of acting as an interface between the superordinate GSM-SM and their
subordinate GSM-SM.
10.5.1.5 AC Level
The GSM at AC Level shall be responsible of the generic part of the system management of an IMA
System in providing the four main functions.
It shall receive the configuration to be applied from either its AM via SMLI or the associated Fault
Management.
It shall manage the initialisation phase of subsequent CFM’s acting like an IA-CM.
It shall maintain the health status of the IMA System via the dedicated GLI Messages (Are you/I am
alive).
It shall get from the RTBP information for processing the error consolidation and then its confirmation.
It shall access to RTBP in order to get the actions to be performed for the confirmed error. It may
perform the following actions:
NATO UNCLASSIFIED 75
NATO UNCLASSIFIED
10.5.2 OS Functions
The ASAAC OS primarily provides the abstraction required for a resource element. It further defines
the interface services required for the integration of a resource element within the ASAAC core and
for system management.
This section describes the OS functions and defines the interface functions required. The OS
functions are grouped into six classes:
1. Basic OS Functions,
2. Communication Functions,
3. Application Services,
4. OS Error Handling,
5. OLI Services,
6. GSM Services,
These six groups of OS functions are generic for any ASAAC OS, regardless of the module type.
Additionally, there are specific functions for the MMM and the PCM modules:
The basic functions of the OS focus on the management of the following resources:
- Processing time, associated with the processor resources that are provided by a processing
element,
- Elapsed time, associated with the resources of absolute time, i.e. real-time, and
- Memory resources.
NATO UNCLASSIFIED 76
NATO UNCLASSIFIED
- Process Management.
- A thread executes within the address space of its associated process, and shares storage and
code areas with the other threads belonging to the same process.
- A thread possesses its own context (i.e. separate stack and processor register settings).
- A thread shall be pre-emptable with the exception of critical areas, which are protected against
pre-emption.
- A thread communicates with other threads of the same process via semaphores, events, and
VC’s.
- Thread scheduling may be based on absolute local time in order to allow implicit thread
synchronisation within the given time accuracy across process borders.
- A thread within a GSM process may in addition invoke OS functions via the SMOS interface.
Scheduling Management
Initialisation
Real-time Control
DORMANT
Release point stopThread
startThread
stopThread
sleep
waitForSemaphore
schedule receiveMessage
suspendSelf
RUNNING
terminateSelf
Execution Control
NATO UNCLASSIFIED 77
NATO UNCLASSIFIED
- Dormant
the thread is ineligible to receive resources. A thread is in the dormant state before it is started
and after it is terminated (or stopped).
- Ready
the thread is eligible for scheduling. A thread is in the ready state if it can be executed but is not
'Running'.
- Running
the thread is currently executing on the processor. Only one thread can be executing at a time (on
each processor).
- Waiting
the thread is not allowed to receive resources until a particular event occurs (message, time out,
etc.).
Table 15 describes in rows the departure state and in columns the arrival state. The character ‘-‘
means the transition shall be forbidden; otherwise, it is the number defining the condition of state
transition that is described in the Table 16.
Table 15 – Transition of Thread States
Number Condition
1. When the running thread calls the APOS service startThread, thus starting the
thread.
2. When the running thread calls the APOS service stopThread, thus stopping the
thread.
3. When the running thread stops by its own with the APOS terminateSelf.
4. When the running thread waits on APOS sleep of zero or is pre-empted by
another thread within the process.
5. When the thread is selected for execution by the OS scheduler
6. There are four alternatives:
- The running thread suspends itself calling the APOS service suspendSelf,
- The running thread has called the APOS service sleep or sleepUntil,
7. Either when the resource that the thread was awaiting becomes available or
NATO UNCLASSIFIED 78
NATO UNCLASSIFIED
Number Condition
the time-out expires.
If this is a periodic thread waiting on its period, the OS scheduler places it in
the new state when the awaited release point is reached.
As the GSM, which initiates a process, does not have control of the scheduler, a special thread in the
process, the main thread, gets started at the transition of process ‘INITIALISED’ state to process
‘RUNNING’ state, while all other threads in the process are started in the DORMANT state. The main
thread then takes control immediately after the process has been initiated and may start other threads
within the same process.
The purpose of execution control is to share the processing resources between a set of threads,
which are eligible for execution (thread status is either ‘READY’ or ‘RUNNING’). This is illustrated by
Figure 39, which shows the thread states in a state transition diagram classifying the transitions into
distinct responsibilities. The purpose of execution control is to select one out of a set of ‘READY’
threads, and to transfer it into the ‘RUNNING’ state according to a particular scheduling scheme.
Equally, another thread that may have been ‘RUNNING’ is transferred to the ‘READY’ state. The
applied scheduling scheme is not standardised. An OS may even provide multiple scheduling
schemes. Examples for scheduling schemes include:
- Cyclic Executive,
Characteristics
b) Execution Control shall select one or none thread out of a set of scheduled threads for execution.
This shall be done in accordance with the scheduling scheme selected and the scheduling
parameters provided.
f) Unless the scheduling parameters and the scheduling scheme for a thread are defined, a thread
shall not be scheduled.
Real-time control is the part of Scheduling Management that relates execution control with the real-
time behaviour required for the individual threads. In order to be able to provide time safe operation of
the application functions, it is required to define the real-time constraints of application thread
execution. Real-time control is performed in accordance with a real-time control scheme. This scheme
defines times and conditions for a thread to become included into the set of scheduled threads
(release point), and the time after which a runtime exception is raised, if a thread has not completed
NATO UNCLASSIFIED 79
NATO UNCLASSIFIED
its activity (deadline). The release point and the deadline define the real-time constraints within any
real-time control scheme. The way, release points and deadlines are expressed depending on the
selected real-time control scheme. The real-time control scheme is not standardised. Examples for
real-time control schemes include:
Either the Application Process or the OS may include the real-time control function. If an Application
Process includes the real-time control scheme, the OS real-time control function is not required. The
OS real time control will then be limited to a situation, where no release points and deadlines are
defined. Within the implementation of the Application Process, assumptions about the applied
scheduling scheme have to be made.
Characteristics:
a) A thread shall be transferred from the ‘WAITING’ state to the ‘READY’ state, if its release
point is encountered.
b) The OS shall monitor the timing resources associated with a thread (elapsed time resources =
deadline, processor time resources = budget).
c) A violation of any real-time constraints associated with a single thread shall cause the OS to
raise a “Real-time Exception” associated with that thread. If no real-time constraints are associated
with a thread, this exception is not required.
The following APOS and SMOS services are used to control threads (for detailed description refer to
section 10.7 and 11.7.1):
- APOS getMyThreadId
- APOS getThreadStatus
- APOS startThread
- APOS stopThread
- APOS terminateSelf
- APOS suspendSelf
- APOS lockThreadPreemption
- APOS unlockThreadPreemption
- APOS sleep
- APOS sleepUntil
- SMOS createThread
- SMOS setSchedulingParameters
NATO UNCLASSIFIED 80
NATO UNCLASSIFIED
A process is a container entity, which encapsulates executable object code without external
references. It encloses one or more threads including all memory resources required by threads,
global data, and communication buffers.
The primary attributes of a process are its identity, a file of executable object code, and its memory
space requirements. The identity of a process is unique within the system and shall identify the
individual function assigned to that process within the context of the system.
A set of secondary attributes controls the behaviour of the code inside the process. Processes are
classified into two categories:
The process is associated with a main thread and optionally with additional threads. The set of
additional threads should include an error handler thread. The error handler thread may be invoked by
the system fault management function in order to complement system error handling at the
application level. Additionally, a scheduling policy is assigned with each process.
- Each process has its own, static memory space that is not accessible by any other process.
NATO UNCLASSIFIED 81
NATO UNCLASSIFIED
runProcess
attachChannelToProcessThread
Running
Stopped
detachAllThreadsOfProcessFromVc
stopProcess
destroyProcess
setSchedulingParameters
createThread
runProcess
createProcess
attachChannelToProcessThread
Initialised
detachAllThreadsOfProcessFromVc
destroyProcess
setSchedulingParameters
- Initialised:
Configuration mode of the process. This is the default state of a process, when it is created. In
this state threads may be created, scheduling parameters may be loaded, VC’s may attached or
detached from the process. Scheduling of threads is disabled.
- Running:
Operational mode of the process. The configuration of the process cannot be changed.
Scheduling of threads is enabled.
- Stopped:
Scheduling of threads is disabled.
Characteristics
a) Scheduling for all the threads associated with a process shall be disabled when the process is
in the ‘STOPPED’ or ‘INITIALISED’ state regardless of value of scheduling parameters.
NATO UNCLASSIFIED 82
NATO UNCLASSIFIED
b) SMOS configuration associated with a process shall be applicable only if this process is in the
‘STOPPED’ or ‘INITIALISED’ state.
c) SMOS creation of a thread shall be applicable only if this process is in the ‘INITIALISED’
state.
d) Scheduling for all the threads associated with a process shall be enabled when the process is
in the ‘RUNNING’ state. The scheduling is performed in accordance with the scheduling parameters.
The OS manages all memory resources provided by the processing element. There are two main
kinds of memory. There is memory that is required by the OS itself in order to perform its functions
(e.g. VC management or scheduling). Additional memory is required by all functions that are external
to the OS. The memory requirements for these functions are described by the process abstraction. A
process encapsulates a bounded amount of memory. The memory limitations of a process are pre-
determined, upon the creation of a process. For safety reasons, the memory areas of the OS and the
individual processes are protected against each other. The process abstraction is used for all kinds of
functional applications and for the GSM functions. It is not available for the functions provided by the
MSL.
Characteristics
e) Whenever a violation of the memory area assigned to either OS or processes occurs, the OS
shall raise a “Memory Violation Exception”.
The following SMOS services are used to control Processes (for detailed description, refer to section
11.7.1):
- SMOS createProcess
- SMOS destroyProcess
- SMOS runProcess
- SMOS stopProcess
As all process services operate on global data they shall protect themselves against pre-emption in
order to preserve data integrity of these data items.
NATO UNCLASSIFIED 83
NATO UNCLASSIFIED
- The VC: The VC is a communication object that handles communication between processes.
- The SMOS services related to the communication: The GSM is responsible of the management of
the communication objects VC and TC.
- The APOS VC services: The AL uses VC services of the APOS interface for communicating.
- The OLI: An OS is able to hold a dialog with another OS in using the OLI.
10.5.2.2.1 VC
10.5.2.2.1.1 Properties
- A VC is a communication object that enables VC users not to be aware of the location of each
other.
- The VC features are completely described in the blueprints in terms of direction, number and size
of buffer, and behaviour (e.g. 1:1 or multicast).
- A VC enables the sender and the receiver(s) to work asynchronously from the data transfer
activity, which is handled by the OS. This implies buffering.
- A VC is defined as a one-way path that specifies the sending point and the receiving point(s).
(Another VC may only provide a return path.)
- The VC’s running on a system are assumed to be independent from each other in terms of
memory resource allocation and logical behaviour.
- A VC supports two types of behaviour, which shall be selected by a parameter within the
blueprints:
NATO UNCLASSIFIED 84
NATO UNCLASSIFIED
The aim of this type of VC is to provide for a reliable means of transmission, no loss being permitted,
from a sender thread to one or more receiving threads.
The receiver and sender buffers are managed in a first in first out logic.
The sender does not block, and it is able to transmit data to its receivers even if one of the receivers
does not read the data on that VC.
Note: Depending on the parameters specified for this type of VC, and if one of the receivers does not
read the data on that VC, the sender may be unable to send any data on the VC or an error occurs.
The aim of this kind of a VC is to provide for a reliable means of updating a transmission history to
receiver(s).
The receiver accepts the messages in a buffer in a last in first out order.
Each time the receiver reads the VC it will receive the newest unread message.
NATO UNCLASSIFIED 85
NATO UNCLASSIFIED
The sender shall not wait on buffer availability. Lack of buffer resource on sender side shall raise an
error.
The sender does not block, and it is able to transmit data to its receivers even if one of the receivers
does not read the data on that VC.
Note: The behaviour of this type of VC requires the application to include some sort of sequencing
data to the message (e.g.: data validity time stamp, or sequencing number) to enable the receiver to
detect whether the data it is consuming is the latest value or a historical message.
10.5.2.2.1.4 Identification
- A Global VC identifier that is unique throughout the system, and is the same at all terminations of
the VC identifies a VC. This information is located within the blueprints.
- From the application point of view, a Local VC identifier that is unique within this one identifies the
VC. This Identifier is absolutely not related of the design of all other application. That allows not
knowing the location of the other application.
The GSM is responsible for the communication management based on information within the
blueprints. The OS provides the GSM with a set of services in the SMOS interface.
getNetworkPortStatus (…) Gets from the MSL locally stored network information.
NATO UNCLASSIFIED 86
NATO UNCLASSIFIED
10.5.2.2.2.2 Configuration
Global and Local VC Identifiers are both specified within the blueprints. The GSM handles the
blueprints and shall initiate the OS to configure the Communication. That configuration is done in
three stages:
- VC Configuration: The resources of the VC object are allocated, but the VC not active yet.
- Routing: The attachment is split into two parts. First the attachment of the VC on a TC (If a TC is
needed). Then the attachment to the Process Application, the
AttachVirtualChannelToProcess service maps the global VC identifier (unique within the
System) to the local VC identifer (unique within the Process)
10.5.2.2.2.3 Runtime
There are three types of VC messages, which are discriminated, by means of the VC info (as defined
by blueprints).
- APOS VC:
During Runtime messages being sent on an APOS VC shall be attached with a VC header and
mapped to a global VC; any message received on a global VC shall be mapped onto processes
and threads and the VC headers shall be stripped off.
- OLI VC:
An OLI VC shall be identified by means of its type definition in the SMBP structure VcDescription.
- Raw VC:
During Runtime messages being sent on a raw VC shall be mapped to a global VC; a raw VC
message received on a global VC shall be mapped onto a single process thread. The mapping of
raw VC is constrained to a single receiver.
When a global VC message is being sent through the NII, it shall be mapped on one or more TC’s
associated with that global VC. When a TC message is received at the NII it shall be associated with
the relevant global VC.
APOS Services related to VC make the Application Processes independent of the location of the
other. Additionally, the Application Processes have any information about the VC features they are
using.
sendMessageNonblocking (...) Sends a message via a specified VC without blocking the caller.
receiveMessageNonblocking (…) Reads a message from the specified VC, if available, and returns
immediately without blocking the caller
NATO UNCLASSIFIED 87
NATO UNCLASSIFIED
sendMessage (…) Sends a message via the specified VC blocking the caller.
receiveMessage (…) Awaits, blocking the caller, until a message is received on the
specified VC.
waitOnMultiChannel (…) Waits on several VC’s for messages to arrive (on receive
channels) or/and for sending buffers to be freed (on transmit
channels).
Application functions are mapped to Application Processes. The OS services are offered to the
Application Process at the APOS interface. There are five main groups of functions, which are
accessible through the APOS interface:
- Time Services,
- Thread Control,
- Synchronisation,
- Communication,
- Error Handling.
These services are available for every resource element regardless of the module type the resource
element is mapped to. The file handling function is only available for resource elements of the type
Mass Memory Module.
The OS provides time services for the application functions. There are two kinds of times that are
provided by the OS.
NATO UNCLASSIFIED 88
NATO UNCLASSIFIED
System time.
As absolute local time may be used for
Homogeneous within the whole time triggered thread execution, the
Absolute Local Time
system. accuracy of absolute local time is
defined by the platform functions.
Provided by CFM service.
Universal Time
The accuracy of absolute global time is
Absolute Global Time
Homogeneous within the whole defined by the aircraft functions.
aircraft.
These are the APOS time services (for detailed description, refer to section 11.4.2):
- APOS getAbsoluteLocalTime
- APOS getRelativeLocalTime
- APOS getAbsoluteGlobalTime
Application processes may require synchronisation services in special situations. For instance it may
be required to sequentialise access to process local data between threads or to synchronise the
execution of threads to a certain event.
The OS shall provide two separate means of synchronisation, namely semaphores and events. These
mechanisms can be used only within a single process.
10.5.2.3.2.1 Semaphores
Semaphores are an abstract signalling mechanism reflecting the utilisation of shared resources.
Given a bounded set of shared resources, a counting semaphore provides a locking mechanism for
such a set of resources. It is initiated to a value reflecting the number of available resources. As long
as a resource is available, a lock is immediately achieved and the counter is decremented. When a
lock is returned, the counter is incremented again. If all resources are locked, the requesting thread is
transferred into the ‘WAITING’ state and placed into a queue together with other threads waiting for
the same semaphore. When a semaphore is returned, the next thread from that queue achieves the
lock and is transferred back to the ‘READY’ state.
Characteristics
NATO UNCLASSIFIED 89
NATO UNCLASSIFIED
a) The semaphore shall be associated with a counter. The counter is initialised to a value
reflecting the number of resources available.
c) As long as the counter value is greater than zero, a semaphore lock shall be immediately
achieved.
d) When the counter value has reached zero, it shall not be decremented any more. The
requesting thread shall be transferred into a ‘WAITING’ state and shall be placed into a queue
of waiting threads.
e) The queue of waiting threads shall provide either FIFO behaviour or priority queue behaviour.
The priority shall refer to the scheduling priority as defined by the scheduling parameters,
which are associated with the thread.
f) When a semaphore lock is returned, the next output from the queue of waiting threads shall
obtain the lock, and shall be transferred into the ‘READY’ state.
g) If the queue of waiting threads is empty, the counter that is associated with the semaphore
shall be incremented up to a predetermined maximum value reflecting the amount of
resources controlled by the semaphore.
Note that the use of priority based queuing depends on the thread-scheduling scheme, and may not
be portable between resource elements using different scheduling schemes.
- APOS createSemaphore
- APOS deleteSemaphore
- APOS waitForSemaphore
- APOS postSemaphore
- APOS getSemaphoreStatus
- APOS getSemaphoreId
10.5.2.3.2.2 Events
The event mechanism is another signalling mechanism, providing an abstraction of a process global
condition. The event indicates whether a condition is satisfied or not. Threads may wait for a condition
to be satisfied.
Characteristics
a) An event condition shall only be valid within the scope of a single process.
b) If an event condition is not set, a thread shall be transferred to the ‘WAITING’ state for a
bounded amount of elapsed time until the event condition is set.
NATO UNCLASSIFIED 90
NATO UNCLASSIFIED
c) If an event condition is set, all threads, which are waiting for this particular event condition,
shall be transferred back into the ‘READY’ state.
- APOS createEvent
- APOS deleteEvent
- APOS setEvent
- APOS resetEvent
- APOS waitForEvent
- APOS getEventStatus
- APOS getEventId
The application error handling covers Application Process related (i.e. implementation related) fault
management and fault management in the domain of application functions (i.e. function related). In
either case, the dedicated entity for error handling is the GSM (refer to section 10.5.1). All errors
occurring, whether it is a hardware error, an OS exception or an application error, are collected by the
GSM function. The GSM fault localisation or fault masking procedures may delegate dedicated sub-
functions to Application Processes. Any Application Process may have a dedicated thread for the
error handling, the error handler thread. This thread is controlled by the GSM function, and is outside
the scope of control of the Application Process itself. The error handler thread has exclusive access to
the APOS error handling services except raiseApplicationError, which can be used by any thread.
Characteristics
c) The error handler thread, when started, shall be transferred into the ‘READY’ state. It shall be
scheduled like any other thread.
d) When the error handler thread completes its execution, it shall be transferred into the
‘DORMANT’ state.
- APOS logMessage
- APOS raiseApplicationError
- APOS getErrorInformation
- APOS terminateErrorHandler
NATO UNCLASSIFIED 91
NATO UNCLASSIFIED
10.5.2.4.1 Overview
The OS error handling differs according to the error originator. Three types of OS Error Handling are
identified:
- Application Error
- OS Error
- MSL Error
An error identifies both the detected fault and the Fault Detection Mechanism that has detected it as
well.
The OS, which notifies the GSM, first collects all errors related to Application Processes, OS and
MSL.
Then the GSM decides, according to the Fault Handling policy that is described within the blueprints,
the relevant actions to be performed. It may either
- Discard it
10.5.2.4.2.1 Principle
The Application provides the OS with the error. Then the OS forwards it to the GSM that decides of
the next actions, which may be the activation of the Error Handler.
NATO UNCLASSIFIED 92
NATO UNCLASSIFIED
APOS raiseApplicationError
ReturnStatus
1. A thread in an Application Process raises an error. This error is notified to the OS by APOS
raiseErrorApplication. The error is specified by:
- An error code that identifies both an error and the Fault Detection Mechanism that has detected it.
- An error message
2. The OS builds an error report with Application Error information and additionally:
- Faulty Thread Id of the thread that has called APOS service raiseErrorApplication.
3. The OS releases SMOS blocking service getError thus the GSM retrieves the error report.
4. According to the Fault Handling policy within the blueprints, the GSM may request the activation of
application error handler (SMOS service activateErrorHandler) to the OS. This point is stressed in the
rest of the sequence.
5. The GSM thread that has called the SMOS service activateErrorHandler is blocked.
NATO UNCLASSIFIED 93
NATO UNCLASSIFIED
7. The application error handler retrieves the error code with APOS getErrorInformation service.
8. The error handler processes the Application error then passes its return status to the OS via the
APOS terminateErrorHandler service.
9. The OS releases the GSM thread that is blocked on the SMOS service activateErrorHandler.
The Application Error Handler is optional. If it is used it shall be defined in the blueprints and shall be
created at Application process creation time as any other application thread.
It shall be activated when GSM initiates the OS. It is identified as the Thread number zero.
The Error Handler shall not use blocking services and shall provide its return code to the OS.
The error handler shall terminate with the APOS service terminateErrorHandler that provides the OS
with the status of the error processing. When the Error Handler has terminated, it can be restarted by
a new SMOS activateErrorHandler.
MSL OS GSM
SMOS getError
- A CBIT error that is notified by the MSL to the OS when an error occurs during a CBIT test (see
Figure 45).
NATO UNCLASSIFIED 94
NATO UNCLASSIFIED
MSL OS GSM
SMOS getError
MOS SMOS
getCbitResult getCbitResult
3. The OS releases SMOS blocking service getError thus the GSM retrieves the error report.
4. According to the Fault Handling policy within the blueprints, the GSM may request more information
about the CBIT error. This point is stressed in the rest of the sequence.
5. The GSM performs the SMOS service getCbitResult then the OS performs the MOS service
getCbitResult.
6. The GSM assesses the CBIT result and may perform additional actions.
10.5.2.4.4 OS Error
NATO UNCLASSIFIED 95
NATO UNCLASSIFIED
In certain cases the applications cannot directly handle an error although it has impact on the
application behaviour and it has to be processed by the Application.
- A Real-time exception. When a thread violates its real-time constraints (if defined), the OS shall
detect this error.
- An Application Error within an APOS service. The APOS services do not necessarily return the
error status to the Application. In this case the OS shall directly pass the error to the GSM.
For the error cases that are described in this section, the error handling is identical to the one
described in section 10.5.2.4.2. This application error handler may be invoked as described in the
referred section.
3. The OS releases SMOS blocking service getError thus the GSM retrieves the error report.
4. According to the Fault Handling policy within the blueprints, the GSM performs actions that it has
read in blueprints.
The OLI describes the intercommunications between two instantiations of OS’s as shown in Figure
46.
NATO UNCLASSIFIED 96
NATO UNCLASSIFIED
Application
ApplicationLayer
Layer Application
ApplicationLayer
Layer Application
ApplicationLayer
Layer
Module
ModuleSupport
SupportLayer
Layer Module
ModuleSupport
SupportLayer
Layer Module
ModuleSupport
SupportLayer
Layer
Operating
Operating System
System Layer
Layer Operating
Operating System
System Layer
Layer
OLI Virtual channel
Virtual channel Virtual channel
OLI Presentation
DATA Presentation DATA Presentation
Module
ModuleSupport
Support Layer
Layer Module
ModuleSupport
Support Layer
Layer
MLI
Transfer channel Transfer channel
The OS Logical Interface (OLI) is a communication mechanism between two OS instances. These OS
instances are located on two PE that may be on the same or different CFM. The OLI ensures the
interoperability of OS. It comprises:
NATO UNCLASSIFIED 97
NATO UNCLASSIFIED
- MLI Download File Management, providing a means by which a PE requests a remote MMM/PE
to load a File onto a third CFM by using the MLI Service. Three types of file download are
identified:
The GSM functions (refer to section 10.5.1) relevant to the OS are the control of remote modules
(CFM), the control of the resources associated with the local resource element, and the control of the
resources provided by the local CFM.
The main functions provided by the OS in order to facilitate the GSM Functions are:
- Security services:
The GSM resource element level security management requires services for encryption,
decryption, authentication and services for collection and logging of Audit data.
The OS provides an abstraction for a resource element. It therefore provides all services required for
the GSM to control local resources. There is a standardised set of resources provided by the ASAAC
OS.
10.5.2.6.1.1 Characteristics
The OS shall manage all objects that are related with the memory, execution flow and communication
resources associated with a resource element:
NATO UNCLASSIFIED 98
NATO UNCLASSIFIED
10.5.2.6.2 Security
When a functional Application Process outputs data, it writes the data to a local VC. It is the
responsibility of the OS to attach the data to the relevant Global VC prior to it being transmitted to
where it is required to go. Similarly, when inputting data to a functional Application Process, it is the
responsibility of the OS to take the data from a global VC and attach it to the relevant process' local
VC ready to be read by the functional application. The OS therefore requires a local / global VC
mapping data table In order to perform this functionality, the contents of which are set up as part of
the RE configuration process. In addition to this mapping data, the OS is also configured with data
that allows it to ascertain whether or not the data being transferred over a given VC is data regarded
as being protectively marked (data of a sensitive nature). Consequently, before the OS attaches any
data to a Global VC (sending data), it first determines whether the data is protectively marked and if
so sends it to the GSM Security Manager where it is either encrypted or has authentication added.
Similarly, prior to attaching data to a local VC (receiving data), the OS again determines whether it is
protectively marked and if so sends it to the GSM Security Manager where it is either decrypted or
has the authentication validated. This process is shown in Figure 23.
- SMOS getError
- SMOS activateErrorHandler
The control of remote modules is an integral part of the GSM functions required at aircraft and
integration area levels. In order to initialise a module after power has been applied to that module, the
following sequence has to be applied:
- PBIT is retrieved from the module via the default MLI channel.
- Initialising the module routing table sets up the MLI interface of that module.
- Each PE belonging to the module is booted by providing a sequence of files via the MLI boot
channels.
After the above sequence is completed, all resource elements associated with the module are
available and can be integrated into the system management hierarchy. Further remote CFM
Configuration may be required for NSM and PCM modules, which do not integrate a resource element
as a local instance of control.
Finally, remote CFM Services are required for Fault Management at Integration area and aircraft
levels for retrieving information on CFM status and Built-In-Test results.
Each operation is based on a pair of MLI messages. The OS is managing the communication with a
remote CFM based on MLI messages.
NATO UNCLASSIFIED 99
NATO UNCLASSIFIED
Under control of GSM, the OS provides boot images, routing tables and network configuration files to
remote CFM’s. GSM provides all context information required, i.e. the identification of TC’s to be
used, reference to the files that contain the data to be transferred and the fragmentation size to be
used. The sending of MLI messages transferring the data to a remote CFM and receiving of
acknowledgement messages from a remote CFM is under the responsibility of the OS.
Characteristics
a) The OS shall retrieve a file that has been identified by the GSM, using file access function.
b) The OS shall build the MLI message associated with the requested transfer and send the
messages on a TC identified by GSM.
c) The OS shall receive the MLI acknowledge message from the remote CFM on a TC identified
by GSM and check the correctness of the response.
d) The fragmentation of the data being sent shall be managed in accordance with the message
protocol provided by the MLI (section 12.7).
The SMOS service requestDownloadToCfm provides the required capabilities for control of remote
CFM.
CFM status data is provided at the MLI interface of any CFM. It provides GSM function on a remote
CFM with information about the status of a remote CFM. GSM requests information at the SMOS
interface. The OS requests the information from a remote module by means of a MLI message. The
remote CFM returns the requested information in response to the request.
- CFM status
- PBIT result
- CBIT result
Characteristics
a) The selected CFM information shall be requested by means of an MLI message to the remote
module.
b) The time period between the request and the answer shall be bounded.
The SMOS service getRemoteInfo provides the required capabilities for retrieving information from a
remote CFM.
There are CFM functions that are provided by MSL services, but are required by GSM Functions,
which do not have access to the MOS. The OS maps these services on the SMOS interface, thus
providing them to GSM functions.
Characteristics
a) The OS shall map the MOS services dedicated to the control of the local module clock to
SMOS services.
b) The OS shall map the MOS services providing information about subordinate CFM clocks to
SMOS services.
c) The OS shall map the MOS services for the configuration and the deletion of TC’s to SMOS
services.
d) The OS shall map the MOS services for the configuration of Communication Nodes to SMOS
services.
e) The OS shall map the MOS service for retrieval of CFM local CBIT results to SMOS services.
The following non-communication SMOS services represent the MOS services that are mapped onto
the SMOS interface (for communication services see section 10.5.2.2.2.1):
- SMOS configureClock
- SMOS configureFederatedClock
- SMOS getMyPeId
- SMOS getCbitResult
- SMOS getPbitResult
- SMOS startCbit
- SMOS startIbit
- SMOS getIbitResult
- SMOS getMyCfmStatus
- SMOS getMyCfmInfo
- SMOS writeLog
- SMOS readLog
The MMM provides module specific APOS services for accessing a file and managing a file system.
These services allow to
The following APOS services are used for file access on an MMM:
- APOS createFile
- APOS deleteFile
- APOS openFile
- APOS closeFile
- APOS getFileAttributes
- APOS readFile
- APOS writeFile
- APOS createDirectory
- APOS deleteDirectory
- APOS seekFile
- APOS lockFile
- APOS unlockFile
The following OLI services are used for communication with the MMM File Access Server:
In the case of a Power Conversion Module, the OS shall provide access for GSM or applications to
power switch resources.
The following APOS services are provided for the controlling the power switches a PCM:
- APOS setPowerSwitch
- APOS resetPowerSwitches
- APOS getPowerSwitchStatus
10.6 RTBP
10.6.1 Overview
The RTBP contain the information required by a GSM operating at the RE level of system
management to configure (instantiate functional applications, VC’s, Transfer Channels etc) and
manage (fault management and security policies) the PE on which it is hosted. In addition to this, the
RTBP’s also provide the GSM’s operating at the IA and AC levels of system management with the
information they need to manage the resources under their jurisdiction.
In all cases the GSM shall access the RTBP data across the standardised interface known as the
SMBP (System Management/Blueprint) interface.
The concept of using the RTBP’s in this manner therefore allows the standardised functionality of the
GSM's to be tailored to perform the specific behaviour required by a particular platform/mission.
GSM
Root Process To CFM PE
Function Info Info
Mapping
Interface VC
GSM Info Mapping
Configuration
Data
Process
Info Thread
Info
Scheduling
GSM Logical VC to TC Info
Configuration Mapping
Function
Clock
Info
VC
Info
State
Machine
Federated Clock
TC Info Info
The RTBP are contained within a tree structure comprising a single root and multiple instances of
nodes and leaves as shown in Figure 48. The standardised SMBP services shall then be used to
navigate the tree and access the appropriate data.
Figure 48 introduces the RTBP tree. Each box contains data or leads to a lower one containing data,
each one being dedicated to a specific purpose.
- GSM Process To Function Mapping: To map the GSM Process to the GSM Function, having the
GSM Process Identifier, the GSM Function identifier is retrieved.
- GSM Function: To segregate the tree between the different functions of the GSM. The GSM
Function Identifier is retrieved from the GSM Process To Function Mapping.
- GSM Configuration data: Configuration data for the current GSM Function.
- Logical Configuration: The Logical Configuration to be mapped by the current GSM Function.
- State Machine: Information to handle a state machine responsible for performing Fault
Management, Configuration Management and implementing Security Management comprising
the state to be reached, actions to be performed during the transition, time-out allocated to the
transition.
- Federated Clock Info: Information to attach a remote clock to the clock of the Module.
- Selecting a node
- Scrolling through a set and accessing iteratively data Items in this set
A RTBP tree starts with a root node whose value is retrieved with a dedicated service, namely the
SMBP service getRootNode. It has to be performed prior to accessing any RTBP information.
The selection of a child node requires an identification, which is provided by the SMBP service
readNode, which takes as ‘in’ parameters a node and an identifier. With this information a node
handle specifying a particular child node is provided.
Scrolling the RTBP tree node by node, all nodes can be reached. This scrolling may start from the
root of a chid node.
Iterative access is required in case every child of a parent node is being retrieved. It provides a
sequential access to all the node handles associated to children of a given parent node. Using the
child node, either its attributes may be retrieved or further child nodes (if any) may be retrieved.
See example in section of the SMBP service getNodeId section 11.6.2.3, 11.6.2.5.
Direct access to RTBP information is required if an action of a state machine refers immediately to a
node, for instance a process node for a process that shall be created as part of a reconfiguration.
The SMBP service ‘getAttributes’ provides direct access to the RTBP data, when the value of the
node handle is being provided as part of the action parameters.
The SMBP service ‘readNode’ provides direct access to a RTBP node, when the value of the parent
node handle and the value of the item identifier are being provided as part of the action parameters.
Processes
A process is an address space that contains executable code for one or more threads and provides
the required system resources for those threads. Processes form the building blocks for Functional
Applications and System Management Applications.
VC’s provide an abstraction for the interaction of processes (see section 9.5.1.2).
Process
Application 1 D
Process
C
Thread
C.1
Thread
C.3
Process C
Thread
C.2
As illustrated by Figure 49, any application or system management functions are partitioned into
processes. The interactions between processes are mapped to VC’s.
Threads
The concept of threads encapsulates the temporal characteristics of Application Processes and
system management processes. It addresses the aspects of processing resource consumption (i.e.
scheduling) and real-time behaviour of application and system management functions.
The hierarchy of the process model (refer to Figure 49) orders threads below processes and VC’s
below threads.
The process model is based on static resource assignment. This implies that, on the level of the
process model, each architectural element (basic resource entity) of an application can be described
by a static set of parameters reflecting the resource consumption of the associated element (Table
18):
As all APOS operations with exception of getMyThreadId and getThreadStatus modify processor
global data, i.e. scheduler state, all relevant APOS operations on threads are protected against pre-
emption in order to preserve data integrity of scheduler state.
The actual scheduling properties are considered project specific. The following properties are a
recommendation:
- Thread Release,
APOS thread services (see section 11.4.1) enable Application Processes to interact with threads of
the same process. Therefore, the integrity of application threads requires that the scope of thread
identifiers is limited to a single process.
The applied scheduling method is assumed to behave deterministically. The applied scheduling
method could either be cyclic scheduling or priority based pre-emptive (FIFO) scheduling.
As the process model already provides pre-defined and bounded memory resources, only the timing
behaviour has to be considered with respect to safety issues. The aspects of time behaviour are:
These timing aspects are mapped to three criticality classes of APOS services (Table 19):
Execution time is determined by application code and APOS services. This means that time
consumption induced by blocking and waiting shall be forbidden. Only APOS services with well-
defined execution times belong to this class of services.
Interaction between Application Processes and separate threads of execution is possible, but
blocking times are bounded. Therefore, the APOS services are also associated with bounded
execution times.
APOS services may be associated with unbounded (this does not mean undefined or infinite)
execution time.
The following table defines the criticality class for each APOS service:
sleepUntil B
terminateSelf B
getMyThreadId B
startThread B*
suspendSelf A
lockThreadPreemption B
unlockThreadPreemption B
stopThread C
getThreadStatus B
getRelativeLocalTime A
Synchronisation createSemaphore B
deleteSemaphore B
waitForSemaphore B
postSemaphore B
getSemaphoreStatus B
getSemaphoreId B
createEvent B
deleteEvent B
setEvent B
resetEvent B
waitForEvent B
getEventStatus B
getEventId B
raiseApplicationError B
getErrorInformation B
terminateErrorHandler B
Communication sendMessageNonblocking A
receiveMessageNonblocking A
sendMessage B
receiveMessage B
lockBuffer B
sendBuffer B
receiveBuffer B
unlockBuffer B
waitOnMultiChannel B
deleteFile C
openFile C
closeFile C
getFileAttributes C
readFile C
writeFile C
createDirectory C
deleteDirectory C
seekFile C
lockFile C
unlockFile C
* If limited to the start-up of a process, startThread might also be used in the class 'A' domain.
In order to associate these criticality classes to safety classes, the following, simplified safety
classification is used:
In parallel, the following real time requirements are taken into account:
- No Real Time:
There are no well-defined execution times.
Associated with the safety classes and real time requirements, the following scheme for safety
restrictions shall be applied:
Safety critical A
In case only services of class 'A' are allowed, the definitions in Table 20 would constrain the
processes to the usage of one thread. This limitation could be weakened for the sake of a common
address space. Then the service startThread might also be used, but its usage is limited to the start-
up of the process.
The safety restrictions defined herein are necessary, but not sufficient in order to accomplish the
desired safety and real time quality. The defined safety restrictions shall be complemented by
adequate software and system design (example: the correct behaviour of a hard real time safety
critical function can only be guaranteed, if it can be ensured that all VC messages required by the
function are available before the function is started).
Upon detection of an error, the GSM is invoked to log the error and to initiate a recovery action. It
assigns an error level and a unique identifier to each error processed. The error levels and the
respective identifiers are defined in the blueprints.
Error levels and error types that are handled by applications include:
- IA level errors:
IA configuration error during IA initialisation.
The application programmer should define the recovery action for thread level errors in a special error
handler thread. If this thread is present, GSM will start it under control of Blueprint information. In case
no error handler thread is implemented, the error information may be handled by the GSM.
- Ignore,
11.4 APOS
According to functional requirements the services are grouped into "use categories" - dependent on
the CFM types where the functions are implemented
11.4.1.1 sleep
Purpose:
Suspend the execution of the calling thread for a given period of time.
Syntax:
ReturnStatus sleep (
in TimeInterval timeout );
Description:
The service sleep shall cause the calling thread to be transferred from ‘RUNNING’ into the ‘WAITING’
state. After the timeout interval has expired, the thread shall be transferred back into the ‘READY’
state.
A zero timeout causes the thread to be transferred immediately into the ‘READY’ state.
The service shall return ‘SUCCESS’, if the thread has been transferred to the ‘READY’ state after the
specified time.
The service shall return ‘ERROR’, when the specified timeout is negative.
The service shall return 'ERROR', when the service returns before the end of the specified delay for
an unknown reason.
- Delaying execution of a thread, e.g. to slow down the response that is provided by the calling
thread.
- Freeing processor resources during a waiting phase, when the calling thread waits for a certain
condition to occur.
The timeout value given is a lower boundary for the actual period between calling the sleep service
and resuming the ‘RUNNING’ state. This actual delay is dependent on the scheduler implementation
and the processor load imposed by other threads with equal or higher priority.
Parameter Description:
timeout
Description The timeout parameter specifies the time period for which the calling thread is held in
the ‘WAITING’ state.
A timeout value of zero causes the calling thread to be immediately transferred from
the ‘RUNNING’ state into the ‘READY’ state.
Prerequisite Conditions:
The service sleep shall not be used within an application error handler thread.
Associated Calls:
- sleepUntil,
- suspendSelf.
11.4.1.2 sleepUntil
Purpose:
Suspend the execution of the calling thread until a given absolute local time.
Syntax:
ReturnStatus sleepUntil (
in Time absolute_local_time );
Description:
The service sleepUntil shall cause the calling thread to be transferred from the ‘RUNNING’ into the
‘WAITING’ state if the absolute local time value given has not yet passed. After the given absolute
local time has been reached, the thread shall be transferred back into the ‘READY’ state.
If the specified time has already passed, the thread will be transferred immediately into the ‘READY’
state.
The service shall return ‘SUCCESS’, if the thread has been transferred to the ‘READY’ state at
specified time or the specified time has already passed.
The service shall return ‘ERROR, when absolute local time is not available.
The service shall return 'ERROR', when the service returns before the specified absolute local time
for an unknown reason.
- Jitter free periodic execution of periodic threads as start times refer to absolute time.
Parameter Description:
absolute_local_time
Description The caller provides the absolute local time value until which the thread calling the
service sleepUntil shall be kept in the ‘WAITING’ state.
Prerequisite Conditions:
The service sleepUntil shall not be used within an application error handler thread.
Associated Calls:
- sleep,
- suspendSelf.
11.4.1.3 getMyThreadId
Purpose:
Return the thread identifier, which is local to the process, of the calling thread.
Syntax:
ReturnStatus getMyThreadId (
out PublicId thread_id ) ;
Description:
A process identifier together with a thread identifier, whose scope is limited to the process, identifies
every thread. This service returns the process local thread id.
The return status shall be ‘SUCCESS’ on successful completion, otherwise an ‘ERROR’ condition
shall be returned.
Parameter Description:
thread_id
Description The thread identifier is a public identifier, being used by an APOS client and defined
in the blueprints, enumerating the threads associated with a process. The thread
shall identify a created thread, i.e. a thread that is defined in the blueprints.
Prerequisite Conditions:
None.
Associated Calls:
None.
11.4.1.4 startThread
Purpose:
Syntax:
ReturnStatus startThread (
in PublicId thread_id ) ;
Description:
This service shall initialise all attributes of a thread to their default values, reset the run-time stack of
the thread and transfer the thread into the ‘WAITING’ state. When the thread’s release point is
reached, the OS shall place the thread into the ‘READY’ state. If the real-time control does not define
a release point for the thread, this service shall transfer the thread immediately into the ‘READY’
state.
Release points (see section 10.7.3) may be defined as time triggered (e.g. periodic) or event triggered
(e.g. succeeding the reception of a VC Message). A thread’s release policy applies only after a thread
has been started. For a thread in the ‘DORMANT’ state, it does not apply.
The thread’s scheduling parameters consist of parameters that control the scheduling behaviour
directly (e.g. scheduling priority or periodicity) and parameters imposing real-time constraints on the
thread’s execution. These real-time constraints, for instance deadlines or execution budgets, require
monitoring. This service shall also initialise and start the monitoring of the thread’s real-time
constraints.
The service startThread may have an indirect impact on pre-emption as the set of scheduled threads
is modified. The thread calling the startThread service, which is obviously currently in the ‘RUNNING’
state may be placed into the ‘READY’ state at event of a re-scheduling of another thread with higher
precedence.
The service startThread returns ‘SUCCESS’ if the thread is in the ‘DORMANT’ state in the beginning,
the thread’s resources are available and the thread’s attributes are consistently set.
It shall return ‘ERROR’ if either the thread was not in the ‘DORMANT state before, if thread resources
are not available or if thread attributes are inconsistently set.
The service startThread is used at the start-up of a process by the main thread of the process to start
other threads. It may also be used by a dispatcher function implemented within the process.
Parameter Description:
thread_id
Description The thread identifier is a public identifier, used by an APOS client and defined in the
blueprints, enumerating the threads associated with a process. The thread shall
identify a created thread, i.e. a thread that is defined in the blueprints.
Prerequisite Conditions:
This service applies only to threads that are in the ‘DORMANT’ state.
Associated Calls:
- stopThread,
- terminateSelf.
11.4.1.5 suspendSelf
Purpose:
Suspend the execution of the calling thread until its next release point.
Syntax:
ReturnStatus suspendSelf () ;
Description:
The service shall transfer the calling thread from the ‘RUNNING’ state into the ‘WAITING’ state. The
scheduler shall resume the thread when its release condition, specified by its scheduling parameters,
occurs. However, if there is no explicit release condition specified for the thread or the release
condition is already true, then the scheduler shall transfer the thread into ‘READY’ state.
The return status shall be ‘SUCCESS’ on successful completion. If the pre-emption is locked an
‘ERROR’ condition shall be returned and the thread stays in the ‘RUNNING’ state.
Parameter Description:
Prerequisite Conditions:
The service suspendSelf may only be called if pre-emption is not locked, because this would create a
deadlock situation. This means that the process lock level must be equal to zero.
Associated Calls:
None.
11.4.1.6 stopThread
Purpose:
Syntax:
ReturnStatus stopThread (
in PublicId thread_id );
Description:
The service stopThread can only be used to stop threads other than the thread calling this service. It
shall place the thread identified by its thread identifier from ‘READY’ or the ‘WAITING’ state into the
‘DORMANT’ state. The service stopThread shall return ‘SUCCESS’ in this case.
If the specified thread was in the ‘DORMANT’ state already, stopThread shall return an ‘ERROR’
condition.
As it is applied to threads in the ‘READY’ or the ‘WAITING’ state and has immediate effect, this
service may cause the thread being stopped to leave locked objects (e.g. Semaphores, buffers, files).
It is the task of the remaining threads (especially the thread that has called stopThread) to clean up
the remaining locks.
Parameter Description:
thread_id
Description The thread identifier is a public identifier, used by an APOS client and defined in the
blueprints, enumerating the threads associated with a process. The thread shall
identify a created thread, i.e. a thread that is defined in the blueprints.
Prerequisite Conditions:
Associated Calls:
- terminateSelf,
- startThread,
- deleteSemaphore,
- sendBuffer,
- unlockBuffer,
- unlockFile.
11.4.1.7 terminateSelf
Purpose:
Syntax:
void terminateSelf() ;
Description:
The service shall transfer the calling thread from the ‘RUNNING’ state into the ‘DORMANT’ state. If
the pre-emption is locked or the service is not completed successfully for any reason, the OS shall
raise an error. The service never returns control back to the calling thread. Therefore, any application
code after terminateSelf is unreachable.
Typically terminateSelf will be used for a controlled shutdown of a thread after having done the entire
necessary cleanup before.
Parameter Description:
Prerequisite Conditions:
Associated Calls:
- stopThread,
- startThread.
11.4.1.8 lockThreadPreemption
Purpose:
Syntax:
ReturnStatus lockThreadPreemption (
out unsigned long lock_level );
Description:
This service shall exclude all other threads of the same process from scheduling and makes the
current thread the only thread inside the process that is being scheduled. The service shall further
increment the lock level of the process. The lock level indicates the number of interleafed pre-emption
locking operations. A thread may, after having locked pre-emption once, call the service again. This
will result in a lock level greater than one. A lock level greater or equal one means that no other
threads of the same process are being scheduled. This means that if lockThreadPreemption is called
more than once unlockThreadPreemption shall be called the same number of times in order to re-
enable scheduling of other threads in the same process.
This service allows a thread to prevent the normal thread rescheduling operations of the OS while
accessing critical sections or resources shared by multiple threads of the same process.
The service returns the status ‘SUCCESS’ if pre-emption could successfully be locked inside the
process. If pre-emption was not successfully locked, the service will issue an ‘ERROR’ return status
condition.
The error handler thread shall be excluded from the threads for which scheduling is inhibited by
lockThreadPreemption. If an error that occurs within a critical section causes the GSM to invoke the
error handler thread, the error handler thread shall be able to run and complete.
Parameter Description:
lock_level
Prerequisite Conditions:
Associated Calls:
- unlockThreadPreemption.
11.4.1.9 unlockThreadPreemption
Purpose:
Syntax:
ReturnStatus unlockThreadPreemption (
out unsigned long lock_level );
Description:
This service shall decrement the current lock level of the process. When the lock level reaches zero,
the scheduling of other threads within the same process shall be re-enabled.
For any call to the service lockThreadPreemption there shall be a corresponding call to
unlockThreadPreemption to make sure that thread pre-emption is re-enabled.
This service returns ‘SUCCESS’ when the current process lock level is greater than zero. If the lock
level is already equal to zero the service unlockThreadPreemption does not have any effect and will
return an ‘ERROR’ condition.
Parameter Description:
lock_level
Description The number of stacked pre-emption locking operations. Thread re-scheduling inside a
process is enabled only if the lock_level = 0. Here the value after the unlocking
operation is provided.
Prerequisite Conditions:
None
Associated Calls:
- lockThreadPreemption.
11.4.1.10 getThreadStatus
Purpose:
Syntax:
ReturnStatus getThreadStatus (
in PublicId thread_id ,
out ThreadStatus thread_status ) ;
Description:
This service shall return the current status of the selected thread. If the selected thread does not exist,
an ‘ERROR’ condition shall be returned, else the return status will be ‘SUCCESS’.
This service returns the current status of the selected thread; therefore it does not influence the
scheduling of any thread.
Parameter Description:
thread_id
Description The thread identifier is a public identifier, used by an APOS client and defined in the
blueprints, enumerating the threads associated with a process. The thread shall
identify a created thread, i.e. a thread that is defined in the blueprints.
thread_status
Description The value of the thread status for the selected thread:
Domain Values ‘DORMANT’: Any thread that is created but not started.
Prerequisite Conditions:
Associated Calls:
None.
11.4.2.1 getAbsoluteLocalTime
Purpose:
Syntax:
ReturnStatus getAbsoluteLocalTime (
out Time absolute_local_time );
Description:
This service conveys the absolute local time value as provided by the MSL at the MOS interface to
the requesting APOS client.
If the retrieval of the absolute local time value from the MSL is successful, the service shall return with
a ‘SUCCESS’ condition. If the MSL issues an error condition, getAbsoluteLocalTime shall return with
‘ERROR’ condition as well.
In order to get realistic time values, the execution time of this service shall be bounded and shall be
equal or lower to the accuracy of absolute local time.
Absolute local time is referring to a synchronised system time. Therefore, absolute local time can be
used to synchronise or time-trigger functions within a single ASAAC core system.
Parameter Description:
absolute_local_time
Description This value provides the absolute local time (i.e. the synchronised system time) valid
at the point of return from the service.
Prerequisite Conditions:
Associated Calls:
- sleepUntil,
- getRelativeLocalTime.
11.4.2.2 getAbsoluteGlobalTime
Purpose:
Syntax:
ReturnStatus getAbsoluteGlobalTime (
out Time absolute_global_time ) ;
Description:
This service conveys the absolute global time value as provided by the MSL.
If the retrieval of the absolute global time value from MSL is successful, the service shall return with a
‘SUCCESS’ condition. If the MSL issues an error condition, getAbsoluteGlobalTime shall return with a
‘ERROR’ condition as well.
In order to get realistic time values, the execution time of this service shall be bounded and shall be
equal or lower to the accuracy of absolute global time.
Parameter Description:
absolute_global_time
Description This value provides the absolute global time (i.e. the synchronised time from outside
the system) valid at the point of return from the service.
Prerequisite Conditions:
Associated Calls:
- getRelativeLocalTime,
- getAbsoluteLocalTime.
11.4.2.3 getRelativeLocalTime
Purpose:
Syntax:
ReturnStatus getRelativeLocalTime (
out Time relative_local_time );
Description:
This service conveys the relative local time value as provided by the MSL at the MOS interface to the
requesting APOS client.
Relative local time is only valid within the domain of a single module. It cannot be used for inter
process synchronisation.
If the retrieval of the relative local time value from MSL is successful, the service shall return with a
‘SUCCESS’ condition. If the MSL issues an error condition, getRelativeLocalTime shall return with
‘ERROR’ condition as well.
In order to get realistic time values, the execution time of this service shall be bounded.
Parameter Description:
relative_local_time
Description This value provides the relative local time (i.e. a high precision module local time)
valid at the point of return from the service.
Prerequisite Conditions:
Associated Calls:
- getAbsoluteLocalTime.
11.4.3.1 createSemaphore
Purpose:
Syntax:
ResourceReturnStatus createSemaphore (
in CharacterSequence name ,
out PrivateId semaphore_id ,
in unsigned long init_value ,
in unsigned long max_value ,
in QueuingDiscipline queuing_discipline ) ;
Description:
This service shall create a counting semaphore. The semaphore shall be valid only within a single
process. A semaphore shall be identified by the ‘name’ parameter. If a semaphore is created at
multiple instances (inside a single process) all these creation operations shall provide identical
semaphore identifiers unless the semaphore has been deleted in the meantime. The OS shall provide
the semaphore identifier as a handle to be used with other semaphore services.
The service createSemaphore shall return ‘RS_SUCCESS’ if the semaphore has been created
successfully.
If the semaphore already exists, no new semaphore will be created and the service returns with a
‘RESOURCE’ condition. As createSemaphore may be called several times, maximum value and
current value shall not be affected, when createSemaphore is called for an already existing
semaphore.
The service createSemaphore shall return ‘RS_ERROR’ in one of the following cases:
Parameter Description:
name
semaphore_id
Description The semaphore identifier is assigned by the OS. It is providing a handle for accessing
a semaphore object, once it has been identified by its name at the creation of the
semaphore.
Domain Values The value of this private id is left completely to the discretion of the OS.
init_value
Description The initial value is the semaphores’ starting value after creation. It is indicating the
number of free resources at the time the semaphore is created.
As the semaphore’s counter value reflects the number of free resources and the
maximum value their total number, the init value shall not exceed the maximum
value.
max_value
Description The maximum value parameter is the maximum value that the semaphore can be
signalled to. It reflects the number of resources available.
queuing_discipline
Description This parameter mandates a particular thread queuing policy to be associated with a
semaphore. This queuing policy applies whenever multiple threads get blocked
The threads shall be queued in FIFO order. This means, the first thread that has been
queued shall be the first to be released, when a semaphore gets posted.
QUEUING_DISCIPLINE_PRIORITY
Threads shall be queued ordered by their scheduling priority. This means that the
waiting thread that has the highest priority shall be the first one to be released.
Threads with identical priority shall be queued in FIFO order.
Prerequisite Conditions:
None.
Associated Calls:
- deleteSemaphore.
11.4.3.2 deleteSemaphore
Purpose:
Delete a semaphore.
Syntax:
ReturnStatus deleteSemaphore (
in PrivateId semaphore_id );
Description:
The semaphore addressed by its semaphore identifier shall be deleted. Deletion means, that neither
the semaphore’s name nor its identifier refers to a semaphore object any more. Deletion of a
semaphore can only happen if no threads are blocked waiting at the semaphore. Therefore, the
deletion of a semaphore shall not impact the status of any thread.
The service deleteSemaphore shall return a ‘SUCCESS’ condition when the semaphore is
successfully deleted. It shall return an ‘ERROR’ condition if the semaphore cannot be deleted due to
waiting threads or if the semaphore does not exist
Parameter Description:
semaphore_id
Description The semaphore identifier is providing a handle for accessing a semaphore object.
Domain Values The value of this private id is left completely to the discretion of the OS.
Prerequisite Conditions:
Associated Calls:
- createSemaphore.
11.4.3.3 waitForSemaphore
Purpose:
Syntax:
TimedReturnStatus waitForSemaphore (
in PrivateId semaphore_id ,
in TimeInterval timeout );
Description:
If the current value of the specified semaphore is positive the service shall decrement the
semaphore’s current value and continue execution regardless of the value of the timeout parameter.
The service shall return a ‘TM_SUCCESS’ condition in this case.
If the semaphore’s current value is zero and the specified timeout is not zero, the current thread shall
be transferred from the ‘RUNNING’ state to the ‘WAITING’ state. The thread shall wait at the
semaphore until either the semaphore becomes available or the specified timeout expires. If the
semaphore becomes available and the current thread is the next one to be selected in accordance
with the queuing policy, the service shall decrement the semaphore’s current value, transfer the
waiting thread into the ‘READY’ state and return with a ‘TM_SUCCESS’ condition. If the timeout
expires, the semaphore’s current value shall be left unchanged, the waiting thread shall be transferred
into the ‘READY’ state and the service shall return with a ‘TM_TIMEOUT’ condition.
If the semaphore’s current value is zero and the specified timeout is zero, the service shall not block
the calling thread. The thread shall continue execution the semaphore’s current value unchanged.
The service shall return a ‘TM_TIMEOUT’ condition in this case.
This service does only work if the identified semaphore exists. If the semaphore does not exist the
service shall return with a ‘TM_ERROR’ condition.
If the current process lock level is greater than 0 then the call shall terminate and return TM_ERROR.
Parameter Description:
semaphore_id
Description The semaphore identifier provides a handle for accessing a semaphore object.
Domain Values The value of this private id is left completely to the discretion of the OS.
timeout
Description The timeout parameter defines the maximum time a thread shall wait for passing a
semaphore.
TimeInterval: infinite
Prerequisite Conditions:
Associated Calls:
- postSemaphore.
11.4.3.4 postSemaphore
Purpose:
Syntax:
ReturnStatus postSemaphore (
in PrivateId semaphore_id );
Description:
This service shall increment the semaphore’s current value up to the maximum value of the
semaphore. If the current value of the semaphore was lower than the maximum value, the service
shall return with a ‘SUCCESS’ condition. If the current value of the semaphore was already the
maximum value, the service shall return an ‘ERROR’ condition without modifying the semaphore’s
current value. The call returns ERROR if the semaphore does not exist.
If there are threads waiting to pass the semaphore, the first thread according to the queuing policy
shall decrement the semaphore’s current value again and shall be transferred from the ‘WAITING’
state to the ‘READY’ state.
Parameter Description:
semaphore_id
Description The semaphore identifier provides a handle for accessing a semaphore object.
Domain Values The value of this private id is left completely to the discretion of the OS.
Prerequisite Conditions:
The semaphore’s current value must be lower than the semaphore’s maximum value.
Associated Calls:
- waitForSemaphore.
11.4.3.5 getSemaphoreStatus
Purpose:
Provide the current value and the number of waiting threads for a semaphore.
Syntax:
ReturnStatus getSemaphoreStatus (
in PrivateId semaphore_id ,
out unsigned long current_value ,
out unsigned long waiting_callers ) ;
Description:
This service shall return the current value of the semaphore. If the current value is zero, this means
that the semaphore is blocked and there may be waiting callers. The service therefore also provides
the number of waiting callers, specifying the number of threads waiting to pass at a blocked
semaphore.
This service shall execute successfully, returning a ‘SUCCESS’ condition, if the semaphore
addressed by its semaphore identifier exists. The service shall return with an ‘ERROR’ condition if the
semaphore does not exist.
Parameter Description:
semaphore_id
Description The semaphore identifier provides a handle for accessing a semaphore object.
Domain Values The value of this private id is left completely to the discretion of the OS.
current_value
Description The current value of the semaphore indicates the number of free resources. A value
of zero means that the semaphore is blocked.
waiting_callers
waiting_callers 0 if current_value = 0.
Prerequisite Conditions:
None.
Associated Calls:
None.
11.4.3.6 getSemaphoreId
Purpose:
Syntax:
ReturnStatus getSemaphoreId (
in CharacterSequence name ,
out PrivateId semaphore_id );
Description:
This service shall return the id of the semaphore addressed by its name.
This service shall complete with a ‘SUCCESS’ condition if the semaphore addressed by its name
exists. It shall return an ‘ERROR’ status if it does not exist.
Parameter Description:
name
semaphore_id
Prerequisite Conditions:
None.
Associated Calls:
- createSemaphore.
11.4.4.1 createEvent
Purpose:
Syntax:
ResourceReturnStatus createEvent (
in CharacterSequence name ,
out PrivateId event_id );
Description:
This service shall create a named event and associate it with an event identifier. The visibility scope
of the event is limited to one process. Upon creation the event is set to the ‘RESET’ state.
If this service is called with the name of an event that has already been created, it shall provide the
event identifier that is associated with that event. In this case the state of the event shall not be
affected.
The service shall return a ‘RS_SUCCESS’ condition if the event was created successfully. It shall
return a ‘RS_ERROR’ condition if the event could not be generated due to insufficient resources.
If the event exists already, no new event will be created and the service returns with a
‘RS_RESOURCE’ condition.
Parameter Description:
name
Description An event is identified by a name. If events with identical names are created several
times from different contexts within the same process, all event identifiers will refer to
the same event object.
event_id
Description The event identifier is assigned by the OS. It provides a handle for accessing an
event object, once it has been identified by its name at the creation of the event.
Domain Values The value of this private id is left completely to the discretion of the OS.
Prerequisite Conditions:
None.
Associated Calls:
- deleteEvent.
11.4.4.2 deleteEvent
Purpose:
Syntax:
ReturnStatus deleteEvent (
in PrivateId event_id );
Description:
The event addressed by its event identifier shall be deleted. This means neither that neither the
event’s name nor its identifier now refer to an event object. Deletion of an event can only happen if no
threads are being blocked, waiting for an event to occur. This means that the deletion of an event is
conserving the current status of the process thread ensemble; therefore it does not have any impact
on pre-emption.
The service deleteEvent shall return a ‘SUCCESS’ condition when the event is successfully deleted or
if the event does not exist; it shall return an ‘ERROR’ condition if the event cannot be deleted due to
waiting threads.
Parameter Description:
event_id
Description This parameter identifies the event to be deleted. After deletion it does not address a
valid event object any more.
Prerequisite Conditions:
Associated Calls:
- createEvent.
11.4.4.3 setEvent
Purpose:
Syntax:
ReturnStatus setEvent (
in PrivateId event_id ) ;
Description:
This service shall set the specified event to the ‘SET’ state regardless of its previous state. If the
event exists the service shall return ‘SUCCESS’ when the event is in the ‘SET’ state.
If the state of the event was ‘RESET’ before, there may be threads were waiting on that event to
occur. Every thread that is waiting for the event shall be transferred from the ‘WAITING’ state to the
‘READY’ state.
The service shall return an ‘ERROR’ condition if the event does not exist.
Parameter Description:
event_id
Domain Values The event identifier shall be associated with an existing event object.
Prerequisite Conditions:
None
Associated Calls:
- resetEvent.
11.4.4.4 resetEvent
Purpose:
Syntax:
ReturnStatus setEvent (
in PrivateId event_id ) ;
Description:
This service shall set the specified event to the ‘RESET’ state regardless of its previous state. If the
event exists the service shall return ‘SUCCESS’ when the event is in ‘RESET’ state.
The service shall return an ‘ERROR’ condition if the event does not exist.
Parameter Description:
event_id
Domain Values The event identifier shall be associated with an existing event object.
Prerequisite Conditions:
None.
Associated Calls:
- setEvent.
11.4.4.5 waitForEvent
Purpose:
Syntax:
TimedReturnStatus waitForEvent (
in PrivateId event_id ,
in TimeInterval timeout ) ;
Description:
This service shall block its calling thread until the specified event is in state ‘SET’. If the event is
already in state ‘SET’ execution of the calling thread shall be continued immediately.
If the event is in state ‘RESET’ when the service is called and the timeout period specified is not zero,
the calling thread shall be transferred into the ‘WAITING’ state. It shall remain in the ‘WAITING’ state
until the event state is ‘SET’. If the event state is ‘SET’ when returning the service shall return with a
‘TM_SUCCESS’ condition. If the timeout period expires before the event is transferred to state ‘SET’,
the service shall return with a ‘TM_TIMEOUT’ condition.
If the event is in state ‘RESET’ when the service is called and the timeout period specified is zero,
execution of the calling thread shall be continued immediately. The service shall return a
‘TM_TIMEOUT’ condition in this case.
The service shall return with a ‘TM_ERROR’ condition if the event does not exist.
If the process lock level is greater than 0 then the call shall terminate and return TM_ERROR.
Parameter Description:
event_id
timeout
Description The timeout parameter specifies the maximum time the calling thread shall be
blocked waiting for the event to occur.
Timeout: infinite
The thread will wait for an unbounded period of time for the event to occur.
Prerequisite Conditions:
The current lock level of the process shall be zero, i.e. pre-emption is enabled.
Associated Calls:
- setEvent.
11.4.4.6 getEventStatus
Purpose:
Provide the current state of the event and the number of waiting callers.
Syntax:
ReturnStatus getEventStatus (
in PrivateId event_id ,
out EventStatus event_status ,
out unsigned long waiting_callers ) ;
Description:
This service shall return the current status of the event object. If the current event status is ‘RESET’,
this means that there may be waiting callers. The service therefore also provides the number of
waiting callers specifying the number of threads waiting for the event condition to be set.
This service shall execute successfully returning a ‘SUCCESS condition if the event addressed by its
event identifier exists. The service shall return with an ‘ERROR’ condition if the event does not exist.
Parameter Description:
event_id
Description This parameter identifies the event for which the status shall be provided.
event_status
Description This parameter provides the current event state of the specified event.
waiting_callers
Description This parameter provides the number of threads currently waiting for the event to
occur.
Domain Values The number of waiting callers shall be zero if the event status is ‘SET’.
Prerequisite Conditions:
None.
Associated Calls:
None.
11.4.4.7 getEventId
Purpose:
Syntax:
ReturnStatus getEventId (
in CharacterSequence name ,
out PrivateId event_id ) ;
Description:
This service shall return the id of the event addressed by its name.
This service shall complete with a ‘SUCCESS’ condition if the event addressed by its name exists. It
shall return an ‘ERROR’ status if it does not exist.
Parameter Description:
name
event_id
Description The event identifier that is associated with a named event object if the event exists.
Prerequisite Conditions:
None.
Associated Calls:
None.
11.4.5.1 logMessage
Purpose:
This service allows the current thread to write a message through the OSL.
Syntax:
ReturnStatus logMessage (
in CharacterSequence log_message ,
in LogMessageType message_type );
Description:
This service is used if the application detects erroneous behaviour, in the case of fault logging, or for
system logging. The parameter message_type identifies the type of message that is being written.
This service returns SUCCESS if the message is successfully written to the OSL.
Parameter Description:
log_message
message_type
Description This parameter identifies the message as being one of four types.
Prerequisite Conditions:
None.
Associated Calls:
- getLogReport,
- writeLog.
11.4.5.2 raiseApplicationError
Purpose:
Syntax:
ReturnStatus raiseApplicationError (
in ErrorCode error_code ,
in CharacterSequence error_message ) ;
Description:
The OS conveys this error to the GSM via the SMOS service getError. As a result, based on blueprint
information, the error handler may be invoked to take the recovery action for the thread, which raised
the error code.
When the service is completed successfully it returns SUCCESS, otherwise it returns ERROR.
Parameter Description:
error_code
Description The Code corresponding to the Error that has been raised
error_message
Description The Message corresponding to the Error that has been raised
Prerequisite Conditions:
None
Associated Calls:
- getErrorInformation,
- activateErrorHandler.
11.4.5.3 getErrorInformation
Purpose:
Retrieve information on the error that is the cause of the activation of the error handler
Syntax:
ReturnStatus getErrorInformation (
When the calling thread is not the Error Handler, it returns ERROR.
Parameter Description:
faulty_thread_id
Description This Id identifies the thread that has raised the Error
error_type
error_code
Description The Code corresponding to the Error that has been raised
error_message
Description The Message corresponding to the Error that has been raised
Prerequisite Conditions:
The service activateErrorHandler of the SMOS interface has requested the OS starting the Error
Handler. The OS has set up the input parameters of getErrorInformation.
Associated Calls:
- raiseApplicationError,
- activateErrorHandler.
11.4.5.4 terminateErrorHandler
Purpose:
Syntax:
void terminateErrorHandler (
in ReturnStatus return_status ) ;
Description:
As the GSM is using the blocking service activateErrorHandler, it requires the information whether the
application error handler has run successfully or not. Therefore, this special service shall be used by
the error handler thread and shall not be used by any other thread.
It shall terminate the error handler thread and transfer it into state DORMANT. The return status
parameter shall be passed back to the GSM and provided with the activateErrorHandler service
results.
Parameter Description:
return_status
Description The error handler can only have two results, either SUCCESS or ERROR.
Prerequisite Conditions:
The service activateErrorHandler of the SMOS interface has requested the OS starting the Error
Handler. The application error handler thread has started.
Associated Calls:
- activateErrorHandler.
11.4.6.1 getDebugErrorInformation
Purpose:
This service retrieves error information of the latest that has occurred in the context of the calling
thread.
Syntax:
ReturnStatus getDebugErrorInformation (
out ErrorType error_type ,
out ErrorCode error_code ,
out CharacterSequence error_message );
Description:
The primary effect of any error occurring when any APOS service is being called is that the value
returned by the service is ‘ERROR’. Additionally, more detailed error information is provided to the
GSM at the SMOS interface. In order to make the same information available to the application itself
for debugging purposes, the OS shall store the error code and error message associated with the
latest error that has occurred in the context of the calling thread (please note that a thread context
always implies a particular process context). The service ‘getDebugErrorInformation ‘ makes this
information available to the Application Process. Calling the service once shall destroy the error
information stored. If error information is available the service shall return the value ‘SUCCESS’.
There is no interference with pre-emption, as the information is stored within the context of the calling
thread. The service is non-blocking. In case it is called without any error information being available,
the service shall return ‘ERROR’. This error is an exception of the rule that all errors occurring on
APOS service calls are notified to GSM. Therefore, the service ‘getDebugErrorInformation‘ shall in
case of failure not produce any error information and shall not forward any error information to the
GSM.
In case error information is not read until another error occurs in the same thread context, the new
value shall overwrite the error information.
The service may also be used in GSM context. In this case it will provide information about the latest
error that has occurred from calling APOS, SMOS or SMBP services.
Parameter Description:
error_type
Description The error type provides an identifier that specifies the kind of error that has occurred.
error_code
Description The error code provides an identifier that provides specific information about the
nature of the error, which has been occurred. The value of the identifier is defined by
the service.
error_message
Description Additional information or verbal description for the error providing information on the
latest error, which has occurred.
Prerequisite Conditions:
None
Associated Calls:
None
11.4.7.1 sendMessageNonblocking
Purpose:
Syntax:
ResourceReturnStatus sendMessageNonblocking (
in PublicId local_vc_id ,
in Address message_buffer_reference ,
in unsigned long actual_size );
Description:
This service shall initiate the sending of a message through a VC that is attached to the local VC
identifier local_vc_id. The buffer data is described in terms of actual length and location by the
parameter actual_size and location by the parameter message_buffer_reference. The OS shall copy
the message data from the buffer in the caller memory to a buffer into the OS memory that is
associated with a VC for sending direction. The OS also controls the further transfer of the buffer data
through the associated VC. The service returns immediately and independently from the actual
sending of the data, after the message buffer has been written.
- No VC for sending direction is attached for the given value of parameter local_vc_id,
- The actual length of data to be sent exceeds the OS buffer length that is defined in the blueprints.
Parameter Description:
local_vc_id
Description This identifier specifies a process local VC identifier that is valid within the scope of
the process. An actual VC may be attached to that VC identifier, defining a 1:1
mapping of the process local VC identifier to the VC.
message_buffer_reference
Description The parameter message_buffer_reference specifies the location of the buffer, which
holds the message data to be sent.
actual_size
Description This parameter specifies the actual length in bytes of the message data that shall be
transferred.
Prerequisite Conditions:
A VC is attached to the local VC Id. This VC shall be defined for sending direction.
Buffer resources are available. Buffer resources are assigned to a process local instance of a VC by
means of the attachment of a VC to a process and a thread. This attachment operation defines the
amount of buffer resources available.
Associated Calls:
- receiveMessageNonblocking.
11.4.7.2 receiveMessageNonblocking
Purpose:
Syntax:
ResourceReturnStatus receiveMessageNonblocking (
in PublicId local_vc_id ,
in unsigned long maximum_size ,
in Address message_buffer_reference ,
out unsigned long actual_size );
Description:
The service shall read the next available message buffer that is associated with the VC identifier
provided by the parameter local_vc_id. If a message is available the operating system copies the
message data from operating system memory into the buffer in the caller memory. This is specified in
terms of location and maximum size by the parameters message_buffer_reference and
maximum_size respectively. The OS further provides the actual size of the message buffer with the
parameter actual_size.
The service shall return ‘RS_SUCCESS’ on successful completion. In this case the OS message
buffer is released.
- No VC for receiving direction is attached for the given value of parameter local_vc_id,
- The actual message size exceeds the size given by the parameter maximum_size.
Parameter Description:
local_vc_id
Description This identifier specifies a process local VC identifier that is valid within the scope of
the process. An actual VC may be attached to that VC identifier, defining a 1:1
mapping of the process local VC identifier to the VC.
maximum_size
Description This parameter specifies the maximum size in bytes that the message received may
have due to the caller’s resources provided to get message data from OS.
message_buffer_reference
Description The parameter message_buffer_reference specifies the location of a buffer where the
received message shall be written.
actual_size
Description This parameter provides the actual size in bytes of the message data being provided
by the OS.
Prerequisite Conditions:
A VC is attached to the local VC Id. This VC shall be defined for receiving direction.
VC message data have been received through the VC, which is attached to the local VC identifier
local_vc_id.
Associated Calls:
- sendMessageNonblocking,
- receiveMessage,
- receiveBuffer.
11.4.7.3 sendMessage
Purpose:
Syntax:
TimedReturnStatus sendMessage (
in PublicId local_vc_id ,
in TimeInterval timeout ,
in Address message_buffer_reference ,
in unsigned long actual_size );
Description:
This service shall initiate the sending of a message through a VC that is attached to the local VC
identifier local_vc_id. The buffer data is described in terms of actual length and location by the
parameters actual_size and message_buffer_reference. The operating system shall copy the
message data from the buffer in the caller memory to a buffer in the operating system memory that is
associated with a VC for the transmission direction. The operating system also controls the
subsequent transfer of the buffer data through the associated VC. The service returns immediately
and independently from the actual sending of the data, after the message buffer has been written.
If sufficient OS buffer space is not immediately available, the calling thread is transferred into
‘WAITING’ state. The calling thread will be transferred to ‘READY’ state either when a buffer has
become available for writing or if waiting time exceeds the period specified by the timeout parameter.
The service shall return ‘TM_TIMEOUT’ when sufficient buffer space is not available within timeout.
- No VC for sending direction is attached for the given value of parameter local_vc_id,
- The actual length of data to be sent exceeds the OS buffer length that is defined in the blueprints.
Parameter Description:
local_vc_id
Description This identifier specifies a process local VC identifier that is valid within the scope of
the process. An actual VC may be attached to that VC identifier, defining a 1:1
mapping of the process local VC identifier to the VC.
timeout
Description The parameter timeout specifies the maximum waiting time between the time the
service is called and the time writing of the buffer is completed.
In case of an infinite timeout period the service shall never return, unless a sending
buffer associated with the VC.
message_buffer_reference
Description The parameter message_buffer_reference specifies the location of the buffer, which
holds the message data to be sent.
actual_size
Description This parameter specifies the actual length in bytes of the message data that shall be
transferred.
Prerequisite Conditions:
A VC is attached to the local VC Id. This VC shall be defined for the sending direction.
Buffer resources are available. Buffer resources are assigned to a process local instance of a VC by
means of the attachment of a VC to a process and a thread. This attachment operation defines the
amount of buffer resources available.
Associated Calls:
- receiveMessage,
- sendMessageNonblocking ,
- sendBuffer.
11.4.7.4 receiveMessage
Purpose:
Syntax:
TimedReturnStatus receiveMessage (
in PublicId local_vc_id ,
in TimeInterval timeout ,
in unsigned long maximum_size ,
in Address message_buffer_reference ,
out unsigned long actual_size );
Description:
The service shall read the next available message buffer that is associated with the VC identifier
provided by the parameter local_vc_id. If a message is available the OS shall copy the message data
from OS memory into the buffer in the caller memory, which is specified in terms of location and
maximum size by the parameters message_buffer_reference, respectively maximum_size. The OS
further provides the actual size of the message buffer with the parameter actual_size.
If a message data buffer is not immediately available, the calling thread is transferred into ‘WAITING’
state. The calling thread will be transferred to ‘READY’ state either when a message buffer has
become available or if waiting time exceeds the period specified by the timeout parameter.
The service shall return ‘TM_SUCCESS’ on successful completion. In this case the OS message
buffer is released.
The service shall return ‘TM_TIMEOUT’ when a message buffer is not available within the timeout
period.
- No VC for receiving direction is attached for the given value of parameter local_vc_id,
- The actual message size exceeds the size given by the parameter maximum_size.
Parameter Description:
local_vc_id
Description This identifier specifies a process local VC identifier that is valid within the scope of
the process. An actual VC may be attached to that VC identifier, defining a 1:1
mapping of the process local VC identifier to the VC.
timeout
Description The parameter timeout specifies the maximum waiting time between the time the
service is called and the time a message is received through the VC that is
addressed by local_vc_id.
In case of an infinite timeout period the service shall never return, unless a message
is received through the VC.
maximum_size
Description This parameter specifies the maximum size in bytes that the message received may
have due to the caller’s resources provided to get message data from OS.
message_buffer_reference
Description The parameter message_buffer_reference specifies the location of a buffer where the
received message shall be written.
actual_size
Description This parameter provides the actual size in bytes of the message data being provided
by the OS.
Prerequisite Conditions:
A VC is attached to the local VC Id. This VC shall be defined for receiving direction.
VC message data have been received through the VC, which is attached to the local VC identifier
local_vc_id.
Associated Calls:
- sendMessage,
- receiveMessageNonblocking,
- receiveBuffer.
11.4.7.5 lockBuffer
Purpose:
Syntax:
TimedReturnStatus lockBuffer (
in PublicId local_vc_id ,
in TimeInterval timeout ,
This service shall lock a message buffer that is associated with the VC, which is specified by the
parameter local_vc_id in order to provide message data into this buffer for sending. The buffer data is
described in terms of its maximum size needs by the parameter maximum_size and location by the
parameter message_buffer_reference. The OS shall lock a buffer of sufficient size.
If a buffer is not immediately available, the calling thread is transferred into ‘WAITING’ state. It will be
passed on to ‘READY’ state, either when a message buffer has become available or when waiting
time exceeds the period specified by the timeout parameter.
- Sufficient buffer space is not available by expiration time of the period specified by the timeout
parameter.
- No VC for sending direction is attached for the given value of parameter local_vc_id,
- The actual length of data to be sent exceeds the OS buffer length that is defined in the blueprints.
Parameter Description:
local_vc_id
Description This identifier specifies a process local VC identifier that is valid within the scope of
the process. An actual VC may be attached to that VC identifier, defining a 1:1
mapping of the process local VC identifier to the VC.
timeout
Description The parameter timeout specifies the maximum waiting time between the time the
service is called and the time a buffer associated with the VC that is addressed by
local_vc_id, is available.
In case of an infinite timeout period the service shall never return, unless a buffer
becomes available.
message_buffer_reference
Description The parameter message_buffer_reference provides the location of the locked buffer.
maximum_size
Description This parameter specifies the upper boundary of the buffer size requirements of the
caller.
Prerequisite Conditions:
A VC is attached to the local VC Id. This VC shall be defined for receiving direction.
Buffer resources are available. Buffer resources are assigned to a process local instance of a VC by
means of the attachment of a VC to a process and a thread. This attachment operation defines the
amount of buffer resources available.
Associated Calls:
- sendBuffer,
- unlockBuffer.
11.4.7.6 sendBuffer
Purpose:
Syntax:
ReturnStatus sendBuffer (
in PublicId local_vc_id ,
in Address message_buffer_reference ,
in unsigned long actual_size );
Description:
This service shall initiate the message passed with the parameter message_buffer_reference to be
sent through the VC that is addressed by the parameter local_vc_id. The size of the message to be
transferred is specified by the parameter actual_size. The actual sending operation is under the
control of the OS and may be deferred. The buffer that is provided with the parameter
message_buffer_reference shall have been locked before by service lockBuffer. After transmitting the
buffer data through the VC, the OS shall unlock the buffer.
- The actual length of the buffer exceeds the maximum length of the buffer.
Parameter Description:
local_vc_id
Description This identifier specifies a process local VC identifier that is valid within the
scope of the process. An actual VC may be attached to that VC identifier,
defining a 1:1 mapping of the process local VC identifier to the VC.
message_buffer_reference
actual_size
Description This parameter specifies the actual length in bytes of the message data that
shall be transferred.
Prerequisite Conditions:
A VC is attached to the local VC Id. This VC shall be defined for receiving direction.
The buffer provided shall be identical to a buffer that has been locked before.
Associated Calls:
- lockBuffer,
- sendMessage,
- sendMessageNonblocking.
11.4.7.7 receiveBuffer
Purpose:
Syntax:
TimedReturnStatus receiveBuffer (
in PublicId local_vc_id ,
in TimeInterval timeout ,
out Address message_buffer_reference ,
out unsigned long actual_size );
Description:
The service shall provide the next available message buffer that is associated with the VC identifier
provided by the parameter local_vc_id. The buffer shall be provided to the caller as parameter
message_buffer_reference. The OS shall provide the actual size of the message buffer with the
parameter actual_size. After completion of message processing it is up to the caller to unlock the
buffer.
If a buffer, which is filled with message data, is not immediately available, the calling thread is
transferred into ‘WAITING’ state. The calling thread will be passed on to ‘READY’ state, either when a
message buffer has become available, or when waiting time exceeds the period specified by the
timeout parameter.
- After expiration of the period specified by the timeout parameter no filled message buffer is
available.
- No VC for receiving direction is attached for the given value of parameter local_vc_id.
Parameter Description:
local_vc_id
Description This identifier specifies a process local VC identifier that is valid within the scope of
the process. An actual VC may be attached to that VC identifier, defining a 1:1
mapping of the process local VC identifier to the VC.
timeout
Description The parameter timeout specifies the maximum waiting time between the time the
service is called and the time a buffer associated with the VC that is addressed by
local_vc_id, is available with data received on that VC.
In case of an infinite timeout period the service shall never return, unless a message
is received.
message_buffer_reference
actual_size
Description This parameter provides the actual message size in bytes being provided by the OS
within the returned message buffer.
Prerequisite Conditions:
A VC is attached to the local VC Id. This VC shall be defined for receiving direction.
Sufficient buffer space shall be available in order to receive the messages on the attached VC.
Associated Calls:
- unlockBuffer,
- receiveMessage,
- receiveMessageNonblocking.
11.4.7.8 unlockBuffer
Purpose:
Syntax:
ReturnStatus unlockBuffer (
in PublicId local_vc_id ,
in Address message_buffer_reference );
Description:
This service shall unlock a message buffer associated with the VC that is addressed by the parameter
local_vc_id. The buffer is passed back to the control of the OS resource management and is no
longer available to the caller. The parameter message_buffer_reference specifies the buffer, which is
released by the caller.
Parameter Description:
local_vc_id
Description This identifier specifies a process local VC identifier that is valid within the scope of
the process. An actual VC may be attached to that VC identifier, defining a 1:1
mapping of the process local VC identifier to the VC.
message_buffer_reference
Prerequisite Conditions:
A VC is attached to the local VC Id. This VC shall be defined for receiving direction.
The buffer provided shall be identical to a buffer that has been locked before.
Associated Calls:
- receiveBuffer,
- lockBuffer.
11.4.7.9 waitOnMultiChannel
Purpose:
Wait for one or all out of a set of VC’s have been received.
Syntax:
TimedReturnStatus waitOnMultiChannel (
in PublicIdSet vc_set_in ,
in unsigned long min_no_vc ,
out PublicIdSet vc_set_out ,
in TimeInterval timeout );
Description:
This service waits for a set of VC’s that is specified by a set VC identifiers specified by parameter
vc_set_in until for a minimum number of these VC’s messages have been received and are buffered.
The set of VC’s, which actually have received data, is provided in the parameter vc_set_out. For
getting hold of the message data, the services receiveMessage, receiveMessageNonblocking or
receiveBuffer can be used. The parameter min_no_vc defines the minimal number of VC’s that shall
have been received for the transfer to return successfully.
If a sufficient number of VC message buffers are not immediately available, the calling thread is
transferred into ‘WAITING’ state. The calling thread will be passed on to ‘READY’ state, either when a
message buffer has become available, or when waiting time exceeds the period specified by the
timeout parameter.
- After expiration of the period specified by the timeout parameter a sufficient number of VC
message buffers is not available.
- Any VC identifier included in the vc_set_in parameter is not attached to a receiving VC,
Parameter Description:
vc_set_in
Description Specifies a set containing local VC identifiers, which are expected to be received.
min_no_vc
Description Specifies the minimum number of VC’s, which have to receive a message in order to
complete the service.
vc_set_out
Description Provides a set containing the local VC identifiers, for which a filled message buffer is
available.
timeout
Description The parameter timeout specifies the maximum waiting time between the times when
the service is called and when the minimum number of VC shall have been received.
In case of an infinite timeout period the service shall never return, unless a message
is received.
Prerequisite Conditions:
A VC is attached to any local VC Id addressed. This VC shall be defined for receiving direction.
Associated Calls:
- receiveMessage,
- receiveMessageNonblocking,
- receiveBuffer.
11.4.8.1 createDirectory
Purpose:
Syntax:
ResourceReturnStatus createDirectory (
in CharacterSequence name ,
in AccessRights access );
Description:
This service shall create a directory specified by the parameter name. The access rights specify the
usage of the directory for other users (the owner is always the creating process and has complete
access rights). If the access parameter is set to the ‘default’ value, the directory shall inherit the
access rights assigned to its parent directory.
Parameter Description:
name
access
‘W’: Write
‘D’: Delete
‘F’: deFault
Prerequisite Conditions:
None.
Associated Calls:
- deleteDirectory.
11.4.8.2 deleteDirectory
Purpose:
Syntax:
TimedReturnStatus deleteDirectory (
in CharacterSequence name ,
in DeleteOption del_opt ,
in TimeInterval timeout );
Description:
This service shall delete the named directory with all its files and, in addition, the tree of its
subdirectories, if existing.
If the parameter del_opt is specified as ‘NORMAL’, the directory and any underlying subdirectories
shall only be deleted if all the files that they contain have been closed. However, if the deletion option
is specified as ‘IMMEDIATELY’ the directory(ies) will be deleted regardless of the status of the files
contained within them. It should be noted that the deletion option ‘IMMEDIATELY’ should only be
used in cases of emergency!
A TimedReturnStatus of:
- ‘TM_TIMEOUT’ indicates that the deletion option used was ‘NORMAL’ and the directory could not
be deleted due to one or more files in the directory(ies) being open,
Parameter Description:
name
del_opt
Description Specifies the urgency behind the need to delete the directory.
timeout
Description The maximum time the service will wait to delete a directory in the case when a
delete option of ‘NORMAL’ is used.
Prerequisite Conditions:
Associated Calls:
- createDirectory.
11.4.8.3 createFile
Purpose:
This service shall create a file with the name specified in the parameter list.
Syntax:
ResourceReturnStatus createFile (
in CharacterSequence name ,
in AccessRights access ,
in unsigned long file_size );
Description:
The access rights specify the usage of the file for other users (the owner is always the creating
process and has complete access rights). If nothing is specified, the file shall inherit the directory’s
access rights.
The parameter file_size shall allocate the space needed for the file during creation. The ‘end-of-file’
shall point to this value. If the parameter ‘file_size’ is set to 0, the space shall be allocated dynamically
when accessing a position beyond the current end-of-file on the occasion of a write or seek call. If a
directory path is not included in the pathname, the file shall be created in the root directory.
Parameter Description:
name
access
‘W’: Write
‘D’: Delete
‘F’: deFault
file_size
Prerequisite Conditions:
If the file being created is to be located in a sub directory off the root directory, then the directory must
exist.
Associated Calls:
- deleteFile.
11.4.8.4 deleteFile
Purpose:
Syntax:
TimedReturnStatus deleteFile (
in CharacterSequence name ,
in DeleteOption del_opt ,
in TimeInterval timeout ) ;
Description:
This service shall delete the named file. If the parameter ‘del_opt’ is specified as ‘NORMAL’, the file
will only be deleted if all the file is not being accessed by any other users. However, if the deletion
option is specified as ‘IMMEDIATELY’ the file will be deleted regardless of them being accessed by
other users. It should be noted that the deletion option ‘IMMEDIATELY’ should only be used in cases
of emergency!
A TimedReturnStatus of:
- ‘TM_TIMEOUT’ indicates that the deletion option used was ‘NORMAL’ and that the file could not
be deleted during the timeframe specified by the timeout parameter due to the file being accessed
by another user,
Parameter Description:
name
del_opt
Description Specifies the urgency behind the need to delete the file.
timeout
Description The maximum time the service will wait to delete a file in the case when a delete
option of ‘NORMAL’ is used.
Prerequisite Conditions:
Associated Calls:
- createFile.
11.4.8.5 openFile
Purpose:
This service shall open a file addressed by its pathname and returns the file handle for further
processing.
Syntax:
ReturnStatus openFile (
in CharacterSequence name ,
in UseOption use_option ,
out PrivateId file_handle );
Description:
The ‘use option’ specifies whether the file is to be used for reading or writing or both. Also the
concurrency with other user (processes) is specified: there is shared / exclusive use possible –
A process may open a file more than once in order to access it in different ways, e.g. reading byte
sets sequentially from a starting point somewhere and writing conditionally to the end of the file
(append).
Each call to openFile creates an "instance" which holds the values specified by the open parameters -
in addition, the internal variables "current byte position" and "next byte position" are assigned to the
instance, as well as the locking parameters. They are used when calling the seekFile, readFile and
writeFile services. The “current byte position” shall be set to the start-of-file.
A ReturnStatus of:
Parameter Description:
name
use_option
} UseOption
file_handle
Prerequisite Conditions:
Associated Calls:
- closeFile.
11.4.8.6 closeFile
Purpose:
Syntax:
ReturnStatus closeFile (
in PrivateId file_handle ) ;
Description:
A ReturnStatus of:
Parameter Description:
file_handle
Prerequisite Conditions:
File is open.
Associated Calls:
- openFile.
11.4.8.7 lockFile
Purpose:
This service shall lock a file completely and thus prevent any other from using it.
Syntax:
TimedReturnStatus lockFile (
in PrivateId file_handle ,
in TimeInterval timeout ) ;
Description:
The file handle identifies a file. Files shall always be locked in an "exclusive" method.
Exclusive: The holder of the lock denies access. A concurrent accessor who tries to lock in any mode
is refused.
If the lock is refused, the caller is blocked if a non-zero "timeout" is specified. After its current holder
has released the lock, the caller shall become the new lock holder.
A file specified by its file handle shall have only one lock at any given time.
A TimedReturnStatus of:
- ‘TM_TIMEOUT’ indicates that the file could not be locked during the timeframe specified by the
timeout parameter due to the file being accessed by another user,
Parameter Description:
file_handle
timeout
Description The maximum time the service will wait to lock a file in the case when another user is
using it.
Prerequisite Conditions:
Associated services:
- unlockFile.
11.4.8.8 unlockFile
Purpose:
Syntax:
ReturnStatus unlockFile (
in PrivateId filehandle ) ;
Description:
A ReturnStatus of:
Parameter Description:
file_handle
Prerequisite Conditions:
File has been created, opened and a file has been locked.
Associated Calls:
- lockFile.
11.4.8.9 getFileAttributes
Purpose:
This service returns the access rights and the lock status.
Syntax:
ReturnStatus getFileAttributes (
in PrivateId filehandle ,
out AccessRights access ,
out LockStatus lock_status );
Description:
Allows the caller to retrieve the access rights attributed to a file and to determine if the file is locked
and if so, by whom.
A ReturnStatus of:
Parameter Description:
file_handle
access
‘W’: Write
‘D’: Delete
‘F’: deFault
lock_status
Prerequisite Conditions:
Associated Calls:
None
11.4.8.10 seekFile
Purpose:
This service shall seek a new "byte position" inside the file specified by its file_handle.
Syntax:
ReturnStatus seekFile (
in PrivateId filehandle ,
in SeekMode seek_mode ,
in long set_pos ,
out unsigned long new_pos );
Description:
The byte position is defined as a byte-pointer starting at zero ranging to the current end-of-file. The
parameter seek_mode specifies the byte position to start seeking from at either the start-of-file, at the
current value of the byte position or indeed the end-of-file.
The value of the out parameter new_pos is dependent on the values of the input parameters:
seek_mode and set-pos. The permitted values of set-pos are also dependent on the value of seek-
mode:
A ReturnStatus of:
Parameter Description:
file_handle
seek_mode
START_OF_FILE,
CURRENT_POSITION,
END_OF_FILE
} SeekMode;
set_pos
Description Used as an offset to from the base pointer when positioning the byte pointer.
new_pos
Prerequisite Conditions:
Associated Calls:
None
11.4.8.11 readFile
Purpose:
This service shall read the contents of the file specified by its handle into the buffer
Syntax:
TimedReturnStatus readFile (
in PrivateId filehandle ,
out Address buffer_address ,
in long read_count ,
out long count_read ,
in TimeInterval timeout ) ;
Description:
The content to be read is limited by read_count the actual count of bytes is returned in count_read.
The value of ‘count_read’ differs from the ‘read_count’ value only if the start-of-file or the end-of-byte
position is exceeded.
Reading starts at the "current byte position" specified by the preceding call to seekFile, readFile or
writeFile.
A TimedReturnStatus of:
- ‘TM_TIMEOUT’ indicates that the file could not be read from during the timeframe specified by the
timeout parameter due to the file being accessed by another user,
Parameter Description:
file_handle
buffer_address
Description The address of the buffer that data read from a file is copied to.
read_count
count_read
timeout
Description The maximum time the service will wait to read a file in the case when another user is
using it.
Prerequisite Conditions:
Associated Calls:
- writeFile.
11.4.8.12 writeFile
Purpose:
This service shall write the contents of the buffer with the length of parameter write_count to the file
specified by its handle.
Syntax:
TimedReturnStatus writeFile (
in privateId file_handle ,
in address buffer_address ,
in unsigned long write_count ,
The contents to be written are limited by parameter write_count, the actual count of bytes is returned
in parameter count_written. Writing starts at the ‘Current Byte Position’ specified by the preceding call
to seekFile, readFile or writeFile.
A TimedReturnStatus of:
- ‘TM_TIMEOUT’ indicates that the file could not be written to during the timeframe specified by the
timeout parameter due to the file being accessed by another user,
Parameter Description:
file_handle
buffer_address
Description The address of the buffer that data to be written to is copied form.
write_count
count_written
timeout
Description The maximum time the service will wait to write to a file in the case when another
Prerequisite Conditions:
Associated Calls:
- readFile.
11.4.8.13 getFileBuffer
Purpose:
Syntax:
TimedReturnStatus getFileBuffer (
in unsigned long buffer_size ,
out Address buffer_address ,
in TimeInterval timeout ) ;
Description:
Reserves memory (a buffer) used in accessing a file. Data to be written to a file is first written to a
buffer and then copied across to the File on the execution of the writeFile service. Similarly, when
reading a file (readFile service), the data read is coped to the buffer. If no buffer is available the
service shall block until either a buffer has become available or the time-out has been reached. The
memory shall not be dynamically allocated, as buffers are static and fixed in terms of number and
length.
A TimedReturnStatus of:
- ‘TM_TIMEOUT’ indicates that a buffer could not be released during the timeframe specified by the
timeout parameter,
- ‘TM_ERROR’ indicates that the address of the buffer was not returned.
Parameter Description:
buffer_size
buffer_address
timeout
Description The maximum time the service will wait to write to get a buffer.
Prerequisite Conditions:
None
Associated Calls:
- releaseBuffer.
11.4.8.14 releaseFileBuffer
Purpose:
Syntax:
ReturnStatus releaseFileBuffer (
in Address buffer_address ) ;
Description:
A ReturnStatus of:
Parameter Description:
buffer_address
Prerequisite Conditions:
Associated Calls:
- getFileBuffer.
11.4.9.1 setPowerSwitch
Purpose:
Syntax:
ReturnStatus setPowerSwitch (
in PublicId switch_id ,
in SwitchOp switch_op );
Description:
The service shall be used to inform the OS to request that a power switch is to be set to a specified
state. The OS shall do this by means of MOS service setPowerSwitch.
An ‘ERROR’ condition shall be returned if the request fails. Otherwise the return status shall be
‘SUCCESS’.
Parameter Description:
switch_id
switch_op
Prerequisite Conditions:
None
Associated Calls:
- resetPowerSwitches,
- getPowerSwitchStatus.
11.4.9.2 resetPowerSwitches
Purpose:
Syntax:
The service shall be used to inform the OS to request that all power switches on this CFM are to be
reset to the OFF state. The OS shall do this by means of MOS service resetPowerSwitch.
An ‘ERROR’ condition shall be returned if the request fails. Otherwise the return status shall be
‘SUCCESS’.
Parameter Description:
Prerequisite Conditions:
None
Associated Calls:
- setPowerSwitch,
- getPowerSwitchStatus.
11.4.9.3 getPowerSwitchStatus
Purpose:
Syntax:
ReturnStatus getPowerSwitchStatus (
out PowerSwitch power_switch );
Description:
The service shall be used to retrieve the complete Status of all power switches on this CFM state. The
OS shall do this by means of MOS service getPowerSwitchStatus.
Parameter Description:
power_switch
Prerequisite Conditions:
None
Associated Calls:
- setPowerSwitch,
- resetPowerSwitches.
11.5 MOS
The MSL to OSL (MOS) interface defines a set of services that provide hardware independence and
allow the OS software to access the resources that reside on a CFM. The location of the MOS within
the software architecture is shown in Figure 50.
OSL
MOS
MSL
CFM Hardware
Board Communication
Services Services Extension
Specific Services
Core Services Services
Generic MOS
MOS
The MOS, which shall be compliant with the three layer architectural model as specified in the ASAAC
Software Standard, shall be formed by the combination of the Generic MOS and the OS specific
extension. The use of extensions shall not affect the implementation of the other interfaces in the
software architecture.
The MOS services are grouped as follows and for details on them the section is given:
- Core Services, which are common across all module types, and are themselves split into,
- Board services - covering the services related to on-module resources external to the
processor. They are specified in section 11.5.1.2,
- Specific services, which specifies sets of services particular to the GPM (see section
11.5.2.1), PCM (see section 11.5.2.2) and MMM (see section 11.5.2.3).
- Extended services -
- Bespoke Extension - which includes provision for portability of a bespoke ASAAC OS from
one processor to another one (see section 11.5.3).
The Core MOS services shall provide access to the on-module resources that are external to the
processor. These services, as listed below, shall be available on every module type.
getRelativeLocalTime 11.5.1.2.1.
Get module time (RLT)
2
getAbsoluteGlobalTime 11.5.1.2.1.
Get external reference time (AGT)
3
configureClock 11.5.1.2.1.
Configure the clock mode of the Module
4
setupTimer 11.5.1.2.1.
Setup timer
6
startTimer 11.5.1.2.1.
Start timer activity
7
stopTimer 11.5.1.2.1.
Stop timer activity 8
readTimer 11.5.1.2.1.
Read a timer
9
writeLogDevice 11.5.1.2.2.
Write to Log Device
2
enableCallback 11.5.1.2.3.
Enables a callbacks use.
2
disableCallback 11.5.1.2.3.
Disables a callbacks use.
3
callbackHandler 11.5.1.2.3.
This is the callback handler template.
5
getCbitResult 11.5.1.2.4.
Get Continuous BIT result
2
startIbit 11.5.1.2.4.
Start Initiated BIT
3
getIbitResult 11.5.1.2.4.
Get Initiated BIT Result
4
getCfmStatus 11.5.1.2.5.
Get CFM Status
2
getPeInfo 11.5.1.2.5.
Get the PE information of own PE.
4
11.5.1.2.1.1 getAbsoluteLocalTime
Purpose:
Syntax:
TimerReturnStatus getAbsoluteLocalTime (
out Time ac_system_time );
Description:
This service conveys the absolute local time (current aircraft system) as distributed within the ASAAC
core system in seconds and nanoseconds.
The value MOS_TIMER_CALL_OK shall be returned by the service if it could return a valid time value.
The value MOS_TIMER_CALL_FAILED shall be returned by the service if it could not return a valid
time value, either because the system is not yet synchronised or for any other reason.
Parameter Description:
ac_system_time
Associated Calls:
- getRelativeLocalTime,
- getAbsoluteGlobalTime.
11.5.1.2.1.2 getRelativeLocalTime
Purpose:
Syntax:
TimerReturnStatus getRelativeLocalTime(
out Time cfm_time );
Description:
The getRelativeLocalTime function shall be used to get the current CFM time measured in
seconds and nanoseconds. In order to get realistic time values, the execution time of this service shall
be limited. Thus, an appropriate time distribution mechanism shall be defined (project dependent).
The value MOS_TIMER_CALL_OK shall be returned by the service if it could return a valid time value.
The value MOS_TIMER_CALL_FAILED shall be returned by the service if it could not return a valid
time value, either because the system is not yet synchronised or for any other reason.
Parameter Description:
cfm_time
Associated Calls:
- getAbsoluteLocalTime,
- getAbsoluteGlobalTime.
11.5.1.2.1.3 getAbsoluteGlobalTime
Purpose:
Syntax:
TimerReturnStatus getAbsoluteGlobalTime (
out Time absolute_global_time ) ;
Description:
This service conveys the absolute global time value as distributed within the ASAAC core system in
seconds and nanoseconds.
The value MOS_TIMER_CALL_OK shall be returned by the service if it could return a valid time value.
The value MOS_TIMER_CALL_FAILED shall be returned by the service if it could not return a valid
time value, either because the system is not available yet.
Parameter Description:
absolute_global_time
Description This value provides the absolute global time (i.e. the synchronised time from
outside the system) valid at the point of return from the service.
Prerequisite Conditions:
Associated Calls:
- getRelativeLocalTime,
- getAbsoluteLocalTime.
11.5.1.2.1.4 configureClock
Purpose:
Syntax:
TimerReturnStatus configureClock (
in ClockInfo clock_info ) ;
Description:
The service shall be used to configure the mode of the clock of the Module. The structure is passed to
the MSU that supports the resources related to the time management. It assigns the Clock Mode and
data configuring the management of the Absolute Global Time and the synchronisation of the
Absolute Local Time, which is dependent on the synchronisation method.
The Clock Mode determines the hierarchal position in the IMA System that drives the MLI protocol.
Depending on its position, the MSL shall send request or reply MLI messages related to the time
management. Details on MLI Protocol are fully specified in section 12.7.
The Clock Identifier shall be used when logging message for ITM diagnostic.
When the clock has been configured, it is started without waiting for the configuration of federated
clocks. If the service is performed twice, it shall overlap the previous clock configuration as well as the
configuration of all federated clocks.
A MOS_TIMER_CALL_FAILED condition shall be returned when the configuration the clock mode has
failed.
Parameter Description:
clock_info
Prerequisite Conditions:
None
Associated Calls:
- attachFederatedClock.
11.5.1.2.1.5 attachFederatedClock
Purpose:
Syntax:
TimerReturnStatus attachFederatedClock (
in FederatedClockInfo federated_clock_info );
Description:
The service shall be used to attach a federated clock to the Module clock. The structure is passed to
the MSU that supports the resources related to the time management.
It assigns information to handle the protocol MLI between the Module Clock and a remote federated
clock. Details on MLI Protocol are fully specified in section 12.7.
The service shall be performed for each federated clock. The configuration of federated clocks is
independent of each other. It means there is no need to wait for the configuration of all federated
clocks before starting the MLI protocol.
The Clock Identifier and Clock Mode shall be used when logging message for ITM diagnostic.
Parameter Description:
federated_clock_info
Prerequisite Conditions:
The service configureClock has not been previously performed. The Federated Clock is not attached
Associated Calls:
- configureClock.
11.5.1.2.1.6 setupTimer
Purpose:
Syntax:
TimerReturnStatus setupTimer (
in PublicId timer_id ,
in Time time_to_expire ,
in Callback callback_id ,
in AlarmType alarm_type );
Description:
The setupTimer function shall be used to set the following attributes of a timer before its use:
- time_tick_duration,
- alarm_type.
The timer may be used for CFM local time measurements (e.g. for OS scheduling).
The timer_id shall be used to identify the timer for which the set-up shall be applied. The service
getCfmInfo shall be used to get the set of timer IDs. The function startTimer shall be used to
start the timer.
The value MOS_TIMER_CALL_OK shall be returned by the service if it could successfully set up the
timer.
The value MOS_TIMER_CALL_FAILED shall be returned by the service if it could not set up the timer,
either because the system is out of resources or any other reason.
Parameter Description:
timer_id
time_tick_duration
callback_id
alarm_type
Associated Calls:
- getCfmInfo,
- startTimer,
- stopTimer,
- readTimer,
- getRelativeLocalTime,
- registerCallback,
- enableCallback,
- disableCallback.
11.5.1.2.1.7 startTimer
Purpose:
Syntax:
TimerReturnStatus startTimer (
in PublicId timer_id);
Description:
The timer may be used for CFM local time measurements (e.g. for OS scheduling).
The timer_id shall be used to identify the timer for which the operation shall be applied. The service
getCfmInfo shall be used to get the timer_id.
The value MOS_TIMER_CALL_OK shall be returned by the service if it could successfully start the
timer.
The value MOS_TIMER_CALL_FAILED shall be returned by the service if it could not start the timer,
either because the system is out of resources or for any other reason.
Parameter Description:
timer_id
Prerequisite Conditions:
The timer shall be correctly set up before using the setupTimer service.
Associated Calls:
- getCfmInfo,
- setupTimer,
- stopTimer,
- readTimer,
- getRelativeLocalTime,
- registerCallback,
- enableCallback,
- disableCallback.
11.5.1.2.1.8 stopTimer
Purpose:
Syntax:
TimerReturnStatus stopTimer (
in PublicId timer_id );
Description:
The timer_id shall be used to identify the timer for which the set-up shall be applied.
The value MOS_TIMER_CALL_OK shall be returned by the service if it could stop the timer
successfully.
The value MOS_TIMER_CALL_FAILED shall be returned by the service if it could not stop the timer,
either because of wrong Id or any other reason.
Parameter Description:
timer_id
Associated Calls:
- getCfmInfo,
- setupTimer,
- startTimer,
- readTimer,
- getRelativeLocalTime,
- registerCallback,
- enableCallback,
- disableCallback.
11.5.1.2.1.9 readTimer
Purpose:
Syntax:
TimerReturnStatus readTimer (
in PublicId timer_id ,
out Time time_to_expire );
Description:
The readTimer function shall be used to read the current timer value (time to expire).
The timer_id shall be used to identify the timer for which the set-up shall be applied.
The value MOS_TIMER_CALL_OK shall be returned by the service if it could return a valid timer
expiration time.
The value MOS_TIMER_CALL_FAILED shall be returned by the service if it could not read the timer,
either because of wrong Id or any other reason (e.g. not started).
Parameter Description:
timer_id
time_to_expire
Associated Calls:
- getCfmInfo,
- setupTimer,
- startTimer,
- getRelativeLocalTime,
- registerCallback,
- enableCallback,
- disableCallback.
11.5.1.2.2.1 readLogDevice
Purpose:
Syntax:
ResourceReturnStatus readLogDevice (
in LogMessageType message_type ,
in unsigned long log_id ,
out CharacterSequence log_message );
Description:
This call reads the character string log_message from a dedicated local log. The message_type
identifies the log being read from and the log_id identifies the position within that log. A log_id of Null
will read from the end of the particular log. Log_id is unique to a message_type.
This service returns RS_SUCCESS if the message is successfully read. If the service does not read
successfully, RS_RESOURCE is returned if there are resource limitations, such as the log not being
found or not being available, otherwise it shall return RS_ERROR.
Parameter Description:
message_type
Description This parameter identifies the message as being one of four types.
log_id
Description This parameter identifies where the message is to be read from memory of a
particular log.
Domain Values Null if the message is to be read from the end of a message log.
log_message
Prerequisite Conditions:
None.
Associated Calls:
- writeLogDevice.
11.5.1.2.2.2 writeLogDevice
Purpose:
Syntax:
ResourceReturnStatus writeLogDevice (
in LogMessageType message_type ,
in unsigned long log_id ,
in CharacterSequence log_message );
Description:
This call stores the passed character string into a dedicated local log using the given log_id. The
message_type identifies which message log is being written to. The log_id identifies the location in
memory within that log. If a null is given as the log_id then the OS shall append the message to the
specified log. Log_id is unique to a message_type.
This service returns RS_SUCCESS if the message is written successfully. If the service fails to
successfully write the message it shall return RS_RESOURCE if there are resource limitations such
as the log is full, not found or not available; otherwise it shall return RS_ERROR.
Parameter Description:
message_type
Description This parameter identifies the message as being one of four types.
log_id
Description This parameter identifies where the message is to be written to in a message log.
Domain Values Null if the message is to be appended to the end of a message log.
log_message
Prerequisite Conditions:
None.
Associated Calls:
- readLogDevice.
11.5.1.2.2.3 erasePhysicalMemory
Purpose:
This service shall instigate the erasure of physical memory on the CFM where the calling
Configuration Manager resides.
Syntax:
An ‘ERROR’ condition shall be returned when the service has not been performed correctly.
Otherwise there will be no return status ‘SUCCESS’ since the memory has disappeared.
This call shall be used when it is necessary to quickly erase the physical memory on a given CFM.
The action will be instigated by the CM, which will use this SMOS call through to the OS, which will
then use a reflected MOS call through to the MSL. It is expected that the actual erasure will be
executed in hardware.
Parameter Description:
None.
Prerequisite Conditions:
None.
Associated Calls:
None.
The MOS callback services shall provide the MSL with a means of signalling asynchronous events (e.
g. interrupts) to the OSL. The address of the software to be invoked upon an event occurring is
passed to the MSL. The interrupts due to these events may also be temporarily suspended (e.g.
during the servicing of a different interrupt).
11.5.1.2.3.1 registerCallback
Purpose:
Syntax:
MSLstatus registerCallback (
in EventType event_type ,
in PublicId callback_id ,
in Address callback );
Description:
A callback is an asynchronous mechanism used to notify other entities about MSL events. The
callback parameter is a pointer to a function that is associated with the event event_id. The
callback_id parameter is used to distinguish instantiations of the same event type. When the event
occurs the function call is performed. Events considered are described under the callbackHandler
function Description
Service call completes before calling process continues. When a callback has been registered it shall
be enabled using the enableCallback service before it can be used.
The service will return MSL_CALLBACK_INVALID_PARAMETER if any of the parameters are deemed
to be incorrect.
Parameter Description:
event_type
callback_id
Description The callback identity used by the OS to distinguish between callbacks of the same
event type.
callback
Description The address of the callback handler function that this callback will instigate.
Prerequisite Conditions:
Associated Calls:
- enableCallback,
- disableCallback,
- deleteCallback.
11.5.1.2.3.2 enableCallback
Purpose:
Syntax:
MSLstatus enableCallback (
in EventType event_type ,
in PublicId callback_id );
Description:
This allows a callback to be enabled such that the MSL can make use of it to signal the OS.
Parameter Description:
event_type
Domain Values It must be an event type that has already been registered.
callback_id
Description The callback identity used by the OS to distinguish between callbacks of the same
event type.
Prerequisite Conditions:
Associated Calls:
- registerCallback,
- disableCallback,
- deleteCallback.
11.5.1.2.3.3 disableCallback
Purpose:
Syntax:
MSLstatus disableCallback (
in EventType event_type ,
in PublicId callback_id );
Description:
This allows a callback to be disabled such that the MSL cannot perform a callback of the associated
address function given in the registerCallback.
Parameter Description:
event_type
Domain Values It must be an event type that has already been registered.
callback_id
Description The callback identity used by the OS to distinguish between callbacks of the same
event type.
Prerequisite Conditions:
Associated Calls:
- registerCallback,
- enableCallback,
- deleteCallback.
11.5.1.2.3.4 deleteCallback
Purpose:
The deleteCallback service is used to remove a registered callback from the MSL.
Syntax:
MSLstatus deleteCallback (
in EventType event_type,
in PublicId callback_id );
Description:
The service will return MSL_CALLBACK_INVALID_PARAMETER if the parameters are not valid.
Parameter Description:
event_type
Domain Values It must be an event type that has already been registered.
callback_id
Description The callback identity used by the OS to distinguish between callbacks of the same
event type
Prerequisite Conditions:
Associated Calls:
- registerCallback,
- enableCallback,
- disableCallback.
11.5.1.2.3.5 callbackHandler
Purpose:
This is the callback handler template. It is called by the underlying MSL when a callback event has
occurred
Syntax:
void callbackHandler (
in EventType event_type ,
in PublicId callback_id ,
in Address *event_info_data );
Description:
This will be the final item in an MSL routine generating the required callback. The routine will
complete (upon the callback being scheduled) to invoke the identified service.
This is a function for a callback/interrupt handler that shall indicate the intended use and parameters
passed. The callbackHandler is an asynchronous mechanism used to notify other entities about
MSL events. The provision of a callback is made through the registerCallback service. Events
considered here are as defined below.
COMMS_EV_ERROR
This event is not related to any specific communication service call. It is triggered when an
unexpected and unsolicited error is detected (e. g. an error which cannot be associated with a specific
TC).
Errors are notified by a more specific event type if they occur at the local network interface and can be
associated with the involved TC identifier. However, if errors are detected elsewhere or cannot be
associated with a specific TC identifier, the general COMMS_EV_ERROR event shall be triggered at the
MOS interface. This event also occurs if an error occurs in the transmission of data or no buffer is
available to hold incoming data.
COMMS_EV_INFO
Information about a network is requested through the getNetworkPortStatus call. The MSL fills
the info_data structure fields with the requested information. The COMMS_EV_INFO event is
triggered when this information is available to be collected and passed back as the EventInfoData
structure.
COMMS_EV_CONFIGURE
COMMS_EV_BUFFER_SENT
COMMS_EV_BUFFER_RECEIVED
This event is associated with data in a buffer being ready to be received, if trigger_callback was
specified as TRUE in the associated configureTransfer call. It is associated with the
receiveTransfer call. The detection of errors in the received data is indicated to the callback
handler. Then if an error has been detected, then the data will not be available.
TIMER_ALARM
This event is associated with the expiration of a timer. This event shall return the timer_id in the
EventInfoData.
CBIT_ERROR_DETECT
This event is associated with the detection of a fault by the continuous hardware built-in test (CBIT).
The event_info_data shall be NUL, as the detailed fault report shall be obtained by the
getCbitResult service.
MMM_SD_EVENT
Parameter Description:
event_type
callback_id
Description The callback identity used by the OS to distinguish between callbacks of the same
event type
event_info_data
Description Address of data providing information about the event, which triggered the callback
mechanism. The data type of this structure is event, and possibly network, specific.
Associated Calls:
- registerCallback,
- configureNetwork,
- configureTransfer,
- sendTransfer,
- receiveTransfer,
- sendFragmentedTransfer,
- receiveFragmentedTransfer.
11.5.1.2.4.1 getPbitResult
Purpose:
Syntax:
BitReturnStatus getPbitResult (
out PbitResult pbit_result );
Description:
This service is used to retrieve the result of the previously initiated PBIT.
The value MOS_BIT_CALL_OK shall be returned by the service if it could return the requested PBIT
result (Note: Whether the result is OK or FAILED does not matter).
The value MOS_BIT_CALL_FAILED shall be returned by the service if it could not return the PBIT
result or the PBIT process was not triggered before using the service.
Parameter Description:
pbit_result
Prerequisite Conditions:
The PBIT shall have been started before this service is used to retrieve the result.
Associated Calls:
None
11.5.1.2.4.2 getCbitResult
Purpose:
Syntax:
BitReturnStatus getCbitResult (
out CbitResult cbit_result );
Description:
The getCbitResult function shall be used to get the Continuous Built In Test (CBIT) result.
The value MOS_BIT_CALL_OK shall be returned by the service if it could return the assigned CBIT
result (Note: whether the result is OK or FAILED does not matter).
The value MOS_BIT_CALL_FAILED shall be returned by the service if it could not return the assigned
CBIT result.
Parameter Description:
cbit_result
Prerequisite Conditions:
Associated Calls:
- startCbit.
11.5.1.2.4.3 startIbit
Purpose:
Syntax:
BitReturnStatus startIbit();
Description:
The value MOS_BIT_CALL_OK shall be returned by the service if it could start the IBIT process.
The value MOS_BIT_CALL_FAILED shall be returned by the service if it could not start the IBIT
process.
Service call completes before calling process continues (The IBIT process is started, but the result is
not necessarily yet available).
Parameter Description:
None
Prerequisite Conditions:
None
Associated Calls:
- getIbitResult.
11.5.1.2.4.4 getIbitResult
Purpose:
Syntax:
BitReturnStatus getIbitResult (
out IbitResult ibit_result );
Description:
This service is used to retrieve the result of the previously initiated IBIT.
The value MOS_BIT_CALL_OK shall be returned by the service if it could return the requested IBIT
result (Note: Whether the result is OK or FAILED does not matter).
The value MOS_BIT_CALL_FAILED shall be returned by the service if it could not return the
requested IBIT result or the IBIT process was not triggered before using the startIbit service.
Parameter Description:
ibit_result
Prerequisite Conditions:
The service call startIbit shall have been started before this service is used to retrieve the result.
Associated Calls:
- startIbit.
11.5.1.2.4.5 startCbit
Purpose:
Syntax:
ReturnStatus startCbit (
in unsigned long test_code ,
in CbitModeType mode ,
out BitTestStatus bit_test_status );
Description:
The service startCbit is used to perform a CBIT test. When the call is made the CBIT software will run
a specified test, given as an input parameter, for a predetermined period and then return. The
predetermined period will be system specific. The CBIT test software must be written to return within
this period. If the test is autonomous the call will check the state of the ongoing test and return the
status. If the test requires the processor to perform some function, the call will cause the test to be run
and will then return the status.
Some tests require that the processor will not complete within the system specific period. These are
termed partitioned tests and a complete test will take more than one call to startCbit to complete.
Therefore, when the call is made a test will be specified to be either:
COMPLETE - the call will complete within one startCbit invocation. The caller shall be blocked until
the test is finished. The OS may pre-empt this.
PARTITIONED – the call will not complete within one startCbit invocation. The OS shall not pre-empt
it.
The startCbit call returns bit_test_status that can be set to one of three values:
- PASSED – the specified test has completed and passed within the last startCbit invocation,
- ONGOING – the specified test is PARTITIONED and has not completed within the last startCbit
invocation,
- FAILED – the specified test has failed within the last startCbit invocation.
If the call returns bit_test_status as FAILED, the service getCbitResult is used to retrieve the detailed
failure information for the last test to fail.
If the startCbit call is made with the test code of zero, the CBIT software will perform all test in a
round-robin manner. In this case the call will always be set to PARTITIONED and will always set
bit_test_status as ONGOING until a failure is detected. The next invocation of startCbit, after a call
returns bit_test_status as FAILED, will recommence testing at the next test in the round-robin
sequence.
The service returns SUCCESS if CBIT is invoked correctly, otherwise it returns ERROR.
Parameter Description:
test_code
Description This is an integer value which identifies which CBIT test to run. If the code is zero the
complete set of tests is run in a cyclic fashion.
mode
Description This allows the caller to specify the method to use to run a test - either to completion or
in a series of defined sections called partitions.
bit_test_status
Prerequisite Conditions:
None
Associated Calls:
- getCbitResult.
11.5.1.2.5.1 getCfmInfo
Purpose:
Syntax:
CfmInfoReturnStatus getCfmInfo (
out CfmInfo cfm_info );
Description:
This service allows to get information about the identity and the properties of the CFM.
- CFM Id,
- CFM Resources,
- CFM Status,
The value CFM_INFO_CALL_OK shall be returned by the service if it could return the requested CFM
information.
The value CFM_INFO_CALL_FAILED shall be returned by the service if it could not return the
requested CFM information.
Parameter Description:
cfm_info
Prerequisite Conditions:
None
Associated Calls:
None
11.5.1.2.5.2 getCfmStatus
Purpose:
Syntax:
CfmStatusReturnStatus getCfmStatus (
out CfmStatus cfm_status );
Description:
The value CFM_STATUS_CALL_OK shall be returned by the service if it could return the requested
CFM information.
The value CFM_STATUS_CALL_FAILED shall be returned by the service if it could not return the
requested CFM information.
Parameter Description:
cfm_status
Prerequisite Conditions:
None
Associated Calls:
None
11.5.1.2.5.3 getMyPeId
Purpose:
Syntax:
PeIdReturnStatus getMyPeId
out PublicId my_pe_id );
Description:
The value PE_ID_CALL_OK shall be returned by the service if it could return the requested PE Id.
The value PE_ID_CALL_FAILED shall be returned by the service if it could not return the requested
PE Id.
Parameter Description:
my_pe_id
Prerequisite Conditions:
None
Associated Calls:
None
11.5.1.2.5.4 getPeInfo
Purpose:
Syntax:
PeInfoReturnStatus getPeInfo (
out PeResources my_resources );
Description:
The value PE_INFO_CALL_OK shall be returned by the service if it could return the requested PE
Info.
The value PE_INFO_CALL_FAILED shall be returned by the service if it could not return the
requested PE Info.
Parameter Description:
my_resources
Prerequisite Conditions:
None
Associated Calls:
None
The MOS communication services (NII services) shall provide communications between modules or
internal to a module using the same services (i.e. no distinction of communications scope). The MOS
communication services are listed in Table 23. All of these services shall be available on every
module type.
Data types that are common to several MOS communication services are defined in section 8.2.
11.5.1.3.1 configureInterface
Purpose:
Configures an interface.
Syntax:
NiiReturnStatus configureInterface (
in PublicId interface_id ,
in NetworkDescriptor network_id ,
in InterfaceConfigurationData configuration_data );
Description:
The configureInterface service shall be used to configure an interface, which may be used for
any scope of communication (e.g. internal to a module or between modules). An interface can be
either a physical interface (e.g. ATM, FC) or a logical interface (NII). It assigns a network_id to an
interface_id. The possible range of interface_id values must be defined during system
design time. The service provides the MSL with necessary implementation specific configuration data
(e. g. physical device memory).
The configureInterface service uses the network_id as a logical identifier for an interface.
The association between network_id and interface_id shall be one to one.
If the network_id is zero value than all associations from the given interface id to all network
ids will be destroyed. If the interface id is zero value, the association from the given
network_id to the interface id will be destroyed. Associations can be only destroyed if there
are no TC’s associated to a network_id involved. If the network_id has TC’s associated with it, then
the MOS_NII_OPEN_TC’S error will be flagged.
The value MOS_NII_ALREADY_CONFIGURED shall be returned by the service if it detects that the
user is attempting to repeat the configuration with the same network_id.
Calling the configureInterface service with a zero value for the interface_id may also invalidate a
network_id value.
The component network of the network_id should have the same value for a network at all
modules connected to that network, even though they may each use a different port component of
the network_id, and also a different interface_id to identify the relevant interface. Each
separately identified network in a system should have a unique value of the network component of
network_id.
The configuration_data parameter is a service user defined pointer to the configuration data that
is used by the MSL internally and to configure the interface.
During re-configuration, before a network_id can be associated with a new interface_id, calling
the destroyTransfer service shall have destroyed all TC’s associated with a network_id. The TC’s may
then be re-associated with the network_id afterwards, by calling the configureTransfer
service. If the configureInterface service is called with a network_id that still has TC’s
associated with it, the service shall return a MOS_NII_OPEN_TC’S error indicating this. The
getNetworkPortStatus service shall be used to obtain the network status and a list of the TC
identifiers for the TC’s that remain associated with the network_id. The value
MOS_NII_CALL_COMPLETE shall be returned by the service when the service has completed with no
errors.
The set of values valid for the interface_id is project dependent for any invalid value the service
shall return MOS_NII_INVALID_INTERFACE.
The value MOS_NII_CALL_FAILED shall be returned by the service when the service failed.
The value MOS_NII_INVALID_CONFIG shall be returned by the service if it detects any errors in the
configuration data.
The value MOS_NII_STORAGE_FAULT shall be returned by the service if it is unable to allocate the
buffer space required for the interface.
The value MOS_NII _OPEN_TCS shall be returned by the service if it is called for a network_id
that has TC's associated with it. The service getNetworkPortStatus can be used to obtain a list
of the TC identifiers for the TC’s that remain associated with the network_id.
The value MOS_NII_ALREADY_CONFIGURED shall be returned by the service if it detects that the
user is attempting to repeat the configuration with the same network_id.
If the call to the configureInterface service fails, no operation through this interface shall be
possible; i.e. this call shall successfully complete before any other communications service call
(except registerCallback) is made. Since otherwise, the network_id is not associated with an
interface_id.
Parameter Description:
interface_id
Description A unique value used to identify the local physical interface to be configured.
network_id
configuration_data
Description A structure containing the configuration data for the communications interface. The
content of the structure is implementation specific.
Prerequisite Conditions:
None
Associated Calls:
- configureTransfer,
- destroyTransfer,
- getNetworkPortStatus.
11.5.1.3.2 configureTransfer
Purpose:
Configures a TC (TC).
Syntax:
NiiReturnStatus configureTransfer (
in PublicId tc_id ,
in NetworkDescriptor network_id ,
in TransferDirection send_receive ,
in TransferType message_streaming ,
in TC_ConfigurationData configuration_data ,
in Bool trigger_callback ,
in PublicId callback_id );
Description:
The configureTransfer service shall be used to configure the resources to provide information
required for the transmission or reception of information over a TC (TC). It assigns a TC identifier to a
TC and this to a network and port, identified by a network_id. In particular it describes the
direction of the transfer (whether send or receive), provides the communication configuration data.
The TC identifier is a defined parameter to be used by NII services to identify a TC. A TC is used
unidirectional connection between NII's. The TC identifier values for a TC should be the same at all
terminations. However, for initialisation, the TC identifiers used for a TC may be different at the
transmitter and the receiver(s).
The network_id is a parameter that has been defined by a configureInterface service and
shall have a valid association with an interface. The configuration data passed to the
configureTransfer service is network dependent and identified by the network_id.
The send_receive is a parameter that defines the direction of the communication on the TC.
Implementation Note: STREAMING transfers are automatic and data is written to or read from a
predefined buffer and transmitted or received whenever this buffer contains sufficient data, without the
need to call sendTransfer or receiveTransfer services. The descriptor of the STREAMING
data buffers shall be provided with the configuration_data parameter.
The trigger_callback is a user defined parameter that, if set to ASAAC_TRUE, shall cause the
service to indicate that a callback event shall be made for this TC. A COMMS_EV_BUFFER_SENT
callback event shall then occur when the sendTransfer service completes or a
COMMS_EV_BUFFER_RECEIVED callback event when data has arrived and the receiveTransfer
service should be called depending on the value of the send_receive parameter. If the
trigger_callback parameter is set to ASAAC_FALSE, no callback events are generated for this
TC.
The value MOS_NII_CALL_COMPLETE shall be returned by the service when it has completed with
no errors.
The value MOS_NII_ALREADY_CONFIGURED shall be returned by the service if it detects that the
user is attempting to repeat the configuration of a TC without a destroyTransfer service in
between.
The value MOS_NII_INVALID_NETWORK shall be returned by the service if it detects that the
network_id value specified is not associated with a valid interface_id.
The value MOS_NII_INVALID_CONFIG shall be returned by the service if an error is detected in the
configuration data or if the address is out of the range of the service.
The value MOS_NII_INVALID_TC shall be returned in cases where ranges of TC numbers are used
to identify different service channels (like MLI or VC). This would avoid unnecessary polling with
receive transfer.
The value MOS_NII_STORAGE_FAULT shall be returned by the service if it is unable to allocate the
buffer space required for the interface.
Implementation note: If the TC needs special buffers (e.g. physical contiguous memory, special
memory area) for its internal operation, their descriptors may be provided with the
configuration_data parameter.
NOTE: Before a TC can be configured the communication network shall be configured at first using
the configureInterface service. This call shall be issued for each end of a TC, the sender and
receiver(s), before any transmission can take place over the TC.
Parameter Description:
tc_id
Domain Values No special values are associated with this parameter., implementation dependent.
network_id
send_receive
Domain Values No special values are associated with this parameter., implementation dependent.
configuration_data
Description A structure containing the configuration data for the TC. The content of the structure
is implementation specific..
trigger_callback
Description ASAAC_TRUE causes the associated callback to be invoked when an event occurs
for this tc_id.
Domain Values No special values are associated with this parameter., implementation dependent.
callback_id
Description Unique callback identifier used by the OS and the MSL. Set values shall be assigned
for specific functions to allow consistency across the system.
Prerequisite Conditions:
Before a TC can be configured, Associated Calls to configureInterface shall have been issued
for the network_id value specified.
This configureTransfer service call shall have been issued at each end of a TC, the transmitter
and the receiver(s), before a successful transfer can take place over the TC.
Associated Calls:
- destroyTransfer,
- sendTransfer,
- receiveTransfer.
11.5.1.3.3 sendTransfer
Purpose:
Syntax:
NiiReturnStatus sendTransfer (
in PublicId tc_id ,
in CharAddress transmit_data ,
in Length data_length ,
in Time time_out );
Description:
The sendTransfer service shall be used to send a single block of data over an identified TC. The
information is passed via the buffer specified by the transmit_data parameter.
The sendTransfer service shall send the data transmit_data with the data length
data_length via the TC identified by parameter tc_id. The maximum value permitted for
data_length is network dependent. The time_out value shall be used to manage the return
behaviour of the service and is detailed below.
The value MOS_NII_CALL_OK shall be returned when the service has been initiated with no errors.
The value MOS_NII_CALL_FAILED shall be returned by the service when the service failed.
The value MOS_NII_INVALID_MESSAGE_SIZE shall be returned if the message size is out of range.
The value MOS_NII_STORAGE_FAULT shall be returned if the required buffer space is not available.
If the time_out value is zero the service shall return immediately. If the time_out is not zero and if
no buffer is available for the TC, the service shall block for the specified time_out. If no buffer is
available before the time_out expires, it is considered as an error and the value
MOS_NII_CALL_FAILED shall be returned by the service.
Completion status may be returned through the callbackHandler associated with the
COMMS_EV_BUFFER_SENT event, if the callback is enabled and the trigger_callback parameter
was set in the configureTransfer service call for this TC. In this case, the timeout value is not
relevant and not used.
If no callback is enabled and a zero timeout is provided, the call returns immediately indicating the
send status.
If no callback is enabled and a non-zero timeout is provided, the service shall block the sending
thread until it can send the message or until the timeout expires.
Transfers occurring after consecutive calls to sendTransfer with the same TC identifier are
performed in sequence (first in, first out). However, no time order should be assumed between
transfers of data on different TC’s.
Parameter Description:
tc_id
Domain Values No special values are associated with this parameter., implementation dependent.
transmit_data
data_length
Domain Values No special values are associated with this parameter., implementation dependent.
time_out
Domain Values No special values are associated with this parameter., implementation dependent.
Prerequisite Conditions:
Before the data transfer can commence, a TC shall be configured using configureTransfer.
Associated Calls:
- receiveTransfer,
- configureTransfer,
- registerCallback,
- destroyTransfer.
11.5.1.3.4 receiveTransfer
Purpose:
Syntax:
NiiReturnStatus receiveTransfer (
in PublicId tc_id ,
inout CharAddress receive_data ,
in Length data_length_available ,
out Length data_length ,
in Time time_out );
Description:
The receiveTransfer service shall be used to receive a single block of data from an identified TC.
If data has arrived on the identified TC, and has passed the appropriate consistency checks, the
receive_data pointer shall contain the address and the data_length shall contain the length of
the received data. If, however, the data fails the consistency checks, or contains any error detectable
by the MSL, the pointer shall be null and the error indicated in the NiiReturnStatus. The
time_out value shall be used to manage the return behaviour of the service and is detailed below.
The call may be instigated due to a callback, associated with the COMMS_EV_BUFFER_RECEIVED
event, if the callback is enabled and the trigger_callback parameter was set in the
configureTransfer service call for this TC, indicating information is available or through polling
until the information is available.
If the time_out value is zero the service shall return immediately. If the time_out is not zero and if
no data is available, the service shall block for the specified time_out. If no data is available before
the time_out expires, the service shall return with the NiiReturnStatus value
MOS_NII_BUFFER_EMPTY.
If no callback is enabled and a zero timeout is provided, the call shall return immediately indicating the
status of the received data or an indication of no data availability. This supports a polling mode.
If no callback is enabled and a non-zero timeout is provided, the service shall block the receiving
thread until it receives a message or until the timeout expires. If the message is already available, it
returns immediately.
Parameter Description:
tc_id
Domain Values No special values are associated with this parameter., implementation
dependent.
receive_data
data_length_available
Domain Values No special values are associated with this parameter., implementation
dependent.
data_length
Domain Values No special values are associated with this parameter., implementation
dependent.
time_out
Domain Values No special values are associated with this parameter., implementation
dependent.
Prerequisite Conditions:
Before a call to receiveTransfer can be made, the TC shall have been configured using the
configureTransfer at the receiver.
Associated Calls:
- sendTransfer,
- destroyTransfer,
- configureTransfer.
11.5.1.3.5 destroyTransfer
Purpose:
Destroys a TC.
Syntax:
NiiReturnStatus destroyTransfer (
in PublicId tc_id ,
in NetworkDescriptor network_id );
Description:
The destroyTransfer service shall be used to release resources previously allocated to handle the
transmission or reception of information over a TC (TC). Following this service completion, the TC
shall no longer be operational.
This service destroys TC’s that were previously set up using the service configureTransfer. The
destruction of TC’s shall be performed inversely to the construction of the TC’s, e.g. if several
configureTransfer services were used for the set up, the same number of corresponding
destroyTransfer services shall be used.
The value MOS_NII_TC_NOT_CONFIGURED shall be returned by the service if a call is made with a
TC identifier that has not been associated with an interface for transmission by a successful call to the
configureTransfer service.
If the user calls the destroyTransfer service, transfers already queued to be sent may be purged.
If the user calls the destroyTransfer service, transfers already received but not read by
receiveTransfer may be purged.
Parameter Description:
tc_id
network_id
Description An identifier identifying, within the CFM, a particular physical interface to a particular
Network.
Prerequisite Conditions:
TC is configured.
Associated Calls:
- configureTransfer,
11.5.1.3.6 getNetworkPortStatus
Purpose:
Syntax:
NiiReturnStatus getNetworkPortStatus (
in NetworkDescriptor network_id ,
out NetworkPortStatus info_data );
Description:
The getNetworkPortStatus service shall be used to determine the status of a network port, as
available locally to the module. It shall be used in order to identify healthy resources.
The format of the info_data that is returned by the interface unit is network dependent. The
info_data structure shall include at least a list of TC identifiers that are associated with the
specified network_id.
The data_length parameter shall specify the length of the info_data in bytes.
This service call returns (calling process continues) the getNetworkPortStatus information.
Notification that the requested data is available via the info_data is indicated through the callback
associated with the COMMS_EV_INFO, if the callbackHandler is registered and enabled.
Parameter Description:
info_data
network_id
Description An identifier identifying, within the CFM, a particular physical interface to a particular
Network.
Prerequisite Conditions:
Associated Calls:
- configureInterface.
11.5.1.3.7 receiveNetwork
Purpose:
Syntax:
NiiReturnStatus receiveNetwork (
in NetworkDescriptor network ,
inout CharAddress receive_data ,
in Length data_length_available ,
out Length data_length ,
out PublicId tc_id ,
in Time time_out );
Description:
The receiveNetwork service shall be used to receive a single block of data on any TC allocated to
that network from an identified network.
If data has arrived on the identified network, and has passed the appropriate consistency checks, the
receive_data pointer shall contain the address, the data_length shall contain the length of the
received data and TC identifiers contain the TC Id of the received message.
If, however, the data fails the consistency checks, or contains any error detectable by the MSL, the
pointer shall be null and the error indicated in the NiiReturnStatus. The time_out value shall be
used to manage the return behaviour of the service and is detailed below.
The call may be instigated due to a callback, associated with the COMMS_EV_BUFFER_RECEIVED
event, if the callback is enabled and the trigger_callback parameter was set in the
configureTransfer service call for this TC, indicating information is available or through polling
until the information is available.
If the time_out value is zero the service shall return immediately. If the time_out is not zero and if
no data is available, the service shall block for the specified time_out. If no data is available before
the time_out expires, the service shall return with the NiiReturnStatus value
MOS_NII_BUFFER_EMPTY.
If no callback is enabled and a zero timeout is provided, the call shall return immediately indicating the
status of the received data or an indication of no data availability. This supports a polling mode.
If no callback is enabled and a non-zero timeout is provided, the service shall block the receiving
thread until it receives a message or until the timeout expires. If the message is already available, it
returns immediately.
Parameter Description:
network_id
Description An identifier identifying, within the CFM, a particular physical interface to a particular
Network.
receive_data
data_length_available
Domain Values No special values are associated with this parameter., implementation dependent.
data_length
Domain Values No special values are associated with this parameter., implementation dependent.
tc_id
Description A unique value to identify the TC on which the message has been received.
Domain Values No special values are associated with this parameter., implementation dependent.
time_out
Domain Values No special values are associated with this parameter., implementation dependent.
Prerequisite Conditions:
Before a call to receiveNetwork can be made, the TC shall have been configured using the
configureTransfer at the receiver.
Before a successful data transfer can commence, a network shall be configured using
configureInterface at each end of a connection, the transmitter and the receiver(s).
Associated Calls:
- sendTransfer,
- destroyTransfer,
- configureTransfer.
sendFragmentedTransfer 11.5.2.4.
Send a block of data on the given TC
2
On a GPM the MSL shall implement the AGL services are specified in 0.
11.5.2.2.1 setPowerSwitch
Purpose:
Syntax:
ReturnStatus setPowerSwitch (
in PublicId switch_id ,
in SwitchOp switch_op );
Description:
The service shall be used to request that a power switch is to be set to a specified state.
An ‘ERROR’ condition shall be returned if the request fails. Otherwise the return status shall be
‘SUCCESS’.
Parameter Description:
switch_id
switch_op
Prerequisite Conditions:
None
Associated Calls:
- resetPowerSwitches,
- getPowerSwitchStatus.
11.5.2.2.2 resetPowerSwitches
Purpose:
The resetPowerSwitches function shall be used to reset the power switch and to switch all
modules off.
Syntax:
The service shall be used to request that all power switches on this CFM are to be reset to the OFF
state.
An ‘ERROR’ condition shall be returned if the request fails. Otherwise the return status shall be
‘SUCCESS’.
Parameter Description:
None
Prerequisite Conditions:
None
Associated Calls:
- setPowerSwitch
- getPowerSwitchStatus
11.5.2.2.3 getPowerSwitchStatus
Purpose:
The getPowerSwitchStatus function shall be used to get the current status of the power switch.
Syntax:
ReturnStatus getPowerSwitchStatus (
out PowerSwitch power_switch );
Description:
The service shall be used to inform the OS to request that all power switches on this CFM are to be
reset to the OFF state. The OS shall do this by means of resetPowerSwitches.
An ‘ERROR’ condition shall be returned if the request fails. Otherwise the return status shall be
‘SUCCESS’.
Parameter Description:
power_switch
Prerequisite Conditions:
None
Associated Calls:
- setPowerSwitch,
- resetPowerSwitches.
The MMM specific services are associated with the management of device memory. They shall
include services in order to,
11.5.2.3.1 SetTxData
Purpose:
Syntax:
MslStatus SetTxData (
out unsigned long key ,
in Address buffer ,
in unsigned long size );
Description:
This service sets up a write to the memory device. A unique key is returned from the call allowing
identification of the data transfer.
If a hardware fault prevents writing the data, the value MSL_IO_FAILED is returned.
If the data cannot be written because the disk is busy, the value MSL_IO_BUSY is returned.
If the write fails for any other reason the value MSL_INVALID_CALL is returned.
Parameter Description:
key
buffer
size
Prerequisite Conditions:
None
Associated Calls:
- createRegion,
- attach,
- detach,
- destroyRegion.
11.5.2.3.2 SetRxData
Purpose:
Syntax:
MslStatus SetRxData (
out unsigned long key ,
in Address buffer ,
in unsigned long size );
Description:
This service sets up a read from the memory device. A unique key is returned from the call allowing
identification of the data transfer.
If a hardware fault prevents reading the data, the value MSL_IO_FAILED is returned.
If the data cannot be read because the disk is busy, the value MSL_IO_BUSY is returned.
If the read fails for any other reason the value MSL_INVALID_CALL is returned.
Parameter Description:
key
buffer
size
Prerequisite Conditions:
None
Associated Calls:
- createRegion,
- attach,
- detach,
- destroyRegion.
11.5.2.3.3 StartTransfer
Purpose:
Initiates the read or write of MMM data set up by the SetRxData and SetTxData services
Syntax:
MslStatus StartTransfer (
in unsigned long key ,
in unsigned long lba ,
in IOoperation op )
Description:
Used after the SetRxData and SetTxData services, this service initiates the transfer that has been set
up by the initial service. The key allows identification of the data transfer.
This service is non-blocking and it is associated with a callback event ‘MMM_SD_EVENT’ (see
section 11.5.1.2.3.5), which indicates the end of the transfer to MMM storage.
If the transfer fails because the disk is busy, the value MSL_IO_BUSY is returned.
If the transfer fails for any other reason, the value MSL_INVALID_CALL is returned.
Parameter Description:
key
lba
op
Prerequisite Conditions:
None
Associated Calls:
- SetRxData,
- SetTxData.
11.5.2.4.1 configureFragmentedTransfer
Purpose:
Syntax:
NiiReturnStatus configureFragmentedTransfer (
in PublicId tc_id ,
in NetworkDescriptor network_id ,
in TransferDirection send_receive ,
in TransferType message_streaming ,
in TC_ConfigurationData configuration_data ,
in Bool trigger_callback ,
in PublicId callback_id );
Description:
The configureFragmentedTransfer service is part of the NII extension for Signal Processing.
It shall be used to configure resources to provide information required for the fragmented transmission
or reception of information over a TC (TC). It assigns a TC identifier to a TC and this to a network and
port, identified by a network_id. In particular it describes the direction of the transfer (whether send
or receive), provides the network buffer distribution and collection laws.
The TC identifier is a service user defined parameter for use by the other NII services that identifies a
TC. A TC is used for the unidirectional transfer of data between the NII local to the service user and
one or more NII's, i.e. for communication internal and external to the module.
The network_id is a parameter that has been defined by a configureInterface service user
and has a valid association with an interface_id.
The send_receive is a service user defined parameter that defines the direction of the
communication on the TC. Only one call to this service can be made per TC with the send_receive
parameter set to RECEIVE, without the destroyTransfer being called to destroy the TC. A TC may
be associated with multiple networks, if the send_receive parameter is set to SEND for the calls to
the configureTransfer service for these associations.
The message_streaming parameter shall be set to the value MESSAGE in all cases.
The trigger_callback is a user defined parameter that, if set to TRUE, shall cause the service to
indicate that a callback event shall be made for this TC. A COMMS_EV_BUFFER_SENT callback event
shall then occur when the sendFragmentedTransfer service completes or a
COMMS_EV_BUFFER_RECEIVED callback event when data has arrived and the
receiveFragmentedTransfer service should be called depending on the value of the
send_receive parameter. If the trigger_callback parameter is set to FALSE, no callback
events are generated for this TC.
The callback_id shall be used to identify the callback associated to the COMMS_EV_BUFFER_SENT
or COMMS_EV_BUFFER_RECEIVED event depending on the send_receive parameter.
The NiiReturnStatus value MOS_NII_COMPLETE shall be returned by the service when it has
completed with no errors.
Parameter Description:
tc_id
network_id
Description An identifier identifying, within the CFM, a particular physical interface to a particular
Network.
send_receive
Description This defines the direction of data transfers on the TC, (as viewed from the site calling
configureTransfer).
configuration_data
Description Address of a structure containing the configuration data for the TC. The format and
content of the structure is network specific. Appropriate memory buffer descriptors
needed for the TC configuration and operation will be provided through this structure.
This configuration data shall be used to provide the network buffer distribution and
collection laws.
trigger_callback
Description TRUE causes the associated callback to be invoked when an event occurs for this
tc_id.
callback_id
Description Unique callback identifier used by the OS and the MSL. Set values shall be assigned
for specific functions to allow consistency across the system.
Prerequisite Conditions:
This configureFragmentedTransfer service call shall have been issued at each end of a TC, the
transmitter and the receiver(s), before a successful transfer can take place over the TC.
Associated Calls:
- configureInterface,
- destroyTransfer,
- sendFragmentedTransfer,
- receiveFragmentedTransfer.
11.5.2.4.2 sendFragmentedTransfer
Purpose:
Syntax:
NiiReturnStatus sendFragmentedTransfer (
in PublicId tc_id ,
in CharAddress transmit_data ,
in Length data_length );
Description:
It shall be used to initiate a communication to fragment and pass a single block of data over an
identified TC. The information shall be passed via the buffer specified by the transmit_data parameter.
The sendFragmentedTransfer service shall use the TC identifier to identify the TC; the specific
buffer addressing and fragmentation law, passed to the MSL through the
configureFragmentedTransfer service calls; and the set of interface identifiers associated with
the TC.
Any identifier, check value or addressing data that is added to the transmit_data by the
sendFragmentedTransfer service shall be removed by the receiveFragmentedTransfer
services. Any values that are required to be the known in advance at the receiving ends of the TC
shall be provided through the configureFragmentedTransfer service in the
configuration_data. The tc_id, network identifier and interface identifier parameters may be
different at both ends of the TC (refer to initialisation section).
The intent of the call is shown in 9.5.6.3. The first block to be sent is indicated by transmit_data.
Having sent block_length bytes, the initial address is incremented by step and another block sent.
Data between the blocks identified are sent on different TC’s (e.g. starting at transmit_data +
block_length).
The value MOS_NII_CALL_OK shall be returned by the service when the service has been initiated
with no errors.
The value MOS_NII_INVALID_TC shall be returned by the service if a tc_id outside the range
designated for this service is detected.
The value MOS_NII_TC_NOT_CONFIGURED shall be returned by the service if a call is made with a
tc_id that has not been associated with an interface for transmission by a successful call to the
configureFragmentedTransfer service.
The value MOS_NII_INVALID_CONFIG shall be returned by the service if an error is detected in the
configuration data or if the address is out of the range of the service.
The value MOS_NII_STORAGE_FAULT shall be returned by the service if it is unable to allocate the
buffer space required for the interface.
This service call returns (calling process continues) before completion of the action. Completion
status may be returned through the callback associated with the COMMS_EV_BUFFER_SENT event, if
the callback is enabled and the trigger_callback parameter was set in the
configureFragmentedTransfer service call for this TC.
Transfers occurring after consecutive calls to sendFragmentedTransfer with the same tc_id are
performed in sequence (first in, first out). However, no time order should be assumed between
transfers of data on different TC’s.
If the user calls the destroyTransfer service, transfers queued by consecutive calls to
sendFragmentedTransfer shall be purged.
network internal
transmit_data
view of data
transferred
step
data_length
block_length
Parameter Description:
tc_id
transmit_data
data_length
Domain Values No special values are associated with this parameter., implementation dependent.
Prerequisite Conditions:
Before a call to the sendFragmentedTransfer service can be made, the TC shall have been
configured using configureFragmentedTransfer service at the sender.
Before successful data transfer can commence, a TC shall have been configured using
configureFragmentedTransfer at each end of a connection, the transmitter and the receiver(s).
Associated Calls:
- receiveFragmentedTransfer,
- configureFragmentedTransfer,
- registerCallback,
- destroyTransfer.
11.5.2.4.3 receiveFragmentedTransfer
Purpose:
If the user calls the destroyTransfer service, transfers received but not read by calls to
receiveFragmentedTransfer shall be purged.
Syntax:
NiiReturnStatus receiveFragmentedTransfer (
in PublicId tc_id ,
inout CharAddress receive_data ,
out Length data_length_available ,
in Length data_length );
Description:
It shall collect information received from the network. The call shall be instigated due to a callback,
associated with the COMMS_EV_BUFFER_RECEIVED event, if the callback is enabled and the
trigger_callback parameter was set in the configureFragmentedTransfer service call for
this TC, indicating information is available or through polling until the information is available.
The receiveFragmentedTransfer service shall use the tc_id to identify the TC; the specific
buffer addressing and network collection law parameters, passed to the MSL through the
configureFragmentedTransfer service call; and the interface_id associated with the TC.
If data has arrived on the identified TC, and has passed the appropriate consistency checks, the
receive_data pointer shall contain the address and the data_length shall contain the length of
the received data. If, however, the data fails the consistency checks, or contains any error detectable
by the MSL, the pointer shall be NULL and the error indicated in the NiiReturnStatus.
The value MOS_NII_CALL_COMPLETE shall be returned by the service when the service has
completed with no errors.
The value MOS_NII_INVALID_TC shall be returned by the service if a tc_id outside the range
designated for this service is detected.
The value MOS_NII_TC_NOT_CONFIGURED shall be returned by the service if a call is made with a
tc_id that has not been associated with an interface for transmission by a successful call to the
configureFragmentedTransfer service.
The value MOS_NII_BUFFER_EMPTY shall be returned by the service if there is no data received for
the TC since the last call to receiveFragmentedTransfer or since the TC was configured by a
call to the configureFragmentedTransfer service.
The value MOS_NII_BUFFER_NOT_READY shall be returned by the service if the received message is
incomplete.
The value MOS_NII_STORAGE_FAULT shall be returned by the service if it is unable to allocate the
buffer space required for the interface.
Both Figure 53 and Figure 54 show the splitting of incoming data and fragmentation.
network internal
receive_data
view of arriving
data
step
data_length
block_length
300
400 300
100
300
200
400
200
300
100
300 300
400
Parameter Description:
tc_id
receive_data
Output: The address of the buffer that contains the requested data. If no valid data is
available, the MSL shall set this parameter to a NULL value.
data_length_available
Domain Values No special values are associated with this parameter., implementation dependent.
data_length
Domain Values No special values are associated with this parameter., implementation dependent.
Prerequisite Conditions:
Before a call to receiveFragmentedTransfer can be made, the TC shall have been configured
using the configureFragmentedTransfer at the receiver.
Associated Calls:
- sendFragmentedTransfer,
- destroyTransfer,
- configureFragmentedTransfer.
deleteContext 11.5.3.1.
Deletes a processor context.
2
deleteVM 11.5.3.2.
Delete a virtual memory area.
2
deleteRegion 11.5.3.3.
Delete a memory region.
2
11.5.3.1.1 createContext
Purpose:
Syntax:
MslStatus createContext (
in PublicId vmid ,
in PublicId stack ,
in Address entry ,
out PublicId cpu_context );
Description:
This service shall allow the MSL to create a mapping between a virtual memory area and a CPU
context identifier that the caller will use to indicate the context to be executed. This processor context
is associated to the virtual memory area specified by the vmid parameter. The stack parameter is
used to define the stack start point to the MSL. The logical address of the entry point of the process in
the virtual memory area is given by entry. The context ID of the created context is returned in
cpu_context.
The value MSL_OK shall be returned by the service if it could create a context and return a valid
context ID.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
region ID.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
virtual memory area ID.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
logical address for entry.
The value MSL_FAILED shall be returned by the service if it could not create a context for any other
reason.
Parameter Description:
vmid
Description The identifier of the virtual memory area in which the context will run.
stack
Description The identifier of the region that the created context will utilise for its stack.
entry
Description The logical address within the created context’s virtual memory area at which
execution will begin.
cpu_context
Prerequisite Conditions:
Before this service can use a virtual memory area, the createVM service must be used to create it.
Associated Calls:
- deleteContext,
- switchContext.
11.5.3.1.2 deleteContext
Purpose:
Syntax:
MslStatus deleteContext (
in PublicId cpu_context );
Description:
This service shall delete a processor context, specified by the cpu_context parameter.
The value MSL_OK shall be returned by the service if it could delete a context.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
cpu_context.
The value MSL_FAILED shall be returned by the service if it could not delete a context for any other
reason.
Parameter Description:
cpu_context
Prerequisite Conditions:
Before a context can be deleted, it must have already been created using the createContext service.
Associated Calls:
- createContext,
- switchContext.
11.5.3.1.3 switchContext
Purpose:
Used by the OS to get the MSL to switch control between two processor contexts.
Syntax:
MslStatus switchContext (
in PublicId cpu_context );
Description:
This service shall allow the caller to switch to a particular process thread, identified by cpu_context,
for execution. In normal conditions, this service does not return an MslStatus value. The service
switchContext() only returns if it fails
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
cpu_context.
The value MSL_FAILED shall be returned by the service if it could not switch to a context for any
other reason.
Parameter Description:
cpu_context
Prerequisite Conditions:
Before a context can be used in the switchContext service, it must have already been created using
the createContext service.
Associated Calls:
- createContext,
- deleteContext.
11.5.3.1.4 enterCriticalSection
Purpose:
Syntax:
MslStatus enterCriticalSection();
Description:
This service informs the MSL that the caller is now in a critical section and that callbacks shall be
disabled.
Parameter Description:
None
Prerequisite Conditions:
None
Associated Calls:
- leaveCriticalSection.
11.5.3.1.5 leaveCriticalSection
Purpose:
Syntax:
MslStatus leaveCriticalSection();
Description:
This service informs the MSL that the caller is now leaving a critical section and that callbacks shall
be enabled.
Parameter Description:
None
Prerequisite Conditions:
None
Associated Calls:
- enterCriticalSection.
11.5.3.1.6 addSEP
Purpose:
This service registers the entry point of a service provided by a virtual memory area.
Syntax:
MslStatus addSEP(
in unsigned long service_id ,
in PublicId service_vm ,
in Address entry );
Description:
This service shall add a service entry point for a service provided by a virtual memory area to the
MSL’s list of entry points. This is a list of services, their entry point, and the virtual memory area that
provides the service. A service entry point is a logical address in a virtual memory area where the
executable code of the service begins. When a service in one virtual memory area is called from
another virtual memory area, the MSL uses the service entry point to invoke the service.
The value MSL_OK shall be returned by the service if it could successfully add the entry point.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
service_vm.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
logical address for entry.
The value MSL_FAILED shall be returned by the service if the operation fails.
Parameter Description:
service_id
Description A unique number that will be used to identify the service whenever it is called. Note
that the same space is used for MSL services and OS services.
Domain Values service_id >= 0x0 < 0x7F: Reserved for MSL use
service_id > 0x7F : Available for OSL use
service_vm
Description The identifier of the virtual memory area to provide the service.
entry
Description The logical address within the virtual memory area of the entry point of the service.
Prerequisite Conditions:
Before service can be registered for a virtual memory area, the virtual memory area must be created
using the createVM service.
Associated Calls:
None
11.5.3.2 VM Services
11.5.3.2.1 createVM
Purpose:
Create a virtual memory area to associate with the code and data of a process.
Syntax:
MslStatus createVM (
in PublicId code ,
in Address code_addr ,
in PublicId data ,
in Address data_addr ,
out PublicId vm );
Description:
Initialises data structures inside the MSL so that they represent a virtual memory area. Specified code
and data regions are attached to this virtual memory area during the creation. Calling the
createRegion service prior to calling createVM must have created these regions before. The logical
address in virtual memory space at which each type of region is attached is then specified by its
associated Address parameter. Any additional regions are then created using createRegion and
attached using attach.
The value MSL_OK shall be returned by the service if it could successfully create the virtual memory
area.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
logical address for code_addr or data_addr.
The value MSL_FAILED shall be returned by the service if the create operation fails.
Parameter Description:
code
Description The unique identification number for the code region to be attached to the virtual
memory area, as produced by calling the createRegion service.
code_addr
Description Address in the virtual memory area’s logical address space at which the code region
is to be attached.
data
Description The unique identification number for the data region to be attached to the virtual
memory area, as produced by calling the createRegion service.
data_addr
Description Address in the virtual memory area’s logical address space at which the data region
is to be attached.
vm
Description Returns a unique identifier for the virtual memory area created, to be used in
subsequent service calls to identify this virtual memory area.
Prerequisite Conditions:
None
Associated Calls:
- deleteVM,
- getMyVM.
11.5.3.2.2 deleteVM
Purpose:
Syntax:
MslStatus deleteVM (
in PublicId vmid );
Description:
Returns a virtual memory area to an initial, inactive state provided that no regions are currently
attached to it. This means that all regions, including code and data, must be explicitly detached before
the deleteVM can be called successfully.
The value MSL_OK shall be returned by the service if the virtual memory area was deleted
successfully.
The value MSL_FAILED shall be returned if there is at least one region still attached to the virtual
memory area.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
virtual memory area ID.
Parameter Description:
vmid
Description A unique identifier for the virtual memory area to be deleted, as obtained by creating
the virtual memory area using the createVM service.
Prerequisite Conditions:
Before the virtual memory area can be deleted, the virtual memory area must already have been
created using the createVM service.
Associated Calls:
- createVM,
- getMyVM.
11.5.3.2.3 getMyVM
Purpose:
Find out the virtual memory identifier associated with the calling process.
Syntax:
MslStatus getMyVM (
out PublicId result );
Description:
This service returns to the caller the virtual memory identifier associated with the calling process.
Parameter Description:
vmid
Prerequisite Conditions:
None
Associated Calls:
- createVM,
- deleteVM.
11.5.3.2.4 copyMemory
Purpose:
Syntax:
MslStatus copyMemory (
in PublicId source_vm_id ,
in Address source_address ,
in PublicId destination_vm_id ,
in Address destination_address ,
in unsigned long size );
Description:
This service copies a block of memory from the source to the destination. The source and destination
address is a logical address applicable to the relevant virtual address space.
The value MSL_OK shall be returned by the service if the copy was successful.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
virtual memory area ID.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
logical address.
Parameter Description:
source_vm_id
Description The logical identifier for the virtual memory area from which the block shall be copied.
source_address
Description The logical address within the virtual memory area from which the block shall be
copied.
destination_vm_id
Description The logical identifier for the virtual memory area to which the block shall be copied.
destination_address
Description The logical address within the virtual memory area to which the block shall be copied.
size
Prerequisite Conditions:
Before this service can be used, both source and destination virtual memory areas must be created
using the createVM service.
Associated Calls:
- createVM,
- deleteVM.
11.5.3.3.1 createRegion
Purpose:
Syntax:
MslStatus createRegion (
in PoolType pool ,
in unsigned long num_pages ,
out PublicId region );
Description:
Reserves an unallocated area of physical memory for later use by virtual memory areas.
This memory can be obtained from one of several pools of physical memory:
The BUFFER pool – intended to create regions that will be attached to more than one virtual memory
area as shared memory,
The value MSL_OK shall be returned by the service if the region was created successfully.
The value MSL_FAILED shall be returned if the service for any reason was unable to create the
region.
Parameter Description:
pool
num_pages
Description The number of pages in physical memory to be used to form the region.
region
Description The variable region will be altered to contain a unique identification number for the
region just created, for use in subsequent service calls needing to refer to the region.
Prerequisite Conditions:
None
Associated Calls:
- deleteRegion,
- attach,
- attachAt,
- detach.
11.5.3.3.2 deleteRegion
Purpose:
Syntax:
MslStatus deleteRegion(
in PublicId reg );
Description:
Deletes a region from physical memory, making this memory available to be re-allocated to new
regions if so desired. Note that a region must not be attached to any virtual memory areas for it to be
deleted successfully. The number of virtual memory areas to which the region is attached will be
checked by this service. This can be greater than one for Buffer regions, which act as shared
memory. It is thus necessary to detach the region to be deleted by calling the detach service for each
associated virtual memory area prior to using deleteRegion.
The value MSL_OK shall be returned by the service if the region was deleted successfully.
The value MSL_FAILED shall be returned if the region is still attached to a virtual memory area.
The value MSL_INVALID_PARAMETER shall be returned if the region specified does not exist.
Parameter Description:
reg
Description A unique identifier for the region to be deleted, as obtained by creating the region
with the createRegion service
Prerequisite Conditions:
Before a region can be deleted, the region must be detached from all virtual memory areas by calling
the detach service for each associated virtual memory area.
Associated Calls:
- createRegion,
- attach,
- attachAt,
- detach.
11.5.3.3.3 attach
Purpose:
Syntax:
MslStatus attach(
in PublicId reg ,
in PublicId dest_vm ,
in MemoryUsage usage ,
out Address attached_here );
Description:
This service makes the specified virtual memory area (dest_vm) aware of the region (reg) by updating
its internal tables to give the virtual memory area access to the physical memory associated with reg.
This access is limited to being either READ_ONLY or READ_WRITE according to the value of the
usage parameter. The service determines where to attach the region in the virtual memory area’s
address space and returns this attachment logical address to the caller in attached_here.
The value MSL_OK shall be returned by the service if the region was attached successfully.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
virtual memory area ID.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
Region ID.
Parameter Description:
reg
Description The identification number of the region to be attached, obtained by creating the
region using the createRegion service.
dest_vm
Description The identification number of the virtual memory area to which attachment is to occur,
as obtained by creating the virtual memory area using the createVM service.
usage
Description Determines the type of access that the virtual memory area is to have to the region
being attached.
attached_here
Description Returns the logical address at which the region has been attached in the virtual
memory area’s memory space.
Prerequisite Conditions:
Before a region can be detached, the region must be created using the createRegion service.
Associated Calls:
- createRegion,
- deleteRegion,
- attachAt,
- detach.
11.5.3.3.4 attachAt
Purpose:
Syntax:
MslStatus attachAt (
in PublicId reg ,
in PublicId dest_vm ,
in MemoryUsage usage ,
in Address attach_here );
Description:
This service makes the specified virtual memory area (dest_vm) aware of the region (reg) by updating
its internal tables to give the virtual memory area access to the physical memory associated with reg.
This access is limited to being either READ_ONLY or READ_WRITE according to the value of the
usage parameter. The service attaches the region at the logical address requested by the caller in the
attach_here parameter. Note that this service differs from the attach service since it does not
calculate the attachment address but requires it to be explicitly specified by the user.
The value MSL_OK shall be returned by the service if the region was attached successfully.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
virtual memory area ID.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
Region ID.
Parameter Description:
reg
dest_vm
Description The identification number of the virtual memory area to which attachment is to
occur, as obtained by creating the virtual memory area using the createVM
service.
usage
Description Determines the type of access that the virtual memory area is to have to the
region being attached.
attach_here
Description Contains the logical (linear) address at which the region is to be attached in
the virtual memory area’s memory space
Prerequisite Conditions:
Before a region can be attached, the region must be created using the createRegion service.
Associated Calls:
- createRegion,
- deleteRegion,
- attach,
- detach.
11.5.3.3.5 detach
Purpose:
Syntax:
MslStatus detach (
in PublicId reg ,
in PublicId from );
Description:
Updates the internal data structures of a virtual memory area so that it no longer has access to the
specified memory region.
The value MSL_OK shall be returned by the service if the region was detached successfully.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
virtual memory area ID.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
Region ID.
The value MSL_INVALID_PARAMETER shall be returned by the service if it is called with an invalid
logical address.
Parameter Description:
reg
Description a unique identifier for the region to be detached from the virtual memory area, as
obtained when the region was originally created by calling the createRegion service.
from
Description A unique identifier for the virtual memory area from which the specified region is to be
detached, as obtained originally by creating the virtual memory area using the
createVM service.
Prerequisite Conditions:
Before a region can be detached, the region must be created using the createRegion service and
attached to a virtual memory area using the attach or attachAt service.
Associated Calls:
- createRegion,
- deleteRegion,
- attach,
- attachAt,
- Board Services,
- NII,
11.6 SMBP
According to functional requirements the services are grouped into "use categories" - dependent on
the CFM types where the functions are implemented
The comprehensive list of all SMBP calls is listed in Table 26 below. The specification of the RTBP
Tree Grammar is considered as a part of the SMBP services.
Tree RTBP Tree Grammar RTBP Tree Grammar in EBNF core 11.6.1
Retrieving getRootNode Get the departure node of an RTBP tree core 11.6.2.1
Tables readNode Get a node with a specific identifier relative to the core 11.6.2.2
provided node
getAttributes Get a buffer with the data stored with a provided core 11.6.2.4
node.
getChildNodes Get a list of all subsequent nodes relative to the core 11.6.2.5
provided node
getLength Get the number of node handles within a node core 11.6.2.6
list
item Retrieve a node handle from a node list, such as core 11.6.2.7
provided by getChildNodes.
11.6.1.1 Introduction
The RTBP tree is specified in the EBNF format, ISO 14977. See document reference [7].
The basic grammar of the tree is based on a set of nodes that is a set of Ids with an associated child
node. The child node may be either an SMBP structure or a set of node itself. The basic structure of
that tree is a continuation of Ids that terminates with a table of data corresponding to SMBP structure.
The Id discriminates either the type of the child node or the node within this set. The Id
PROCESS_SET is the node where are located all nodes describing processes of the current
configuration. Process_Id is the node where all items describing that process are located.
Identifier Description
Function_Id The identification of a GSM Function, which is unique within an IMA System
GSM_data_Id The identification of a GSM configuration data, which is unique within a GSM
Function
StateMachine_Id The identification of a state machine, which is unique within a GSM Function
Configuration_Id The identification of a logical configuration, which is unique within an IMA System
Identifier Description
Vc2TcMapping_Id The identification of a Mapping of a VC onto a TC, which is unique within an IMA
System
Cfm_Load_Id The identification of a table specifying a CFM download, which is unique within a
CFM
FederatedClock_Id The identification of a Clock that is federated, which is unique within an IMA
System
State_Id The identification of a state, which is unique within a state machine. Actually it is
the current state.
Action_Id The identification of an action, which is unique within a transition that is defined by
the couple current state (State_Id) and event (Event_Id)
The Figure 48 in section 10.6.1 represents the RTBP Tree from a concept point of view. The following
table maps the terms used in the Concept Figure with the term identifying nodes in the EBNF
specification.
VC Mapping VCMAPPING_ITEM
VC to TC Mapping VC2TCMAPPING_SET
VC Info VC_SET
TC Info TC_SET
PE Info PE_SET
Root_Node = Function_Node ,
ProcessFunction_Node ;
FUNCTION_SET
Function_Id
ROOT
PROCESS_FUNCTION_SET
Process_Id
SMBP
Function_Id
ProcessFunction_Node = PROCESS_FUNCTION_SET,
ProcessFunction_Set_Node ;
{ Process_Id , SMBP_Function_Id } ;
Function_Child_Node = [ Configuration_Node ] ,
[ StateMachine_Set_Node ] ,
[ GSM_Configuration_Data_Set_Node ] ;
CONFIGURATION_SET
Configuration_Id
Function_Id
STATE_MACHINE_SET
StateMachine_Id
GSM_CONFIG_DATA_SET
GSM_data_Id
Configuration_Node = CONFIGURATION_SET ,
Configuration_Set_Node ;
Configuration_Set_Node =
( Configuration_Id , Configuration_Child_Node ) ,
{ Configuration_Id , Configuration_Child_Node } ;
Each configuration node has child nodes that are both optional and allow access to different types of
information. Possibly a configuration may contain only information to configure processes and its
associated communication object (e.g. Process_Set_Node and Vc_Set_Node) or communication onto
the network (e.g. Tc_Set_Node, Vc2TcMapping_Set_Node and Interface_Set_Node). It is up to the
system design to decide.
PROCESS_SET
Process_Id
VC_SET
Vc_Id
TC_SET
Tc_Id
VC2TCMAPPING_SET
Vc2TcMapping_Id
Configuration_Id
SMBP
VcToTcMapping
Description
INTERFACE_SET
Interface_Id
SMBP
CFM_SET InterfaceData
CLOCK_SET
Cfm_Id
Configuration_Child_Node = [ Process_Set_Node ] ,
[ Vc_Set_Node ] ,
[ Tc_Set_Node ] ,
[ Vc2TcMapping_Set_Node ] ,
[ Interface_Set_Node ] ,
[ Cfm_Set_Node ] ,
[ Clock_Set_Node ] ;
Process_Set_Node = PROCESS_SET , Process_SetChild_Node ;
The Process_Child_Node gathers all information for configuring a Process. It comprises information
related to the Process, its Threads, and the scheduling parameters of these threads and the mapping
of VC of the present Process.
Process_Child_Node = Process_GrandChild_Node ,
Thread_Child_Node ,
Scheduling_Child_Node ,
VCMapping_Child_Node ;
Process_GrandChild_Node = PROCESS_ITEM ,
SMBP_ProcessDescription ;
Thread_GrandChild_Node =
( Thread_Id , SMBP_ThreadDescription ) ,
{ Thread_Id , SMBP_ThreadDescription } ;
Scheduling_Child_Node =
SCHEDULING_ITEM , Scheduling_GrandChild_Node ;
Scheduling_GrandChild_Node =
( Scheduling_Id , SMBP_ThreadSchedulingInfo ) ,
{ Scheduling_Id , SMBP_ThreadSchedulingInfo } ;
Each SMBP structure is
hooked to a unique Id
PROCESS_ITEM
SMBP
ProcessDescription
SMBP
THREAD_ITEM ThreadDescription
Thread_Id
Process_Id
SCHEDULING_ITEM
Scheduling_Id SMBP
ThreadScheduling
Info
VCMAPPING_ITEM
VcMapping_Id
SMBP
VcMapping
Description
VCMapping_Child_Node =
VCMAPPING_ITEM , VCMapping_GrandChild_Node ;
VCMapping_GrandChild_Node =
( VcMapping_Id , SMBP_VcMappingDescription ) ,
{ VcMapping_Id , SMBP_VcMappingDescription } ;
Vc_Set_Node = VC_SET , Vc_Child_Node ;
It shall be noticed the first part of Vc_Item_Node is for the case of mono processor architecture while
the second part is for multi processor architecture. This two definition are exclusive.
Vc_Item_Node =
SMBP_VcDescription |
( ( Vc_Table_Id , SMBP_VcDescription ) ,
{ Vc_Table_Id , SMBP_VcDescription } ) ;
Mono-Processor Environment
Vc_Id
SMBP_VcDescription
Multi-Processor Environment
Vc_Id
Vc_Table_Id
SMBP
VcDescription
Tc_Item_Node =
( Tc_Table_Id , SMBP_TcDescription ) ,
{ Tc_Table_Id , SMBP_TcDescription} ;
Vc2Tc_Set_Node = VC2TCMAPPING_SET , Vc2Tc_Child_Node ;
Vc2Tc_Child_Node =
( Vc2TcMapping_Id , SMBP_VcToTcMappingDescription ) ,
{ Vc2TcMapping_Id , SMBP_VcToTcMappingDescription } ;
Interface_Child_Node =
( Interface_Id , SMBP_InterfaceData ) ,
{ Interface_Id , SMBP_InterfaceData } ;
Tc_Id
Tc_Table_Id
SMBP
TcDescription
The Cfm_Set_Node gathers all information describing the set of remote CFM that are managed by
the present PE. It shall be noticed that the distant CFM does not necessarily have PE. The
Cfm_Mli_Node provides the information of the MLI channel to reach this CFM.
Cfm_Child_Node = Cfm_GrandChild_Node ,
Cfm_Mli_Node ,
[Pe_Set_Node] ;
CFM_ITEM
Cfm_Load_Id
SMBP
CfmDescription
CFM_MLI_CHANNEL
Cfm_Id
SMBP
MliChannel
PE_SET
Pe_Id
Pe_Child_Node = Pe_GrandChild_Node ,
Pe_Mli_Node ;
PE_ITEM
Pe_Load_Id
SMBP
CfmDescription
Pe_Id
PE_MLI_CHANNEL
SMBP
MliChannel
CLOCK_ITEM
SMBP
ClockInfo
CLOCK_SET
FEDERATED_CLOCK_ITEM
Federated_Clock_Id
SMBP
FederatedClockInfo
Clock_Child_Node = Clock_GrandChild_Node ,
[FederatedClock_Child_Node] ;
GSM_Configuration_Data_Set_Node =
GSM_CONFIG_DATA_SET,
GSM_Configuration_Data_GrandChild_Node;
GSM_Configuration_Data_GrandChild_Node =
( GSM_data_Id, SMBP_GsmConfigData ) ,
{ GSM_data_Id, SMBP_GsmConfigData } ;
StateMachine_Set_Node =
STATE_MACHINE_SET , StateMachine_Child_Node;
StateMachine_Child_Node =
( StateMachine_Id , StateMachine_GrandChild_Node ) ,
{ StateMachine_Id , StateMachine_GrandChild_Node } ;
StateMachine_Id
State_Id Event_Id
STATE_ITEM SMBP
State
TIMEOUT_ITEM SMBP
TimeInterval
ACTION_SET SMBP
Action
Action_Id
Transition_Child_Node = State_Node ,
Timeout_Node ,
Action_Node ;
11.6.2.1 getRootNode
Purpose:
Syntax:
ReturnStatus getRootNode (
out Node root_node );
Description:
The service gives the starting point of the RTBP tree. It shall be performed prior any SMBP services.
The service shall return ‘SUCCESS’ on successful completion else it shall return ‘ERROR’.
Parameter Description:
root_node
Prerequisite Conditions:
Associated Calls:
None
11.6.2.2 readNode
Purpose:
Syntax:
ReturnStatus readNode (
in Node parent_node ,
in PublicId item_id ,
out Node node_id );
Description:
The service searches the RTBP tree under the provided node parent_node for the identifier item_id. If
it finds an appropriate node, this shall be provided in node parameter.
The service purpose is to provide the reference handle to that node that is identified by item_id. It is to
select a node from a tree. To retrieve the actual data referenced by that node, use getAttributes.
The service shall return ERROR when at least one an input parameter is invalid.
Parameter Description:
parent_node
Description The Handle specifying the parent node used to search the the requested item in.
item_id
node
Description The handle of the resulting node, which was selected with the above information.
Prerequisite Conditions:
The parent_node exists, as the service retrieves the information starting from the provided node.
Associated Calls:
- getRootNode.
Example:
Node node_tmp ;
SMBP_readNode
( (Node) node_tmp,
(PublicId) CONFIGURATION_SET ,
(Node*) &node_tmp ) ;
SMBP_readNode
( (Node) node_tmp,
(PublicId) configuration,
(Node*) &node_tmp ) ;
SMBP_readNode
( (Node) node_tmp,
(PublicId) PROCESS_SET,
(Node*) &node_tmp ) ;
SMBP_readNode
( (Node) node_tmp,
(PublicId) process_id,
(Node*) node_tmp) ;
SMBP_readNode
( (Node) node_tmp,
(PublicId) PROCESS_ITEM,
(Node*) node_tmp) ;
SMBP_getAttributes (
(Node) node_tmp,
(unsigned long)sizeof(ProcessDescription),
(Address) process_desc);
}
11.6.2.3 getNodeId
Purpose:
Syntax:
ReturnStatus getNodeId(
in Node node_id ,
out PublicId identifier );
Description:
If the specified node does not exist or has no identifier, the service shall return ERROR.
Parameter Description:
node
identifier
Domain Values Depending on the node level. See ID_ITEM and ID_TYPE
Prerequisite Conditions:
Node must contain the handle to an existing node, which may be retrieved by invoking getRootNode
or readNode prior to this service.
Associated Calls:
- getRootNode,
- getChildNodes.
Example:
NodeList process_set_list ;
PublicId process_id ;
SMBP_readNode
( (Node) configuration ,
(PublicId) PROCESS_SET ,
(Node*) &process_set_node ) ;
SMBP_getLength
( (NodeList) process_set_list ,
(unsigned long*) &set_size ) ;
// The parameter set_size is the number of Process_Id
for( inc = 0 ; inc <= set_size ; inc += 1 )
{
// The node corresponding to each ProcessId are retrieved
SMBP_item
((NodeList) process_set_list ,
(Node*) &process_id_node) ;
// The Process Id is retrieved with the node
SMBP_getNodeId
( (Node) process_id_node , // Process Ids node
(PublicId *) &process_id ) ;
per_process_id_operation(
(PublicId *) process_id ) ;
}
}
11.6.2.4 getAttributes
Purpose:
Syntax:
ReturnStatus getAttributes(
in Node node_id ,
in unsigned long buffer_size ,
in Address buffer );
Description:
This service is used to retrieve the actual information from the runtime blueprints. The given node is
the origin of the returned data.
The buffer parameter points to a caller memory area, which contains the requested data when the
service finishes successful.
If the specified node does not exist, the service shall return ERROR.
If buffer_size is less than the size of the RTBP data, the service shall return ERROR.
Parameter Description:
node
buffer_size
Description The maximal size of buffer where the RTBP data shall be copied
buffer
Description The pointer in the caller memory, where the RTBP information shall be copied.
Prerequisite Conditions:
Node must contain the handle to an existing node, which may be retrieved by invoking getRootNode
prior to this service.
Associated Calls:
- getRootNode,
- readNode.
Example:
11.6.2.5 getChildNodes
Purpose:
Syntax:
ReturnStatus getChildNodes (
in Node parent_node ,
out NodeList node_list );
Description:
The service shall provide a node_list, which contains a list of all node handles being children of
parent_node.
The service getLength gives the number of child nodes. If there is no child the service getLength shall
give a zero value.
The service shall initialise the iterator within the NodeList to the zero value.
If the parent_node does not exist the service shall return ERROR.
Parameter Description
parent_node
Description The node handle referencing the parent node precedes the requested child nodes in
the tree hierarchy.
node_list
Description A handle to a list of all subsequent nodes relative to the provided parent_node. The
list is capable of maintaining an iterator by it.
Prerequisite Conditions:
Associated Calls:
- getLength,
- item.
Example:
SMBP_readNode
( (Node) configuration ,
(PublicId) PROCESS_SET ,
(Node*) &process_set_node ) ;
SMBP_getLength
( (NodeList) process_set_list ,
(unsigned long*) &set_size ) ;
// The parameter set_size is the number of Process_Id
for( inc = 0 ; inc < set_size ; inc = inc + 1 )
{
// The node corresponding to each ProcessId are retrieved
SMBP_item
((NodeList) process_set_list ,
(Node*) &process_id_node) ;
// From the node specified by the Identifier PROCESS_ITEM
// the SMBP structure ProcessDescription is retrievable
SMBP_readNode
( (Node) process_id_node , // Process Ids node
(PublicId) PROCESS_ITEM ,
(Node*) &process_desc_node ) ;
SMBP_getAttributes (
(Node) process_desc_node , // ProcessDescription node
(unsigned long) sizeof(ProcessDescription),
(Address) &process_desc);
per_process_desc_operation(
(ProcessDescription *) process_desc ) ;
}
}
11.6.2.6 getLength
Purpose:
Syntax:
ReturnStatus getLength (
in NodeList node_list ,
out unsigned long set_size );
Description:
The given node_list is a list of node handles, such as provided by the service getChildNodes. The
service shall provide the number of node handles within this provided list in the set_size parameter.
If the node list is empty the number of node handles is set to the zero value.
The service shall return ‘SUCCESS’ on successful completion else it shall return ‘ERROR’.
Parameter Description
node_list
set_size
Prerequisite Conditions:
None
Associated Calls:
- getChildNodes.
11.6.2.7 item
Purpose:
Syntax:
ReturnStatus item (
in NodeList node_list ,
out Node node_id );
Description:
Each call of the present service shall provide a node handle from the node list and internally advance
to the next node. This enables the caller to iterate through the provided node list and retrieve all
stored node handles successively.
The given node_list parameter provides a list of nodes, such as provides by the getChildNodes
service. Additionally, it includes an iterator that has been set to zero by the service getChildNodes
and, is incremented by the present service.
If the list is empty or the end of the list has been reached, the service shall return ERROR.
If any other error occurs and prevents the service from successful completion, the service shall return
ERROR.
Parameter Description:
node_list
Description The list containing the node handles to be retrieved one by one, each with a separate
service call.
node
Description This is the handle of a node retrieved from the provided node_list. Each call of this
service shall provide a new node, or an empty handle if the list has reached its end.
Prerequisite Conditions:
The node_list has been provided by the service getChildNodes. The number of node handles has
been provided by the service getLength.
Associated Calls:
- getChildNodes,
- SMBP services.
11.7 SMOS
According to functional requirements the services are grouped into "use categories" - dependent on
the CFM types where the functions are implemented
attachTransferConnection
ToVirtualChannel Attach VC with TC core 11.7.3.5
detachTransferConnection
FromVirtualChannel Detach VC from TC core 11.7.3.6
Resources CFM
Time configureClock Configure the clock mode of the Module core 11.7.9.1
Management
11.7.1.1 createProcess
Purpose:
Syntax:
TimedReturnStatus createProcess (
in ProcessDescription process_desc );
Description:
This service shall provide a protected memory area for the process, load the executable file from the
local memory or a remote Module into this memory area and initiate the process. When a remote
download is necessary, it shall use the dedicated OLI services Request and Reply Read File. See
section 12.4.2.1.2.2.
This service shall allocate all necessary resources to create the process. The created process shall
be in the ‘INITIALISED’ state.
- At least one element of the input structure is inconsistent with an other one or invalid comparing
its expected value by the OS,
- Although the input structure is valid the OS is not able to complete the service due to
unavailability of resources,
A ‘TM_TIMEOUT’ condition shall be returned when the specified process has not been created in the
required time.
Parameter Description:
process_desc
Prerequisite Conditions:
Associated Calls:
- runProcess,
- stopProcess,
- destroyProcess.
11.7.1.2 createThread
Purpose:
Syntax:
ReturnStatus createThread (
in ThreadDescription thread_desc );
Description:
This service shall initialise the context of a thread in a process. The initialisation state of the thread
shall be ‘DORMANT’ except for the main thread, which shall be created into ‘READY’ state. The main
thread is identified by the thread id value one.
- At least one element of the input structure is inconsistent with an other one or invalid comparing
its expected value by the OS,
- Although the input structure is valid the OS is not able to complete the service due to
unavailability of resources,
Parameter Description:
thread_desc
Prerequisite Conditions:
The process has been created and is in INITIALISED state. The thread does not exist.
Associated Calls:
- createProcess,
- setSchedulingParameters.
11.7.1.3 runProcess
Purpose:
Run a process.
Syntax:
ReturnStatus runProcess (
in PublicId process_id );
Description:
This service shall enable scheduling for all threads belonging to the selected process.
Parameter Description:
process_id
Prerequisite Conditions:
The process and the main thread have been previously created and the process is not in RUNNING
state.
Associated Calls:
- createProcess,
- createThread,
- stopProcess.
11.7.1.4 stopProcess
Purpose:
Stop a process.
Syntax:
ReturnStatus stopProcess (
in PublicId process_id );
Description:
This service shall disable scheduling for all threads belonging to the selected process.
Parameter Description:
process_id
Prerequisite Conditions:
Associated Calls:
- runProcess.
11.7.1.5 destroyProcess
Purpose:
Free the resources of the specified process and its associated threads.
Syntax:
ReturnStatus destroyProcess (
in PublicId process_id );
Description:
This service shall free process memory resources and clean scheduler states of all threads belonging
to this process whatever its state.
If the process is not RUNNING, the service shall destroy it. If the process is RUNNING, the service
shall stop it and then destroy it.
An ‘ERROR’ condition shall be returned when the specified process does not exist.
Parameter Description:
process_id
Prerequisite Conditions:
Associated Calls:
- createProcess,
- runProcess,
- stopProcess.
11.7.1.6 setSchedulingParameters
Purpose:
Define the scheduling behaviour for a thread denoted by process id and thread id.
Syntax:
ReturnStatus setSchedulingParameters (
in ThreadSchedulingInfo thread_scheduling_info );
Description:
This service shall set the scheduling behaviour of a thread in a process. The process shall be in
STOPPED or INITIALISED state.
- At least one element of the input structure is inconsistent with another one or invalid comparing its
expected value by the OS,
- Although the input structure is valid the OS is not able to complete the service due to
unavailability of resources,
Parameter Description:
thread_scheduling _info
Description Structure describing to the scheduler the parameters of the scheduling policy.
Prerequisite Conditions:
The process has been created and is in STOPPED or INITIALISED state. The thread has been
created.
Associated Calls:
- createProcess,
- createThread.
11.7.1.7 getThreadState
Purpose:
Syntax:
ReturnStatus getThreadState (
in PublicId process_id ,
in PublicId thread_id ,
out ThreadStatus thread_status );
Description:
This service shall return the current status of the selected thread.
If the input parameters specify a process or a thread that does not exist, an ‘ERROR’ condition shall
be returned.
Parameter Description:
process_id
thread_id
Description The thread identifier is unique within a process and defined in the blueprints.
thread_status
Description The value of the thread status for the selected thread:
Prerequisite Conditions:
Associated Calls:
- createProcess,
- createThread.
11.7.2.1 getError
Purpose:
Wait for an error to occur and provide error information to the caller.
Syntax:
TimedReturnStatus getError (
out ErrorInfo error_info ,
in TimeInterval time_out );
Description:
This service shall block the caller until the OS reports an error or the timeout occurs. The service shall
provide information related to the error.
An ‘TM_ERROR’ condition shall be returned whether the service has not been performed properly.
An ‘TM_TIMEOUT’ condition shall be returned whether the time-out has been reached.
Parameter Description:
error_info
Description The Information corresponding to the object that has raised the Error
time_out
Description Time-out
Prerequisite Conditions:
None.
Associated Calls:
- activateErrorHandler,
- raiseApplicationError,
- getErrorInformation.
11.7.2.2 activateErrorHandler
Purpose:
Syntax:
TimedReturnStatus activateErrorHandler (
in PublicId process_id ,
in PublicId faulty_thread_id ,
in ErrorType error_type ,
in ErrorCode error_code ,
in CharacterSequence error_message ,
out ReturnStatus error_handler_status ,
in TimeInterval time_out );
Description:
The OS shall start the Error Handler that is the Thread Id number one of the Application specified by
process_id.
The service is blocking until the Error Handler terminates its processing or the time_out has been
reached.
- When the service is completed successfully, it returns TM_SUCCESS. In this case the
error_handler_status reflects the termination status of the application error handler that has been
invoked,
Parameter Description:
process_id
Description This Id identifies the Process Application that has raised the Error
faulty_thread_id
Description This Id identifies the thread that has raised the Error
error_type
error_code
Description The Code corresponding to the Error that has been raised
error_message
Description The Message corresponding to the Error that has been raised
error_handler_status
Description This is the status the application error handler has emitted when terminating
time_out
Description Time-out
Prerequisite Conditions:
None.
Associated Calls:
- raiseApplicationError,
- getErrorInformation.
11.7.3.1 createVirtualChannel
Purpose:
Syntax:
ReturnStatus createVirtualChannel (
in VcDescription vc_desc );
Description:
This service shall create the local references of the VC inside the OS and allocate the required buffer
resources. The two ends of the VC (if any) calls this function the same way. There is no
synchronisation implied by this service between the two ends of the VC. This service is only aimed at
creating structures inside the local OS for the future management of the VC.
The service defines and allocates the total number and sizes of message buffers, which are available
for this VC for the use in buffer services (lockBuffer, sendBuffer, receiveBuffer, unlockBuffer). It
further defines the maximum number of TC's available. Further it provides the data presentation,
which may be used by the OS in order to convert the payload data of VC messages arriving from
remote CFM.
- At least one element of the input structure is inconsistent with an other one or invalid comparing
its expected value by the OS,
- Although the input structure is valid the OS is not able to complete the service due to
unavailability of resources,
Parameter Description:
vc_desc
Prerequisite Conditions:
Associated Calls:
- attachChannelToProcessOrThread,
- attachTransferConnectionToVirtualChannel.
11.7.3.2 destroyVirtualChannel
Purpose:
Syntax:
ReturnStatus destroyVirtualChannel (
in PublicId vc_id );
Description:
This service shall remove a VC and release resources. Prior to this call all processes and threads and
the eventual TC(s) shall have been detached.
Parameter Description:
vc_id
Prerequisite Conditions:
Associated Calls:
- detachAllThreadsOfProcessFromVc,
- detachTransferConnectionFromVirtualChannel.
11.7.3.3 attachChannelToProcessOrThread
Purpose:
Syntax:
ReturnStatus attachChannelToProcessOrThread (
in VcMappingDescription vc_mapping );
Description:
This service shall describe to the OS that a thread in a process is allowed to receive and send on a
VC. This service describes a local connection to the VC and provides a description for the memory
allocations associated to each thread end of the VC’s.
The service allocates buffer resources that are required for sending and receiving messages
(sendMessage, receiveMessage, sendMessageNonblocking, receiveMessageNonblocking) through
the attached VC and associates these buffer resources with the specified process and the specified
thread.
Prior to this service call, the VC and the process and thread shall have been created. The Process
shall be in ‘STOPPED’ or ‘INITIALISED’ state
- At least one element of the input structure is inconsistent with another one or invalid comparing its
expected value by the OS,
- Although the input structure is valid the OS is not able to complete the service due to
unavailability of resources,
Parameter Description:
vc_mapping
Prerequisite Conditions:
The VC and the Process or Thread exists. The Process is in STOPPED or INITIALISED state.
Associated Calls:
- createVirtualChannel,
- createProcess,
- stopProcess.
11.7.3.4 detachAllThreadsOfProcessFromVc
Purpose:
Syntax:
ReturnStatus detachAllThreadsOfProcessFromVc (
in PublicId vc_id ,
in PublicId process_id );
Description:
This service shall disassociate all threads of a process to a VC and release all VC buffer resources
that are associated with the specified process and the specified VC.
Prior to this service call the Process shall be in ‘STOPPED’ or ‘INITIALISED’ state.
Parameter Description:
vc_id
process_id
Prerequisite Conditions:
The VC and the Process exist and have been attached. The Process is in STOPPED or INITIALISED
state.
Associated Calls:
- createVirtualChannel,
- createProcess,
- stopProcess,
- attachChannelToProcessOrThread.
11.7.3.5 attachTransferConnectionToVirtualChannel
Purpose:
Syntax:
ReturnStatus attachTransferConnectionToVirtualChannel (
in VcToTcMappingDescription vc_to_tc_mapping );
Description:
- At least one element of the input structure is inconsistent with an other one or invalid comparing
its expected value by the OS,
- Although the input structure is valid the OS is not able to complete the service due to
unavailability of resources,
Parameter Description:
vc_to_tc_mapping
Prerequisite Conditions:
Associated Calls:
- createTransferConnection,
- createVirtualChannel.
11.7.3.6 detachTransferConnectionFromVirtualChannel
Purpose:
Syntax:
ReturnStatus detachTransferConnectionFromVirtualChannel (
in PublicId vc_id ,
in PublicId tc_id );
Description:
Parameter Description:
tc_id
vc_id
Prerequisite Conditions:
Associated Calls:
- createTransferConnection,
- createVirtualChannel,
- attachTransferConnectionToVirtualChannel.
11.7.4.1 configureInterface
Purpose:
Syntax:
ReturnStatus configureInterface (
in InterfaceData if_config );
Description:
The service shall be used to configure an interface local to the Module, which may be for any scope of
communications (i.e. internal to a module or between modules). An interface can be either a physical
interface (e.g. a physical Network) or a logical interface (NII).
If this call fails, no operation through this network interface shall be possible; i.e. this call shall
successfully complete before any other communications service call.
An ‘ERROR’ condition shall be returned when the request at MOS interface of configuring the
interface has failed.
Parameter Description:
If_config
Prerequisite Conditions:
None
Associated Calls:
- createTransferConnection.
11.7.4.2 createTransferConnection
Purpose:
Create a TC.
Syntax:
ReturnStatus createTransferConnection (
in TcDescription tc_desc );
Description:
The service shall be used to configure the resources to provide information required for the
transmission or reception of information over a TC (TC).
The structure TcDescription defines the association of a TC identifier with a NetworkDescriptor. The
TC is a end-to-end unidirectional connection and the routing between the two end-points may be
defined by several couples of a TC identifier and a NetworkDescriptor. Multiple calls of this service
are possible with either the same TC identifier but different NetworkDescriptor or the same
NetworkDescriptor but different TC identifier.
An ‘ERROR’ condition shall be returned when the request at MOS interface of creating the TC has
failed.
Parameter Description:
tc_desc
Prerequisite Conditions:
Associated Calls:
- configureInterface,
- attachTransferConnectionToVirtualChannel.
11.7.4.3 destroyTransferConnection
Purpose:
Destroy a TC.
Syntax:
ReturnStatus destroyTransferConnection (
in PublicId tc_id ,
in NetworkDescriptor network_descr );
Description:
The service shall be used to release resources previously allocated to handle the transmission or
reception of information over a TC (TC). Following this service completion, the TC shall no longer be
operational.
This TC shall not be attached to any VC prior to this call. If not, the
detachTransferConnectionFromVirtualChannel shall be called prior to this call.
An ‘ERROR’ condition shall be returned when the request at MOS interface of destroying the TC has
failed.
Parameter Description:
tc_id
network_desc
Prerequisite Conditions:
Associated Calls:
- createTransferConnection,
- detachTransferConnectionFromVirtualChannel.
11.7.4.4 getNetworkPortStatus
Purpose:
Syntax:
ReturnStatus getNetworkPortStatus (
in NetworkDescriptor network_desc ,
out NetworkPortStatus network_status ) ;
Description:
The service shall be used to determine the status of a port on a network locally to the Module. The
OS replies to this request by getting the Network Status at the MOS interface.
An ‘ERROR’ condition shall be returned when the request at MOS interface of getting the Network
Status has failed.
Parameter Description:
network_desc
network_status
Prerequisite Conditions:
Associated Calls:
- configureInterface.
11.7.5.1 getPMData
Purpose:
Syntax:
TimedReturnStatus getPMData (
out PublicId vc_id ,
out Address message_buffer_reference ,
in unsigned long max_msg_length ,
out unsigned long msg_length ,
in TimeInterval timeout );
Description:
This is a blocking service that is used by the SM in order to receive requests from the OS for data to
be processed (i.e. encrypted, decrypted, authenticated, verification of authentication).
This service shall block the caller until the OS detects that a message has arrived on a VC that is
marked for secure communications or the timeout occurs. The service shall provide the protectively
marked data and related information. The SM shall use the vc_id in order to determine the operation
to be performed on the protectively marked data (e.g. encryption).
An ‘TM_ERROR’ condition shall be returned when the service has not been performed correctly.
A ‘TM_TIMEOUT’ condition shall be returned when the time-out has been reached.
Parameter Description:
vc_id
msg_buffer
max_msg_length
Description Maximum length of the buffer, which is provided by the caller, in bytes
msg_length
timeout
Description Time-out
Prerequisite Conditions:
None
Associated Calls:
- returnPMData.
11.7.5.2 returnPMData
Purpose:
Return the protectively marked data previously retrieved by getPMData to the OS.
Syntax:
ReturnStatus returnPMData (
in PublicId vc_id ,
in Address message_buffer_reference ,
in unsigned long msg_length ,
in ReturnStatus sm_return_status );
Description:
This is service is used by the SM in order to return the data that the OS has requested to be
processed (encrypted, decrypted, authenticated, or verification of encryption), once the required
action has taken place.
An ‘ERROR’ condition shall be returned when the service has not been performed correctly.
Parameter Description:
vc_id
msg_buffer
msg_length
sm_return_status
Description A return type used to inform the OS of the state of the returned data (e.g. if the data
has been decrypted correctly).
Prerequisite Conditions:
Associated Calls:
- getPMData.
11.7.5.3 getAuditData
Purpose:
Wait for a security breach to occur and retrieve associated data from the OS.
Syntax:
TimedReturnStatus getAuditData (
out BreachType breach_type ,
out CharacterSequence audit_message ,
out Time rel_time ,
out Time abs_time ,
in TimeInterval time_out );
Description:
This service shall block the caller until the OS reports a security breach or the timeout occurs. The
service shall provide information related to the breach.
An ‘TM_ERROR’ condition shall be returned when the service has not been performed correctly.
An ‘TM_TIMEOUT’ condition shall be returned when the time-out has been reached.
Parameter Description:
breach_type
Description The Type corresponding to the security breach that has been raised
audit_message
Description The message corresponding to the security breach that has been raised. The
structure includes the actual length.
rel_time
abs_time
time_out
Description Time-out
Prerequisite Conditions:
None.
Associated Calls:
None
11.7.5.4 erasePhysicalMemory
Purpose:
Syntax:
This call shall be used when it is necessary to quickly erase physical memory on a given CFM. The
action will be instigated by the CM, which will use this SMOS call through to the OS, which will then
use a reflected MOS call through to the MSL. It is expected that the actual erasure will be executed in
hardware.
An ‘ERROR’ condition shall be returned when the service has not been performed correctly.
Parameter Description:
None.
Prerequisite Conditions:
None.
Associated Calls:
None.
11.7.6.1 getPbitResult
Purpose:
Syntax:
ReturnStatus getPbitResult (
out PbitResult pbit_result );
Description:
This service shall get the PBIT result. It conveys the PBIT result as provided by the MSL at the MOS
interface.
An ‘ERROR’ condition shall be returned when the retrieval of the PBIT result from the MSL has failed.
Parameter Description:
pbit_result
Prerequisite Conditions:
Associated Calls:
None
11.7.6.2 startCbit
Purpose:
Syntax:
ReturnStatus startCbit (
in unsigned long test_code ,
in CbitModeType mode ,
out BitTestStatus bit_test_status );
Description:
The service startCbit is used to perform a CBIT test. When the call is made the CBIT software will run
a specified test, given as an input parameter, for a predetermined period and then return. The
predetermined period will be system specific. The CBIT test software must be written to return within
this period. If the test is autonomous the call will check the state of the ongoing test and return the
status. If the test requires the processor to perform some function, the call will cause the test to be run
and will then return the status.
Some tests require that the processor will not complete within the system specific period. These are
termed partitioned tests and a complete test will take more than one call to startCbit to complete.
Therefore, when the call is made a test will be specified to be either:
- COMPLETE - the call will complete within one startCbit invocation. The caller shall be blocked
until the test is finished. The OS may pre-empt this.
- PARTITIONED – the call will not complete within one startCbit invocation. The OS shall not pre-
empt it.
- The startCbit call returns bit_test_status which can be set to one of three values:
- PASSED – the specified test has completed within the last startCbit invocation,
- ONGOING – the specified test is PARTITIONED and has not completed within the last
startCbit invocation,
- FAILED – the specified test has failed within the last startCbit invocation.
If the call returns bit_test_status as FAILED, the service getCbitResult is used to retrieve the detailed
failure information for the last test to fail.
If the startCbit call is made with the test code of zero, the CBIT software will perform all tests in a
round-robin manner. In this case the call will always be set to PARTITIONED and will always set
bit_test_status as ONGOING until a failure is detected. The next invocation of startCbit, after a call
returns bit_test_status as FAILED, will recommence testing at the next test in the round-robin
sequence.
The service returns SUCCESS if CBIT is invoked correctly, otherwise it returns ERROR.
Parameter Description:
test_code
Description This is an integer value which identifies which CBIT test to run. If the code is zero the
complete set of tests is run in a cyclic fashion.
mode
Description This allows the caller to specify the method to use to run a test - either to completion
or in a series of defined sections called slices.
bit_test_status
PASSED signifies that the test has completed and passed within the last startCbit
invocation.
ONGOING – the specified test is PARTITIONED and has not completed within the
last startCbit invocation.
FAILED – the specified test has failed within the last startCbit invocation
Prerequisite Conditions:
None
Associated Calls:
- getCbitResult.
11.7.6.3 getCbitResult
Purpose:
Syntax:
ReturnStatus getCbitResult (
out CbitResult cbit_result );
Description:
This service shall get the latest available complete CBIT result. It conveys the CBIT result as provided
by the MSL at the MOS interface.
An ‘ERROR’ condition shall be returned when the retrieval of the CBIT result from the MSL has failed.
Parameter Description:
cbit_result
Prerequisite Conditions:
Associated Calls:
None
11.7.6.4 startIbit
Purpose:
Syntax:
ReturnStatus startIbit();
Description:
This service shall start the IBIT. The OS replies this request to start the IBIT at MOS interface.
An ‘ERROR’ condition shall be returned when the request at MOS interface of starting the IBIT has
failed.
Parameter Description:
None
Prerequisite Conditions:
None
Associated Calls:
- getIbitResult.
11.7.6.5 getIbitResult
Purpose:
Syntax:
ReturnStatus getIbitResult (
out IbitResult ibit_result );
Description:
This service shall get the IBIT result. It conveys the IBIT result as provided by the MSL at the MOS
interface.
An ‘ERROR’ condition shall be returned when the retrieval of the IBIT result from the MSL has failed.
Parameter Description:
ibit_result
Prerequisite Conditions:
Associated Calls:
- startIbit.
11.7.7.1 getMyCfmStatus
Purpose:
Syntax:
ReturnStatus getMyCfmStatus (
out CfmStatus cfm_status );
Description:
This service shall get the status of the Module on which it is executed.
The OS replies this request to get the CFM Status at MOS interface.
An ‘ERROR’ condition shall be returned when the request at MOS interface of getting the CFM Status
has failed.
Parameter Description:
cfm_status
Prerequisite Conditions:
None
Associated Calls:
None
11.7.7.2 getMyCfmInfo
Purpose:
Syntax:
ReturnStatus getMyCfmInfo (
out CfmInfo cfm_info );
Description:
This service shall get the characteristics of the Module on which it is executed.
This information is static. Therefore, when this service is called, the OS may not necessarily reply this
request to get the CFM Info at MOS interface. It may be done once at initialisation time.
An ‘ERROR’ condition shall be returned when the request at MOS interface of getting the CFM Info
has failed.
Parameter Description:
cfm_info
Prerequisite Conditions:
None
Associated Calls:
None
11.7.7.3 getMyPeId
Purpose:
Syntax:
ReturnStatus getMyPeId (
out PublicId my_pe_id );
Description:
This information is static. Therefore, when this service is called, the OS may not necessarily reply this
request to get the PE Resources at MOS interface. It may be done once at initialisation time.
An ‘ERROR’ condition shall be returned when the request at MOS interface of getting the PE
Resources has failed.
Parameter Description:
my_pe_id
Prerequisite Conditions:
None
Associated Calls:
- getMyCfmInfo.
11.7.8.1 requestDownloadToCfm
Purpose:
Syntax:
TimedReturnStatus requestDownloadToCfm (
in CfmDescription remoteCfm ) ;
Description:
This service shall be used to request an MLI download to a remote CFM. The data to be transferred is
stored in a file on an MMM.
The transfer between the requesting CFM, on which the service is executed, and the remote CFM
may differently be performed depending on whether:
The file is stored on requesting CFM. The service shall send the data in using the MLI protocol.
The file is not stored on the requesting CFM. The requesting CFM shall send first the description of
the download to the CFM, hosting the data in a file, in using the OLI protocol, which at its turn, shall
send the data in using the MLI protocol.
The description of the communication channel (DownloadChannel) to be used depends on the type of
download:
- In case of an OLI_THEN_MLI download the sending VC and the receiving VC for the OLI part and
the sending TC and the receiving TC for the MLI part (OliMliChannel),
- The type of download (DownloadType), which specifies the type of data to be transferred. This
information leads the choice of the type of MLI message to be used,
- The information that is related to the type of data to be downloaded (DownloadDescription) and
that shall be used to build the payload message for the MLI transfer,
- The time-out value for processing this CFM for this download.
In case of an OLI_THEN_MLI transfer, the OS shall use the OLI message Remote MLI File Download
to send the description of the download to a remote MMM. The OS shall comply with the OLI
requirements. For more detail, refer to section 12.4.2.3.2.1.
In case of an MLI transfer, the OS shall build the payload part of the MLI Message and then use the
MOS interface to manage the MLI transfer protocol (request and reply). The corresponding MLI
Message to the Download type is described in the table below.
POWER_DOWNLOAD Load Power Switches Configuration Load Power Switches Configuration Acknowledge
This service is blocking and is released when the transfer is complete successfully or in a failure.
- At least one element of the input structure is inconsistent with another one or invalid comparing its
expected value by the OS,
- Although the input structure is valid the OS is not able to complete the service due to
unavailability of resources that are required for this download,
An ‘TM_TIMEOUT’ condition shall be returned when the download has not been performed in the
required time.
Parameter Description:
cfmDescription
Prerequisite Conditions:
Associated Calls:
None
11.7.8.2 getRemoteInfo
Purpose:
Syntax:
TimedReturnStatus getRemoteInfo (
in RemoteServiceId serviceid ,
in CfmMliChannel mliChannel ,
in InputLocalParameters input_buffer ,
in unsigned long input_length ,
out OutputRemoteParameters output_buffer ,
in unsigned long output_max_length ,
out unsigned long output_actual_length ) ;
Description:
The corresponding MLI Message to the RemoteServiceId is described in the table below.
The GSM provides a parameter input_buffer with the input parameters that are copied in the MLI
request message. The input parameters depend on the MLI message and may not exist. See section
12.7 MLI and description of InputLocalParameters structure.
This service is blocking and is released when the transfer is complete successfully or in a failure.
- At least one element of the input structure is inconsistent with an other one or invalid comparing
its expected value by the OS,
- Although the input structure is valid the service has not completed due to unavailability of
resources at or MSL level,
- An ‘TM_TIMEOUT’ condition shall be returned when the information has not been retrieved in the
required time.
Parameter Description:
service_id
mliChannel
input_buffer
input_length
output_buffer
output_max_length
output_actual_length
Prerequisite Conditions:
Associated Calls:
None
11.7.9.1 configureClock
Purpose:
Syntax:
ReturnStatus configureClock (
in ClockInfo clock_info ) ;
Description:
The service shall be used to configure the mode of the clock of the Module. The OS replies this
request to configure the clock mode at MOS interface.
An ‘ERROR’ condition shall be returned when the request at MOS interface of configuring the clock
mode has failed.
Parameter Description:
clock_info
Prerequisite Conditions:
None
Associated Calls:
- attachFederatedClock.
11.7.9.2 attachFederatedClock
Purpose:
Syntax:
ReturnStatus attachFederatedClock (
in FederatedClockInfo federated_clock_info );
Description:
The service shall be used to attach a federated clock to the Module clock. The OS replies this
attachment at MOS interface.
An ‘ERROR’ condition shall be returned when the request at MOS interface of attachment has failed.
Parameter Description:
federated_clock_info
Prerequisite Conditions:
Associated Calls:
- configureClock.
11.7.10.1 readLog
Purpose:
This service allows the GSM to read a message through the OS from the local log.
Syntax:
ResourceReturnStatus readLog (
in LogMessageType message_type ,
in unsigned long log_id ,
out CharacterSequence log_message );
Description:
This service is used by the GSM to read a message from a location in a specific log. The
message_type identifies the message log that is being read from. The log_id identifies the location
within that log from where the message will be read. Log_id is unique to a message_type. A log_id of
Null will read from the end of the particular log.
This service returns RS_SUCCESS if the message is successfully read. If the service does not read
successfully, RS_RESOURCE is returned if there are resource limitations, such as the log not being
found or not being available, otherwise it shall return RS_ERROR.
Parameter Description:
message_type
Description This parameter identifies the message as being one of four types.
log_id
Description This parameter identifies where the message is to be read from memory of a
particular log.
Domain Values Null if the message is to be read from the end of a message log.
log_message
Prerequisite Conditions:
None.
Associated Calls:
- writeLog.
11.7.10.2 writeLog
Purpose:
Syntax:
ResourceReturnStatus writeLog (
in LogMessageType message_type ,
in unsigned long log_id ,
in CharacterSequence log_message );
Description:
This service is used by the GSM to write the message in the parameter log_message through to the
OS for subsequent writing to a device. The message_type identifies which message log is being
written to. The log_id identifies the location in memory within that log. If a null is given as the log_Id
then the OS shall append the message to the specified log. Log_id is unique to a message_type.
This service returns RS_SUCCESS if the message is written successfully. If the service fails to
successfully write the message it shall return RS_RESOURCE if there are resource limitations such
as the log is full, not found or not available; otherwise it shall return RS_ERROR.
Parameter Description:
message_type
Description This parameter identifies the message as being one of four types.
log_id
Description This parameter identifies where the message is to be written to in a particular log.
Domain Values Null if the message is to be written to the end of a particular message log.
log_message
Prerequisite Conditions:
None.
Associated Calls:
- logMessage,
- getLogReport,
- writeLogDevice.
11.7.10.3 getLogReport
Purpose:
Syntax:
TimedReturnStatus getLogReport (
out CharacterSequence log_message ,
out LogMessageType message_type ,
out PublicId process_id ,
in TimeInterval timeout );
Description:
This service shall block the caller until the OS receives a log message or the timeout occurs. The
Fault Management uses the parameter message_type to identify error messages, which are used in
fault localisation. The parameter process_id provides the identifier of the process, which has logged
the message. The call shall return TM_ERROR if service has not been performed properly,
TM_TIMEOUT if the call times out, otherwise it shall return TM_SUCCESS.
Parameter Description:
log_message
message_type
Description This parameter identifies the message as being one of four types.
process_id
Description The identifier of the process that has logged the message.
timeout
Description The timeout parameter defines the maximum time a thread shall wait for receiving a
message.
Infinite TimeInterval
Prerequisite Conditions:
None.
Associated Calls:
- logMessage,
- writeLog,
- writeLogDevice,
- SMOS services.
12.4 OLI
12.4.1 VC Header
The VC Header shall contain the VC ID that is the VC Identifier.
VC ID VC Data
4 Bytes m Bytes
This section covers general and specific protocol requirements for individual OLI services. It also
outlines the particular usage of each OLI service.
The protocol used for the various OLI services outlined in this specification relies on a
REQUEST/RESPONSE transaction i.e. for every service request there is an associated response.
The behaviour of the OLI manager in any PE shall conform to the requirements in the following
sections. These requirements are common for all services (those specific to a given service are dealt
with in section 12.4.2.1.2).
All OLI services rely on a REQUEST/RESPONSE protocol to carry out data or control transactions.
The OLI management in the CFM initiating the request and a timer started shall record the
transmission of any OLI service request message, uniquely identified by a Transfer ID value (see
section 12.4.2.1.1.1). If the response associated with the previously transmitted request is received
with the same Transfer ID value as the request and within the expiry time of the timer (above), the
record of the initial request shall be deleted, the associated response timer stopped and notification of
the arrival of the response sent to the original requesting entity.
If no response to the initiating request is received before the timer expires (see section 12.4.2.1.1.3).
The record of the original request shall be deleted and notification of the timer expiry event (an error
condition) delivered to the original requesting entity.
If a response to the initiating request is received but the Transfer ID value does not match that of the
initiating request message, it shall be treated as an unsolicited service response (see section
12.4.2.1.1.2) and handled accordingly.
If an OLI service response is received for which there exists no record of the corresponding service
request initiation (see section 12.4.2.1.1.2), the PE receiving this message shall release all associated
resources (discard the message) and report an OS error.
Response timers are used as a means of recovering from the condition, whereby a PE requesting an
OLI service receives no associated service response. The time after which the PE requesting the
service deems that no response has been received (the response timer expiry) shall be determined
by the anticipated ability of the PE's in the given system to respond to such a request.
This section deals with protocol requirements specific to the usage of the individual services listed
here. In this section the following terms are used to denote specific entities within the system:
- MMM/PE. This represents a PE on an MMM with a direct file access, which receives OLI request,
- CFM/PE. This represents a remote PE in the ASAAC system that sends OLI request.
In each case where special requirements are detailed in relation to particular services, the behaviour
outlined indicates how the entity supporting the service is required to carry out the associated action.
The basic protocol relating to this services dictates that REQUEST messages propagate from a
CFM/PE to a MMM/PE destination. Similarly, the basic protocol also dictates that REPLY messages
propagate from a MMM/PE source to CFM/PE destination.
The CFM/PE shall choose the download method. It shall download the file either:
- In one request, the size of the amount data to be read shall be the size of the file and the offset
null or
- In several requests, in this case the fragmentation shall be entirely managed by the requesting
CFM/PE.
This is a request type service and shall be used in CFM/PE to MMM/PE transactions only.
This is a reply type service and shall be used in MMM/PE to CFM/PE transactions only.
1s t Transf er :
Size = 3 Kby tes
Of f set = 0
R EQU EST READ F ILE
- READ_FILE_ACK_FAILURE_NO_FILE: the transaction has failed, the file has not been found,
The basic protocol relating to this services dictates that REQUEST messages propagate from a
CFM/PE to a MMM/PE destination. Similarly, the basic protocol also dictates that REPLY messages
propagate from a MMM/PE source to CFM/PE destination.
The targeted actor of the MLI download differs following the requested MLI service. For more
information refer to the MLI specification.
This is a request type service and shall be used in CFM/PE to MMM/PE transactions only.
This is a reply type service and shall be used in MMM/PE to CFM/PE transactions only. This REPLY
message is sent at the end of the MLI transaction.
MLI DOWNLOAD
MLI DOWNLOAD
Following the receiving status of each fragmented blocks the corresponding action shall be:
The data type OliMessage (see section 13.5) defines the OLI message structure.
Request Remote MLI File Download Reply Remote MLI File Download
The following services are required to enable one PE to download a file from a remote PE, the
contents of which are specified in a dedicated message field.
RequestFileReadPayload
Size:
Offset:
Filename:
ASCII string compliant to the targeted file access management. The string shall be
NUL terminated.
ReplyFileReadPayload
ReplyFileReadPayload
Size:
Checksum:
32-bit checksum value of all the bytes contained in the File data field
Result:
Notification of the success or the nature of the failure of the File Reading process.
File data:
The following services are required to enable one PE to request the download of a file by a MMM/PE
via MLI to a remote CFM, the contents of which are specified in a dedicated message field.
RequestRemoteMliDownload
CFM description:
ReplyRemoteMliDownload
Block number:
The block number is either the total number of fragments that make up the complete
image if the transfer has succeeded or, if the transfer has failed, the fragment index of
the last fragment that has been sent.
Result:
Notification of the success or the nature of the failure of the image loading process.
12.5 GLI
The GLI Interface is a logical interface for synchronisation of GSM functions. The structure of the
System Management function is described in section 9.4.1 of this document.
- Module Management,
- Key Management.
Table 32 provides an overview of the GLI services. In the sender and receiver columns, the prefixes
super- and sub- mean respectively super-ordinate and subordinate.
Request_BIT_Result super-FM sub-FM Query the result of the most recent BIT.
Every GLI message consists of a GLI Service identifier and some parameters.
The data type GliMessage (Refer to chapter 8) describes the GLI message structure.
12.5.2.2.1 Load_Configuration
Purpose:
VC Message Layout:
4 bytes 4 bytes
Load_Configuration config_to_be_loaded
Description:
The sub-ordinate Configuration Management function shall on this request completely re-build the
configuration, which is identified by the parameter config_to_be_loaded.
Parameter Description:
config_to_be_loaded
Prerequisite Conditions:
None
Associated services:
- Configuration_Loaded.
12.5.2.2.2 Configuration_Loaded
Purpose:
VC Message Layout:
4 bytes 4 bytes
Configuration_Loaded config_loaded
Description:
If the sub-ordinate Configuration Management Function has encountered an error in the process of
acquiring the requested configuration it shall indicate this fact by a value 0xFFFFFFFF for the
parameter config_loaded.
Parameter Description:
config_loaded
Description This parameter identifies the configuration that has been acquired by the
acknowledging Configuration Management function.
Domain Values 0xFFFFFFFF indicates an error that has occurred when loading the configuration.
Prerequisite Conditions:
None
Associated services:
- Load_Configuration.
12.5.2.2.3 Stop_Configuration
Purpose:
VC Message Layout:
ID Parameters
4 bytes 4 bytes
Stop_Configuration config_to_be_acquired
Description:
Parameter Description:
config_to_be_acquired
Prerequisite Conditions:
None
Associated Calls:
- Configuration_Stopped.
12.5.2.2.4 Configuration_Stopped
Purpose:
VC Message Layout:
4 bytes 4 bytes
Configuration_Stopped config_acquired
Description:
If the sub-ordinate Configuration Management Function has encountered an error in the process of
suspending application execution the requested configuration it shall indicate this fact by a value
0xFFFFFFFF for the parameter config_acquired.
Parameter Description:
config_acquired
Description This parameter identifies the configuration that has been acquired by the
acknowledging Configuration Management function.
Domain Values 0xFFFFFFFF indicates an error that has occurred when loading the configuration.
Prerequisite Conditions:
None
Associated Calls:
- Stop_Configuration.
12.5.2.2.5 Run_Configuration
Purpose:
VC Message Layout:
4 bytes 4 bytes
Run_Configuration config_to_be_run
Description:
Parameter Description:
config_to_be_run
Prerequisite Conditions:
None
Associated Calls:
- Configuration_Running.
12.5.2.2.6 Configuration_Running
Purpose:
VC Message Layout:
4 bytes 4 bytes
Configuration_Running config_run
Description:
If the sub-ordinate Configuration Management Function has encountered an error in the process of
resuming application execution the requested configuration it shall indicate this fact by a value
0xFFFFFFFF for the parameter config_run.
Parameter Description:
config_run
Description This parameter identifies the configuration that has been acquired by the
acknowledging Configuration Management function.
Domain Values 0xFFFFFFFF indicates an error that has occurred when loading the configuration.
Prerequisite Conditions:
None
Associated Calls:
- Run_Configuration.
12.5.2.2.7 Change_Configuration
Purpose:
VC Message Layout:
4 bytes 4 bytes
Change_Configuration configuration_event
Description:
Parameter Description:
configuration_event
Description This parameter identifies an event that is related to the current configuration status of
the sub-ordinate Configuration Management Function and identifies a transition into
another configuration status..
Prerequisite Conditions:
None
Associated Calls:
- Configuration_Changed.
12.5.2.2.8 Configuration_Changed
Purpose:
VC Message Layout:
4 bytes 4 bytes
Configuration_Changed new_configuration
Description:
If the sub-ordinate Configuration Management Function has encountered an error in the process of
acquiring the requested configuration it shall indicate this fact by a value 0xFFFFFFFF for the
parameter new_configuration.
Parameter Description:
new_configuration
Description This parameter identifies the configuration that has been acquired by the
acknowledging Configuration Management function.
Domain Values 0xFFFFFFFF indicates an error that has occurred when loading the configuration.
Prerequisite Conditions:
None
Associated Calls:
- Change_Configuration.
12.5.2.3.1 Request_New_CFM
Purpose:
VC Message Layout:
4 bytes 0 bytes
Request_New_CFM -
Description:
Parameter Description:
None
Prerequisite Conditions:
None
Associated Calls:
- New_CFM_Allocated
12.5.2.3.2 New_CFM_Allocated
Purpose:
VC Message Layout:
4 bytes 4 bytes
New_CFM_Allocated Allocated_Cfm_id
Description:
If the super-ordinate Configuration Management Function has encountered an error in the process of
allocating a CFM, it shall indicate this fact by a value 0xFFFFFFFF for the parameter cfm_id.
Parameter Description:
Allocated_Cfm_id
Description This parameter identifies the CFM that has been allocated by the acknowledging
Configuration Management function.
Domain Values 0xFFFFFFFF indicates an error that has occurred when allocating a spare CFM.
Prerequisite Conditions:
Associated Calls:
- Request_New_CFM.
12.5.2.3.3 Deallocate_CFM
Purpose:
VC Message Layout:
4 bytes 4 bytes
Deallocate_CFM Deallocate_Cfm_id
Description:
Parameter Description:
Deallocate_Cfm_Id
Description This parameter identifies a CFM which the sub-ordinate Configuration Management
Function wants to release.
Prerequisite Conditions:
None
Associated Calls:
- CFM_Deallocated.
12.5.2.3.4 CFM_Deallocated
Purpose:
VC Message Layout:
4 bytes 4 bytes
CFM_Deallocated Deallocated_Cfm_id
Description:
If the super-ordinate Configuration Management Function has encountered an error in the process of
deallocating the requested CFM it shall indicate this fact by a value 0xFFFFFFFF for the parameter
cfm_id.
Parameter Description:
Deallocated_Cfm_id
Description This parameter identifies the deallocated CFM already acquired by the sub-ordinate
Configuration Management function.
Domain Values 0xFFFFFFFF indicates an error that has occurred when deallocating the CFM.
Prerequisite Conditions:
The receiver of this message has requested to deallocate the CFM identified by the parameter.
Associated Calls:
- Deallocate_CFM.
A Health Monitoring Function above the lowest level, which is the Resource Element level, is
collecting three types of health status information from the sub-ordinate GSM functions:
- If the sub-ordinate level GSM Function is not able to localise and mask a fault, a fault report is
passed on to the immediately super-ordinate level Health Monitoring function.
- Every Integration Area level or aircraft level Health Monitoring Function is periodically querying
the health of all of its immediately sub-ordinate GSM functions by issuing an Are_You_Alive
message. The sub-ordinate level is responding with an I_Am_Alive message.
- The super-ordinate Fault Management function may retrieve BIT results of the sub-ordinate GSM
functions in order to build a system health view for ITM or fault localisation purposes.
To restart applications or services which have encountered problems, or for any system design
reason (load balancing, redundancy policies, etc.), a Fault Management Function may want to
retrieve spare CFM’s to load and run software on them.
A CFM can be reused once applications or services running on it are correctly terminated. A Fault
Management Function may want to release the CFM and reinsert it in the pool of spare CFM’s. The
deallocated CFM becomes a spare one that can be used by other Fault Management Functions.
For a given Fault Management Function, the Fault Management Function directly super-ordinate
handles the spare CFM’s it can retrieve.
12.5.2.4.1 Fault_Report
Purpose:
VC Message Layout:
Fault_Report the_fault
Description:
The sub-ordinate Fault Management Function being not able to handle a fault completely within its
scope passes a fault handling on to the Health Monitoring function directly super-ordinate to itself.
The fault report of the sub-ordinate Fault Management function is specified by the parameter
the_fault.
Parameter Description:
the_fault
Description This parameter collects all information about a fault that was collected by the
reporting GSM function so far.
Prerequisite Conditions:
None
Associated Calls:
None.
12.5.2.4.2 Are_You_Alive
Purpose:
VC Message Layout:
Description:
The super-ordinate Health Monitoring Function requests from a GSM function directly sub-ordinate to
itself to identify it and to confirm its configuration status.
The expected function identifier of the quested GSM Function is provided by the parameter
function_id_expected. The expected status is provided by the parameter status_id_expected. The
latter parameter applies only for the sub-ordinate Configuration Management function.
The Are_You_Alive message shall be used periodically by the super-ordinate Health Monitoring
function to confirm the availability and status of any sub-ordinate GSM function.
Parameter Description:
function_id_expected
Description This parameter specifies the expected identity of the queried GSM function.
For the definition of the values for this parameter refer to section 6.4.1.2.
status_id_expected
Description This parameter identifies the expected configuration status of the queried GSM
function.
Domain Values This status identifier applies only to the Configuration Management function. In case
a Configuration Management function is not included, the value of this parameter
shall be 0xFFFFFFFF.
Prerequisite Conditions:
None
Associated Calls:
- I_Am_Alive.
12.5.2.4.3 I_Am_Alive
Purpose:
VC Message Layout:
Description:
The Are_You_Alive message shall be used periodically by the super-ordinate Health Monitoring
function to confirm the availability and status of any sub-ordinate GSM function.
The sub-ordinate GSM Function responds to the Are_You_Alive request received from the Health
Monitoring function directly super-ordinate to itself by providing its actual identification and its actual
configuration status.
If the expected function identification complies with the actual one the expected function identification
shall be acknowledged by the parameter function_id_returned. If the queried GSM function is not
available or the expected function identification does not comply function_id_returned shall provide
the value 0xFFFFFFFF.
If the expected status complies with the actual one the expected status shall be acknowledged by the
parameter status_id_returned. If the queried GSM function is not available or the expected status
does not comply status_id_returned shall provide the value 0xFFFFFFFF.
Parameter Description:
Function_id_returned
Description This parameter provides the actual identity of the queried GSM function.
Status_id_returned
Description This parameter provides the actual configuration status of the queried GSM function.
Domain Values This status identifier applies only to the Configuration Management function. In case
a Configuration Management function is not included, the value of this parameter
shall be 0xFFFFFFFF.
Prerequisite Conditions:
None
Associated Calls:
- Are_You_Alive.
12.5.2.4.4 Request_BIT_Result
Purpose:
VC Message Layout:
4 bytes 4 bytes
Request_BIT_Result type
Description:
The super-ordinate Fault Management Function requests from a Fault Management function directly
sub-ordinate to itself to retrieve the result of the most recent BIT whose type is specified by the
parameter bit_type.
Parameter Description:
type
Description This parameter identifies the type of the BIT that the requesting Fault Management
function wants to retrieve the result.
Prerequisite Conditions:
None
Associated Calls:
- Report_BIT_Result.
12.5.2.4.5 Report_BIT_Result
Purpose:
VC Message Layout:
Report_BIT_Result result
Description:
The sub-ordinate Fault Management function reports to the Fault Management function directly super-
ordinate to itself the result of the most recent BIT whose type has been identified by the request.
If the sub-ordinate Fault Management function is not able to retrieve the result, it shall signal the
problem by setting the result of the BIT as erroneous according to SMOS BIT definitions.
Parameter Description:
result
Description This parameter provides identifies the CFM that has been allocated by the
acknowledging Fault Management function.
Domain Values If BIT result retrieval is not possible, the sub-ordinate Fault Management Function
shall signal it by using appropriate BIT result values as defined by SMOS BIT
definitions.
Prerequisite Conditions:
Associated Calls:
- Request_BIT_Result.
12.5.2.5.1 RequestSC
Purpose:
Used to request the implementation of a secure communications link between two instances of GSM
security manager.
VC Message Layout:
4 bytes 4 bytes
RequestSC TlsId
Description:
This service is used by a subordinate GSM-SM in order to request the implementation of a secure
communications link between itself and its superordinate GSM-SM. The purpose of this secure link is
to enable the superordinate GSM-SM to distribute encryption/authentication keys to its underlying
subordinate GSM-SM's in a secure manner.
Parameter Description:
TlsId
Description The identification of the TLS upon which the calling GSM-SM is hosted.
Prerequisite Conditions:
None
Associated Calls:
- SCResponse.
12.5.2.5.2 SCResponse
Purpose:
VC Message Layout:
4 bytes 4 bytes
SCResponse Response
Description:
This command is issued by a superordinate GSM-SM in response to the receipt of the RequestSC
command. Once the GSM-SM has determined whether a secure communications link can be
implemented between the requesting GSM-SM and itself, it uses this command to notify the
requesting GSM-SM of its decision.
Parameter Description:
Response
Domain Values No special values are associated with this parameter, implementation dependent.
Prerequisite Conditions:
This command can only be issued in response to receiving the RequestCR command.
Associated Calls:
- RequestCR.
12.5.2.5.3 DH_Send_M
Purpose:
The message is the first message in a four-message dialogue between participating GSM-SM's in
which the Diffie-Helman algorithm is performed.
VC Message Layout:
4 bytes 4 bytes
DH_Send_M key
Description:
Implementation dependent.
Parameter Description:
key
Prerequisite Conditions:
This message can only be sent if the response to the earlier request to establish a secure
communications link was successful.
Associated Calls:
- DH_Send_X,
- DH_Send_XimodM,
- DH_Send_XjmodM.
12.5.2.5.4 DH_Send_X
Purpose:
This is the second message in a four message dialogue between participating GSM-SM's in which the
Diffie-Helman algorithm is performed.
VC Message Layout:
4 bytes 4 bytes
DH_Send_X key
Description:
Implementation dependent.
Parameter Description:
key
Prerequisite Conditions:
Associated Calls:
- DH_Send_M,
- DH_Send_XimodM,
- DH_Send_XjmodM.
12.5.2.5.5 DH_Send_XimodM
Purpose:
This message is the third message in a four-message dialogue between participating GSM-SM’s in
which the Diffie-Helman algorithm is performed.
VC Message Layout:
4 bytes 4 bytes
DH_Send_XimodM key
Description:
Implementation dependent.
Parameter Description:
key
Prerequisite Conditions:
Associated Calls:
- DH_Send_M,
- DH_Send_X,
- DH_Send_XjmodM.
12.5.2.5.6 DH_Send_XjmodM
Purpose:
This message is the fourth message in a four-message dialogue between participating GSM-SM’s in
which the Diffie-Helman algorithm is performed.
VC Message Layout:
4 bytes 4 bytes
DH_Send_XjmodM key
Description:
Implementation dependent.
Parameter Description:
key
Prerequisite Conditions:
Associated Calls:
- DH_Send_M,
- DH_Send_X,
- DH_Send_XimodM.
12.5.2.5.7 Request_Key
Purpose:
VC Message Layout:
4 bytes 4 bytes
Request_Key TlsId
Description:
This message is used by a subordinate GSM-SM to request that its superordinate GSM-SM send it
the encryption/authentication keys that it requires in order to encrypt/decrypt/authenticate the
messages sent to the functional Application Processes hosted on the TLS upon which it is
responsible.
Parameter Description:
Tls_Id
Description The identification of the TLS upon which the calling GSM-SM is hosted.
Prerequisite Conditions:
None
Associated Calls:
- Send_Key.
12.5.2.5.8 Send_Key
Purpose:
VC Message Layout:
4 bytes 40 bytes
Send_Key key_array
Description:
This message is used by the super-ordinate GSM-SM to send the encryption/authentication keys to
the subordinate GSM-SM that requested them.
Parameter Description:
key_array
Description A 10 element array containing the encryption/decryption keys to be used by the GSM-
SM.
Prerequisite Conditions:
Associated Calls:
- Request_Key.
12.6 SMLI
The SMLI Interface is a logical interface for synchronisation of system management functions. The
System Management functions separated into two parts:
- AM: Functionality developed for a specific programme in mind and located above the APOS
within the AL.
- GSM: Functionality that is applicable to all IMA systems and located below the APOS within the
OSL.
- The Fault Management process in response to the detection of faults occurring within the system.
In the case of mission mode changes, it is the AM that requests a change in configuration to its
corresponding GSM, while in the case of the Fault Management process it is the GSM that notifies the
AM of its desire to change mode. This would then allow the AM to notify the aircrew (through cockpit
display functional applications, for example) of the intended change of mode.
The following sections outline the proposed SMLI services and the format of the SMLI messages,
which are transported as the payload of a VC message. In each case they shall conform to the
general format illustrated in Figure 68 below:
4 bytes 4 bytes
SMLI Service Parameter provides an identifier, which is interpreted by the addressee of the SMLI
message (the security management SMLI services do not make use of this parameter). For the SMLI
message definition refer to the data type SmliMessage (see section 13.5).
The AM may require the logical configuration of the application to be changed. In order to do this it
must ask the GSM to perform a logical configuration change. The Request_Lc_Change message is
provided for this purpose. This message shall be used by the AM to request the corresponding GSM
Function to change the Logical Configuration due to the mission progress, a pilot decision or any
other reason from functional applications side. When the logical configuration has been changed the
Lc_Changed message is used by the GSM to inform the AM that the requested change has been
completed.
12.6.2.2.1 Request_Lc_Change
Purpose:
VC Message Layout:
4 bytes 4 bytes
Request_Lc_Change event_id
Description:
The AM function sending the SMLI message ‘Request_Lc_Change’ specifies an event identifier
event_id. The receipt of this message shall trigger a reconfiguration into a new Logical Configuration.
Parameter Description:
event_id
Description This parameter provides an event triggering a specific reconfiguration process being
performed.
Prerequisite Conditions:
None
Associated Calls:
- Lc_Changed.
12.6.2.2.2 Lc_Changed
Purpose:
VC Message Layout:
4 bytes 4 bytes
Lc_Changed logical_config_id
Description:
GSM shall send this SMLI message to the AM in response to the SMLI message
‘Request_Lc_Change’. The parameter logical_config_id shall provide the identifier for the current
Logical Configuration of the GSM instance, which is associated to the receiving AM function.
In case that no valid logical configuration could be acquired, e.g. due to an error in the reconfiguration
process, the value of logical_config_id shall be set to 0xFFFFFFFF.
Parameter Description:
logical_config_id
Prerequisite Conditions:
Associated Calls:
- Request_Lc_Change.
In the event of an error, the GSM can trigger the transition from a Logical Configuration into another
one. As the aircraft functions, represented by Application Processes may require some
reconfiguration, e.g. the shutdown of some non-core equipment, GSM can synchronise the
reconfiguration of AM with its own reconfiguration. It signals the new Logical Configuration to AM with
the SMLI message ‘Signal_For_Lc_Change’, AM reconfigures and acknowledges the completion
of its reconfiguration to GSM by means of the service ‘Ready_For_Lc_Change’. Then the GSM
starts its reconfiguration.
12.6.2.3.1 Signal_For_Lc_Change
Purpose:
VC Message Layout:
4 bytes 4 bytes
Signal_For_Lc_Change logical_config_id
Description:
Parameter Description:
logical_config_id
Prerequisite Conditions:
None
Associated Calls:
- Ready_For_Lc_Change.
12.6.2.3.2 Ready_For_Lc_Change
Purpose:
Notify GSM that Application Functions are prepared for the change of Logical Configuration.
VC Message Layout:
4 bytes 4 bytes
Ready_For_Lc_Change event_id
Description:
AM acknowledges to GSM that it has prepared for the change of Logical Configuration, which is
specified by the parameter event_id. This message is sent by the AM in response to the reception of
a Signal_For_Lc_Change SMLI message. As AM is the final point of decision on a change of
logical configuration, this decision not necessarily complies with the GSM request. Therefore, AM
replies with an event identifier in order to trigger the actual change of logical configuration.
In case the AM was not able to prepare for the new Logical Configuration or an error has occurred in
the reconfiguration process the value of event_id shall be set to 0xFFFFFFFF.
Parameter Description:
event_id
Description This parameter provides an event triggering a specific reconfiguration process being
performed.
Prerequisite Conditions:
Associated Calls:
- Signal_For_Lc_Change.
12.6.2.4.1 Security_Data_Written
Purpose:
VC Message Layout:
4 bytes 4 bytes
Description:
The security aspects of system initialisation require the Application Security Management function to:
In order to simplify the overall system initialisation process, it is important that this functionality is
completed prior to the GSM Security Management hierarchy being instantiated and the
encryption/decryption keys being transferred onto the PE's on which they are to be hosted.
Consequently, this service is used by the Application Security Manager to notify the AC level GSM
Security Management function that this functionality has been completed and that it is now ok for it to
proceed with its aspects of security related system initialisation.
Parameter Description:
None.
Prerequisite Conditions:
None.
Associated Calls:
- SM_Config_Complete.
12.6.2.4.2 SM_Config_Complete
Purpose:
VC Message Layout:
4 bytes 4 bytes
Description:
This service is used by the AC level GSM Security Management function to inform the Application
Security Manager that it has instantiated the Security Management Hierarchy and that all the
encryption/decryption keys have been copied to the RE level GSM-SM’s that are to use them during
the mission.
Parameter Description:
None.
Prerequisite Conditions:
The GSM-SM must have completed its functionality in response to it receiving the SMLI Security Data
Written command.
Associated Calls:
The system management hierarchy is partitioning the aircraft system into Integration Areas. These
protect the configuration of an integration area from reconfigurations of remote integration areas.
However, on top of the reconfiguration there may be still a dependency on application level, which
shall be managed by AM. In the case of an error within an IA it may be necessary to inform the AM in
order to perform any required action that will affect parts of the application beyond the IA boundary.
12.6.2.5.1 Distant_Error_Event
Purpose:
VC Message Layout:
4 bytes 4 bytes
Distant_Error_Event logical_config_id
Description:
GSM indicates to AM that the Logical Configuration of an Integration Area has been changed due to a
fault recovering reconfiguration in that Integration Area. The parameter logical_config_id identifies the
logical configuration, which has been acquired by the Integration Area, which has initiated this SMLI
message.
In case this fault recovery has failed, sending a 0xFFFFFFFF value with the parameter
logical_config_id indicates this.
Parameter Description:
logical_config_id
Domain Values 0xFFFFFFFF is indicating that there is no valid Logical Configuration. Otherwise less
than 0xFFFFFFFF.
Prerequisite Conditions:
The GSM of an Integration Area has changed its Logical Configuration due to handling a fault.
Associated Calls:
None
12.7 MLI
12.7.1 TC Header
The TC Header shall contain the TC ID that is the TC Identifier. In each case it shall conform to the
general format illustrated in Figure 69, below.
TC ID TC Data
4 Bytes m Bytes
The following sections outline the proposed MLI services and the format of the MLI messages, which
are, in turn, transported in the payload of a TC message. In each case they shall conform to the
general format illustrated in Figure 70, below.
Optional Header
MLI Service ID Header Length Data Length Transfer ID Parameters MLI Data
MLI Service ID identifies the MLI service required. These values are defined in the individual service
subsections.
Header Length determines the total length of the header information fields.
Data Length determines the total length of the MLI data field.
X m
The Optional Header Parameters are additional information fields specific to MLI messages included
for flexibility and are organised in such a way as to avoid making the format of the Optional Header
Parameters field difficult to expand as requirements grow for the contents of an MLI message. The
overall Optional Header Parameters field may, if used, be composed of any number of Optional
Parameter Elements, the format of which is shown in Figure 71.
The Optional Element Identifier uniquely identifies the type of information present in the Optional
Element data field. The Optional Element Length field specifies the length of the Optional Element
data field. The Optional Element data field contains the specific Optional Parameter information (one
example, to satisfy a potential future requirements, might be Quality of Service related data).
The Transfer ID field uniquely identifies the transaction taking place between any two MLI service
users. Transfer ID is either a counter or a random value. The requirement is the reply message shall
return the Transfer ID of the request message.
The MLI data field refers to the data associated with the MLI service identified by the MLI Service ID
field.
All parameters shall be arranged in multiples of 4 bytes in length and encoded in a ‘Big-Endian’ format
i.e. the MSB is transmitted first.
In the following sections, if a particular message has associated MLI Payload data, then the contents
of the individual fields, which are concatenated to form the payload of the message, are itemised in
the accompanying table. The order in which the MLI message payload fields are transmitted shall
conform to the order in which they are listed in the relevant table.
Load Power Switches Configuration Load Power Switches Configuration Acknowledge 12.7.2.2.5.1
This subsection covers all services associated with the management of CFM resources.
The following services are required to enable one CFM to interrogate a remote CFM for the results of
its PBIT cycle.
12.7.2.2.1.1.1 Request_PBIT_Result
This message shall be transmitted when requesting a CFM to report the result of its PBIT cycle. The
format for this message shall be as shown in Figure 72, below.
00000010H 16 0 x
12.7.2.2.1.1.2 Reply_PBIT_Result
This message shall be transmitted when responding to a request to report the result of its PBIT cycle.
The format for this message shall be as shown in Figure 73, below.
MLI Message
MLI Message Header Payload
Description Overall result of module PBIT cycle – set to PASS only if all PBIT tests pass.
PBIT_IN_PROGRESS = 10H,
PBIT_NOT_AVAILABLE = 20H,
PBIT_RESULT_FAIL = FFH.
The following services are required to enable one CFM to interrogate a remote CFM for its current
status.
12.7.2.2.1.2.1 Request_CFM_Status
This message shall be transmitted when requesting a CFM to report its current operational status.
The format for this message shall be as shown in Figure 74, below.
00000020H 16 0 x
12.7.2.2.1.2.2 Reply_CFM_Status
This message shall be transmitted when responding to a request to a CFM to report its operational
status. The CFM Status differs whether the CFM conforms to generic CFM model or not.
The format for this message shall be as shown in Figure 75, below.
MLI Message
MLI Message Header Payload
Description Attribute defining the type of CFM to which the corresponding CFM type-specific
information applies.
NOT_GENERIC_CFM = FFH
Description Inventory of the status of the resources present in the CFM, the type of which is specified
in Field 1. The type attribute determines how the contents of the subsequent data fields
are to be interpreted.
For all CFM’s, which conform to the GENERIC_CFM type, the following table (Table 37) applies. It
represents the extension to the “Reply_CFM_Status” message payload specific to this CFM type.
Domain Values OK = 0H
FAILED = FH
NOT_AVAILABLE = 1H
IN_PROGRESS = 2H
OK = 0H,
FAILED = FH,
NOT_AVAILABLE = 1H,
IN_PROGRESS = 2H
Description List of records, showing the current operational status of all CFM PE’s.
Field Length X Bytes (dependent upon CFM resources/configuration). For each PE, a record of 8 Bytes
is assigned for this purpose.
Description The unique identifier, used to reference the individual PE, to that the status information in
the second field of a given record refers.
FAILED = FH,
NOT_AVAILABLE = 1H,
IN_PROGRESS = 2H
For all CFM’s, which are NOT_GENERIC_CFM type, the following table (Table 38) applies. It
represents the extension to the “Reply_CFM_Status” message payload specific to this CFM type.
Domain Values OK = 0H
FAILED = FH
NOT_AVAILABLE = 1H
IN_PROGRESS = 2H
The following services are required to enable one CFM to interrogate a remote CFM for general
configuration information.
12.7.2.2.1.3.1 Request_CFM_Info
This message shall be transmitted when requesting a CFM to report its module configuration
information. The format for this message shall be as shown in Figure 76, below.
00000030H 16 0 x
12.7.2.2.1.3.2 Reply_CFM_Info
This message shall be transmitted when responding to a request to a CFM to its module configuration
information. The format for this message shall be as shown in Figure 77, below.
MLI Message
MLI Message Header Payload
The following services are required to enable one CFM to test that a physical communication path
between itself and a remote CFM is intact. The tested communication is between the requesting PU
and the end point.
12.7.2.2.1.4.1 Test_Message
00000040H 16 0 x
This message shall be transmitted, if a CFM is required to determining the integrity of a ‘point-to-point’
connection between two CFM’s. The format for this message shall be as shown in Figure 78.
No additional information elements are required in this message. This message may also be used as
part of a scheme for gathering Quality of Service (QoS) information related to the network(s) over
which the message is transferred.
12.7.2.2.1.4.2 Test_Message_Acknowledge
This message shall be transmitted when acknowledging reception of a Test Message. If received by
the CFM issuing the original Test Message it is used to confirm the integrity of a ‘point-to-point’
connection between two CFM’s. The format for this message shall be as shown in Figure 79, below.
00000041H 16 0 x
The following services are required to enable one CFM to request a remote CFM for starting its IBIT
cycle.
12.7.2.2.1.5.1 Request_IBIT_Start
This message shall be transmitted when requesting a CFM to start its IBIT cycle. The format for this
message shall be as shown in Figure 80, below.
00000050H 16 0 x
12.7.2.2.1.5.2 Reply_IBIT_Start
This message shall be transmitted when responding to a request to start its IBIT cycle. The format for
this message shall be as shown in Figure 81, below.
MLI Message
MLI Message Header Payload
IN_PROGRESS = 1H
NOT_AVAILABLE = 2H
FAILED = FFH
The following services are required to enable one CFM to interrogate a remote CFM for the results of
its IBIT cycle.
12.7.2.2.1.6.1 Request_IBIT_Result
This message shall be transmitted when requesting a CFM to report the result of its IBIT cycle. The
format for this message shall be as shown in Figure 82, below.
00000060H 16 0 x
12.7.2.2.1.6.2 Reply_IBIT_Result
This message shall be transmitted when responding to a request to report the result of its IBIT cycle.
The format for this message shall be as shown in Figure 83, below.
MLI Message
MLI Message Header Payload
Description Overall result of module IBIT cycle – set to PASS only if all IBIT tests pass.
IBIT_IN_PROGRESS = 10H
IBIT_NOT_AVAILABLE = 20H
IBIT_RESULT_FAIL = FFH
This subsection covers all services associated with the management of downloading executable or
configuration data to a remote CFM.
The following services are required to enable one CFM to download an image to a remote CFM, the
contents of which are specified in a dedicated message field.
12.7.2.2.2.1.1 Load_Image
This message shall be transmitted when issuing a request to load the Processing Element (PE)
specified in the message with a whole or fragment of a whole image. The format for this message
shall be as shown in Figure 84, below.
MLI Message
MLI Message Header Payload
Field 1 – PE ID
Description The unique identifier, used to reference the individual PE to which the image is to be
loaded.
Description Notification to the image loader of specific image attributes e.g. image binary entry point,
image binary load address, image format, OS Type.
Description The number of individual fragments of image data, which when reassembled, constitutes
a complete image.
Description The size, in bytes, of the overall image data when reassembled.
Description The size, in bytes, of the image data fragment contained in this message. A fragment size
is multiple of 4.
Description 32-bits checksum value of all the bytes contained in the Fragment Image data field (field
10 – see below).
12.7.2.2.2.1.2 Load_Image_Acknowledge
MLI Message
MLI Message Header Payload
Field 1 – PE ID
Description The unique identifier, used to reference the individual PE to which an attempt was made
to load the image.
Description The number of individual fragments of image data, which when reassembled, constitutes
a complete image.
Description The sequentially numbered identifier of the image data fragment received.
Description Notification of the success or the nature of the failure of the image loading process.
LOAD_IMAGE_ACK_FRAGMENT_LOAD_OK = 10H,
LOAD_IMAGE_ACK_FAILURE_ALREADY_LOADED = 20H,
LOAD_IMAGE_ACK_FAILURE_UNKNOWN_FORMAT = 30H,
LOAD_IMAGE_ACK_FAILURE_CHECKSUM_ERROR = 40H,
LOAD_IMAGE_ACK_FAILURE_INSUFFICIENT_RESOURCES = 50H,
The following services are required to enable one CFM to download routing table data to a remote
CFM.
12.7.2.2.2.2.1 Load_Routing_Table
This message shall be transmitted when issuing a request to load the CFM with a routing table. The
format for this message shall be as shown in Figure 86, below.
MLI Message
MLI Message Header Payload
Description The number of individual fragments of the overall routing table data, which when
reassembled, constitute a complete routing table.
Description The sequentially numbered identifier of the routing table data fragment.
Description The size, in bytes, of the overall routing table data when reassembled.
Description The size, in bytes, of the routing table data fragment contained in this message. A
fragment size is multiple of 4.
Description 32-bits checksum value of all the bytes contained in the Fragment data field (field 6 – see
below).
Description Data for the routing table fragment transferred in this message. The contents of the
routing table information (in its non-fragmented form) are defined in the tables below.
The following table represents the data common to all routing table information entries and defines
the type of routing configuration operation it is required to perform, based on the parameters
contained in the data fields, which follow it. The contents of the additional fields are defined in Table
46, Table 47 and Table 48. Note that there is no restriction on the information contained in the routing
information being of one exclusive type. The information fields shown in Table 45 are used to
distinguish one type of configuration information from another, but all three types of configuration
information would be expected to be present in a routing table configuration message.
Field 1 – Configuration ID
Description The unique Identifier used to reference the type of configuration to perform
CONFIGURE_TRANSFER = 1,
CONFIGURE_PROTOCOL = 2,
DESTROY_TRANSFER = 3.
Field Length Variable (see Table 46, Table 47 and Table 48)
The configuration data defined in the following table (Table 46) represents the data encoding for
CONFIGURE_INTERFACE operations:
Field 1 – Interface ID
Description The unique and physical Identifier used to reference the interface within the CFM
Field 2 – Network ID
Description The unique and logical Identifier used to reference the Network within the ASAAC System
Field 3 – Port ID
Description The unique and logical Identifier used to reference the Port within a Network
Description The unique and hard coded Identifier used to reference the type of interface which is
dependant on the Network topology
Description Data for the specified interface configuration which is dependent on Network Technology
The configuration data defined in the following table (Table 47) represents the data encoding for
CONFIGURE_TRANSFER operations:
Field 1 – TC ID
Description The unique Identifier used to reference the TC within the ASAAC System
Field 2 – Network ID
Description The unique and logical Identifier used to reference the Network within the ASAAC System
which this TC is allocated
Field 3 – Port ID
Description The unique and logical Identifier used to reference the Port within a Network which this
TC is allocated
Description This defines the direction of data transfers on the TC, (as viewed from the CFM which is
on configuration).
Description This defines whether the TC is to be used for message or streaming transfers
Description The unique and hard coded Identifier used to reference the type of interface where the TC
is transferred which is dependant on the Network topology
Description Data for the specified interface configuration which is dependent on Network Technology
The configuration data defined in the following table (Table 48) represents the data encoding for
CONFIGURE_PROTOCOL operations:
Field 1 – TC ID Request
Description The Identifier of the TC which will request the CFM which has been configured by this
message
Field 2 – TC ID Reply
Description The Identifier of the TC that is used to reply to the requesting TC.
The configuration data defined in the following table (Table 49) represents the data encoding for
DESTROY_TRANSFER operations:
Field 1 – TC ID
Description The unique Identifier used to reference the TC within the ASAAC System
Field 2 – Network ID
Description The unique and logical Identifier used to reference the Network within the ASAAC System
which this TC is allocated
Field 3 – Port ID
Description The unique and logical Identifier used to reference the Port within a Network which this
TC is allocated
12.7.2.2.2.2.2 Load_Routing_Table_Acknowledge
MLI Message
MLI Message Header Payload
Description The number of individual fragments of routing table data, which when reassembled,
constitutes a complete routing table.
Description The sequentially numbered identifier of the routing table data fragment received.
Description Notification of the success or the nature of the failure of the routing table fragment loading
process.
LOAD_RTG_TABLE_ACK_FRAGMENT_LOAD_OK = 10H,
LOAD_RTG_TABLE_ACK_FAIL_UNKNOWN_FORMAT = 20H,
LOAD_RTG_TABLE_ACK_FAIL_CHECKSUM_ERROR = 30H,
LOAD_RTG_TABLE_ACK_FAIL_RESOURCE_ASSIGNMENT = 40H,
This subsection covers all services associated with the management of time distribution between
CFM’s or from external sources.
The following services are required to enable one CFM to configure the Time Management to a
remote CFM.
12.7.2.2.3.1.1 Load_Time_Configuration
This message shall be transmitted when issuing a request to load the CFM with a time configuration.
The format for this message shall be as shown in Figure 88, below:
MLI Message
MLI Message Header Payload
Description The number of individual fragments of the overall time configuration table data, which
when reassembled, constitute a complete time configuration table.
Description The sequentially numbered identifier of the time configuration table data fragment.
Description The size, in bytes, of the overall time configuration table data when reassembled.
Description The size, in bytes, of the time configuration table data fragment contained in this
message.
Description 32-bit checksum value of all the bytes contained in the Fragment data field (field 6 – see
below).
Description Data for the time configuration table fragment transferred in this message. The contents
of the time configuration table information (in its non-fragmented form) are defined in the
tables below.
The following table represents the data common to all time configuration information entries and
defines the type of time configuration operation it is required to perform, based on the parameters
contained in the data fields, which follow it. The contents of the additional fields are defined in Table
53 and Table 54. The information fields shown in Table 52 are used to distinguish one type of
configuration information from another. It is expected only one Clock Configuration. It may get either
none or one or several Federated Clock Configuration.
Field 1 – Configuration ID
Description The unique Identifier used to reference the type of configuration to perform
CONFIGURE_FEDERATED_CLOCK = 1
The configuration data defined in the following table (Table 53) represents the data encoding for
CONFIGURE_CLOCK operations:
Description This type defines the different clock modes, which exist in the system.
REFERENCE_CLOCK = 10H,
MODULE_CLOCK = 20H.
Field 2 – CLOCK ID
Description The unique and logical Identifier used to reference the clock within the ASAAC System
Description The unique Identifier used to reference the TC within the ASAAC System which identifies
the CFM Parent sending TC
Field 4 – TC ID To Parent
Description The unique Identifier used to reference the TC within the ASAAC System which identifies
the CFM Parent receiving TC
Field 5 – SyncWavePeriod
Field 6 – MaxOfMissedALT
Field 7 – RangeforALT
Description The Acceptable range for the received ALT reference values
Field 8 – ALTResBound
Field 9 – MaxALTDiff
Field 10 – TimeOut
Description Internal time between two “send request” before notifying an error
The configuration data defined in the following table (Table 54) represents the data encoding for
CONFIGURE_FEDERATED_CLOCK operations:
Field 1 – CLOCK ID
Description The unique and logical Identifier used to reference the clock within the ASAAC System
Description The unique Identifier used to reference the TC within the ASAAC System which identifies
the CFM Federated sending TC
Field 3 – TC ID To Federated
Description The unique Identifier used to reference the TC within the ASAAC System which identifies
the CFM Federated receiving TC
12.7.2.2.3.1.2 Load_Time_Configuration_Acknowledge
MLI Message
MLI Message Header Payload
Description The number of individual fragments of time configuration table data, which when
reassembled, constitutes a complete time configuration table.
Description The sequentially numbered identifier of the time configuration table data fragment
received.
Description Notification of the success or the nature of the failure of the time configuration table
fragment loading process.
LOAD_TIME_CONF_ACK_FRAGMENT_LOAD_OK = 10H,
LOAD_TIME_CONF_ACK_FAIL_UNKNOWN_FORMAT = 20H,
LOAD_TIME_CONF_ACK_FAIL_CHECKSUM_ERROR = 30H,
LOAD_TIME_CONF_ACK_FAIL_RESOURCE_ASSIGNMENT = 40H,
The following services are required to enable a CFM to request the AGT from an external source.
12.7.2.2.3.2.1 Request_AGT
This message shall be transmitted when requesting an external time source to return the current
AGT. The format for this message shall be as shown in Figure 90, below.
02000000H 16 0 x
12.7.2.2.3.2.2 Reply_AGT
This message shall be transmitted as a response to a request to return the current AGT. It shall
provide a status that indicates the ability to supply a valid time. If valid, it shall provide the time value
itself. The format for this message shall be as shown in Figure 91, below.
MLI Message
MLI Message Header Payload
Description Notification of the capability of the IA/AC to supply the AGT when its delivery is requested.
REPLY_AGT_UNAVAILABLE = FFH
The following services are required to control the synchronisation of the time managed in a CFM from
a master time reference.
12.7.2.2.3.3.1 Ready_For_ALT_Synchro
02000010H 16 0 x
12.7.2.2.3.3.2 Start_ALT_Synchro
“Ready_For_ALT_Synchro” message. The format for this message shall be as shown in Figure 93,
below.
MLI Message
MLI Message Header Payload
The following services are required to enable a CFM to request the ALT from a master CFM time
source.
12.7.2.2.3.4.1 Request_ALT
This message shall be transmitted when requesting an RC or MRC for the current Absolute Local
Time (ALT). The format for this message shall be as shown in Figure 94, below.
02000020H 16 0 x
12.7.2.2.3.4.2 Reply_ALT
This message is transmitted as a response to a request to a RC or MRC for the current Absolute
Local Time (ALT), providing both a status, indicating an ability to supply a valid time and, if valid, the
time value itself. The format for this message shall be as shown in Figure 95, below.
MLI Message
MLI Message Header Payload
Description Notification of the capability of the RC/MRC from which the ALT is requested to deliver
the ALT.
REPLY_ALT_UNAVAILABLE = FFH.
The following services are required to enable a CFM to request the combined AGT/ALT time from a
master CFM time source.
12.7.2.2.3.5.1 Request_AGT_ALT
This message shall be transmitted when requesting an RC or MRC for the current combined
AGT/ALT time. The format for this message shall be as shown in Figure 96, below:
02000030H 16 0 x
12.7.2.2.3.5.2 Reply_AGT_ALT
This message is transmitted as a response to a request to an RC or MRC for the current combined
AGT/ALT time. It provides both a status, indicating an ability to supply valid time values and, if those
values are valid, the time values themselves. The format for this message is shown in Figure 97,
below.
MLI Message
MLI Message Header Payload
Description Notification of the capability of the RC or MRC to deliver the combined AGT/ALT time as
requested.
REPLY_AGT_ALT_UNAVAILABLE = FFH.
This subsection covers all services associated with the management of Network.
The following services are required to enable a CFM to download Configuration data to a remote
NSM.
12.7.2.2.4.1.1 Load_Network_Configuration
This message shall be transmitted when issuing a request to load Network Switch Configuration
specified in the message with a whole or fragment of a whole Configuration data image. The format
for this message shall be as shown in Figure 98 below.
MLI Message
MLI Message Header Payload
Description The unique Identifier used to reference the physical Network Switch within the NSM to
be configured. This Id is hard-coded within the NSM.
Field 2 – Network ID
Description The unique and logical Identifier used to reference the Network within the
ASAAC System. This Id associates the physical Network Switch to the logical
Network.
Description The number of individual fragments of Configuration data, which when reassembled,
constitutes a complete Configuration image.
Description The sequentially numbered identifier of the Configuration image data fragment.
Description The size, in bytes, of the overall image data when reassembled.
Description The size, in bytes, of the image data fragment contained in this message. A fragment
size is multiple of 4.
Description 32-bits checksum value of all the bytes contained in the Fragment Image data field
(field 8 – see below).
Field 8 of the MLI message represents one or several Network configuration fields, detailed in Figure
99. The total size of field 8 shall be a multiple of 24 bytes.
4 bytes 20 bytes
The NSM switch command field shall be encoded as shown in Table 61.
The configuration data for each Network Command is specific to the Network Technology but shall
conform at a generic level as shown in Figure 100.
NSM_SWITCH_ADD_CONNECTION
NSM_SWITCH_REMOVE_CONNECTION
The control field defined in Figure 100 can be used for any switch specific control, which may effect
input output routing, such as address masking. Multicast connections can be configured, by several
configuration requests with the same Input Port/Address field.
The Switch Reset command, see Figure 101, can be used at any time to return the switch, to the
initial state of an NSM module switch.
NSM_SWITCH_RESET
Reset parameters
20 bytes
The Execute Sub command, see Figure 102, is intended to allow control of Sub-function on the
switch, such as the Network Physical Layer.
NSM_SWITCH_EXECUTE_SUB_COMMAND
4 bytes 16 bytes
12.7.2.2.4.1.2 Load_Network_Configuration_Acknowledge
MLI Message
MLI Message Header Payload
Description The number of individual fragments of Configuration image data, which when
reassembled, constitutes a complete Configuration image.
Description The sequentially numbered identifier of the Configuration image data fragment received.
Description Notification of the success or the nature of the failure of the Configuration image loading
process.
The following services are required to enable one CFM to interrogate a remote NSM for the status of
the network specified in the message.
12.7.2.2.4.2.1 Request_Network_Status
This message shall be transmitted when requesting a NSM to report the current operational status of
a network. The format for this message shall be as shown in Figure 104, below.
MLI Message
MLI Message Header Payload
03000010H 16 4 x
Field 1 – Network ID
Description The unique and logical Identifier used to reference the Network within the ASAAC
System, whose status is required.
12.7.2.2.4.2.2 Reply_Network_Status
This message shall be transmitted when responding to a request to a NSM to report the operational
status of a specified network.
The format for this message shall be as shown in Figure 105, below.
MLI Message
MLI Message Header Payload
Field 1 – Network ID
Description The unique identifier, used to reference the Network ID whose status is required.
Description List of records, showing the current operational status of all Network Ports.
The unique identifier, used to reference the port within the Network Switch, to that the
Description
status information in the second field of a given record refers.
OK = 00H,
Domain Values
FAILED = FFH.
This subsection covers all services associated with the management of Power Switches.
The following services are required to enable one CFM to download Configuration data to a remote
PCM.
12.7.2.2.5.1.1 Load_Power_Switches_Configuration
This message shall be transmitted when issuing a request to load Power Switches Configuration with
a whole or fragment of a whole Configuration data image. The format for this message shall be as
shown in Figure 106, below.
MLI Message
MLI Message Header Payload
Description The number of individual fragments of Configuration data, which when reassembled,
constitutes a complete Configuration image.
Description The sequentially numbered identifier of the Configuration image data fragment.
Description The size, in bytes, of the overall image data when reassembled.
Description The size, in bytes, of the image data fragment contained in this message. A fragment size
is multiple of 4.
Description 32-bits checksum value of all the bytes contained in the Fragment Image data field (field 6
– see below).
Field 6 of the MLI message represents one or several Power Switches configuration fields, detailed in
Figure 107. The total size of field 6 shall be a multiple of 8 bytes.
4 bytes 4 bytes
The PCM switch command field shall be encoded as shown in Table 66.
The configuration data for each PCM Switch Command are as shown in Figure 108 and Figure 109.
4 bytes 4 bytes
PCM_ALL_SWITCHES_RESET 0
4 bytes 4 bytes
12.7.2.2.5.1.2 Load_Power_Switches_Configuration_Acknowledge
MLI Message
MLI Message Header Payload
Description The number of individual fragments of Configuration image data, which when
reassembled, constitutes a complete Configuration image.
Description The sequentially numbered identifier of the Configuration image data fragment received.
Description Notification of the success or the nature of the failure of the Configuration image loading
process.
The following services are required to enable one CFM to interrogate a remote PCM for the status of
the Power Switches.
12.7.2.2.5.2.1 Request_Power_Switches_Status
This message shall be transmitted when requesting a PCM to report the current operational status of
a network. The format for this message shall be as shown in Figure 111 below.
04000010H 16 0 x
12.7.2.2.5.2.2 Reply_Power_Switches_Status
This message shall be transmitted when responding to a request to a PCM to report the operational
status of its Power Switches.
The format for this message shall be as shown in Figure 112, below.
MLI Message
MLI Message Header Payload
Description List of records, showing the current operational status of all Power Switches Ports.
The unique identifier, used to reference the Power Switch within the PCM, to that the
Description
status information in the second field of a given record refers.
ON = 00H
LIMBO = 80H
12.7.3 Protocol
This section covers general and specific protocol requirements for individual MLI services. It outlines
the use of particular MLI services in relation to:
The protocol used for the various MLI services outlined in this specification relies on a
REQUEST/RESPONSE transaction i.e. for every service request there is an associated response.
The behaviour of the MLI manager in any CFM shall conform to the requirements in the following
sections. These requirements are common for all services (those specific to a given service are dealt
with in section 12.7.3.2).
All MLI services rely on a REQUEST/RESPONSE protocol to carry out data or control transactions.
The MLI management in the CFM initiating the request (see section 12.7.3.1.3) shall record the
transmission of any MLI service request message, uniquely identified by a Transfer ID value and start
a timer. If the response associated with the previously transmitted request is received with the same
Transfer ID value as the request and within the expiry time of the timer (above), the record of the
initial request shall be deleted, the associated response timer stopped and notification of the arrival of
the response sent to the original requesting entity.
If no response to the initiating request is received before the timer expires (see section 12.7.3.1.3),
the record of the original request shall be deleted and notification of the timer expiry event (an error
condition) delivered to the original requesting entity.
If a response to the initiating request is received but the Transfer ID value does not match that of the
initiating request message, it shall be treated as an unsolicited service response (see section
12.7.3.1.2) and handled accordingly.
If an MLI service response is received for which there exists no record of the corresponding service
request initiation (see section 12.7.3.1.1), the CFM receiving this message shall release all associated
resources (discard the message) and issue a notification of the error condition.
Response timers are used as a means of recovering from the condition, whereby a CFM requesting
an MLI service receives no associated service response. The time after which the CFM requesting the
service deems that no response has been received (the response timer expiry) shall be determined
by the anticipated ability of the CFM’s in the given system to respond to such a request.
This section deals with protocol requirements specific to the usage of the individual services listed
here. In this section the following terms are used to denote specific entities within the system:
- SUBORDINATE CFM. This represents a remote CFM slaved to the MMM in an initialisation cycle,
an RC/MC in a time management operation or a subsystem in a system level transaction,
In each case where special requirements are detailed in relation to particular services, the behaviour
outlined indicates how the entity supporting the service is required to carry out the associated action.
Whereas the basic MLI protocol is outlined in section 12.7.3.1, all special protocol requirements other
than transfer direction restrictions indicate a ‘higher’ layer of protocol, the support of which is implicit
in the contents of the MLI payload data.
The basic protocol relating to these services dictates that REQUEST messages propagate from a
MASTER source to SUBORDINATE destination e.g. MMM (PU) to remote CFM (MSU) transactions.
Similarly, the basic protocol also dictates that RESPONSE messages propagate from a
SUBORDINATE source to MASTER destination e.g. remote CFM (MSU) to MMM (PU) transactions.
This is illustrated in the diagram in Figure 113, below.
12.7.3.2.1.1.1 Request_PBIT_Result
This is a request type service and shall be used in MASTER CFM to SUBORDINATE CFM
transactions only.
Note, during power-up a situation may arise where a “Reply_PBIT_Result” message cannot be
delivered in response to a “Request_PBIT_Result” message because the resources required to
perform this action are undergoing a PBIT cycle and are, therefore, unavailable. Hence, a lack of
response to this request does not imply that the CFM is inoperative. This aspect of the behaviour of a
CFM shall be taken into account in the system initialisation cycle.
12.7.3.2.1.1.2 Reply_PBIT_Result
This is a response type service and shall be used in SUBORDINATE CFM to MASTER CFM
transactions only.
12.7.3.2.1.2.1 Request_CFM_Status
This a request type service and shall be used in MASTER CFM to SUBORDINATE CFM transactions
only.
12.7.3.2.1.2.2 Reply_CFM_Status
This is a response type service and shall be used in SUBORDINATE CFM to MASTER CFM
transactions only.
12.7.3.2.1.3.1 Request_CFM_Info
This is a request type service and shall be used in MASTER CFM to SUBORDINATE CFM
transactions only.
12.7.3.2.1.3.2 Reply_CFM_Info
This is a response type service and shall be used in SUBORDINATE CFM to MASTER CFM
transactions only.
12.7.3.2.1.4.1 Request_IBIT_Start
This is a request type service and shall be used in MASTER CFM to SUBORDINATE CFM
transactions only.
12.7.3.2.1.4.2 Reply_IBIT_Start
This is a response type service and shall be used in SUBORDINATE CFM to MASTER CFM
transactions only.
12.7.3.2.1.5.1 Request_IBIT_Result
This is a request type service and shall be used in MASTER CFM to SUBORDINATE CFM
transactions only.
12.7.3.2.1.5.2 Reply_IBIT_Result
This is a response type service and shall be used in SUBORDINATE CFM to MASTER CFM
transactions only.
12.7.3.2.1.6.1 Test_Message
This is a request type service and shall be used in a transaction between any two CFM’s. It basically
follows the protocol scheme as outlined in section 12.7.3.2.1, except there are no directional or
hierarchical restrictions on the use of this service.
12.7.3.2.1.6.2 Test_Message_Acknowledge
This is a response type service and shall be used in a transaction between any two CFM’s. It basically
follows the protocol scheme as outlined in section 12.7.3.2.1, except there are no directional or
hierarchical restrictions on the use of this service (see also section 12.7.3.2.2.1.1). It shall be
transmitted as a RESPONSE message so as to acknowledge the original REQUEST message
(“Test_Message”).
The basic protocol relating to these services dictates that REQUEST messages propagate from a
MASTER source to SUBORDINATE destination e.g. MMM (PU) to remote CFM (MSU or PE)
transactions. Similarly, the basic protocol also dictates that RESPONSE messages propagate from a
SUBORDINATE source to MASTER destination e.g. remote CFM (MSU or PE) to MMM (PU)
transactions. This is illustrated in the diagram in Figure 114, below. Note, in this example, REMOTE
refers to a remote download target, which could be an MSU or PE, subject to the system image
download method used. In the case of communication configuration transfers, REMOTE refers to a
MSU only.
This section covers the protocol requirements for the support of the Image download service only.
The additional protocol required to manage the Image download process is not included in this
section, as this would constitute a requirement of the Image download management.
12.7.3.2.2.1.1 Load_Image
This is a request type service and shall be used in MASTER CFM to PE or MASTER CFM to MSU
transactions only, where the destination is taken to be the image transfer endpoint.
12.7.3.2.2.1.2 Load_Image_Acknowledge
This is a response type service and shall be used in PE to MASTER CFM or MSU to MASTER CFM
transactions only.
Following the receiving status of each fragmented blocks the corresponding action shall be:
This section covers the protocol requirements for the support of the Routing Table download service
only. The additional protocol required to manage the Routing Table download process is not included
in this section as this would constitute a requirement of the Routing Table download management.
The Routing Table shall be processed at the end of the transfer. That means if the Routing Table
must be fragmented: This shall be a two phases process
- A first Routing Table is sent with only information concerning the direct sender/receiver TC’s. This
first table shall not be fragmented,
If the fragmentation is not needed, the Routing Table shall be sent in a unique block.
12.7.3.2.2.2.1 Load_Routing_Table
This is a request type service and shall be used in MASTER CFM to SUBORDINATE CFM
transactions only.
12.7.3.2.2.2.2 Load_Routing_Table_Acknowledge
This is a response type service and is used in a SUBORDINATE CFM to MASTER CFM transaction.
Following the receiving status of each fragmented blocks the corresponding action shall be:
The General Time Management protocol is applicable to the Time Management services except the
Time Configuration that applies the General Download Management service. The basic protocol
relating to these services dictates that REQUEST messages propagate from a SUBORDINATE
source to MASTER destination e.g. remote CFM to MMM transactions. Similarly, the basic protocol
also dictates that RESPONSE messages propagate from a MASTER source to SUBORDINATE
destination e.g. MMM to remote CFM transactions. This section covers the protocol requirements for
the support of Time Management services only. The additional protocol required for use by the Time
Management process is not included in this section, as this would constitute a requirement. The basic
MLI protocol is illustrated in the diagram in Figure 115.
This section covers the protocol requirements for the support of the Time Configuration download
service only.
The General Download Management protocol shall be applicable to the Time Configuration download.
See 12.7.3.2.2.
The Time Configuration shall be processed at the end of the transfer. The Time Management shall be
processed when the whole table has been received and applied.
12.7.3.2.3.1.1 Load_Time_Configuration
This is a request type service and shall be used in MASTER CFM to SUBORDINATE CFM
transactions only.
This is a response type service and is used in a SUBORDINATE CFM to MASTER CFM transaction.
Following the receiving status of each fragmented blocks the corresponding action shall be:
12.7.3.2.3.2.1 Request_AGT
This is a request type service and shall be used in SUBORDINATE CFM to system external
(MASTER) transactions only.
12.7.3.2.3.2.2 Reply_AGT
This is a response type service and shall be used in system external (MASTER) to SUBORDINATE
CFM transactions only.
12.7.3.2.3.3.1 Ready_For_ALT_Synchro
This is a request type service and shall be used in SUBORDINATE CFM to MASTER CFM
transactions only.
12.7.3.2.3.3.2 Start_ALT_Synchro
This is a response type service and shall be used in MASTER CFM to SUBORDINATE CFM
transactions only.
12.7.3.2.3.4.1 Request_ALT
This is a request type service and shall be used in SUBORDINATE CFM to MASTER CFM
transactions only.
12.7.3.2.3.4.2 Reply_ALT
This is a response type service and shall be used in MASTER CFM to SUBORDINATE CFM
transactions only.
12.7.3.2.3.5.1 Request_AGT_ALT
This is a request type service and shall be used in SUBORDINATE CFM to MASTER CFM
transactions only.
12.7.3.2.3.5.2 Reply_AGT_ALT
This is a response type service and shall be used in MASTER CFM to SUBORDINATE CFM
transactions only.
This section covers the protocol requirements for the support of the Network Configuration download
service only.
The General Download Management protocol shall be applicable to the Network Configuration
download. See 12.7.3.2.2.
12.7.3.2.4.1.1 Load_Network_Configuration
This is a request type service and shall be used in MASTER CFM to SUBORDINATE NSM
transactions only.
This is a response type service and is used in a SUBORDINATE NSM to MASTER CFM transaction.
Following the receiving status of each fragmented blocks the corresponding action shall be:
12.7.3.2.4.2.1 Request_Network_Status
This is a request type service and shall be used in MASTER CFM to SUBORDINATE NSM
transactions only.
12.7.3.2.4.2.2 Reply_Network_Status
This is a response type service and shall be used in SUBORDINATE NSM to MASTER CFM
transactions only.
This section covers the protocol requirements for the support of the Power Switches Configuration
download service only.
The General Download Management protocol shall be applicable to the Power Switches
Configuration download. See 12.7.3.2.2.
12.7.3.2.5.1.1 Load_Power_Switches_Configuration
This is a request type service and shall be used in MASTER CFM to SUBORDINATE PCM
transactions only.
This is a response type service and is used in a SUBORDINATE PCM to MASTER CFM transaction.
Following the receiving status of each fragmented blocks the corresponding action shall be:
12.7.3.2.5.2.1 Request_Power_Switches_Status
This is a request type service and shall be used in MASTER CFM to SUBORDINATE PCM
transactions only.
12.7.3.2.5.2.2 Reply_Power_Switches_Status
This is a response type service and shall be used in SUBORDINATE PCM to MASTER CFM
transactions only.
13.4 IDL
IDL as defined by the CORBA standard (refer to [6]) is being used for all the service and data type
definitions of this standard. Together with the language mapping specification, which is also provided
by this standard, a unique definition of services and data types for a couple of languages (C, C++,
Ada, Java, SmallTalk) are provided with the IDL definitions.
This section just highlights a couple of points, which are required to understand the standard.
Size and range of the integer types int and unsigned int types are not defined by the CORBA
standard. In order to avoid incompatibility, these types are not used within this standard.
The CORBA standard further defines long long and unsigned long long types. As it has turned out
that not all environments allow the usage of these types and a manual mapping may lead to
inconsistencies, also these types are not used by this standard.
The other basic types are being used as defined by the CORBA standard.
In order to provide the correct name scopes, the interface construct of IDL is being used. The
complete IDL definition of the interfaces therefore takes the following form:
// IDL:
interface APOS {
// IDL definition of all APOS services
}
interface SMOS {
// IDL definition of all SMOS services
}
interface SMBP {
// IDL definition of all SMBP services
}
interface MOS {
// IDL definition of all MOS services
13.4.3 Limitations
In order to be applicable for common safety schemes like SPARK, the ‘in out’ parameter mode is not
used and where required it is replaced by two parameters, one for mode ‘in’ and one for mode ‘out’.
As ASAAC provides a standard for avionics an important requirement is that memory consumption
must be bounded, therefore all service parameters that are of parameter mode ‘out’, are bounded.
This means that any IDL sequence used is associated with a maximum size and any IDL array has a
static size.
This section is defining all data types. The parameter descriptions in sections 11 and section 12 are
referencing these data type definitions by the type name. Therefore this section is normative for all
service definitions.
AcessInfo
AccessRights
‘W’: Write
‘D’: Delete
‘F’: deFault
AccessType
Action
Address
Description The definition of an Address is determined by the processor architecture. The only
use of the Address type is to reference message buffers and for error information.
Domain Values NIL: This constant is reserved for variable initialisation. It does not identify any object.
AlarmType
AlarmType
Domain Values CYCLIC_ALARM means the caller will be interrupted on a cyclic basis, defined in the
parameter time_tick_resolution, by the timer.
ONLY_ONCE_ALARM means that the timer will interrupt the caller only the first time
(after time_tick_resolution).
BitFinalResult
BitResult
Domain Values The content of each switch item is defined in the union BitResultAll.
BitResultAll
Domain Values The content of each switch item is defined by the SMOS Bit definitions.
BitReturnStatus
BitReturnStatus
BitTestStatus
BIT_PASSED signifies that the test has completed and passed within the last
StartCBIT invocation.
BIT_ONGOING – the specified test is PARTITIONED and has not completed within
the last StartCBIT invocation.
BIT_FAILED – the specified test has failed within the last StartCBIT invocation
BitType
Bool
BreachType
BreachType
Category
CbitDetailedResult
CbitModeType
Description This allows the caller to specify the method to use to run a test - either to completion
or in a series of defined sections called partitions.
CbitResult
CfmDescription
CfmDescription
CfmType cfm_type ;
// time_out for processing this cfm for this download
TimeInterval time_out ;
DownloadChannelType download_channel_type ;
DownloadChannel download_channel ;
DownloadType download_type ;
DownloadDescription download_description ;
} ;
Description Properties of the CFM.
CfmInfo
CfmInfoReturnStatus
CfmMliChannel
CfmMliChannel
PublicId tc_sending ;
PublicId tc_receiving ;
// time_out for processing this cfm
TimeInterval time_out ;
} ;
Description Information on the MLI channel of a CFM Component.
CfmPartNo
CfmResources
CfmSerialNo
CfmStat
} ;
Description Description of the CFM Status depending of the type of the CFM
CfmStatus
CfmStatusGeneric
OpeStatus pbit_status ;
OpeStatus cbit_status ;
OpeStatus ibit_status ;
OpeStatus rtg_download_status ;
OpeStatus msl_download_status ;
} ;
Description Description of the Status of CFM that conforms to the Generic CFM Model
CfmStatusPeGeneric
CfmStatusReturnStatus
CfmStatusReturnStatus
CfmType
Data Type Definition enum CfmType { PCM , NSM , MMM , DPM , SPM , GPM };
Description Values defined internally by the Blueprints for identifying the CFM type.
CfmVersion
CharacterSequence
NULL_CHARACTER_SEQUENCE
NULL_CHARACTER_SEQUENCE.size = 0 ;
This constant provides an empty character sequence for the Purpose of variable
initialisation.
ClassificationLevel
ClassificationLevel
ClockInfo
TimeInterval sync_wave_period ;
unsigned long max_of_missed_alt ;
TimeInterval range_for_alt ;
TimeInterval alt_res_bound ;
TimeInterval max_alt_diff ;
TimeInterval timeout ;
} ;
Description ClockInfo describes the properties of a module local clock.
ClockMode
ConfigTableDescription
DeleteOption
DeleteOption
Description NORMAL: Only deletes when all open accesses have been closed.
IMMEDIATELY: Users of the file effected lose all accesses and resources
(deleteFile)
DownloadChannel
DownloadChannelType
Description Values defined internally by the Blueprint database System for identifying the type of
channel, which is used to download.
DownloadDescription
DownloadType
DownloadType
ErrorCode
Description The error code provides a detailed identification of an error. This information is used
for debugging and as fault localisation data. In the first case it is implementation
dependent, in the second case system (function) dependent data. Therefore, a
standardisation of the error code values it not required. Only the domain values
define a rough localisation between architectural components.
ErrorInfo
ErrorType
ErrorType
SMOS_ERROR ,
SMBP_ERROR ,
PROCESSOR_ERROR ,
HW_RESOURCE_ERROR ,
HW_FAILURE ,
FATAL_ERROR
} ;
Description The error type provides the classification of an error.
EventStatus
In the case an event is set, any thread waiting for the event is transferred into thread
ready status.
If an event is reset any thread waiting for the event is kept in thread status waiting
until the event is set.
EventType
Domain Values No special values are associated with this parameter., implementation dependent.
FaultReport
Domain Values The content of the Fault Report GLI message is dependent on the Fault Localisation
method being applied, which is a system / implementation depended information.
FederatedClockInfo
FunctionId
GliAliveParameter
GliMessage
GliMessageId
GliMessageParameter
GliMessageParameter
PublicId config_acquired ;
case Run_Configuration :
PublicId config_to_be_run ;
case Configuration_Running :
PublicId config_run ;
case Change_Configuration :
PublicId configuration_event ;
case Configuration_Changed :
PublicId new_configuration ;
case Request_New_Cfm :
unsigned long no_parameter;
case Cfm_Allocated :
PublicId Allocated_Cfm_Id ;
case Deallocate_Cfm :
PublicId Deallocate_Cfm_Id ;
case Cfm_Deallocated :
PublicId Deallocated_Cfm_Id ;
case Fault_Report :
FaultReport the_fault ;
case Request_BIT_Result :
BitType type ;
case Report_BIT_Result :
BitResult result ;
case Are_You_Alive:
case I_Am_Alive:
GliAliveParameter alive_param;
case Request_SC :
PublicId request_sc_tls_id ;
case SC_Response :
Bool response ;
case DH_Send_M :
case DH_Send_X :
case DH_Send_XimodM :
case DH_Send_XjmodM :
unsigned long key ;
case Request_Key :
PublicId request_key_tls_id ;
case Send_Key :
unsigned long key_array[ 10 ];
} ;
Description Definition of parameter of GLI messages depending of the GliMessageId
GsmConfigData
IbitDetailedResult
IbitResult
IdentAposService
IdentAposService
APOS_terminateErrorHandler ,
APOS_suspendSelf ,
APOS_startThread ,
APOS_stopThread ,
APOS_lockThreadPreemption ,
APOS_unlockThreadPreemption ,
APOS_getThreadStatus ,
APOS_createFile ,
APOS_deleteFile ,
APOS_openFile ,
APOS_closeFile ,
APOS_getFileAttributes ,
APOS_readFile ,
APOS_writeFile ,
APOS_createDirectory ,
APOS_deleteDirectory ,
APOS_seekFile ,
APOS_lockFile ,
APOS_unlockFile ,
APOS_getFileBuffer ,
APOS_releaseFileBuffer ,
APOS_setPowerSwitch ,
APOS_resetPowerSwitches ,
APOS_getPowerSwitch ,
APOS_logMessage ,
APOS_raiseApplicationError ,
APOS_getErrorInformation,
number_of_APOS_services
} ;
Description All APOS services are enumerated in this type.
ImageDescription
ImageDescription
InputLocalParameters
InterfaceConfigurationData
InterfaceDescription
Description Describes the resource requirements of the Interface depending on the interface type.
InterfaceData
InterfaceData
InterfaceType
IOoperation
LoadFileResult
LoadInstructions
LoadInstructions
LockStatus
Log
The maximum length of a fault log is 255 characters plus a NULL termination
character.
LogMessageType
LogReturnStatus
Description
MemoryUsage
Description Determines the type of memory access that a virtual memory area is allowed to have
to an attached region.
MliChannel
MSLStatus
MSL_FAULT_LOG_SUCCESS ,
MSL_TIMER_NO_ALARM ,
MSL_TIMER_INVALID_ALARM ,
MSL_TIMER_INVALID_ID ,
MSL_IO_FAILED ,
MSL_IO_BUSY ,
MSL_INVALID_CALL
} ;
Description The service returns the status of the File Service request
NetworkConfigDescription
NetworkDescriptor
network, which is a unique value within the system used to identify a particular
network
port, which is a unique value within the CFM used to identify a particular interface
connected to a network.
NetworkInterface
NetworkInterface
NetworkPortFinalStatus
NetworkPortState
NetworkPortStatus
NiiReturnStatus
NiiReturnStatus
NetworkStatus
Node
Description A Node is a handle to provide access to specific information from the RTBP. The
SMBP services implement the access to the RTBP as a tree.
NodeList
OctetSequence
OliChannel
OliMessageId
OliMessage
OliMessageParameter
OliMessageParameter
ReplyFileReadPayload reply_read_file ;
case RequestMliDownload:
RequestRemoteMliDownload request_mli_download ;
case ReplyMliDownload:
ReplyRemoteMliDownload reply_mli_download ;
} ;
Description Definition of parametrs of OLI message depending of OliMessageId.
OliMliChannel
OpeStatus
OutputRemoteParameters
OutputRemoteParameters
case IBIT_RESULT :
IbitResult interruptive_bit_result ;
};
Description Description of output parameters associated to a remote service Id
PbitDetailedResult
PbitResult
PeIdReturnStatus
PeInfoReturnStatus
PeResources
A.1.1.1. PeStatus
PeType
PoolType
PowerSwitch
PowerSwitchReturnStatus
ProcessDescription
Timeout specifies the maximum time create process may take to retrieve the process
code (via OLI) and complete the process creation.
PrivateId
Description Any identifier that is used only at a single interface is a private identifier. Its particular
value is completely left to the discretion of the producer of the identifiers value being
responsible for controlling the objects the identifier is referring to.
PrivateId
PublicId
Description Any value that is referencing an object is an identifier. If that the value is used at
more than one interface, then this identifier is a public identifier. Its value can
reference a specific object from several components. For instance the identifier value
of a thread shows up in the application process at the APOS interface and the same
value shows up at the SMBP and SMOS interfaces in a GSM process configuring the
application process.
PublicIdSet
Description The set consists of a bounded number of public identifiers. The maximum set size
OS_MAX_PUBLIC_ID_SET_SIZE is determined by the operating system
implementation. The set has an actual size that is the number of set elements. The
actual size is lower or equal to its maximum size.
The maximum size of a set of public identifiers is determined by the OS. For
compatibility a minimum of 256 shall be guaranteed for any implementation.
NULL_PUBLIC_ID_SET
This constant provides an empty set of public identifiers for the purpose of variable
initialisation.
QueuingDiscipline
In the case of QUEUING_DISCIPLINE_FIFO the threads are queued in the order the
service waitForSemaphore is called by the threads.
ReadFileResult
RegionID
RemoteServiceId
ReturnStatus
Description The return value provides information on the successful completion of a APOS thread
service.
ResourceReturnStatus
ResourceReturnStatus
SecurityInfo
SecurityRating
SeekMode
ServiceAccessList
Description Sorted array of all APOS services mapped onto the index domain of a fixed sized
array of boolean values:
The relation between the index and the corresponding APOS services is given by the
ServiceAccessList
SmliMessageId
SmliMessage
SmliMessageParameter
SmliMessageParameter
} ;
Description Definition of parameters of SMLI message
State
Description A State which is the new state reached after performing the actions specified in the
state machine.
Switch
SwitchOp
SwitchStat
SwitchStatus
SwitchStatus
SwitchStat status ;
} ;
Description Describes the state of a switch identified with the switch_Id
TcDescription
TcConfigurationData
TcConfigurationDMC
This structure is specific to the SPM and may be included in the union
TcConfigurationData when needed.
On sending side:The tc_id_routing shall route to the receiver, whereas the tc_id of
the TcDescription shall identify the DMC TC from the MOS_sendFragmentedTransfer
On receiving side: The tc_id_routing shall route to the receiver, whereas the tc_id of
the TcDescription may identify the DMC TC from the
MOS_receiveFragmentedTransfer
TC_ConfigurationData
ThreadDescription
ThreadSchedulingInfo
ThreadSchedulingInfo
ThreadStatus
A thread is in waiting state when waiting for some event to occur (sleep, resume,
semaphore, event) to get ready.
Time
Both a negative and positive time can be represented, but both values (sec & nsec)
must have the same polarity unless one is zero.
The value of Time will have only one way of representing it. This means that the
absolute value of the nsec value will be constrained to < 1,000,000,000.
Time
sec = 2^31-1
nsec = 999,999,999
TimedReturnStatus
TimerResources
TimerReturnStatus
TimeInterval
TransferDirection
Domain Values No special values are associated with this parameter., implementation dependent.
UseAccessRights
UseConcurrencePattern
UseOption
VcDescription
VcDescription
VirtualChannelType
VcMappingDescription
VcMappingDescription
VcToTcMappingDescription
14 Tailoring
The standards described in this document are subject to tailoring for any specific implementation. The
tailoring of the standards shall comply with the matrix described below. The standards are split into
software interfaces, sections of interfaces and individual services. Tailoring may take place at any of
these levels. The matrix defines each of these components and provides details of the compatibility
requirements. This allows a specific implementation to justify the development approach taken. This is
described in terms of the following four classes:
A Mandatory,
D Optional.
For any particular implementation, this matrix must be completed, with compliance to each entry
being stated in the Compliancy column, either YES or NO being used to indicate this.
APOS A
SMOS B
SMBP B
MOS C
SMLI B
GLI B
MLI B
OLI C
APOS
Thread Management C
sleep C
sleepUntil C
terminateSelf C
getMyThreadId C
startThread C
suspendSelf C
lockThreadPreemption C
unlockThreadPreemption C
stopThread C
getThreadStatus C
Time Management A
getAbsoluteLocalTime A
getRelativeLocalTime A
Synchronisation C
createSemaphore C
deleteSemaphore C
waitForSemaphore C
postSemaphore C
getSemaphoreStatus C
getSemaphoreId C
createEvent C
deleteEvent C
setEvent C
resetEvent C
waitForEvent C
getEventStatus C
getEventId C
Fault Handling B
logMessage B
raiseApplicationError B
getErrorInformation B
Communication A
sendMessageNonblocking A
receiveMessageNonblocking A
sendMessage A
receiveMessage A
lockBuffer C
sendBuffer C
receiveBuffer C
unlockBuffer C
waitOnMultiChannel B
File Handling C
createFile C
deleteFile C
openFile C
closeFile C
getFileAttributes C
readFile C
writeFile C
createDirectory C
deleteDirectory C
seekFile C
lockFile C
unlockFile C
Power Conversion C
setPowerSwitch C
resetPowerSwitch C
getPowerSwitchStatus C
SMOS
createProcess B
createThread B
runProcess B
stopProcess B
destroyProcess B
setSchedulingParameters B
getThreadState B
Fault Management B
getError B
activateErrorHandler B
VC Configuration B
createVirtualChannel B
destroyVirtualChannel B
attachChannelTo ProcessOrThread B
detachAllThreadsOf ProcessFromVc B
attachTransferConnection B
ToVirtualChannel
detachTransferConnection B
FromVirtualChannel
Network Configuration B
configureInterface B
createTransferConnection B
destroyTransferConnection B
getNetworkPortStatus B
Security Management C
getPMData C
returnPMData C
getAuditData C
erasePhysicalMemory C
getPbitResult B
startCbit B
getCbitResult B
startIbit B
GetIbitResult B
CFM Information B
getMyCfmStatus B
getMyCfmInfo B
getMyPeId B
requestDownloadToCfm B
getRemoteInfo B
Time Management B
configureClock B
attachFederatedClock B
Logging Management B
getLogReport B
writeLog B
readLog B
SMBP
getRootNode B
readNode B
getAttributes B
getChildNodes B
getLength B
item B
RTBP Tree B
MOS
Timer C
getAbsoluteLocalTime B
getRelativeLocalTime B
setupTimer C
startTimer C
stopTimer C
readTimer C
Device Services B
readLogDevice B
writeLogDevice B
Callback Services C
registerCallback C
enableCallback C
disableCallback C
deleteCallback C
BIT B
startCbit B
startIbit B
getCbitResult B
getIbitResult B
getPbitResult B
CFM Resource C
getCfmStatus C
getCfmInfo C
getMyPeId C
getPeInfo C
Communication B
configureInterface B
configureTransfer B
sendTransfer B
receiveTransfer B
receiveNetwork C
sendFragmentedTransfer D
receiveFragmentedTransfer D
ConfigureFragmented Transfer D
destroyTransfer B
getNetworkPortStatus C
Bespoke Extension D
addSEP D
createRegion D
deleteRegion D
detach D
attach D
attachAt D
createVM D
deleteVM D
getMyVM D
createContext D
deleteContext D
switchContext D
enterCriticalSection D
leaveCriticalSection D
SMLI
Request_Lc_Change B
Lc_Changed B
Signal_For_Lc_Change B
Ready_For_Lc_Change B
Security_Data_Written C
SM_Config_Complete C
Distant_Error_Event C
GLI
Load_Configuration B
Configuration_Loaded B
Stop_Configuration B
Configuration_Stopped B
Request_New_CFM C
New_CFM_Allocated C
Deallocate_CFM C
CFM_Deallocated C
Run_Configuration B
Configuration_running B
Start_IBIT B
IBIT_Results B
Fault_Report B
Are_You_Alive B
I_Am_Alive B
RequestSC C
SCResponse C
DH_Send_M C
DH_Send_X C
DH_Send_XimodM C
DH_Send_XjmodM C
RequestKey C
SendKey C
MLI
RequestPBITResult B
RequestCfmStatus B
RequestCFMInfo B
TestMessage B
LoadImage B
LoadRoutingTable B
LoadTimeConfiguration B
RequestIBITStart B
RequestIBITResult B
RequestAGT C
ReadyforALTSynchro C
RequestALT C
RequestAGTALT C
LoadNetworkConfiguration B
RequestNetworkStatus B
LoadPowerSwitches Configuration B
RequestPowerSwitches Status B
TC Header C
OLI
RequestReadFile C
ReplyReadFile C
RequestRemoteMLIFile Download C
ReplyRemoteMLIFile Download C
VC Header C
Graphics
Tag Language C
Annex A AGL
(Normative)
DP DP GP
App App
VC Mgmt VC Mgmt
AGL Interpreter
Rendering Software
Comms Comms Graphics
Services Services Accelerator
AGL
A.2.1. Overview
In the tables below, tag and enumeration values are included for the ASAAC graphical command set.
This is based on OpenGL Version 1.1 command set (see reference [8]). OpenGL is a large and
complex graphics library in comparison to the graphics functionality currently used in aircraft display
systems, and for most of these displays (especially those in the flight deck), only a fraction of the
OpenGL commands would be required. Therefore, this document defines a ‘minimum set’ of graphical
commands/functions necessary for current and projected future display systems. The aim being to
reduce LCC by reducing the overall complexity, and therefore cost of the GPM, while still ensuring it
as the required complexity to fulfil the full range of requirement encountered in avionic application.
It is suggested that the complexity of the tag language be kept to a minimum in the following ways
and/or the following certification issues be addressed: -
System requirements – Only commands representing functionality identified as being required (or
likely to be required) as part of aircraft displays should be implemented. However it is admitted that
this task is difficult because future requirements are somewhat fluid.
Data formats – COTS graphical languages, such as OpenGL, support many different data types and
formats, both in its interface and in internal conversions. This allows programming flexibility and
provides maximum support for porting legacy applications. However, some of the formats and
conversions introduce inefficiency, making execution times much less deterministic. Supporting many
data formats also introduces a large volume of code, most of which may never be used in a particular
system. It is therefore suggested that AGL identify only the efficient data formats and types which
meet system requirements and are likely to be directly supported by hardware acceleration.
Efficiency – It may be desirable to remove functionality for certain systems to increase throughput. For
example 3D transforms, depth buffering and clipping planes are not required for 2D display systems.
However the CFM inter-change requirements of an IMA system is unlikely to allow this.
2D 3D I E CC GF TM IC A V CV
AGL_BEGIN glBegin X
AGL_END glEnd X
AGL_VERTEX2F glVertex2{sifd}{v} X X
AGL_VERTEX3F glVertex3{sifd}{v} X
AGL_VERTEX4F glVertex4{sifd}{v} X
AGL_RECT glRect{sifd}v X X
AGL_ROTATE glRotate{fd} X X
AGL_TRANSLATE glTranslate{fd} X X
AGL_SCALE glScale{fd} X X
AGL_MULT_MATRIX glMultMatrix{fd} X
AGL_LOAD_MATRIX glLoadMatrix{fd} X
AGL_LOAD_IDENTITY glIdentity X
2D 3D I E CC GF TM IC A V CV
AGL_MATRIX_MODE glMatrixMode X
AGL_PUSH_MATRIX glPushMatrix X
AGL_POP_MATRIX glPopMatrix X
AGL_DEPTH_RANGE glDepthRange X
AGL_VIEWPORT glViewport X
AGL_COLOR_3UB glColor3{ub}{v} X X
AGL_SHADE_MODEL glShadeModel X
AGL_CLIP_PLANE glClipPlane X X
AGL_RASTER_POS2F glRasterPos2{sifd}{v} X
AGL_RASTER_POS3F glRasterPos3{sifd}{v} X
AGL_RASTER_POS4F glRasterPos4{sifd}{v} X
AGL_BITMAP glBitmap X
AGL_POINT_SIZE glPointSize X
AGL_LINE_WIDTH glLineWidth X
AGL_LINE_STIPPLE glLineStipple X
AGL_CULL_FACE glCullFace X
AGL_READ_BUFFER glReadBuffer X
AGL_READ_PIXELS glReadPixels X
AGL_DRAW_PIXELS glDrawPixels X
AGL_COPY_PIXELS glCopyPixels X X
AGL_PIXEL_ZOOM glPixelZoom X X
AGL_TEX_PARAMETER glTexParameter{if}{v} X
AGL_TEX_ENV glTexEnv{if}{v} X
AGL_TEX_COORD1F glTexCoord1{sifd}{v} X X
AGL_TEX_COORD2F glTexCoord2{sifd}{v} X X
2D 3D I E CC GF TM IC A V CV
AGL_TEX_COORD3F glTexCoord3{sifd}{v} X
AGL_TEX_COORD4F glTexCoord4{sifd}{v} X X
AGL_TEX_GEN glTexGen{ifd}{v} X X
AGL_TEX_IMAGE1D glTexImage1D X
AGL_TEX_IMAGE2D glTexImage2D X
AGL_SCISSOR glScissor X
AGL_STENCIL_FUNC glStencilFunc X
AGL_STENCIL_OP glStencilOp X
AGL_DEPTH_FUNC glDepthFunc X
AGL_BLEND_FUNC glBlendFunc X X
AGL_CLEAR glClear X
AGL_CLEAR_COLOR glClearColor X
AGL_CLEAR_DEPTH glClearDepth X
AGL_CLEAR_STENCIL glClearStencil X
AGL_DRAW_BUFFER glDrawBuffer X
AGL_STENCIL_MASK glStencilMask X
AGL_NEW_LIST glNewList X
AGL_END_LIST glEndList X
AGL_DELETE_LISTS glDeleteLists X
AGL_CALL_LIST glCallList X
AGL_GEN_LISTS glGenLists X
AGL_IS_LIST glIsList X
AGL_LIST_BASE glListBase X
AGL_ENABLE glEnable X
AGL_DISABLE glDisable X
AGL_FINISH glFinish X
2D 3D I E CC GF TM IC A V CV
AGL_FLUSH glFlush X
AGL_HINT glHint X
AGL_GET_ERROR glGetError X
AGL_OPEN alOpen X
AGL_MAKE_CONTEXT alMakeContext X
AGL_MAKE_WINDOW alMakeWindow X
AGL_ATTACH alAttach X
AGL_SWAP_BUFFERS alSwapBuffers X
AGL_BUFFERS_SWAPPED alBuffersSwapped X
AGL_GET_FRAME_USE alGetFrameUse X
AGL_WAIT_FOR_SWAP alWaitForSwap X
AGL_VLENABLE vlEnable X
AGL_VLDISABLE vlDisable X
AGL_VBLEND_FUNC vlBlendFunc X
AGL_VLVIDEO_STANDARD vlVideoStandard X
AGL_VLVIDEO_IN vlVideoIn X
AGL_VLVIDEO_PORT vlVideoPort X
AGL_VLVIDEO_POS vlVideoPos X
AGL_VLVIDEO_ZOOM vlVideoZoom X
AGL_VLVIDEO_PARAM vlVideoParam X
AGL_VLVIDEO_IMAGE vlVideoImage X
AGL_VLGET_ERROR vlGetError X
TABELLE
I Image processing
alBuffersSwapped The return parameter indicates the state of the buffer swap. When an alSwapBuffers command
is issued, a buffer swap request is made, and is pending until the swap occurs. A return value of
FALSE indicates the swap has not yet occurred.
alGetFrameUse The return parameter gives the percentage of frame usage (drawing of graphics) in the current
frame at the selected frame rate. A value greater than 100% signifies overframing.
alOpen Begin communication with a graphics resource (in ASSAC a particular GPM)
alSwapBuffers Requests the exchange of the front and back framebuffers. The exchange does not occur
immediately, but shall take place at the end of the frame.
alWaitForSwap Waits for the framebuffer swap to occur. This takes place at the end of the frame. The end of the
frame may be defined by a vertical retrace, or its equivalent for the particular type of display
being driven. The end of frame may be synchronised with external timings and/or video.
The return parameter gives the percentage of frame usage (drawing of graphics) in the current
frame at the selected frame rate. A value greater than 100% signifies overframing.
vlBlendFunc Selects the blending function (mix) performed. The parameters sfactor, dfactor define the
blend operations to be performed according to the following equation:
s*S + d*D
Where S and D are the RGB triplets of the framebuffer and video/fill color channels
respectively, and the s, d parameters are defined as follows (Alpha is the intensity component
sourced from the framebuffer):
vlEnable, vlDisable Enables/disables the capability identified by cap. The parameters values can be as follows:
VL_VIDEO_INPUT: Enables the video input to the mixer. When disabled the fill color is used
instead of video. Defaults to disabled.
VL_ALPHA_OVERLAY: Enables the overlay display of an image stored in the alpha planes
of the framebuffer. Defaults to disabled
vlVideoStandard - Associates the video standard identified by pname with the source identified by source. The
pname parameters are as follows:
vlVideoAspectRatio - Selects the video aspect ratio by dividing width by height and matching the ratio to
capabilities of the hardware. e.g. 1/1, 768/512 (=4/3).
vlVideoPort - Selects the size and position of a video window. The video to which the window applies is
specified by source.
vlVideoPos - Specifies the x and y current position within the video image. This allows a video image to be
panned around within a video window. The video to which the position applies is specified by
vlVideoZoom - Specifies the x and y zoom factors by which to scale a video image. The video to which the
scaling applies is specified by source. Parameters xfactor and yfactor are clamped to the
implementation dependent limits of resize capable.
vlVideoParam - Specifies video parameters. The video to which the parameters apply is specified by source.
GL_LUMINANCE4_ALPHA4 GL_LUMINANCE_ALPHA *
GL_LUMINANCE8_ALPHA8 GL_LUMINANCE_ALPHA
GL_INTENSITY GL_RED
GL_INTENSITY8 GL_RED
GL_R3_G3_B2 GL_RGB *
GL_RGB4 GL_RGB *
GL_RGB5 GL_RGB *
GL_RGB8 GL_RGB
GL_RGBA4 GL_RGBA *
GL_RGB5_A1 GL_RGBA *
GL_RGBA8 GL_RGBA
Those marked with * require conversion from 8-bits to the type defined by internal Format, so
although reducing the required texture memory, they may take longer to load. Note that the internal
Format is only a suggestion as to how the image should be stored for some of the types.
All mipmap levels in a set of textures shall be of the same format (i.e. all share the internal Format
and border settings of texture level 0), and each level reduce in size to ¼ area of the previous level.
This assists in determining the memory requirements for a full set of mipmap textures.
The maximum texture size should be limited to 1024*1024 texels (1026*1026 including border). This
sets the number of mipmap levels to 10, and requires approximately 6 Mbytes of texture memory (at
32 bits per texel). Note that increasing the texture size (say to 2048*2048 almost quadruples the
memory requirement. Hardware sometimes uses the same graphics memory for texture, stencil,
depth and perhaps frame buffers, so the texture requirements should be defined to be consistent with
the other contenders for this type of memory. An example allocation might be:
- Total: ~ 20 Mbytes.
If 32 Mbytes of graphics memory were fitted, the above allocation allows some scope for auxiliary
buffers or expanding depth buffer depth.
The display frame is governed by the display output stage of the graphics system. With a double
(frame buffer) buffered system, graphics are drawn to the non-displayed (back) buffer, and then a
buffer swap is performed (exchanging the front and back buffers) to produce a display. This is done
on a cyclic basis at a high rate to provide the smooth animation required.
An application running as a remote producer of graphics commands cannot run at a faster rate than
the graphics consumer, and is therefore limited by the rate of the consumer. Synchronisation and
control of display frame rated can be achieved by use of the alSwapBuffers and alWaitForSwap
commands.
NATO UNCLASSIFIED i
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
Issue 01
IPR_Category: 1
in accordance with Document n°25/SPAé/ST/AVI/IN, dated 04/08/99
Document N° : ASAAC2-STA-32410-002-SWG
Pages : 499
NATO UNCLASSIFIED 1
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
Table of Contents
1 Introduction .............................................................................................................................. 4
1.1 Scope of this Document.......................................................................................................... 4
1.2 Work Package Objectives ....................................................................................................... 4
1.3 Software Standards ................................................................................................................. 4
1.4 Abbreviations ........................................................................................................................... 5
2 Related Documents ................................................................................................................. 6
3 ASAAC Software Architecture ............................................................................................... 7
3.1.1 Software Architecture Overview ............................................................................................ 7
4 Software Components ............................................................................................................. 9
4.1 Functional Applications .......................................................................................................... 9
4.1.1 Justification for Functional Applications.............................................................................. 9
4.2 Application Management ........................................................................................................ 9
4.2.1 Justification for Application Management ............................................................................ 9
4.3 Operating System .................................................................................................................... 9
4.3.1 Justification for Operating System ........................................................................................ 9
4.4 Generic System Management .............................................................................................. 10
4.4.1 Justification for Generic System Management .................................................................. 10
4.5 Runtime Blueprints ................................................................................................................ 11
4.5.1 Justification for Runtime Blueprints ................................................................................... 11
4.6 Module Support Layer ........................................................................................................... 11
4.6.1 Justification for Module Support Layer .............................................................................. 11
5 Direct Interfaces ..................................................................................................................... 12
5.1 APOS: Application to Operating System Interface ............................................................ 12
5.1.1 Justification for APOS .......................................................................................................... 12
5.1.2 Justification for Identified Services ..................................................................................... 12
5.2 MOS: Module Support Layer to Operating System Interface ............................................ 13
5.2.1 Justification for MOS ............................................................................................................ 13
5.2.2 Justification for Identified Services..................................................................................... 13
5.3 SMOS: System Management to Operating System Interface............................................ 13
5.3.1 Justification for SMOS .......................................................................................................... 13
5.3.2 Justification for Identified Services ..................................................................................... 14
5.4 SMBP: System Management to Blueprint Interface ........................................................... 14
5.4.1 Justification for SMBP .......................................................................................................... 14
5.4.2 Justification for the RTBP Grammar ................................................................................... 15
5.4.3 Justification for Identified Services..................................................................................... 15
6 Logical Interfaces .................................................................................................................. 16
6.1 OLI: Operating System Logical Interface ............................................................................ 16
6.1.1 Justification for OLI ............................................................................................................... 16
6.1.2 Justification for OLI Services ............................................................................................... 16
6.2 GLI: Generic System Management Logical Interface ........................................................ 16
6.2.1 Justification for GLI ............................................................................................................... 16
6.2.2 Justification for GLI Services ............................................................................................... 16
6.3 SMLI: System Management Logical Interface .................................................................... 17
6.3.1 Justification for SMLI ............................................................................................................ 17
6.3.2 Justification for SMLI Services ............................................................................................ 17
6.4 MLI: Operating System Logical Interface ............................................................................ 17
6.4.1 Justification for MLI .............................................................................................................. 17
6.4.2 Justification for MLI Services .............................................................................................. 18
7 Conclusion ............................................................................................................................. 19
NATO UNCLASSIFIED 2
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
List of Figures
Figure 1 - ASAAC Three Layer Software Architecture .............................................. 7
NATO UNCLASSIFIED 3
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
1 Introduction
This document is produced under the contract ASAAC Phase II Contract [7]. It is the second
deliverable associated with Work Package 32410, “Final Draft of Proposed Standards for Software”
and is the Rationale report for this Standard, which is included in Poste 3D of the contract.
The objective of work package WP32400 is to produce the final draft of the Standards that define an
IMA system, its architecture, software and the Common Functional Modules (CFMs) to operate within
it.
In order to obtain a set of software standards for an IMA core-processing system, it is not sufficient
merely to define a set of standards without giving a justification as to their selection or their content,
which is the objective of this document.
During ASAAC a common software model based on the concept of a layered software architecture
has been defined. Within this model, the layers are separated by standardised interfaces in order to
provide independence of these layers. Interfaces encapsulate a lower software layer and provide a
type of virtual machine view to a higher software layer. In this context, each interface provides a
generic set of services and resources. This supports the following top-level requirements as identified
in [8]:
Number Requirement
TLR_8 Interoperability
TLR_9 Interchangeability
NATO UNCLASSIFIED 4
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
Number Requirement
TLR_16 Security
1.4 Abbreviations
API Application Programming Interface
AC Aircraft
APOS Application to Operating System interface
ASAAC Allied Standard Avionics Architecture Council
BIT Built in Test
CFM Common Functional Module
GLI Generic system management Logical Interface
GSM Generic System Management
HW Hardware
IA Integration Area
ITM Integrated Test and Maintenance
MLI Module Logical Interface
MMM Mass Memory Module
MOS MSL to Operating System interface
MSL Module Support Layer
OLI Operating system Logical Interface
OS Operating System
OSL Operating System Layer
PCM Power Conversion Module
PE Processing Element
RE Resource Element
SMBP System Management to Blueprint interface
SMLI System Management Logical Interface
SMOS System Management to Operating System interface
SW Software
TLR Top Level Requirement
VC Virtual Channel
NATO UNCLASSIFIED 5
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
2 Related Documents
A) References to published standards
None.
None.
NATO UNCLASSIFIED 6
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
APOS
Aircraft Independent
Operating System Layer
Hardware Independent
MOS
Aircraft Independent
Module Support Layer
Hardware Dependent
The full ASAAC Software Architecture is more complex than that shown in Figure 2 and includes a
number of standardised interfaces, both direct and logical, and a number of software components that
have a standardised functional behaviour.
APOS APOS
AP S S AP
OS M Run Time Run Time M OS
B Blue Prints Blue Prints B
P P
Operating SM GSM GSM SM Operating
OS GLI OS
System System
OLI
Operating System Layer Operating System Layer
MOS MOS
Network
Interconnect
Fabric
NATO UNCLASSIFIED 7
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
Table 6 shows the standardised components that comprise the full ASAAC Software Architecture and
the interfaces between them. The interfaces in the application domain are not standardised, while the
interfaces in the domain of OSL and MSL are standardised. The components and their relationship are
shown in Figure 3 as well.
Application
Functional
Manager
\
RTBP
GSM
MSL
OS
to (columns)
not not
Functional
standardis standardis APOS null null null
Application
ed ed
not not
Application
standardis standardis APOS SMLI null null
Manager
ed ed
The remaining sections in this document provide the rationale behind including each of these
components within the ASAAC Software Architecture.
NATO UNCLASSIFIED 8
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
4 Software Components
The term "Functional Applications" relates to all functions that handle the processing of operational
data, e.g.
• Radar Applications,
• Mission Management,
• Stores Management,
• Vehicle Management System,
• Communication, Navigation and Identification.
Application Management covers that aspect of system management whose purpose is to control the
mission moding selection and the selection of modes within a particular mission.
The Real-Time OS provides the particular part of OSL functionality that controls the real-time
behaviour of the Processing Element and its associated resources.
• Process Management
Responsible for assigning memory segments to processes and ensuring integrity of
memory segments.
• Communication Services
NATO UNCLASSIFIED 9
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
Responsible for the Virtual Channel (VC) communication
• Synchronisation Services
Responsible for the control of semaphores and events
• Time Management
This includes the management of:
5 Time-out periods for blocking services
6 The time interval between periodic threads
• Thread Management
This includes the management of:
7 Scheduling
8 State transition
9 Deadline overrun detection
10 Thread queuing discipline
• Error Handling
Responsible to detect PE errors and to provide the error reporting functions.
• File Management Services
The GSM provides the basic functions that enable the system management at the RE, IA and AC
levels within a system to control the resources and behaviour of the ASAAC core.
• Health Monitoring
Required to detect the occurrence of faults.
• Fault Management
Required to identify, localise and contain any faults that occur during a mission as
well as log data for maintenance purposes.
• Configuration Management
Required to initialise and shutdown a system as well as performing reconfiguration
due to the receipt of mode change requests or failures.
• Security Management
Required to protect the integrity, availability and confidentiality of ‘protectively marked'
data as it is uploaded to, downloaded from and processed within a system.
NATO UNCLASSIFIED 10
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
4.5 Runtime Blueprints
The RTBP contain the data (e.g. process description, routing information, fault management data)
required to configure and manage the core processing on which it is hosted.
It is ultimately the Runtime Blueprints that provide the data that describe these states and the
transitions between them. This data comprises:
• Configuration Description
Defines a configuration status.
• Transition Definition
Provides a sequence of actions to be performed in order to transfer a GSM entity
from one configuration status into another configuration status.
• Configuration Data
Define the description of atomic configuration items.
• Fault Management Description
Defines the fault management policy and corrective actions.
• Security Management Description
Defines the security management policy.
In case an operating systems needs additional optional MOS services, the MOS is defined in a way
that there is no need for the layer above to have any knowledge about the implementation of the HW
provided of the MOS interface.
NATO UNCLASSIFIED 11
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
5 Direct Interfaces
• Communication Services
The use of virtual channels and the blueprint information enforces the modularity and
re-usability of application functions as virtual channels provide applications a way to
communicate transparent to the underlying resources and the kind and number of co-
operating application functions.
• Time Services
The time services provide basic time information on module, system and global time
in order to facilitate time synchronisation within a process, between application
functions and with external events.
• Thread Control Services
Threads represent the temporal characteristics of an application. The need to
prioritise processing within a single process justifies the utilisation of multiple threads.
• Synchronisation Services
The synchronisation services are required in order to support the implementation of
multi-threaded algorithms.
NATO UNCLASSIFIED 12
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
• Error Handling Services
Support the handling of errors in the application domain and synchronisation with the
handling of errors and faults in the domain of the ASAAC core.
• File Handling Services
Provide access to files on MMM.
• Power Control Services
Provide control of power switches on PCM.
It is important to mention, that the set of MOS services supports all ASAAC system properties required
by the Operating System to provide sufficient services to the applications via the APOS and to the
System Management functions via SMOS.
The MOS interface also provides for services and their behaviour, which allow the Operating System
Layer to be implemented and ported on an arbitrary hardware platform. Therefore, the MOS is divided
into a ‘Core MOS’ and ‘Optional MOS’ sub-sets. Additionally there are module specific subsets of
MOS services for PCM and MMM modules.
NATO UNCLASSIFIED 13
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
functions that are provided by the operating system, and the system management functions that are
provided by the Generic System Management.
The SMOS interface ensures the technology transparency for the operating system.
The SW standard (see [2]) defines the grammar, but not the format of the Runtime Blueprints. The
SMBP interface hides the project specific Runtime Blueprint implementation from the GSM. It
NATO UNCLASSIFIED 14
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
assumes that the implementation can be mapped to a tree and can be parsed with the standard
operations of a tree.
NATO UNCLASSIFIED 15
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
6 Logical Interfaces
It defines the necessary aspects and protocols necessary to promote interoperability of the modules
with one another and the provision of access to MMM localised files.
It defines the aspects and protocols necessary to promote interoperability of the GSM entities with one
another.
The protocols for the actions within one GSM entity, i.e. within one management hierarchy level are
left at the designers’ discretion. The GLI covers:
NATO UNCLASSIFIED 16
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
• Module Management
The allocation and de-allocation of module resources to integration areas.
• Fault Management
Health monitoring for sub-ordinate GSM instances and escalation of fault handling to
the super-ordinate GSM instance.
• Security Management
Key management between adjacent GSM management layers.
The Application Management as well as the Generic System Management consists of a set of
processes. The communication and synchronisation between these specific and generic parts of the
system management, which not necessarily need to be co-located on a PE is performed by the use of
virtual channels. This interface sets forth necessary protocols for the communication between
Application Management and GSM.
NATO UNCLASSIFIED 17
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
The MLI provides interoperability between modules. To meet the interoperability requirement the MLI
services as defined in ref. [2] are deemed necessary.
NATO UNCLASSIFIED 18
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
7 Conclusion
The document has justified the contents of the final draft of ASAAC Software Standards for the
aspects of Software Components and Software Interfaces.
The coverage of top-level requirements already listed in section 1.3 is provided by Table 7.
TLR_2 APOS
TLR_3.1 APOS
SMLI
SMOS
SMBP
TLR_3.2 MLI
SMOS
SMOS
SMBP
SMOS
MLI
TLR_9 OLI
GLI
SMLI
MLI
NATO UNCLASSIFIED 19
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
TLR_10 APOS
MOS
SMOS
SMBP
TLR_12 APOS
TLR_13.1 OLI
TLR_13.2 APOS
TLR_13.3 SMBP
TLR_13.4 APOS
SMOS
OLI
GLI
TLR_14.1 APOS
MOS
SMBP
TLR_14.2 GLI
Application Management
Runtime Blueprints
SMLI
NATO UNCLASSIFIED 20
NATO UNCLASSIFIED
Attachment 1 to
STANAG 4626 (Part II)
(Draft 1)
NATO UNCLASSIFIED 21