Face Technology PDF
Face Technology PDF
Face Technology PDF
You have a choice: you can either create your own future, or you can become the victim of a future
that someone else creates for you. By seizing the transformation opportunities, you are seizing the
opportunity to create your own future.
In the event of any discrepancy between text in this document and the official FACE Technical Standard, the FACE Technical
Standard remains the authoritative version for certification, testing by examination, and other purposes. The official FACE
Documents and Tools can be obtained at www.opengroup.org/face.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 iii
3 Functional Decomposition into UoPs ................................................................... 102
3.1 Introduction................................................................................................. 102
3.2 Portable Components Segment UoPs ......................................................... 103
3.3 Transport Services Segment UoPs .............................................................. 104
3.4 Platform-Specific Services Segment UoPs ................................................. 105
3.5 UoP Packaging............................................................................................ 105
3.6 Data Rights ................................................................................................. 106
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 vii
F.13 Segregation of Software Components ........................................................ 342
F.13.1 Segregation for Variability .......................................................... 343
F.13.2 Segregation for Criticality ........................................................... 343
F.13.3 Spatial/Temporal Partitioning (ARINC 653) .............................. 344
F.14 Limiting Qualification Impacts Through Configurability .......................... 345
F.14.1 Safety and Configuration Files (using Deactivated
Code) ........................................................................................... 345
F.14.2 Pre-Qualified Selection of Options at Run-Time
(including Initialization) .............................................................. 346
F.14.3 Dead Code versus Deactivated Code .......................................... 346
F.15 Test Programs ............................................................................................. 347
F.15.1 Requirements-Based Testing ....................................................... 347
F.15.2 Low-Level Software Requirements Testing ................................ 348
F.15.3 High-Level Software Requirements Testing ............................... 348
F.15.4 System Integration Testing .......................................................... 348
F.15.5 Hardware Integration Testing ...................................................... 349
F.15.6 Configuration and Setup Testing ................................................. 349
F.15.7 Information Interface Testing ...................................................... 350
F.15.8 Type Consistency Testing ........................................................... 350
F.15.9 Protocol Header Testing .............................................................. 350
F.15.10 Data Integrity Testing.................................................................. 350
F.15.11 Robustness Testing ...................................................................... 350
F.16 Lifecycle Support ........................................................................................ 351
F.16.1 Distribution of Software Maintenance Releases ......................... 352
F.16.2 Collection of Problem Reports .................................................... 352
F.16.3 Dissemination of Problem Reports .............................................. 352
F.16.4 Software Loading Instructions .................................................... 352
F.16.5 Software Compilation Instructions .............................................. 352
F.16.6 Software Users Manual ............................................................... 352
F.17 Documentation ............................................................................................ 353
F.18 Model-Based Engineering of Software ....................................................... 354
F.19 Special Considerations for the Use of Run-Times and
Frameworks ................................................................................................ 354
F.19.1 Language Run-Times .................................................................. 354
F.19.2 Frameworks ................................................................................. 355
F.20 Conclusion .................................................................................................. 356
List of Tables
Table 1: Function Parameter Direction ........................................................................................ 50
Table 2: Mapping Between TSS FACE Return Codes and ARINC 653 Return Codes ............... 53
Table 3: Mapping Between TSS FACE Return Codes and POSIX Error Numbers .................... 54
Table 4: Mapping Between TSS FACE Return Codes and CORBA Exception Code ................ 56
Table 5: Mapping Between TSS FACE Return Codes and DDS Return Code............................ 57
Table 6: Initialize Return Codes ................................................................................................... 58
Table 7: Create Connection Return Codes ................................................................................... 59
Table 8: Create Connection Sampling Port Return Code Mapping ............................................. 60
Table 9: Create Connection Queuing Port Return Code Mapping ............................................... 60
Table 10: Create Connection Socket Return Code Mapping ....................................................... 62
Table 11: Create Connection Message Queue Return Code Mapping ......................................... 64
Table 12: Create Connection Shared Memory Return Code Mapping......................................... 65
Table 13: Create Connection CORBA Exception Code Mapping ............................................... 65
Table 14: Create Connection DDS Return Code Mapping .......................................................... 66
Table 15: Destroy Connection FACE Return Codes .................................................................... 67
Table 16: Destroy Connection ARINC 653 Ports Return Code Mapping.................................... 68
Table 17: Destroy Connection Socket Return Code Mapping ..................................................... 68
Table 18: Destroy Connection Message Queue Return Code Mapping ....................................... 69
Table 19: Destroy Connection Shared Memory Return Code Mapping ...................................... 69
Table 20: Destroy Connection CORBA Exception Code Mapping ............................................. 70
Table 21: Destroy Connection DDS Return Code Mapping ........................................................ 70
Table 22: Receive Message FACE Return Codes ........................................................................ 71
Table 23: Receive Message Sampling Port Return Code Mapping ............................................. 72
Table 24: Receive Message Queuing Port Return Code Mapping ............................................... 72
Table 25: Receive Message Socket Return Code Mapping ......................................................... 73
Table 26: Receive Message Message Queue Return Code Mapping ........................................... 74
Table 27: Receive Message Shared Memory Return Code Mapping........................................... 74
Table 28: Receive Message CORBA Exception Code Mapping ................................................. 74
Table 29: Receive Message DDS Return Code Mapping ............................................................ 75
Table 30: Send Message FACE Return Codes ............................................................................. 76
Table 31: Send Message Sampling Port Return Code Mapping .................................................. 77
Table 32: Send Message Queuing Port Return Code Mapping .................................................... 77
Table 33: Send Message Socket Return Code Mapping .............................................................. 78
Table 34: Send Message Message Queue Return Code Mapping ................................................ 79
Table 35: Send Message Shared Memory Return Code Mapping ............................................... 79
Table 36: Send Message CORBA Exception Code Mapping ...................................................... 80
Table 37: Send Message DDS Return Code Mapping ................................................................. 80
Table 38: Register Callback FACE Return Codes ....................................................................... 81
Table 39: Unregister Callback FACE Return Codes .................................................................... 82
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 xiii
Preface
The Open Group
The Open Group is a global consortium that enables the achievement of business objectives
through IT standards. With more than 500 member organizations, The Open Group has a diverse
membership that spans all sectors of the IT community – customers, systems and solutions
suppliers, tool vendors, integrators, and consultants, as well as academics and researchers – to:
Capture, understand, and address current and emerging requirements, and establish
policies and share best practices
Facilitate interoperability, develop consensus, and evolve and integrate specifications and
open source technologies
Offer a comprehensive set of services to enhance the operational efficiency of consortia
Operate the industry’s premier certification service
The Open Group publishes a wide range of technical documentation, most of which is focused
on development of Open Group Standards and Guides, but which also includes white papers,
technical studies, certification and testing documentation, and business titles. Full details and a
catalog are available at www.opengroup.org/bookstore.
Readers should note that updates – in the form of Corrigenda – may apply to any publication.
This information is published at www.opengroup.org/corrigenda.
This Document
CORBA®, OMG®, UML®, and XMI® are registered trademarks and DDS™, MOF™, and
Unified Modeling Language™ are trademarks of Object Management Group, Inc. in the United
States and/or other countries.
Java® and Solaris® are registered trademarks of Oracle and/or its affiliates.
Microsoft® is a registered trademark of Microsoft Corporation in the United States and/or other
countries.
All other brands, company, and product names are used for identification purposes only and may
be trademarks that are the sole property of their respective owners.
Principal Authors
Additional Contributors
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 xvii
Electronic Industries Alliance (EIA) J-STD-016-1995: IEEE Standard for Information
Technology – Software Lifecycle Processes – Software Development – Acquirer-Supplier
Agreement (withdrawn).
Enterprise Integration Patterns, 2012; refer to: www.eaipatterns.com.
Federal Information Security Management Act (FISMA), US Federal Law, 2002.
Future Airborne Capability Environment (FACE™): Conformance Policy, X1303, June
2013, published by The Open Group; refer to:
www.opengroup.org/bookstore/catalog/x1303.htm.
Future Airborne Capability Environment (FACE™): Contract Guide, G145, December
2014, published by The Open Group; refer to:
www.opengroup.org/bookstore/catalog/g145.htm.
Future Airborne Capability Environment (FACE™): Shared Data Model Governance
Plan, X1405US, May 2014.
IEEE Std 1003.1-2008: IEEE Standard for Information Technology – Portable Operating
System Interface (POSIX) – Base Specifications, Issue 7, December 1, 2008.
IETF RFC 5424: The Syslog Protocol, March 2009; refer to:
http://tools.ietf.org/html/rfc5424.
IETF RFC 5425: Transport Layer Security (TLS) Transport Mapping for Syslog, March
2009; refer to: http://tools.ietf.org/html/rfc5425.
ISO/IEC 12207:2008: Systems and Software Engineering – Software Lifecycle Processes.
ISO/IEC 15408:2009: Information Technology – Security Techniques – Evaluation
Criteria for IT Security; refer to www.iso.org.
ISO/IEC 24765:2010: Systems and Software Engineering Vocabulary.
National Security Telecommunications and Information Systems Security Policy
(NSTISSP) No. 11: National Policy Governing the Acquisition of Information Assurance
(IA) and IA-Enabled Information Technology (IT) Products, National Security
Telecommunications and Information Systems Security Committee (NSTISSC), now
known as the Committee on National Security Systems (CNSS), January 2000 (revised
June 2003).
NSA SSE-100-1: National Security Agency Information Assurance Guidance for Systems
Based on a Security Real-Time Operating System (RTOS), 2009.
OSGi Service Platform, Release 4, Version 4.3, OSGi Alliance, 2012; refer to:
www.osgi.org/Release4.
Software Considerations in Airborne Systems and Equipment Certification, DO-178B,
published by Radio Technical Commission for Aeronautics (RTCA) Inc., December 1992.
Software Considerations in Airborne Systems and Equipment Certification, DO-178C,
published by Radio Technical Commission for Aeronautics (RTCA) Inc., January 2012.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 xix
1 Introduction
1.1 Background
Today’s military aviation community airborne systems are typically developed for a unique set
of requirements by a single vendor. This form of development has served the military aviation
community well; however, this stovepipe development process has had some undesired side-
effects including long lead times, cumbersome improvement processes, lack of hardware and
software reuse between various aircraft platforms, which result in a platform-unique design.
The advent of significantly complex mission equipment and electronics systems has caused an
increase in the cost and schedule to integrate new hardware and software into aircraft systems.
This – combined with the extensive testing and airworthy qualification requirements – has begun
to affect the ability of the military aviation community to deploy these new capabilities across
the military aviation fleet.
The current military aviation community procurement system does not promote the process of
hardware and software reuse across different programs. In addition, the current aviation
development community has not created sufficient standards to facilitate the reuse of software
components across the military aviation fleet. Part of the reason for this is the small military
aviation market. Another part is the difficulty in developing qualified software for aviation. An
additional problem is the inability to use current commercial software Common Operating
Environment (COE) standards because they do not adhere to the stringent safety requirements
developed to reduce risk and likelihood of loss of aircraft, reduced mission capability, and
ultimately loss of life.
To counter these trends, the Naval Aviation Air Combat Electronics program office, enabled by
the expertise and experience of the military aviation community’s industrial base, is adopting a
revolutionary approach.
Ultimately, the FACE key objectives are to reduce development, integration costs, and time-to-
field avionics capabilities.
Note: In the event of conflict between the FACE Technical Standard and the FACE
Reference Implementation Guide, the FACE Technical Standard takes
precedence.
Present best practices for architecting and developing FACE Units of Conformance (UoC)
Guide the developer through example implementation scenarios where FACE UoCs are
bundled together to provide typical airborne capabilities
Provide further information on FACE Profiles, FACE UoCs, the FACE Data Architecture,
Application Frameworks, Language Run-times, and how Safety, Security, Health
Monitoring/Fault Management (HMFM), and Configuration Services may be
implemented within a FACE UoC
Note: References and descriptions of other published standards (e.g., ARINC 653,
ARINC 661, POSIX) are presented at an overview level relative to the FACE
Technical Standard and not designed to conflict with the referenced standards.
1.4 FAQs
Figure 1 shows how each FACE term relates to the others. It also recommends terms to use
when referring to FACE conformant software.
UoC Package
Two or more UoCs (excluding OS) can make up a UoC Package1
1
UoC Package can span
OS2 multiple segments, but PSS
PCS PCS and PCS UoCs cannot be
included in the same UoC
Component PSSS Service
Package as defined in
TS Graphics Section 3.10.2.3 of the FACE
TS Service Technical Standard
Component Service
PSSS PSSS 2
I/O Services and OS cannot
I/O Service2
Component Service be a UoP since they use
non-FACE APIs for external
communication
2.1 Introduction
The FACE Technical Standard is comprised of a set of “places” where variability occurs. These
points of variability are called “segments”. The structure created by connecting these segments
together is the beginning of the FACE Technical Standard.
The OSS, IOSS, and TSS segments create functional interfaces that separate software
implementation variability to create portable software. This software is categorized as either
PCS or PSSS software components. Each of the segments defines a set of rules for the allowable
interfaces, creation rules, and rules on how the software components may be used. Each software
component will be deemed as conformant to the FACE Technical Standard if and only if all of
the rules are adhered to.
FACE defined
TS
interface set
TS FACE defined
interface set
FACE defined
IO interface set
Hardware
Device Drivers
Interface Hardware
(i.e., MIL-STD-1553, Ethernet)
The FACE architecture is intended to support multiple Units of Portability (UoPs) executing on
a common computing platform. To manage multiple UoPs on a common computing platform,
the FACE architecture includes support for partitions and partitioning. Partitions are the base
unit of isolation enforced by the OSS. System developers use partitions to isolate resources
required to perform their intended function and isolate software components from other software
components running in the same FACE environment. A UoP resides in a partition that contains,
or provides access to, resources.
The following list provides the resources and capabilities the OSS may control within a partition:
Space – The OSS controls how the physical address space is assigned among partitions.
When memory partitioning is enforced, the OSS ensures partitions are assigned their
configured quota of memory. With memory partitioning, one partition may not
inadvertently encroach on the memory associated with another partition (e.g., Partition A
is prevented from accessing or modifying the memory associated with Partition B). Two
or more partitions may share memory by allocating a virtual address space range in each
partition to the same physical memory. Mappings of virtual address space ranges to
physical memory are created to allocate a partition’s memory quota. A typical memory
methodology makes use of a processor’s memory management unit to create a virtual
address space for each partition.
Access – The OSS controls how accesses to memory and/or devices are assigned. When
access controls are enforced, the OSS ensures a partition is restricted to only its authorized
access controls. Typical access controls include read, write, and execute permissions.
Some components may tolerate broader access controls (e.g., other components can have
read-access), while other components require strict access controls (e.g., restricting read-
access in order to protect the confidentiality of information). For shared memory, each
partition may have unique access permissions (e.g., one with read-write, some with only
read permissions, and others with no access at all) to the shared memory region.
Resource – The OSS controls how Operating System (OS) resources (e.g., kernel objects,
open file handles, socket port handles) are allocated. When resource partitioning is
enforced, the OSS ensures partitions are allocated their configured quota of resources.
Time – The OSS controls how execution time on the processor is allocated. When time
partitioning is enforced, the OSS ensures partitions are allocated their configured quota of
time. A typical time enforcement methodology, as defined in ARINC 653, divides
execution time into a sequence of partition time windows (variably sized) repeating over
time. Partitions are allocated time by assigning one or more partition time windows to the
partition. For multi-process allocations, see Section 2.2.10.
2.2.1.2 Configurability
For FACE implementations that utilize partitioning, individual partitions and resources
associated with the partitions are statically defined as part of the configuration data. During
initial start-up, the OSS creates the partitions as defined in the configuration data. During
The configurability of partitions (in terms of capabilities that can be configured) is based on
ARINC 653.
When using periodic ARINC 653 processes or POSIX threads (see Section 2.2.11), the period of
the ARINC 653 process or POSIX thread should be precisely the same period as the partition
time windows. If the periods do not match, the release points of the ARINC 653 processes and
POSIX threads may drift over time, resulting in the execution sequence being split across
multiple partition time windows (starts late in one window, finishes in the next). For ARINC 653
processes, the OSS must support starting periodic ARINC 653 processes relative to the start of
partition time windows configured as starting points for periodic processes. For POSIX threads,
there are no standard-based POSIX APIs that support synchronizing with the start of partition
time windows.
2.2.1.3 Variability
The degree of partitioning enforced by the OSS may vary based on the FACE Profiles.
Development of components to either the Security or Safety Profiles necessitates the
enforcement of partitioning principles (memory, access, and resource, time) in order to have an
acceptable level of isolation between components. Partitioning principles are beneficial even to
the General-Purpose (GP) Profile but not required. Partitioning will prevent components from
inadvertently impacting other partitions. It also permits each partition to have a safety or security
level assignment appropriate to the component(s) allocated (i.e., not all components have to be
developed and execute at the same level).
On many processors, memory accesses made by Dynamic Memory Access (DMA) devices are
not under the control of the processor’s Memory Management Unit (MMU). As such, a DMA
device should be considered as being capable of reading and/or writing to anywhere in memory.
To prevent violations of partitioning, the developer of the software used to configure the DMA
transfer source and destination addresses should satisfy sufficient assurance activities to ensure
that the software can be trusted to only utilize address ranges it is intended to have access to.
The FACE architecture may include file system capabilities. The file system capabilities permit
applications to:
Store data into and retrieve data from non-volatile storage device (i.e., data preserved
across power cycles)
Separate data into uniquely identified files
Separate sets of files into uniquely identified directory structures
Have an amount of storage (referred to as a volume) reserved for the application’s use
Share stored information between components
The FACE Technical Standard does not include requirements on safety or security attributes of
the stored data when the equipment is in a powered off state. A particular installation may
impose additional requirements on the data at rest (e.g., encryption to prevent unauthorized
access, check sequences to detect and prevent use of data corrupted by device failures).
2.2.2.2 Configurability
The non-volatile storage capabilities can be allocated and sub-divided based on the configuration
data. The individual allocations of non-volatile storage are referred to as file system volumes.
For each file system volume, the following can be configured:
Access permissions – The use of access permissions permits control over which FACE
conformant components can access a particular file system volume. The access
permissions of each file system volume are configurable on a per partition basis.
— For the Safety Profile, the access permissions of a file system volume permit at most
one partition with write permissions and one or more partitions with read permissions
(there are no executing privileges for volumes used by the Safety Profile).
— For the General-Purpose Profile, additional access permissions may be supported
(access permissions defined for the Safety Profile are the minimum requirements).
— Multiple partitions can be allocated read-access permissions for the same file-system
volume.
— A read-only file system volume is configured by not allocating write permission to
any partition.
— All access permissions are explicitly defined as part of the configuration data (i.e.,
there are no default access permissions).
Alias name – The use of an alias permits a FACE conformant component to not be
impacted when reused across platforms. The file system configuration data includes
specification of a volume alias name.
— Each partition can have a unique alias name for each of the volumes it has access to.
2.2.2.3 Variability
File system APIs have not been included as part of the Security Profile. The Security Profile use-
case includes applications that may be required to process data of different security
classifications within a single partition. A typical application use of a file system will include
multiple files that are open and being utilized simultaneously. When coupled with the feature
rich capabilities of a typical file system (including temporary data cache management), ensuring
The FACE Safety Profile only permits a single partition to have write access to a volume. This
restriction in behavior prevents data consistency and synchronization issues that could occur
when multiple writers from different partitions attempt to utilize a single file (e.g., only part of
the data is written to a log file during a partition’s time window). Data from multiple partitions
can be written into a single file by designing the contributing partitions to send their data to the
partition that has write permissions for the volume. This partition will collect the data from the
other partitions and write it into the file on their behalf. The writing partition ensures that
complete data sets from the contributing partitions are written into the file.
The FACE Technical Standard defines sets of OS APIs that can be used by a FACE conformant
component. A separate set of APIs is defined for each of the profiles (GP, Safety, and Security).
APIs are defined for both ARINC 653 and POSIX.
Although Health Monitoring is primarily associated with ARINC 653, the FACE Technical
Standard supports the development of Health Monitoring/Fault Management (HMFM) in the
POSIX environment. HMFM provides standardized methods for detecting, reporting, and
handling fault, failures, current state, and state change of platform components. Component code
is instrumented to report events (fault, failure, current state, and state change) to the HMFM.
This approach separates component execution activities from error handling activities, making
the code easier to develop and understand.
Once an event is received, the HMFM component reacts to the event by performing a set of
actions that are specified by the system integrator at configuration time.
One possible action is to log the event, allowing a profile/trace of the execution activities to be
created. The log should be saved either in memory or in non-volatile memory. If the event logs
need to be saved in a file, then a partition should be created that is responsible for managing the
logs.
Since the logs are saved in memory, which is a finite resource, a log management policy should
be created in the case a log becomes full. The two standard policies are either to stop logging or
to wrap the log by overwriting the oldest event.
The connection between each event that can be reported by a platform and the set of actions to
take should be configurable, allowing the same HMFM to react differently from one
instantiation to another.
2.2.4.3 Variability
ARINC 653 clearly defines the Health Monitoring architectures and the basic instrumentation
points. The implementer may augment the number of instrumentation points to provide a safer
solution.
Inter-partition communications are the data transfer mechanisms available between partitions.
Use of inter-partition communication is restricted to the TSS and IOSS. All FACE conformant
PCS components must utilize the Transport Services (TS) Interface for all communication
outside of the UoP.
2.2.6.2 Configurability
For ARINC 653-based applications, each inter-partition information flow should be based on
sampling ports or queuing ports. A component may be allocated multiple sampling and queuing
ports. The sampling and queuing ports available to a partition are controlled through the
configuration data. If a component attempts during initialization to create access to a sampling or
queuing port that it has not been configured for, an error will be returned. All sampling and
queuing ports must be successfully created during the initialization phase in order for the
component to use the port during the normal operational mode.
With sampling ports, the receive side of the port contains the last data message received on the
port. When a new data message is received, it atomically replaces the previous data message.
Sampling ports are useful for system parameters that periodically vary over time (e.g., aircraft
altitude, airspeed, attitude, and heading). The application assigned to the transmit side of the port
is responsible for updating the data message at some periodic rate. Users of a sampling port
always access the most recent sample of the system parameters. Reading the port again may
result in the same data message being read if another data message has not yet been received.
Multiple partitions can be assigned access to the receiving side of the same sampling port, if
broadcast channels are supported by the OSS. A validity parameter is included with a message
when it is read. This parameter is used to indicate whether the message is within or outside the
configured refresh period for the port.
For POSIX-based applications communicating with ARINC 653-based applications, each inter-
partition information flow should be based on sampling ports or queuing ports. For POSIX-
based applications communicating with other POSIX-based applications, each inter-partition
information flow should be based on sockets, message queues, or shared memory. A component
may have multiple open sockets bound to different endpoints simultaneously. The OSS may
limit, based on configuration data, which endpoints a specific application may bind to as part of
enforcing access control over the application.
2.2.6.3 Variability
Each component is likely to have one or more data flows with other components in the system.
The number of data flows is component-dependent.
For portability, sampling and queuing port names should be selected based on the data flow
content, not the source or destination of the data.
For portability, sockets should be established using name service APIs rather than hard coding to
fixed addresses (that may conflict with another application’s fixed addresses).
Intra-partition communications are the data transfer and data access control mechanisms
available within a partition.
Applications developed to the FACE Technical Standard may require memory allocation and
deallocation mechanisms at run-time.
A key safety/security principle is to utilize memory buffers (a set of fixed-size elements) and/or
pools provided to the partition for specific purposes instead of common memory heaps that are
used by all parts of the application. When common memory heaps are used, several
security/safety concepts may be violated:
Resource reuse within the partition. In a multi-level secure application, part of the
application is dealing with data of one classification, while other portions are dealing with
Services should be re-entrant (e.g., to prevent potential loss of function resulting from two or
more threads attempting to utilize the services, with later threads corrupting internal data that the
earlier threads were dependent upon).
For some applications, the size of some data structures is dependent upon other application
and/or platform variables whose values are not known until run-time. These applications require
the ability to create memory structures during initialization whose sizes are based on parameters
that are not known until run-time.
Some applications will require access to memory regions whose locations, size, and access
permissions are not known until run-time.
Note that some systems may utilize a variable-sized memory region (whose size is discovered at
run- time) to resolve variable-size memory structure allocation at initialization.
2.2.8.2 Configurability
Regions of memory (i.e., range of consecutive locations) can be allocated and/or deallocated at
run-time, and be configured on a partition-by-partition basis. Each partition may have memory
regions of various sizes that can be utilized locally during run-time.
2.2.8.3 Variability
Trade-offs with regard to local memory allocation and deallocation that an application may take
into account include:
Using only static allocation. Here, an application selects as part of the design effort the
size of each data structure. As part of compilation, linking, and integration, memory
resources are reserved to contain the allocated data structures. During partition
Note: Systems developed within the FACE Safety or Security Profiles should consider
using static allocation.
Using dynamic allocation only during initialization.
— The system can adjust the size of the allocation based on system state that is known
at run-time during the application’s initialization phase.
— Since the allocation is dynamic, there could be system states which result in all of the
memory available for dynamic allocation is exhausted. Since the system is just
initializing, there may be fewer hazards associated with this erroneous condition. For
a given mission (e.g., flight), the system state should not change. A power-cycle
during operational flight is feasible. If the power-cycle during flight results in a
different system state that has larger memory requirements, a memory exhaustion
could occur during operational flight that did not occur when the aircraft was first
powered up on the ground.
Note: Systems developed within the FACE Safety or Security Profiles should consider
using dynamic allocation only during initialization.
Permitting full dynamic allocation and deallocation during run-time.
— Some implementations may result in significant memory fragmentation. Recovery of
memory fragmentation could have non-deterministic behaviors. For example, when a
system has to search for available space for the next allocation, and moves current
allocations to a different location in order to make sufficient consecutive memory
locations available for the next allocation.
— Some implementations may result in significant memory under-utilization (e.g., fixed
size allocation that accounts for the largest possible memory allocation, but may be
requested an allocation significantly smaller).
If allocations and deallocations of memory are occurring during run-time for divergent uses,
prediction of worst-case memory requirements may be infeasible. This could result in a memory
exhaustion hazard occurring at any time a memory allocation is requested during run-time.
The FACE Technical Standard includes support for multiple partitions to have access to the
same range of physical memory (i.e., region). For example, this may include multiple partitions
being provided read-access to memory containing navigation data. Use of shared memory to
communicate between partitons or UoCs is restricted to software in the TS and IOS Segments.
Considerations include:
Not all partitions require the same level of access. A key attribute is the ability to
individually configure the access permissions of each partition. Any partition not
configured to access the shared memory must be denied all types of access (read, write,
and execute).
In reader/writer usage scenarios, cache coherency can be an issue if the sharing partitions
(or devices in the case that the source of the data is a hardware device such as a DMA
engine) use different caching mechanisms. For example, data loss and/or inconsistency
could occur if the writer is configured for write-back cache, the reader is configured for
uncached, and the writer does not flush its data cache after writing the data.
In reader/writer usage scenarios, access control and/or notification mechanisms are likely
required in order to ensure each reader a consistent view of the data. This is especially
important when there are multiple readers, all of whom may be in the process of reading a
different message or section of message when the writer has another update.
If the shared memory includes memory mapped registers for devices, special
considerations apply (e.g., not mapping memory to multiple partitions).
2.2.9.2 Configurability
The configurability of shared memory regions is the same as for memory resources associated
with the partition (see Section 2.2.1).
2.2.9.3 Variability
The following APIs can be utilized to determine the location and access permissions for shared
memory that has been allocated to a partition:
There are no expected variations in the ARINC 653 API behavior. For the above POSIX APIs,
there may be additional behaviors dependent upon the types of memory configuration
capabilities supported by a FACE OSS implementation. For the FACE architecture, the intent of
providing these APIs within the Security and Safety Profiles is to provide a means to the
application developer to find the location, size, and access permissions of any memory regions
(including shared memory regions) allocated for the application’s use. The following code
fragment example provides a means to access this information that will operate for all FACE
OSS implementations regardless of behavior variations:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
/*
* obtain the size and access permissions for a configured
* shared memory
/*
* If application has write permission, then set up to use it
*/
if (shm_status.st_mode & S_IWUSR) {
shm_mode = S_IWUSR;
shm_access = O_RDWR;
shm_prot = PROT_READ | PROT_WRITE;
}
else {
shm_mode = S_IRUSR;
shm_access = O_RDONLY;
shm_prot = PROT_READ;
}
When possible, to improve security and safety, memory allocated for shared memory regions
should exclude execute permissions (i.e., shared memory regions should be configured as read-
write-no_execute).
2.2.10 Multi-Process
This section will be added in a future release.
2.2.11 Multi-Threading
2.2.11.2 Configurability
All of the profiles, including the Security Profile, include support for multi-threading.
When supporting the Security or Safety Profiles, the OSS may be limited to only supporting
configuration of static allocations of memory. The safety (and security) of stacks can be
improved by utilizing regions of memory where “guard” pages exist at the end of the stack. A
guard page is a range of virtual memory addresses to which no corresponding physical memory
has been allocated. When accessed (e.g., as part of a stack overflow), the access causes a
memory access violation, causing an exception that can be reported to a health monitoring
capability (see Section 2.2.4).
FACE OSS implementations support the use of OSS configuration data for the creation of
guarded memory regions (e.g., pthread_attr_setguardsize) that can be utilized for stacks. The
location and size of these stacks can be determined at run-time using the techniques described in
Section 2.2.9.3. This information can be utilized with the supported FACE OS APIs (e.g.,
Create_Process, pthread_attr_setstack) to create ARINC processes or POSIX threads that
utilize the stacks. Stacks should not be shared (each simultaneously-defined ARINC process and
POSIX thread should be allocated a unique stack). Use of this technique ensures the portability
of the specification of guarded stacks across all FACE Profiles.
When possible, to improve security and safety, memory allocated for stacks should exclude
execute permissions (i.e., stacks should be configured as read-write-no_execute).
2.2.12.2 Configurability
2.2.12.3 Variability
When transitioning an application from a non-time partitioned to a time partitioned system, the
application is eligible to execute only during its partition time windows (see Section 2.2.1). In
the non-time partitioned environment, an application may have been able to immediately
respond to some events (e.g., interrupts). However, the application will now only respond during
its allocated partition time windows. In the FACE architecture, this level of interaction has
mainly been addressed by the IOS (i.e., components dedicated to handling specific I/O devices
and the interactions with them) and TS (i.e., reliable endpoints for data transfer). As such,
transitioning such an application requires some re-architecting effort to separate the I/O and
transport operations from the other functional capabilities.
2.2.13 Networking
This section will be added in a future release.
The I/O Services Segment (IOSS), along with the message-based I/O Services API, is intended
to provide a standardized mechanism for a PSSS component to access I/O hardware. The IOSS
and I/O Services API isolate the PSSS from the unique implementations of vendor-specific
device drivers and OS device driver API sets.
The IOSS provides I/O Services Management and I/O Data Movement Capability. The I/O Data
Movement Capability is used when the IOSS resides in partitions or address spaces other than
the ones occupied by the PSSS for which they provide I/O Services. The I/O Management
Capability is responsible for initializing and configuring the specific I/O Services. The I/O
Services Management Capability could be implemented within individual I/O Services or
centralized. The I/O Service capabilities are shown in Figure 3.
I/O Interface
MANAGEMENT
I/O DATA CAPABILITY
MOVEMENT
CAPABILITY
OS interface
ADAPTATION
CAPABILITY
Non-FACE
Proprietary
Interfaces
This section has been written with the expectation that the reader is familiar with the bus and bus
protocols being implemented with the I/O Services.
The I/O Service does not interpret the payload of the message on the bus. The I/O Service is
expected to understand how the bus protocol operates, in order to send and receive messages on
Any I/O that uses the OSS standardized interfaces, such as sockets, is handled by the OSS and
not by the IOSS.
For distributed I/O Services, the I/O Interface is implemented as a library to provide the I/O Data
Movement Capability. The Library is used to provide access to internal Inter-Process
Communications (IPC) (e.g., ARINC 653 IPC, POSIX IPC, sockets, ARINC 653 ports,
depending on the implementation).
For non-distributed I/O Services, the PSS component, I/O Interface, and I/O Service are
implemented as a single executable. In non-distributed implementations, the I/O Interface
provides the PSS component a normalized interface to the Device Driver.
The I/O Service understands the IOMM; however, it does not have or need knowledge of the
specific data traversing the interface. Understanding of the data traversing the I/O Interface is
handled by the components of the PSSS. The I/O Service is responsible for sending and
receiving data using the IOMM format and the I/O Interface API.
2.3.2 Configurability
It is recommended the I/O Services components be designed to be configured externally.
However, the IOMM does not currently support the Centralized Configuration Service. The I/O
Service component should be designed to service a specific bus type. This means a properly
designed I/O Service should be configurable to handle the bus itself, and not specific endpoints.
A properly designed I/O Service should be configurable to accept bus traffic to and from
different bus endpoints.
Since the I/O Service does not have any knowledge of the content of the bus data within the
IOMM, the arbitration and failover of busses may be handled in the PSSS. If the PSSS is going
to handle failover, it will need to send a control message to the I/O Service component through
the IOMM to command a change to the configuration or role of the I/O Service.
The FACE Technical Standard, Section D.12 provides the mandatory set of configurable items
for the IOSS.
The overarching FACE objectives are to reduce development and integration costs as well as
time-to-field. Configuration supports these goals by increasing the flexibility of software and
simplifying software integration and maintenance tasks. Configuration enables the integration of
FACE conformant software components into multiple environments without modification.
An example I/O Configuration File for an implementation with two connections being
configured is shown below. An example eXtensible Markup Language (XML) Schema
Definition (XSD) for the system is found in Appendix E. The XML has elements for the
parameters defined in the FACE Technical Standard, Section D.12. Unneeded parameters can be
empty fields as seen in the domain and socket type when configuring a nonsocket connection.
Unneeded parameters can also be omitted as shown by the thread-specific parameters left out of
the XML because only one thread is being used.
The connections defined in the example configuration file below are as follows:
TDLPSS_TO_AVS_AC0: UDP source connection to Aircraft 0.
TDLPSS_TO_AVS_AC1: UDP source connection to Aircraft 1.
AVS_TO_TDLPSS: UDP destination connection to receive from all aircraft. Used to
receive vehicle status and track information from all Air Vehicle Systems (AVS).
TDL_To_CLIP: UDP source connection to CLIP. Used to send track information to CLIP.
<?xml version="1.0" encoding="UTF-8"?>
<connection_list>
<connection>
<name>TDLPSS_TO_AVS_AC0</name>
<type>UDP_DAPI</type>
<direction>SOURCE_PORT</direction>
<createconnection>false</createconnection>
<portname></portname>
<messagesize>8000</messagesize>
<messagerange>20</messagerange>
<refreshperiod>1000000000</refreshperiod>
<reliability></reliability>
<readwrite_behav></readwrite_behav>
<queue_discipline></queue_discipline>
<domain>AF_INET</domain>
<sockettype>SOCK_DGRAM</sockettype>
<receiveflag></receiveflag>
<sendflag></sendflag>
<sourceaddress></sourceaddress>
<destinationaddress>192.168.16.151</destinationaddress>
<sourceport>
<!-- NULL for receive port -->
</sourceport>
<destinationport>42633</destinationport>
<iotype>GENERIC_BUS</iotype>
<threadlist>
<!-- NULL, all connections in 1 thread -->
</threadlist>
</connection>
<connection>
<name>TDLPSS_TO_AVS_AC1</name>
<type>UDP_DAPI</type>
<direction>SOURCE_PORT</direction>
<createconnection>false</createconnection>
2.3.3 Variability
The I/O service can be designed in many different ways to accomplish the same goal, but not all
designs promote portability. In the sections below, recommendations are provided to ensure an
I/O service is reusable beyond its initial use. The brick walls that appear in the figures in this
section indicate a virtual partition or a physical boundary.
Both distributed and non-distributed designs can result in FACE conformance. Distributed
communication allows for communication between partitions while non-distributed
Figure 4 represents the data flow from the PDS to Device through a Non-Distributed I/O
infrastructure.
The list below describes the sequence of actions performed to send data to a Device:
1. PDS packs data using the IOMM (FACE Technical Standard, Section 3.4.1).
2. PDS passes packed data by calling the I/O API Write(I/O) function (FACE Technical
Standard, Section D.8).
3. I/O Service unpacks data using the IOMM (FACE Technical Standard, Section 3.4.1).
4. I/O Service sends data to the device driver using the device driver’s API.
5. I/O Driver writes to Device.
6. I/O Driver may return success or failure to I/O Service using the device driver’s API.
7. I/O Service returns FACE return code to the PDS I/O API Write(I/O) function (FACE
Technical Standard, Section D.8).
PDS and I/O Service
are in the same address
space
Platform-Specific
Services Segment
1
PDS 2
I/O API 7
3
I/O Service
6
I/O Services
Segment 4
Driver and 5
Hardware
Figure 5 represents the data flow from the PDS to Device and back to the PDS through a Non-
Distributed I/O infrastructure. The details of the steps depend on the type of I/O protocol being
used. The list below describes the sequence of actions performed to read data from a Device
using an I/O Service for a periodic I/O protocol:
Platform-Specific
Services Segment 1 8
2
PDS 7
I/O API
I/O Service
5
I/O Services
Segment 3
Driver and 4
Hardware
The list below describes the sequence of actions performed to read data from a Device using an
I/O Service for an on-demand (command-response) type I/O Protocol:
1. The PDS sets the appropriate fields in the message payload to instruct the I/O Service to
perform the read command (sets message_type to COMMAND and CM_ST to READ).
2. PDS issues the command by calling I/O API Write(I/O) function (FACE Technical
Standard, Section D.8). PDS prepares to receive data by calling the I/O API Read(I/O)
function (FACE Technical Standard, Section D.7).
Figure 6 represents the data flow from the PDS to a Device through a Distributed I/O
infrastructure. The following list describes the sequence of actions performed to send data to a
Device:
1. PDS packs data using the IOMM (FACE Technical Standard, Section 3.4.1).
2. PDS passes packed data by calling the I/O API Write(I/O) function (FACE Technical
Standard, Section D.8).
3. I/O Library implements the I/O Data Movement Capability by executing the Write(I/O)
function using IPC to send packed data to the I/O Service.
4. The data formatted in the IOMM is sent across partitions using IPC.
5. I/O Service and I/O Library receives data sent using the I/O Data Movement Capability.
6. I/O Library handles the callback registered by the I/O Service.
7. I/O Service unpacks data using the IOMM (FACE Technical Standard, Section 3.4.1).
8. I/O Service sends data to the device driver using the device driver’s API.
9. I/O Driver writes to Device.
Platform-Specific
Services Segment
1
2
PDS
3 I/O API 4
I/O library
OS API
I/O Message 5
Model
OS API 6
I/O Services
I/O library
Segment I/O API 7
I/O
Service
8
The use of the I/O API
here is not mandated by Driver and
the FACE Standard. For Hardware 9
this example, it was a
design decision to
maximize portability of
the I/O Component.
Figure 7 represents the data flow from the PDS to a Device and back to the PDS through a
Distributed I/O infrastructure. The details of the steps depend on the type of I/O protocol being
used. The list below describes the sequence of actions performed to read data from a Device
using a distributed I/O Service for a periodic type I/O protocol:
1. PDS packs data using the IOMM (FACE Technical Standard, Section 3.4.1).
2. PDS passes packed data by calling the I/O API Write(I/O) function (FACE Technical
Standard, Section D.7).
3. I/O library 1 sends the data formatted in the IOMM across partitions to I/O library 2 using
IPC.
4. The I/O Service receives this message by polling the connection using a Read(I/O) from
I/O library 2.
5. The I/O Service parses the message payload and sees that it needs to perform a read.
6. The I/O Service uses the driver’s API read data from the bus and puts it in the
PAYLOAD_DATA field of the message payload.
7. The I/O Service sends this message to I/O library 2 using Write(I/O).
8. I/O library 2 sends the data formatted in the IOMM across partitions to I/O library 1 using
IPC.
9. The PDS receives the message from the Read(I/O) return or the callback function.
Platform-Specific
Services Segment
10 1
3
2
9 PDS 8
I/O API
I/O library 1
OS API
I/O Message
Model 4 7
I/O Services OS API
The list below describes the sequence of actions performed to read data from a Device using a
distributed I/O Service for an on-demand command-response type I/O protocol:
1. The PDS packs data using the IOMM (FACE Technical Standard, Section 3.4.1), setting
the appropriate fields in the message payload to instruct the I/O Service to perform the
read command (sets message_type to COMMAND and CM_ST to READ).
2. The PDS passes packed data to I/O library 1 by calling the I/O API Write(I/O) function
(FACE Technical Standard, Section D.8).
3. I/O library 1 sends the data formatted in the IOMM across partitions to I/O library 2 using
IPC.
4. The I/O Service receives this message by calling Read(I/O) from I/O library 2.
5. The I/O Service parses the message header and sees that it needs to perform a read of the
bus.
6. The I/O Service parses the message payload and determines that it needs to read data from
the device driver. I/O Service requests data from the device driver using proprietary API,
puts it in the message payload, and changes the message_type in the message header from
a command to a response type.
7. The I/O Service sends this message to I/O library 2 using Write(I/O).
Figure 8 shows how a single I/O Service can be used to communicate with two PDS components
in separate partitions. The I/O Libraries implement the I/O Data Movement Capability using the
IOMM to allow communication between PDS 1 and the driver and hardware since PDS 1 and
the I/O Service are in separate partitions. The I/O API would be used for both the PDS
components. The data flow between PDS 1 and the I/O Service are similar to those described in
Section 2.3.3.2 and the data flow between PDS 2 and the I/O Service are similar to those
described in Section 2.3.3.1.
PDS 1,1 and
PDSI/O2 and
Service
I/O
Service
are in different
are in different
address
address
spaces spaces
Platform-Specific 5
Services Segment 1
1
2
2
PDS 1 I/O Message PDS 2 4
I/O API Model
3 I/O API
I/O library I/O library 6
OS API OS API
7
OS API
OS
API I/O library
I/O API
I/O Services 8
Segment I/O Service
9
The use of the I/O API
here is not mandated by
the FACE Standard. For
Driver and
this example, it was a Hardware 10
design decision to
maximize portability of
the I/O Component.
2.3.3.4 Recommendations
The following recommendations maximize the portability of an I/O Service along a product line:
The I/O Service should be designed as an independent software package or library.
The I/O Service and I/O Data Movement Capability should be designed to allow multiple
independent PDS tasks access to the same I/O Service without race conditions.
The independent I/O Service should be designed for each I/O bus type.
The I/O Service may be designed to handle more than one I/O type as shown in Figure 9. This
design decision may have performance and/or memory benefits but may decrease the
component’s portability. The data flow steps in Figure 9 are similar to those described in Section
2.3.3.1.
PDS and I/O Service are
in the same address
space
Platform-Specific
Services Segment
1
PDS
I/O API
2
I/O Services
Segment
I/O Service 3
(Analogs / Synchros)
4
1
5
1
PSS components use the TS Interface to communicate with the TSS as shown in Figure 10. All
data sent over the TS Interface must use the FACE Data Model. The TS Interface provides
communication between multiple PSS components and PCS components.
PSS components can also use the I/O Interface to communicate with the IOSS as shown in
Figure 10. PSS components can act as software abstractions by converting I/O Interface data to
the FACE Data Model for use in the TSS.
The Platform-Specific Graphics Services sub-segment may communicate directly with the
Graphics Processing Unit (GPU) driver as indicated by the Platform-Specific Graphics Services
block (right-most block in PSSS layer) in Figure 10.
PDS 1, PDS 2 and I/O
Service
Differentare
Different in different
address
address spaces
spaces
address spaces
GPU Driver
For detailed steps on how the PSS components interact with the TS Interface and the I/O
Interface, see Sections 2.5.3 and 2.3.3, respectively.
The Platform-Specific Device Services (PDS) sub-segment is composed of components that are
used to normalize the interface between (a) system peripherals (e.g., EGIs, GPS receivers, radar
The function of a PDS component for a given peripheral is to insulate components in the PCS
and PSSS from the effects of changes to the specific peripheral model used. For example, a
system might originally be designed to incorporate a Litton EGI, but later it might prove
necessary to replace the Litton with a Honeywell EGI. In this scenario, the Litton-specific PDS
would be replaced by a Honeywell-specific PDS, but the rest of the PCS and/or PSSS
components would be insulated from this change.
In addition to supplying the interfaces to the PCS and IOS, the PDS component may also
provide device-specific services such as initialization, BIT management, status routing, message
throttling, and filtering, etc.
For any given device type or environment, it will need to be considered whether the interfaces
need to be unidirectional or bidirectional. Typically, the interface to the IOS would need to be
bidirectional, to allow the PDS to initialize the device, command BIT, etc. The interface to the
PCS or PSSS may only need to be unidirectional if its sole function is to pump data to data sinks.
It is recommended that a single PDS (or instantiation of a PDS) be used for each peripheral
device.
A PDS component should service a specific device type (e.g., an EGI). However, flexibility and
portability are enhanced if the PDS can be configured to handle different models or versions of
the target device type.
If a given system design requires it, a PDS component may be designed to handle an arbitrary
number of identical peripherals, in which case it would need to be configurable with the number
and identity of the devices.
2.4.2.3 Variability
PDS component design can vary substantially as a function of its interface requirements.
If a PDS only needs to route data in one direction (e.g., from the IOS to the PCS):
It could be implemented as an autonomous thread that runs a simple loop:
while (forever)
wait for new message from IOS
pass message on to PCS
endwhile
Simpler still, the PDS could be implemented as a function that relays data to the PCS,
which is registered as a callback with the I/O Data Movement capability; in this case, the
callback function should not be written to block.
Display
Processor 2
Manager
TS API
TS library
All data passed through
the TS API is conformant OS API
to the FACE Data Model
OSS
OS API
TS library
TS API
EGI
Processor 1 Manager
I/O API
1553 I/O
Service
1553 Driver
EGI
Figure 11 shows how components from multiple FACE segments can work together to give a
high-level example. For detailed steps on how the PSS components interact with the TS
Interface and the I/O Interface, see Sections 2.5.3 and 2.3.3, respectively.
If a PDS needs to route data in both directions as shown in Figure 11, then it may be
implemented using two separate threads, one for each direction. One thread would be
responsible for communications between the EGI manager and the EGI Device through a non-
distributed MIL-STD-1553 I/O Service. The data flow steps are similar to those described in
Section 2.3.3.1.
Display 6
Processor 2
Manager
TS API 5
TS library
All data passed through
the TS API is conformant OS API 4
to the FACE Data Model
3
OSS
OS API
TS library 2
TS API
EGI 1
Processor 1 Manager
I/O API
1553 I/O
Service
1553 Driver
EGI
Figure 12 represents the data flow between the EGI Manager running on Processor 1 and the
Display Manager running on Processor 2 through the TSS. The following list describes the
sequence of actions the EGI manager performs to send data from the EGI to the Display
Manager Portable Component.
1. EGI Manager populates the data structure using the FACE Data Model (FACE Technical
Standard, Section 3.6).
2. EGI Manager sends the message to the TS Library by calling the Send_Message(TS)
function (FACE Technical Standard, Section E.7).
3. TS Library on Processor 1 constructs the TS Message Instance based on the TSS Message
and Internal Data Structure (FACE Technical Standard, Section 3.7.5).
4. TS Library on Processor 1 executes the Send_Message(TS) function using IPC to send the
TS Message Instance to the TS Library on Processor 2 (FACE Technical Standard,
Section E.7).
5. TS Library on Processor 2 receives the TS Message Instance from the EGI Manager.
6. The Display Manager receives the data from the TS Library on Processor 2 by executing
the Receive_Message(TS) function (FACE Technical Standard, Section E.6).
The PDS could also be implemented as two send functions (one in each direction) registered as
callbacks. One callback would be registered by the PDS with the I/O Data Movement capability
for data going from the IOS to the PCS. The other callback would be registered by the PCS for
data going from the PDS to the PCS through the TSS. If the PDS is registering a callback, it
assumes that the I/O Service is responsible for handling any interface-specific requirements,
such as the scheduling and issuing of read commands in a command-response type protocol. The
callback would be used by the PDS to subscribe to the data corresponding to a read command
being scheduled and issued by the I/O Service. If the PDS is responsible for timing or issuing
read commands, such as in Section 2.3.3.1, it is not expected that it would register a callback.
OSS 13
1
Display 12
Processor 2
Manager
TS API 11
TS library
All data passed through
the TS API is conformant OS API 10
to the FACE Data Model
9
OSS
OS API
8
TS library
TS API 6,7
2
EGI
5
Processor 1 Manager
I/O API
4
3,4 1553 I/O
Service 3
1553 Driver
2
EGI
Figure 13 highlights the steps required for initialization of the callbacks using yellow circles.
The following list describes the sequence of actions required for initialization of the callbacks:
1. Display Manager registers a callback function with the TS Library using the
Register_Callback(TS) function (FACE Technical Standard, Section E.8).
2. EGI Manager registers a callback function with the I/O Library using the Register(I/O)
function (FACE Technical Standard, Section D.5).
Figure 13 details the flow of data using white circles. The following list describes the sequence
of actions for a single PDS to receive a single message from a single EGI device after the
initialization steps complete:
1. MIL-STD-1553 I/O Service uses the 1553 driver’s API to send the read command.
2. MIL-STD-1553 I/O Driver reads data from the EGI.
3. MIL-STD-1553 I/O Driver returns data to the I/O Service through the device driver using
the driver’s API.
4. MIL-STD-1553 I/O Service packs data using the IOMM (FACE Technical Standard,
Section 3.4.1).
5. MIL-STD-1553 I/O Service executes the callback function registered by the PDS.
6. PDS callback function unpacks data using the IOMM (FACE Technical Standard, Section
3.4.1).
7. PDS Callback function populates the data structure conformant to the FACE Data Model
(FACE Technical Standard, Section 3.6).
8. PDS Callback function sends the message to the TS Library by calling the
Send_Message(TS) message (FACE Technical Standard, Section E.7).
9. TS Library on Processor 1 constructs the TS Message Instance based on the TSS Message
and Internal Data Structure (FACE Technical Standard, Section 3.7.5).
10. TS Library on Processor 1 sends the TS Message Instance to the TS Library on Processor
2 using IPC.
11. TS Library on Processor 2 receives the TS Message Instance from the EGI Manager.
12. TS Library on Processor 2 executes the callback function registered by the Display
Manager.
13. Display Manager Callback function unpacks data based on the FACE Data Model (FACE
Technical Standard, Section 3.6).
A PDS could also be designed to handle data from multiple devices of the same type as shown in
Figure 14. An EGI Manager PDS could be designed to handle an arbitrary (but statically
configured) number of EGI devices. This would allow it to internally handle a redundant EGI,
failing over to it should the primary go offline.
Display
Processor 2
Manager
TS API
OSS
OS API OS API
TS library TS library
TS API TS API
EGI 1 EGI 2
Processor 1 Manager Manager
I/O API
1553 I/O
Service
1553 Driver
EGI 1 EGI 2
Figure 14 shows how components from multiple FACE segments can work together to give a
high-level example. For detailed steps on how the PSS components interact with the TS
Interface and the I/O Interface, see Sections 2.5.3 and 2.3.3, respectively.
It is not recommended that a PDS be designed to handle more than one device type, as this
reduces portability.
A more portable design would be to introduce another PCS component to handle multiple EGI
PDS components, as shown in Figure 15. The Navigation Manager would determine which EGI
to listen to and handle failing over to the secondary EGI if necessary. The Display Manager
would still get input from a single source and would only need to be reconfigured to talk to a
different port.
Display
Processor 2 Nav Manager
Manager
TS API
TS library TS library
All data passed through
OS API OS API
the TS API is conformant
to the FACE Data Model
EGI 1 EGI 2
Figure 15 shows how components from multiple FACE segments can work together to give a
high-level example. For detailed steps on how the PSS components interact with the TS
Interface and the I/O Interface, see Sections 2.5.3 and 2.3.3, respectively.
The FACE Platform Logging Service is a software capability with the responsibility of
collecting messages sent by FACE components and logging them in a manner specified by the
system integrator. The Logging Service is able to communicate with FACE components using
the I/O Services Interface and the TS Interface.
Messages are required to be formatted using IETF RFC 5424: The Syslog Protocol, Section 6 –
Syslog Message Format. Only the message format is required by the FACE Technical Standard.
Messages traversing the TS Interface must meet the requirements of the FACE Data Model.
Messages traversing the I/O Services Interface must meet the requirements of the FACE IOMM.
The Logging Service is responsible for managing the implementation specifics of where the
information is logged. As an example, if the message data is stored in a file, any file type (e.g.,
ASCII, binary) can be used as long as the logged message format meets the requirement of IETF
RFC 5424, Section 6.
2.4.3.2.2 Configurability
For the FACE Platform Logging Service to operate, only one partition is required. However, it is
possible to have multiple instances of the Logging Service running on different computing nodes
throughout the platform. This may be necessary to distribute log message traffic throughout the
system instead of having all messages sent to a single location. It is suggested that the Service
runs in a POSIX partition as this allows communication with both POSIX and ARINC 653-
based partitions; however, if the system integrator knows that a certain instance will only be
communicating with ARINC 653-based partitions, a Logging Service running within an ARINC
653-based partition may be chosen.
The Logging Service should not require a significant amount of resources at run-time. Syslog
messages must be at least 480 octets (480 bytes) in length by definition in IETF RFC 5424 and
they have no maximum length; enough memory should be allocated to account for the longest
expected message to be received from other FACE components.
Large time slices for execution may not be required as the Logging Service is not parsing
messages, but disk or network access may be required depending on the type of logging the
system integrator chooses to use. However, if a significant number of log messages are expected,
the Logging Service will need to have a time slice often to service the messages and keep
transport buffers clear.
2.4.3.2.3 Variability
The Platform Logger can be written with one or more threads in order to service incoming
messages from other FACE components. If one thread is used to service messages from all
components, a timeout should be used when checking for messages from TS and I/O Interface
connections to allow for checking all available connections. The number of connections will
increase linearly with the number of IOS components on the platform, so the timeout may need
to be adjusted in order to service all log messages on different platforms.
There are different forms of logging that can be accomplished by the Platform Logging Service.
It may only need to log to certain files, or it may log the messages to the standard output stream.
Which method of logging is used will be up to the integrator. Also, messages from different
components may go to different files.
Figure 16 shows a Device Protocol Mediation (DPM) service (PSSS Common Service) used to
talk to services and devices outside of the FACE environment. The DPM service acts as a
mediator between software which does not use FACE APIs and the rest of the FACE
components. It will interface with servers and hardware on one side and with a PSSS Device
Service using the I/O Interface (Generic Bus Message) on the other. The PSSS Device Service
provides an interface with the rest of the FACE components using the FACE TS API.
Ethernet
This DPM service can also be used to virtualize hardware. An Embedded Global Positioning
System/Inertial Navigation System (EGI) software component could talk to the DPM which then
uses an OS service for the Ethernet to get the real EGI data from another processing resource.
Streaming Media Services act as a streaming media adapter for platform imaging devices that
use media protocols (e.g., various Moving Picture Experts Group (MPEG), Society of Motion
Picture and Television Engineers (SMPTE) formats) with the OS. Figure 17 shows the Media
Service communicating with the computing platform and other FACE components.
HMI
TS API
TS library Transport Services Segment
OS API
OS API OS API
TS library TS library
TS API TS API
Platform-Specific Platform- Platform-Specific
Services Segment Specific Common Services
Graphics ARINC Media
Services
Platform-Specific 661 Service Media Service may
Device Services have access to the
Media Driver
Data is defined by
Media
the device ICD. Data
Driver is not required to be
GPU OS in the FACE message
Driver
OS format
The data sent to and received from the streaming media device is defined by the streaming media
device Interface Control Document (ICD), and may not include the use of the IOMM. The
Media Service may have access to hardware drivers for the sole purpose of hardware accelerated
decoding of streaming media protocols and formats. The Media Service can communicate with
the Platform-Specific Graphics Services and FACE components using the TS Interface and the
FACE Data Model format.
QoS
MANAGEMENT
CAPABILITY
DISTRIBUTION DATA
CAPABILITY MARSHALLING
PARADIGM
PARADIGM
OS Interface PARADIGM
TRANSLATION
TRANSLATION
TRANSLATION
CAPABILITY
CAPABILITY
CAPABILITY
Operating System
Interface
MESSAGE
CONFIGURATION CAPABILITY
ASSOCIATION
Flexibility of execution control (process control and threading) may be required to meet system
requirements. Implementation of execution control is the responsibility of the software supplier
and/or systems integrator. For example, a PCS or PSSS component with tight closed-loop
control requirements may want to exert control over scheduling and memory management of the
TSS. A PCS or PSSS component without stringent timing requirements may be better served by
delegating control of the communications timing to the TSS.
The following sections assume working knowledge of networking principles, POSIX sockets,
ARINC 653 ports, Data Distribution Service (DDS), and Common Object Request Broker
Architecture (CORBA).
Figure 19: Transport Services Interface Message and Internal Data Structure
The Message Instance is data transferred between PCS and/or PSSS components using Transport
Services at run-time and consists of the Message Header and Platform Payload. The Message
Header is used for facilitating TSS communication. The Message Header is created by the
Distribution Capability of the TSS, contains the data elements as defined in Section 3.7.5.4 of
the FACE Technical Standard, and is shown in Figure 19. It is recommended the TSS
component implementing the Send_Message() function populates the Message Header. The
Platform Payload is returned to the PCS or PSSS component(s) calling the Receive_Message()
The Distribution Capability is a key capability of the TSS and is meant to abstract the transport
mechanism away from components residing in the PCS and PSSS. Without it, FACE PCS and
PSS components would be unable to communicate. The TSS allows components to be written
generically, without dependencies on a specific transport mechanism or defined communication
endpoint. This allows components to be used in other FACE environments without changes due
to different transport mechanisms.
The Configuration Capability promotes component portability across many different platforms
by avoiding implementation-specific software. In addition, configurability allows the system
integrator flexibility in choosing the appropriate transport and making the component
connections necessary to meet system requirements.
Using the configuration information provided by the Configuration Capability, the Distribution
Capability understands how to route data between endpoints and how it applies to other
capabilities (e.g., Message Association, Data Conversion). The Configuration Capability allows
components to be written for specific data types and named connections by providing a mapping
between the component connections of the implementation. The Configuration Capability
configures the Distribution Capability, on a per-implementation basis, allowing the component
to continue using the same name and data type for a connection. If you choose to make use of
Central Configuration Service, understand that you may need sufficient inherent configuration in
order to contact the Central Configuration Service.
In addition to assisting the Distribution Capability, the Configuration Capability supports QoS
Management, Message Association, Data Conversion, and Paradigm Translation. Each of these
capabilities will be described in the following sections.
The Message Association Capability allows for message associations within an implementation.
The Message Association Capability supports the ability to tag and associate messages to be sent
by the Distribution Capability. At initialization, the Configuration Capability configures any
message association needed for the implementation.
The Quality of Service (QoS) Management Capability allows the transport of information with
special requirements and service demands. FACE components may require certain QoS
attributes in order to adjust behavior of the Distribution Capability. The QoS Management
Capability uses information from the Configuration Capability to allow components to request
the QoS attributes necessary for successful operation of the component within the
As the reuse of FACE conformant components become more prevalent, the potential for one or
more interface mismatches between components increases. In traditional systems, these interface
mismatches are corrected by either modifying the component code, or adding shim-code on top
of the application. Both of these approaches reduce, and often eliminate, any benefit from
component reuse. To mitigate the impact of interface mismatches, and maximize the portability
of UoPs, the ability to mediate data mismatches is allocated to the Data Transformation
Capability within a Transport Service component.
While there are many types of data mismatches, the Data Transformation Capability is explicitly
required to perform linear data conversions and data marshalling. While it is not required that a
TS component provide more complex transformations, such as conversions between certain
Frames of Reference, it is recommended that those conversions be performed by a TS
component.
The UoP Supplied Model (USM) for reusable components contains sufficient information to
document the required transformations. This information may be used by a TS component to
configure a general-purpose Data Transformation Capability. Alternatively, the same
information may be used to create purpose-built transformation code that meets any specific
safety and security requirements.
The FACE Data Architecture documents the meaning of each data element in each interface of a
UoP. This documentation includes the data type of the element, the units, the Frame of
Reference, and the precision of the representation. Conversions between data types (e.g., integer
to float) or units (e.g., feet to meters) are called linear conversions. These straightforward
conversions are the responsibility of a TS component. These types of conversions occur when
both the source and sink of the data element use the same Frame of Reference, but use different
units. Some, but not all, Frame of Reference conversions are also considered linear conversions.
Examples of Data Marshalling are aggregation, de-aggregation, data filter, and data enricher.
Aggregation takes data from multiple sources and combines it into a single interface parameter.
The UoP Supplied Model (USM) documents the content of each UoP interface. Examination of
the USMs of two or more UoPs provides sufficient information to allow an integrator to
determine the degree and amount of Data Marshalling that is required to reconcile the interfaces
and allow integration. Using this information, the integrator can make decisions about the
appropriateness, or the degree of difficulty of integration.
In addition to Linear Conversions, and Data Marshalling, it is possible that more complex
transformations may be required. Examples of such conversions include many geospatial Frame
of Reference conversions. For example, the conversion of WGS84 Latitude, Longitude, and
Altitude to North, East, Down is a non-trivial conversion. There is no requirement that a TS
component perform these transformations. However, it is recommended that when geospatial
conversions are required, they are performed by TS components.
The FACE Technical Standard, Section 3.8.9, addresses two types of Paradigm Translations:
Message and Protocol. A message paradigm is a pattern of message exchange (e.g.,
Request/Reply, Publish/Subscribe, Queueing, and Command/Response). A protocol paradigm is
a pattern of rules or procedures describing communication interactions (e.g., TCP, UDP, DDS,
and CORBA). Paradigm Translation allows components using different message and/or protocol
paradigms to communicate.
The TSS abstracts components from specific transport mechanisms. Provided are some of the
commonly used transport mechanisms; this is not an all-inclusive list:
UDP/TCP Sockets
ARINC 653 Sampling and Queuing Ports
CORBA
Data Distribution Service (DDS)
POSIX shared memory
The above list contains some of the identified options selectable by the integrator. However, the
underlying mechanism employed by the TSS may extend beyond these as long as they adhere to
the APIs and semantics of the above identified transport mechanisms.
Each of these transport mechanisms can be used within the TSS. Transport mechanisms such as
UDP/TCP Sockets, CORBA, and DDS can be used to communicate between different systems
on a platform.
Additional transport mechanisms can be used at the discretion of the system integrator. The TS
Interface is used between components and the Distribution Capability. The specific transport
mechanism standard governs the interface between the Distribution Capability and the transport
mechanism. The Configuration Capability is responsible for configuring any additional transport
mechanisms and associated connections.
Send_Message() Receive_Message()
in connection_id connection_id
message_size
timeout timeout
connection_id
This parameter is generated by the TSS and returned to the caller during Create_Connection(TS)
as part of the communications setup procedure. It is retained by the calling component for use in
subsequent Send_Message(TS) and Receive_Message(TS) calls to specify to the TSS which
connection to use for the designated action.
timeout
This is an in parameter passed to the call to specify the amount of time the caller is willing to
wait for the action to complete. Note that the resolution of this parameter is one (1) nanosecond
as defined in the FACE Technical Standard and will require scaling when passed to functions
that use other bases (commonly microseconds) for timing parameters. INF_TIME_VALUE (-1)
indicates a wait for an infinitely long time. A function that times out before completion provides
the return code TIMED_OUT.
transaction_id
The use of this parameter is dependent on the role of the component and the messaging
paradigm. In a Request/Reply type interaction, the transaction_id should be used to associate
received data with a previous request when multiple requests may be outstanding within a single
connection. With respect to a CLIENT type connection, this is an out parameter to
Send_Message() and an in parameter for Receive_Message().
For the SERVER side of this connection, transaction_id is an in parameter for Send_Message()
and an out parameter to Receive_Message(). Here, Receive_Message() returns the transaction_id
of the incoming message from the client. The server component then uses this transaction_id
when sending a response using Send_Message(). As a clarification, the same transaction_id does
not need to be supplied on both sides of the TSS. Unique identifiers may be used for the client
and server with the TSS correlating and mapping between them.
In other contexts, such as PUB_SUB, the transaction_id is not intended to be pertinent to the
Send_Message()/Receive_Message() activity and could be disregarded by the end components.
message
The convention of using an in/out parameter for the message buffer signifies that the buffer is
passed by reference or pointer, and not by value, in order to conserve resources. Therefore, it
serves as an input from Send_Message() and an output to Receive_Message().
Supplied as an in/out parameter and used by the calling component to indicate to the TSS the
size of the message to be sent. The TSS implementation then returns the actual amount of data
sent to the calling component for verification.
message_size (Receive_Message())
Supplied as an in parameter and used to indicate to the TSS the maximum size available in the
message buffer for incoming data.
Note: Future versions of the FACE Technical Standard will deprecate the use of this
parameter in Send_Message() and Receive_Message(). Neither the TSS, PSSS, nor
PCS should rely upon the value assigned to this parameter. Rather, the size should be
determined from the component’s knowledge of the data structure.
return_code
As an out parameter, this is used to provide a mechanism for the TSS to return a status indicating
the condition of completion of the requested action.
To promote interoperability and portability between the FACE environments, the return codes
provided by the TSS for each API call should be consistent regardless of the underlying
transport mechanism. For example, the meaning of a return code of NO_ACTION or
NOT_AVAILABLE may differ based on a Receive_Message(TS), Send_Message(TS), or
Register_Callback(TS) function. Similarly, there are certain return codes (e.g.,
NOT_AVAILABLE or ADDR_IN_USE) that may be returned conditionally based on the API
call, transport mechanism used, and system state. Because FACE components do not have
knowledge of the underlying transport mechanism, the TSS must provide a consistent return
status, regardless of transport mechanism, for each API so FACE components can provide
appropriate and consistent handling for the error condition.
This section provides guidance for how TSS implementations should process error conditions
and provide the appropriate FACE return codes for each TS API and the currently identified
transport mechanisms. An explanation of all possible return codes for each TSS function is
provided. Some return codes are specific to a transport mechanism and do not directly map to
status codes in the other standard transport mechanisms.
Note: The next edition of the FACE Technical Standard will provide requirements for Return
Code processing.
Within the following subsections, portions of the transport mechanism descriptions section from
the FACE Technical Standard are shown to provide context.
Similarly, if a DDS connection uses sockets or APEX, the return statuses for those could be
handled accordingly as well. The TS implementer should keep in mind that a component should
be able to be written independent of the TS transport mechanism and interpret status codes
returned by the TS API.
This section documents the correlation between the ARINC 653 functions and return codes to
FACE functions and return codes. ARINC 653 follows a couple of guiding principles when
associating specific error conditions with the return code:
1. Input parameters are validated and INVALID_PARAM is returned if invalid.
2. If the input parameter value is also part of configuration data, but is inconsistent with the
configuration data, INVALID_CONFIG is returned instead of INVALID_PARAM.
These principles were used when considering the differences in the parameters and configuration
data for the ARINC 653 services potentially used by a TSS and the FACE TSS functions used
by a FACE based component.
ARINC 653 defines fewer return codes than the FACE Technical Standard and these are a
proper subset as referenced in Table 2. The FACE return codes without mappings to ARINC 653
are for conditions that cannot occur when using ARINC 653 services.
Table 2: Mapping Between TSS FACE Return Codes and ARINC 653 Return Codes
NO_ERROR NO_ERROR
NO_ACTION NO_ACTION
NOT_AVAILABLE NOT_AVAILABLE
INVALID_PARAM INVALID_PARAM
INVALID_CONFIG INVALID_CONFIG
INVALID_MODE INVALID_MODE
TIMED_OUT TIMED_OUT
Because the FACE return codes fully encapsulate the ARINC 653 return codes, the ARINC 653
transport mechanisms for Queuing ports and Sampling ports will be trivial for the ARINC 653
services that have a corresponding FACE TSS function.
The POSIX standard defines a set of error numbers which are mapped to symbolic constants
found in the file <errno.h>. When the return value of a POSIX service indicates a failure has
occurred (typically by returning -1), the cause of the error can be identified by reading the error
number stored in errno. When a TSS is implemented using an underlying set of POSIX services,
it will be required to map POSIX errors into FACE return codes. This document will provide
guidance for how to map the POSIX error numbers into FACE return codes.
The POSIX specification defines many more error numbers than the FACE Technical Standard
defines return codes. In spite of this, conceptual differences between the FACE, ARINC 653,
and POSIX Specifications lead to FACE return codes which do not map into POSIX error
number equivalents.
An example of mapping between POSIX error numbers and FACE returns codes is shown in
Table 3. The FACE return codes without mappings to POSIX are for conditions that cannot
occur when using POSIX services.
Table 3: Mapping Between TSS FACE Return Codes and POSIX Error Numbers
NO_ACTION EISCONN
EEXIST
NOT_AVAILABLE EAGAIN
EWOULDBLOCK
EADDRNOTAVAIL
EINTR
ADDR_IN_USE EADDRINUSE
EINVAL
INVALID_PARAM EINVAL
EBADF
EAGAIN
ELOOP
ENAMETOOLONG
ENOENT
ENOTDIR
ENOTSOCK
EWOULDBLOCK
EIO
ENOTCONN
INVALID_CONFIG EAFNOSUPPORT
EINVAL
EMFILE
ENETUNREACH
ENFILE
ENOBUFS
ENOMEM
EFAULT
EOPNOTSUPP
EPROTONOSUPPORT
EROFS
ENOSPC
EMSGSIZE
ECONNREFUSED
PERMISSION_DENIED EPERM
EACCES
EFAULT
INVALID_MODE EINTR
TIMED_OUT ETIMEDOUT
EAGAIN
POSIX services do not typically set the errno value when successful. It is up to the calling
function to set errno to 0 before calling any POSIX service to ensure that the value read from
errno is due to a failure in the service being called and not left over from a previous call to a
POSIX service. There is no standard symbolic value for this. Some implementations include
E_OK, EOK, or ENOERROR but these are not standard and, if provided by an OS, should not
be used in a FACE conformant component.
The CORBA connection type is more than just transport mechanisms, but rather transport
services that may use one or more transport mechanisms. Depending upon the CORBA vendor
and TSS implementation, the return statuses from the specific CORBA implementation may
vary for the same condition. It would be difficult to provide detailed return status processing for
all possibilities. TSS implementers for a CORBA connection type should attempt to return status
codes from FACE TS APIs in a manner that is consistent with other transport mechanisms.
The suggested mapping between CORBA return codes and FACE returns codes is shown in
Table 4. The FACE return codes without mappings to CORBA are for conditions that cannot
occur when using CORBA services.
NO_ACTION NO_RESPONSE
NOT_AVAILABLE NO_IMPLEMENT
INVALID_PARAM BAD_CONTEXT
BAD_INV_ORDER
BAD_PARAM
BAD_TYPECODE
DATA_CONVERSION
INV_FLAG
INV_IDENT
INV_OBJREF
MARSHAL
OBJ_ADAPTER
OBJECT_NOT_EXIST
TRANSIENT
UNKNOWN
INVALID_CONFIG BAD_QOS
CODESET_INCOMPATIBLE
IMP_LIMIT
INITIALIZE
INTERNAL
INTF_REPOS
INVALID_POLICY
NO_RESOURCES
PERMISSION_DENIED FREE_MEM
NO_MEMORY
NO_PERMISSION
PERSIST_STORE
INVALID_MODE BAD_OPERATION
TIMED_OUT TIMEOUT
CONNECTION_CLOSED COMM_FAILURE
Table 4 attempts to encompass most of the known CORBA exception codes in the CORBA
specification, Version 3.3. Depending upon the version of CORBA used, not all of these
exception codes may be available. In addition, depending on how CORBA is configured (e.g.,
Refer to the CORBA standard for more information and explanation of the specific exception
codes.
The DDS connection type is more than just transport mechanisms, but rather transport services
that may use one or more transport mechanisms. Depending upon the DDS vendor and TSS
implementation, the return statuses from the specific DDS implementation may vary for the
same condition. It would be difficult to provide detailed return status processing for all
possibilities. TSS implementers for a DDS connection type should attempt to return status codes
from FACE TS APIs in a manner that is consistent with other transport mechanisms.
The nominal mapping between DDS return codes and FACE return codes is shown in Table 5.
The FACE return codes without mappings to DDS are for conditions that cannot occur when
using DDS services.
Table 5: Mapping Between TSS FACE Return Codes and DDS Return Code
NO_ERROR OK
NO_ACTION ALREADY_DELETED
NO_DATA
NOT_AVAILABLE UNSUPPORTED
ADDR_IN_USE N/A
INVALID_PARAM BAD_PARAMETER
INVALID_CONFIG ERROR
OUT_OF_RESOURCES
IMMUTABLE_POLICY
INCONSISTENT_POLICY
PERMISSION_DENIED N/A
INVALID_MODE NOT_ENABLED
PRECONDITION_NOT_MET
ILLEGAL_OPERATION
TIMED_OUT TIMEOUT
Note: Per the DDS standard, the return codes OK, ERROR, ILLEGAL_OPERATION,
ALREADY_DELETED, UNSUPPORTED, and BAD_PARAMETER are the standard
return codes and the specification won’t mention them explicitly for each operation.
Refer to the DDS standard for more information and for which specific operations may
return any of the additional (non-standard) error codes. For each of the FACE TS APIs,
the standard return codes will be mapped in addition to any additional error codes.
The FACE Technical Standard, Section E.3.1 describes the Initialize(TS) function. The C
language prototype is:
/* C style declaration */
void FACE_TS_Initialize (
/* in */ FACE_CONFIGURATION_RESOURCE configuration,
/* out */ FACE_RETURN_CODE_TYPE *return_code);
The possible return codes for this function are described in Table 6.
Table 6: Initialize Return Codes
The FACE Technical Standard, Section E.3.2 describes the Create_Connection(TS) function.
The C language prototype is:
/* C style declaration */
void FACE_TS_Create_Connection (
/* in */ FACE_CONNECTION_NAME_TYPE connection_name,
/* in */ FACE_MESSAGING_PATTERN_TYPE pattern,
/* out */ FACE_CONNECTION_ID_TYPE *connection_id,
/* out */ FACE_CONNECTION_DIRECTION_TYPE *connection_direction,
/* out */ FACE_MESSAGE_SIZE_TYPE *max_message_size,
/* in */ FACE_TIMEOUT_TYPE timeout,
/* out */ FACE_RETURN_CODE_TYPE *return_code);
The possible return codes for this function are described in Table 7.
TIMED_OUT Timeout period for request has expired. For example, this may be
returned on a POSIX socket “connect”.
Since the specific return codes for each transport mechanism may differ, the following sections
describe the specific return code explanation for each transport mechanism. There is an attempt
to keep the return codes consistent regardless of the transport mechanism. In addition, the TSS
Create_Connection(TS) function should be non-blocking, so a TSS implementation should
avoid performing blocking operations or internal return code processing that would result in a
blocking call.
The FACE return codes should be based directly on the return codes for this service in ARINC
653 as shown in Table 8. Refer to ARINC 653 for more information.
The FACE return codes should be based directly on the return codes for this service in ARINC
653 as shown in Table 9. Refer to ARINC 653 for more information.
Table 9: Create Connection Queuing Port Return Code Mapping
POSIX Socket
When a socket is instantiated through Create_Connection(TS), there are certain parameters that
have input and others associated with ARINC 653 connections that are NULL due to no
operation for this particular transport mechanism.
The following POSIX functions are called in this order by TS when the POSIX socket
connection is instantiated by Create_Connection(TS).
/* NOTE: THESE ARE THE CALLS MADE BY TRANSPORT SERVICES */
int socket(int domain, /* connection_domain */
int type, /* socket_type */
int protocol); /* chosen by the TSS */
The returned “mqd_t” from the mq_open() call maps to the connection_id.
The FACE return codes should be mapped based on the POSIX errno values that may occur
with any of the POSIX message queue calls performed under a Create_Connection(TS) (e.g.,
mq_open()). Table 11 provides a suggested mapping to FACE return codes.
PERMISSION_DENIED EACCES The queue exists, but caller does not have
permission to open it, name contained more
than one slash.
The following POSIX functions are called in this order by TS when the POSIX shared memory
connection is instantiated by Create_Connection(TS).
/* NOTE: THESE ARE THE CALLS MADE BY TRANSPORT SERVICES */
int shm_open(const char *name, /* connection_name */
int oflag, /* chosen by TSS */
mode_t mode); /* chosen by TSS */
CORBA
The possible CORBA exception codes may differ depending on how the Object Request Broker
(ORB) is initialized and the specific TSS implementation. The return codes listed in Table 13
represent a nominal set of expected return statuses, but may not be inclusive. Refer to Table 4
for additional mappings of exception codes that may be returned depending on the specific
CORBA invocations being made by the TSS implementation.
Table 13: Create Connection CORBA Exception Code Mapping
The possible DDS-based return statuses may differ depending on how the TSS is implemented.
The return codes listed in Table 14 represent a nominal set of expected return statuses, but may
not be exhaustive:
Table 14: Create Connection DDS Return Code Mapping
The FACE Technical Standard, Section E.3.3 describes the Destroy_Connection(TS) function. A
sample function prototype is:
/* C style declaration */
void FACE_TS_Destroy_Connection(
/* in */ FACE_CONNECTION_ID_TYPE connection_id,
/* out */ FACE_RETURN_CODE_TYPE *return_code);
The possible return codes for this function are described in Table 15.
Table 15: Destroy Connection FACE Return Codes
NO_ACTION System state was unaffected by the operation. This will be returned if no
operation was performed (e.g., ARINC 653, connection already destroyed).
NOT_AVAILABLE Action could not be completed at the time (e.g., not supported or interrupt).
The following describes the guidelines from the FACE Technical Standard:
1. The Destroy_Connection(TS) function performs no action and returns no errors for
ARINC 653-based software components.
2. TSS keeps track of the mqd_t descriptors and have them searchable by connection name.
3. TSS keeps track of the address and length of the shared memory referenced by the
connection name.
4. int mq_unlink(const char *name); is called after mq_close() in TSS.
5. int shm_unlink(const char *name); is called after munmap() in TSS.
POSIX Socket
A POSIX socket will need to be closed upon a Destroy_Connection(TS) function call. The
following POSIX functions are called in this order by TS when the POSIX socket connection is
closed by Destroy_Connection(TS):
/* NOTE: THESE ARE THE CALLS MADE BY TRANSPORT SERVICES */
int close(int socket);
The FACE return codes provided in Table 17 should be mapped based on the POSIX errno
value that may occur with any of the socket-based calls performed under a
Destroy_Connection(TS) (e.g., close()).
Table 17: Destroy Connection Socket Return Code Mapping
POSIX Queue
The FACE return codes referenced in Table 18 should be mapped based on the POSIX errno
value that may occur with any of the POSIX queue calls performed under a
Destroy_Connection(TS) (e.g., mq_close(), mq_unlink()).
Table 18: Destroy Connection Message Queue Return Code Mapping
The FACE return codes referenced in Table 19 should be mapped based on the POSIX errno
value that may occur with any of the POSIX shared memory calls performed under a
Destroy_Connection(TS) (e.g., munmap(), shm_unlink()).
Table 19: Destroy Connection Shared Memory Return Code Mapping
CORBA
The possible CORBA-based return statuses may differ depending on how the TSS is
implemented. The exception codes referenced in Table 20 represent a nominal set of expected
return statuses, but may not be exhaustive. Refer to Table 4 for additional mappings of exception
codes that may be returned depending on the specific CORBA invocations being made by the
TSS implementation.
Table 20: Destroy Connection CORBA Exception Code Mapping
The possible DDS-based return statuses may differ depending on how the TSS is implemented.
The return codes referenced in Table 21 represent a nominal set of expected return statuses, but
may not be exhaustive:
Table 21: Destroy Connection DDS Return Code Mapping
The FACE Technical Standard, Section E.3.4 describes the Receive_Message(TS) function. A
sample function prototype is:
/* C style declaration */
void FACE_TS_Receive_Message_FACE_SPECIFIED_TYPE (
/* in */ FACE_CONNECTION_ID_TYPE connection_id,
/* in */ FACE_TIMEOUT_TYPE timeout,
/* inout */ FACE_TRANSACTION_ID_TYPE *transaction_id,
/* inout */ FACE_SPECIFIED_TYPE *message,
/* in */ FACE_MESSAGE_SIZE_TYPE message_size,
/* out */ FACE_RETURN_CODE_TYPE *return_code);
The possible return codes for this function are described in Table 22.
Table 22: Receive Message FACE Return Codes
INVALID_PARAM One or more of the parameters are incorrect (e.g., invalid connection ID,
timeout out of range).
INVALID_CONFIG For ARINC/POSIX queues, the queue has overflowed since last read.
The following describes the guidelines from the FACE Technical Standard:
Receive message is used to call the following ARINC 653 function calls:
The FACE return codes for Receive_Message() should be based directly on the return codes for
this service in ARINC 653 as shown in Table 23. Refer to ARINC 653 for more information.
Table 23: Receive Message Sampling Port Return Code Mapping
The FACE return codes for Receive_Message() should be based directly on the return codes for
this service in ARINC 653 as shown in Table 24. Refer to ARINC 653 for more information.
Table 24: Receive Message Queuing Port Return Code Mapping
POSIX Socket
The FACE return codes referenced in Table 25 should be mapped based on the POSIX errno
values that may occur with any of the socket based calls performed under a
Receive_Message(TS) (e.g., recv(), recvfrom(), recvmsg()).
Table 25: Receive Message Socket Return Code Mapping
The FACE return codes provided in Table 26 should be mapped based on the POSIX errno
value that may occur with any of the socket-based calls performed under a
Receive_Message(TS) (e.g., mq_receive(), mq_timedreceive()).
The FACE return codes provided in Table 27 should be mapped according to the implementation
of shared memory read (e.g., memcpy()). There are no specific return codes associated with the
POSIX calls, but the implementation should check for and return the following errors.
Table 27: Receive Message Shared Memory Return Code Mapping
CORBA
The possible CORBA-based return statuses may differ depending on how the TSS is
implemented. The exception codes given in Table 28 represent a nominal set of expected return
statuses, but may not be exhaustive. Refer to Table 4 for additional mappings of exception codes
that may be returned depending on the specific CORBA invocations being made by the TSS
implementation.
Table 28: Receive Message CORBA Exception Code Mapping
The possible DDS-based return statuses may differ depending on how the TSS is implemented.
The return codes given in Table 29 represent a nominal set of expected return statuses, but may
not be exhaustive:
Table 29: Receive Message DDS Return Code Mapping
TIMED_OUT N/A DDS will not return TIMEOUT, but this could
be returned by the TSS implementation.
The FACE Technical Standard, Section E.3.5 describes the Send_Message(TS) function. A
sample function prototype is:
/* C style declaration */
void FACE_TS_Send_Message_FACE_SPECIFIED_TYPE (
/* in */ FACE_CONNECTION_ID_TYPE connection_id,
/* in */ FACE_TIMEOUT_TYPE timeout,
/* inout */ FACE_TRANSACTION_ID_TYPE *transaction_id,
/* inout */ FACE_SPECIFIED_TYPE *message,
/* inout */ FACE_MESSAGE_SIZE_TYPE *message_size,
/* out */ FACE_RETURN_CODE_TYPE *return_code);
The possible return codes for this function are described in Table 30.
Table 30: Send Message FACE Return Codes
INVALID_PARAM One or more of the parameters are incorrect (e.g., invalid connection ID,
timeout out of range, message size).
The following describes the guidelines from the FACE Technical Standard:
Send message is used to call the following ARINC 653 function calls:
The FACE return codes for should be based directly on the return codes for this service in
ARINC 653 as given in Table 31. Refer to ARINC 653 for more information.
Table 31: Send Message Sampling Port Return Code Mapping
The FACE return codes for should be based directly on the return codes for this service in
ARINC 653 as given in Table 32. Refer to ARINC 653 for more information.
Table 32: Send Message Queuing Port Return Code Mapping
The FACE return codes provided in Table 33 should be mapped based on the POSIX errno
value that may occur with any of the socket-based calls performed under a Send_Message(TS)
(e.g., send(), sendmsg(), sendto()).
Table 33: Send Message Socket Return Code Mapping
The FACE return codes provided in Table 34 should be mapped based on the POSIX errno
value that may occur with any of the socket-based calls performed under a Send_Message(TS)
(e.g., mq_send(), mq_timedsend()).
The FACE return codes referenced in Table 35 should be mapped according to the
implementation of shared memory write (e.g., memcpy()). There are no specific return codes, but
the implementation should check for and return the following errors.
Table 35: Send Message Shared Memory Return Code Mapping
CORBA
The possible CORBA-based return statuses may differ depending on the ORB selected and how
the TSS is implemented. The exception codes referenced in Table 36 represent a nominal set of
expected return statuses, but may not be exhaustive. Refer to Table 4 for additional mappings of
exception codes that may be returned depending on the specific CORBA invocations being made
by the TSS implementation.
The possible DDS-based return statuses may differ depending on how the TSS is implemented.
The return codes referenced in Table 37 represent a nominal set of expected return statuses, but
may not be exhaustive:
Table 37: Send Message DDS Return Code Mapping
The FACE Technical Standard, Section E.3.6 describes the Register_Callback(TS) function. A
sample function prototype is:
/* C style declaration */
void FACE_TS_Register_callback (
/* in */ FACE_CONNECTION_ID_TYPE connection_id,
/* in */ FACE_WAITSET_TYPE waitset,
/* inout */ FACE_Read_Callback *data_callback,
/* in */ FACE_MESSAGE_SIZE_TYPE max_message_size,
/* out */ FACE_RETURN_CODE_TYPE *return_code);
The return status for the registration of the callback is specific to the TSS implementation and
not necessarily specific to the transport mechanism associated with the connection. Thus, TSS
implementers should return one of the following return statuses so the caller knows whether a
callback function is available, and if so whether it was successful and processing from the FACE
component can continue.
The possible return codes for this function are described in Table 38.
Table 38: Register Callback FACE Return Codes
INVALID_PARAM One or more of the parameters are incorrect (e.g., invalid connection
identification (ID), invalid callback, invalid message size).
INVALID_CONFIG One or more fields in the configuration data for the connection is invalid
(e.g., invalid TSS thread parameters).
The FACE Technical Standard, Section E.3.7 describes the Unregister_Callback(TS) function.
A sample function prototype is:
/* C style declaration */
void FACE_TS_SPECIFIED_TYPE_Unregister_Callback_<MessageType> (
/* in */ FACE_CONNECTION_ID_TYPE connection_id,
/* out */ FACE_RETURN_CODE_TYPE *return_code);
The return status for the unregistration of the callback is specific to the TSS implementation and
not necessarily specific to the transport mechanism associated with the connection. Thus, TSS
The possible return codes for this function are described in Table 39.
Table 39: Unregister Callback FACE Return Codes
INVALID_PARAM One or more of the parameters are incorrect (e.g., invalid connection
identification (ID), invalid callback, invalid message size).
Sockets getsockname()
DDS does not need to call anything to determine the status of the connection. The most recent
DDS_ReturnCode_t or the validity of DataReader/Writer handles can be used to determine the
connection status.
NOT_AVAILABLE Connection status information is not available for the specified connection
ID.
The FACE return codes for Get_Connection_Parameters(TS) should be based directly on the
return codes for this service in ARINC 653 as referenced in Table 41. Refer to ARINC 653 for
more information.
Table 41: Get Connection Sampling Port Return Code Mapping
The FACE return codes for Get_Connection_Parameters(TS) should be based directly on the
return codes for this service in ARINC 653 as referenced in Table 42. Refer to ARINC 653 for
more information.
Table 42: Get Connection Queuing Return Code Mapping
The FACE return codes given in Table 43 should be mapped based on the POSIX errno value
that may occur with any of the socket-based calls performed under a
Get_Connection_Parameters(TS) (e.g., getsockname()).
Table 43: Get Connection Socket Return Code Mapping
The FACE return codes given in Table 44 should be mapped based on the POSIX errno value
that may occur with any of the message queue-based calls performed under a
Get_Connection_Parameters(TS) (e.g., mq_getattr()).
Table 44: Get Connection Message Queue Return Code Mapping
The FACE return codes given in Table 45 should be mapped according to the implementation.
There are no specific return codes, but the implementation should check for and return the
following errors.
Table 45: Get Connection Shared Memory Return Code Mapping
Since there is not a specific CORBA implementation for getting connection status, it will be up
to the TSS implementation to maintain the connection status and provide the appropriate return
codes. The return codes referenced in Table 46 represent a nominal set of expected return
statuses, but may not be exhaustive:
Table 46: Get Connection CORBA Exception Code Mapping
Since there is not a specific DDS implementation for getting connection status, it will be up to
the TSS implementation to maintain the connection status and provide the appropriate return
codes. The return codes referenced in Table 47 represent a nominal set of expected return
statuses, but may not be exhaustive:
Table 47: Get Connection DDS Return Code Mapping
2.5.2 Configurability
The Configuration Capability is responsible for retrieving and providing configuration
information to the TS capabilities. Most of the configuration information supports the
Distribution Capability directly.
Reference the FACE Technical Standard, Section E.5 for the full list of configuration attributes.
The following is a list of the attributes with a brief description of each.
The Connection Type attribute is used to specify the underlying transport mechanism used for a
TS connection. There are attributes specified later for further configuration information specific
The Connection Direction attribute is used to specify the behavior of the connection and is
returned from the Create_Connection(TS) call. It helps distinguish whether a connection is
Publish/Subscribe or client/server and which part of the interaction the UoP requires of the
connection.
Connection Domain and Socket Type are specific to the POSIX socket transport mechanism and
are internal to the TSS. Connection Domain distinguishes between UNIX or Internet sockets.
Socket Type is used to determine whether TCP or UDP is used. If other network protocols (e.g.,
Real-time Transport Protocol (RTP)) are used, these Connection Domain and Socket Type
values should be adjusted to indicate this.
Max Message Size is used to indicate the maximum size of the data to be sent on the connection.
This value should be the maximum size of the data plus the size of the TSS header as described
in the FACE Technical Standard, Section 3.7.5, and determined by the system integrator when
configuring the TS connection.
Message Range describes the maximum number of messages the Distribution Capability is
required to buffer. Message Range is only used when ReadWriteBehavior is configured to be
Queuing.
Messages Associated is a list of Globally Unique Identifiers (GUIDs) used to indicate the
messages transmitted in the configuration. Note that this is not related to the Message
Association Capability described in Section 2.5.1.4.
Data Transform Required is a boolean used to indicate whether or not data on this connection
needs to be converted to allow for proper execution of the UoP.
Refresh Period is an attribute used to indicate the length of time a message is valid. For example,
Refresh Period can be used to configure ReadWriteBehavior for Sampling Ports.
The Reliability attribute indicates whether or not transmission of data must be guaranteed or
best-effort. If guaranteed delivery is required, use an underlying guaranteed delivery transport
mechanism. Transports that provide guaranteed delivery natively can be used for best-effort
delivery without further configuration or development.
ReadWriteBehavior is used to indicate whether or not the connection should act in a similar
manner to the ARINC 653 Sampling or Queuing ports. The use of this attribute does not require
the use of the ARINC 653 transport mechanisms.
Queue Discipline attribute describes the queuing behavior of a connection. The attribute can be
set to First In, First Out (FIFO) or Priority. Treatment of queuing buffers is different in POSIX
and ARINC. POSIX is priority-based and ARINC is FIFO-based. For ARINC this attribute
affects blocked processes. Priority queuing allows for the possibility that some data may be more
important than others. Data may be placed into the queue based on priority. This attribute is only
valid when the ReadWriteBehavior is configured to be Queuing.
Receive Flag and Send Flag are used to configure POSIX socket connections only.
The Filter Specification value is an optional configuration item and should only be implemented
on the producer/publisher TS Library. The Filter Specification value is defined by a Structured
Query Language (SQL) string. If Object Management Group (OMG) DDS is used, then filters
are built into the transport mechanism. If OMG DDS is not used, and the Filter Specification
functionality is desired, then the TSS developer needs to implement an SQL parser and filter
inside the TS Library.
Thread List, Priority, Scheduling Policy, Thread Rate, and Thread Stack Size relate to listing the
threads and their associated attributes the TSS may require. This may be necessary if a
connection uses callbacks to provide data to a component, to separate network stack processing
for sockets, or provide different QoS Management Capabilities.
The Configuration Capability supports both static and dynamic configuration. Static
configuration requires the TSS to be configured at compilation time. This can create more
optimized code and minimize the amount of resource allocation at run-time. Dynamic
configuration requires the TSS to be configured at initialization. This is done through a call to
Initialize(). The configuration resource for the component’s connections is passed to the TSS.
A generic example TS Configuration File for an implementation with two connections being
configured is shown below. This example does not show the XSD for the system, but an XML
file validated against an XSD based on the FACE Technical Standard. The XML has elements
for the parameters defined in the FACE Technical Standard, Section E.12. Unneeded parameters
can be empty fields as seen in the domain and socket type when configuring a nonsocket
connection. Unneeded parameters can also be omitted as exampled by the thread-specific
parameters left out of the XML because only one thread is being used. Both connections do not
require a data transformation or a filter specification.
The first connection configuration shown is configuring a queuing port for two-way
Request/Reply communication. The queuing port does not need to configure a socket so all of
the socket associated parameters are left empty. There is only one GUID associated with this
connection and the communication is reliable so messages are guaranteed to be delivered.
The second connection configuration shown is configuring a POSIX socket connection. The
socket parameters are defined so the TS service knows the source and destination of the
connection. There are two GUIDs associated with this connection and the communication is
unreliable so messages cannot be guaranteed.
<?xml version=”1.0” encoding=”UTF-8”?>
<connection_list>
<connection>
<name>example_connection1</name>
<type>QUEUING_PORT</type>
<direction>SOURCE</direction>
<connection>
<name>example_connection2</name>
<type>SOCKET</type>
<direction>
TWO_WAY_REQUEST_REPLY_ASYNCHRONOUS_SOURCE
</direction>
<maxmessagesize>100</maxmessagesize>
<messagerange>20</messagerange>
<associatedMessages>
<messagedefinitionguid>12</messagedefinitionguid>
<messagedefinitionguid>13</messagedefinitionguid>
</associatedMessages>
<datatransformrequired>false</datatransformrequired>
<refreshperiod>1000000000</refreshperiod>
<reliability>UNRELIABLE</reliability>
<readwrite_behav>BUFFERING</readwrite_behav>
<queue_discipline>FIFO</queue_discipline>
<domain>INET</domain>
<sockettype>DGRAM</sockettype>
<receiveflag><!--optional --></receiveflag>
<sendflag><!--optional --></sendflag>
<sourceaddress>192.168.1.29</sourceaddress>
<destinationaddress>192.168.1.30</destinationaddress>
<sourceport>24400</sourceport>
<destinationport>31000</destinationport>
<filterspecification><!--optional --></filterspecification>
<threadlist>
2.5.3 Variability
A PCS or PSS component uses a TS Library to route data to the appropriate endpoints. The TS
Library can use an IPC or a central distributor. Either implementation is acceptable. System
integrators should choose the best approach to meet their requirements.
Figure 20 shows an example data flow from a PCS component to both a PCS and PSS
component through TS Libraries. The approach in Figure 20 allows for TS Libraries to
communicate directly through Inter-Partition Communication.
PDS 1, PDS 2 and I/O
All data passed through Service are
Different in different
address spaces
the TS API is conformant address spaces
to the FACE Data Model
Portable Component 8
2 Segment
6/7
3/4 PCS 1 PCS 2
4/5
TS API TS API
TS library 1 Transport Services TS library 2
OS API Segment
FACE FACE OS API
Data Data
OS API
Model Model
TS library 3
TS API
PSS 4/5
Component
6/7
Platform-Specific
8
Services Segment
The list below describes the sequence of actions performed to send data across the TS Interface.
1. PCS populates the data structure conformant to the FACE Data Model (FACE Technical
Standard, Section 3.6).
2. PCS provides the data structure to TS Library by calling the TS API Send_Message
function (FACE Technical Standard, Section E.3.5).
3. TS Library constructs the TS Message Instance based on the TS Message and Internal
Data Structure (FACE Technical Standard, Section 3.7.5).
4. TS Library executes the Send_Message function using IPC to send the TS Message
Instance.
Figure 21 shows an example data flow from a PCS component to both a PCS and PSS
component through the TS Central Distributor. The approach in Figure 21 allows for smaller
code footprint to be linked against UoPs, but can introduce latency to communications that may
interfere with correct operation of a system. This method abstracts the transport mechanism
away from the TS Library. It may make sense to package the TS Libraries and TSS Central
Distributor UoPs together to provide complete functionality as shown in Figure 21.
PDS 1, PDS 2 and I/O
Service address
Different are in different
spaces
address spaces
1
Portable Component
9
Segment
2 8
The TSS Central Distributor creates, manages, and utilizes all the connections necessary to
perform message distribution. Each TS Library only communicates with the TS Library
associated with the TSS Central Distributor. The list below describes the sequence of actions
performed to send data across the TS Interface:
1. PCS populates the data structure (TSS Message payload) conformant to the FACE Data
Architecture (FACE Technical Standard, Section 3.6).
Figure 22 shows an example data flow between two PSS components and a PCS component
through TS Libraries. The approach in Figure 22 allows for TS Libraries to communicate
between processors through socket calls allowed in the FACE OS API. Six different FACE
conformant data models are used in this example to show how data transformation can be on
data sent across the TS Interface. Complete pseudo-code for the example shown in Figure 22 can
be found in Appendix A.
Processor 2
Display
Manager
TS API
TS library
OS API
Processor 1 Processor 3
OS API OS API
TS library TS library
TS API TS API
EGI GLX
Manager Server
I/O API
1553
1553 I/O
Service
EGI MFD
The TSS Message Paradigm Translation Capability is used to convert data messages from one
messaging paradigm to another (e.g., Request/Reply to Publish/Subscribe, Publish/Subscribe to
Request/Reply). An example implementation using a Message Paradigm Translator is shown in
Figure 23. The example includes the following:
A PCS component communicating through the TS API, designed to use a
Publish/Subscribe message pattern
A PCS component communicating through the TS API, designed to create a connection
using the Request/Reply message pattern
A TS Library with a distribution capability designed to use a Message Paradigm
Translator to provide communications between the components communicating over the
confiugred transport mechanisms to adapt Publish/Subscribe message patterns to
Request/Reply message patterns
The TS Library performs the Distribution Capability function
Portable Component
Segment
PCS 1 PCS 2
TS API TS API
DDS client Transport Services Segment CORBA client
library library
OS API OS API
FACE DDS Message CORBA FACE
Data Paradigm Data
Model client client Model
Translator OS API
CORBA client
library
TS API
PSS
Platform-Specific
Services Segment
The TSS Protocol Paradigm Translation Capability is used to convert data messages from one
protocol paradigm to another (e.g., CORBA to DDS, DDS to CORBA). An example
implementation using a Paradigm Translator is shown in Figure 24. The example includes the
following:
A PCS component communicating through the TS API, designed to use a DDS messaging
paradigm and protocol
A PCS component communicating through the TS API, designed to use a CORBA
messaging paradigm and protocol
A PSSS component communicating through the TS API, designed to use a CORBA
messaging paradigm and protocol
A TS Library with a distribution capability designed to use a Paradigm Translator to
provide communications between the components using the DDS and CORBA messaging
paradigms and protocols
DDS/CORBA Client library performs the Distribution Capability function
Portable Component
PCS 1 Segment PCS 2
TS API TS API
Platform-Specific
Services Segment
The TSS Protocol Translation function is an optional capability provided when more than one
transport protocol is used within the scope of a system. It provides the ability to connect
instances of the TS Library using different transport protocols. The TSS components are the only
components using data transport methods to exchange data between PCS and PSSS components.
The TSS Protocol Translation may be implemented using a centralized or distributed approach.
Figure 25 shows an example of a centralized implementation where a centralized Protocol
Translation component acts as a bridge between PCS 1 and PCS 2 TS Libraries each using
different transport protocols to exchange data. Figure 26 shows an example of a distributed
implementation between PCS 1, PCS 2, and PCS 3 TS Libraries where PCS 3 exchanges data
to/from both PCS 1 and PCS 2. The implementation of the TSS Protocol Translation shows
mediation of different protocols rather than a translation between protocols. The internal
interface to a protocol module may be standardized to enable portability.
Portable Component
Segment
PCS 1 PCS 2
TS API TS API
Transport Services
Segment
Protocol Translation
Platform-Specific
Services Segment
Portable Component
Segment
Distribution
Capability
Protocol Translation
FACE FACE
Distribution OS Distribution
UDP OS Data OS UDP
TCP TCP Data OS TCP
Capability API Capability
API Model API Model API
Platform-Specific
Services Segment
The TSS Message Paradigm Translation function is an optional capability provided to connect
PCS and/or PSSS components using different messaging paradigms. Messaging paradigms are
the architectural patterns describing how message-passing software components interact. Each
messaging paradigm requires each side of the communication exchange to agree to and fulfill a
contract to establish communication. Software components sharing the same data, the same
The TSS Message Paradigm Translation is responsible for matching the messaging patterns
between software components. The TSS Message Paradigm Translation may be implemented
using a centralized or distributed approach. Figure 27 is a depiction of a centralized message
paradigm translator, while Figure 28 shows a distributed implementation. In Figure 27, the
centralized Message Paradigm Translation component acts as a bridge between PCS 1 and PCS
2 TS Libraries, each of which uses different message paradigms when exchanging data. In
Figure 28, the PCS 1 TS Library provides a sevice to PCS 1 to translate its client-server message
paradigm to the Publish/Subscribe paradigms used by PCS 2 and PCS 3. Message paradigm
translation may require the storage of state information contained within the messages in
addition to the state information of the message. Message paradigm translation may place
additional computational and memory resource demands. These requirements may impact the
choice to use translation, and where to obtain and manage the required resources to avoid
negatively impacting system performance.
PDS 1, PDS 2 and I/O
All data passed through Service are
Different in different
address spaces
the TS API is conformant address spaces
to the FACE Data Model
Portable Component
PCS 1 Segment
PCS 2
(Request / Response) (Publish / Subscribe)
TS API TS API
Transport Sevices
Distribution Distribution
Capability
Segment Capability
TS Message
Paradigm Translation
Service
OS FACE OS FACE
Client API Data Server Sub OS OS
API Data Pub
Model API API
Model
Request
Message Paradigm
Response Translation
TS Library TS Library
Platform-Specific
Services Segment
Portable Component
Segment
PCS 1 PCS 3 PCS 2
(Request / Response) (Publication) (Subscription)
TS API TS API TS API
Transport Services
Distribution Message Distribution
Capability Paradigm
Segment Capability
Translation
Client
TS Library
Distribution
Capability FACE
Server OS Data OS
Pub Sub
API Model API
FACE
OS OS
Sub Data
API API
Model
TS Library TS Library
Platform-Specific
Services Segment
The TSS Buffering Methodology can be supported as a design choice when sockets are used as
an underlying transport. The Initialize(TS) function is used to establish the TS Library in a
known, determinant state and configure the Distribution Capability based on the configuration.
The configuration file supports the TSS Buffering Methodology by assigning priorities, rates,
scheduling polices, and number of threads used. The TSS Buffering Methodology approach is
shown in Figure 29.
Low Priority
Initialize Process
Periodic
Connections
Queue(s) Thread
Queue(s)
Queue
Transport
Config File Callback
Thread-based Services
Initialze() Or Read Distribution Capability Segment
TS API
Platform-Specific
PSS Services Segment
This approach can be used when writing data to connections and allows for maximum flexibility
and for multiple design options (synchronous and asynchronous communications) across
Department of Defense (DoD) Aviation platforms.
The resource requirement of the Distribution Capability is dependent upon the needs of the
components and system integrator. Each TS Library should have resources allocated to support
the data required by the component. At a minimum, memory is required to store underlying
transport mechanism identifiers and other connection-specific information to allow for
distribution of data.
TS Interface
FACE
FACEConformance
Certification
executed
Certification
individually
executedon TSS Type TSS Type
each
individually
component
on each
(PCS, Abstraction Abstraction
component
PSSS, TSS
(PCS,
TypePSSS,
TSS
Abstraction,
Type Abstraction,
and TSS TS Type Abstraction Interface
and UoC).
TSS UoP).
TSS UoP TSS UoP
The following two scenarios provide a TSS Type Abstraction implementation: the PCS/PSSS
software supplier or the system integrator (acting in the role of a software supplier).
Figure 30 identifies multiple scenarios to address portability and interoperability of TSS UoCs
across platforms.
The third and fourth scenarios show the case where the PCS/PSSS UoC software supplier chose
to provide the TSS Type Abstraction UoC. Since it is provided as a library, the system integrator
(acting as a software supplier) could choose to use their own implementation or even link the
PCS/PSSS UoC with a TSS UoC that provides the TS Typed Interface (for the given data
model). The PCS/PSS UoC, TSS Type Abstraction UoC, and TSS UoC must go through FACE
Conformance Verification individually.
The fifth and sixth scenarios show a PCS/PSS UoC using a TSS implementation providing the
TS Typed Interface. This TSS UoC may not be reusable across different systems depending on
TSS UoC implementation, and may need to undergo FACE Conformance Verification when
reused.
Business Logic
Concerns
(all couplings to
specific h/w & s/w
Portable Component have been separated)
Segment
Portable
Component
TS API All data passed through
the TS API is conformant
Transport Services TS library to the FACE Data Model
Segment
OS API
FACE PCS components provide the desired platform-level capabilities when executing. PCS
components are reusable software designed to allow a user to complete specific tasks.
2.6.2 Configurability
PCS components can use configuration information to initialize parameters, or to enable/disable
certain capabilities. Configuration of PCS components is done during initialization and run-time
using either Local or Centralized Configuration Services in the PSSS. PCS components
communicate with the Centralized Configuration Services using the TS Interface. See Section 8
for more information on Centralized Configuration Services. Configuration at build or
compilation time is possible but requires re-compiling the executable containing the PCS
component.
Refer to the FACE Technical Standard, Section 3.15 for a complete set of requirements on
Configuration Services.
2.6.3 Variability
The variability of FACE components is in the developer’s design decision when developing and
packaging UoPs. FACE components should be designed and packaged to maximize reuse and
portability.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 101
3 Functional Decomposition into UoPs
3.1 Introduction
The FACE UoP describes a set of software which provides one or more services or mission-level
capabilities required for complete and correct execution of that capability (e.g., programming
language run-times and application frameworks). Services and/or capabilities can be bundled
together into a UoP to provide a specific mission-level capability or service to a system.
UoPs are determined by the software suppliers. Multiple UoP requirements from the FACE
Technical Standard are key to helping the developer understand how to breakdown software into
UoPs:
A UoP must reside within a single FACE segment
A UoP must reside within a single partition
All external interfaces of a UoP must be FACE conformant
For a complete list of UoP requirements, refer to the FACE Technical Standard, Section 3.10.2.
The following items should be considered when determining the breakdown of software into
UoPs:
Logical functions may be combined to provide a UoP for a specific mission-level
capability or services
External interface information must be available and provided
UoPs should be designed for system reuse and portability
Data rights
Required timing characteristics between UoPs
Balance should be considered when breaking down software into UoPs to satisfy system,
portability, and timing requirements.
If a Language Run-time or Framework is contained in the UoP, then the Language Run-time or
Framework may be implemented logically across multiple UoPs within a single partition. If the
UoP is moved to another partition, computing platform, or aircraft platform, then the Language
Run-time or Framework migrates with the UoP. For more information about Language Run-time
and Frameworks see Chapter 9.
FACE UoP
FACE OS Native
Component
Figure 34 uses the three UoPs identified in Figure 33 and decomposes them into mission-level or
service UoPs under the Communication, Navigation, and Sensor Management categories. Each
category is shown separately with multiple mission-level UoPs inside. The UoPs in this example
could be instantiated into other platforms when that platform requires one or more of the
portable mission-level capabilities or services identified.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 103
COMM
FACE UoP FACE UoP FACE UoP FACE UoP
FACE OS Native
Component FACE OS Native FACE OS Native FACE OS Native
Component Component Component
UHF
VHF
DataLink VMF
SATCOM HF
NAV
FACE UoP FACE UoP FACE UoP FACE UoP
FACE OS Native FACE OS Native
Component Component
FACE OS Native FACE OS Native
Component Component
DAFIF
SAR Patterns
Civil FMS Digital Map
Tactical Patterns Jeppesen
Sensors
FACE UoP FACE UoP FACE UoP FACE UoP FACE UoP
FACE OS Native
Component
FACE OS Native FACE OS Native FACE OS Native FACE OS Native
FLIR
Component Component Component Component
Routing
Configuration Conversion Paradigm
Translator
DDS
(DDS to
Routing Routing or
CORBA)
CORBA
FACE UoP FACE UoP FACE UoP FACE UoP FACE UoP
Non-standard Non-standard Non-standard FACE OS Native FACE OS Native
Framework-based Framework-based Framework-based Component Component
Component Component Component
or
Legacy OFP
EGI RadAlt
(Includes all ICDs)
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 105
UoPs residing within the PSS and TSS and components of the IOS
UoPs of the PCS and PSS are not allowed to reside in the same UoP package.
Portable
Valid Valid
Components
Segment UoP UoP
TS
Transport Valid
Valid Valid Valid
Services
Segment UoP UoP UoP UoP
TS TS
OS
Platform-Specific
Valid Valid Valid Valid
Services
Segment UoP UoP UoP UoP
IO IO
Input/Output
Services Service Service Service
Segment
OS
OS
Another important point is that conformance testing is performed on the UoP external interfaces.
Even if multiple UoPs are packaged together, conformance testing is still performed on each
UoP and not on the UoP package as a whole. UoP packaging is a business decision on how to
sell the software.
Valid UoPs may be packaged together as a Valid UoP Packages; however, this packaging does
not ensure that the Valid UoPs complete their designated function well together. UoP Packages
must be implemented intelligently to achieve the desired function.
4.1 Introduction
The FACE architecture supports any combination of general-purpose, safety-critical, or secure
avionics capabilities through the use of profiles. Profiles affect the interfaces and functionalities
available within a FACE implementation. This section guides you through the strategies of
profile selection for a given development or migration. This section will provide insight for:
Migration of a FACE component designed for one profile to another profile
Migration of a non-FACE legacy component to conform to a FACE Profile
Conversion from non-timed-based to timed-based partitioning
4.2 Strategy
It is recommended that a profile selection strategy align with the profile needs of a given
product’s short and long-term roadmaps. Component developers should select their profile based
on an understanding of the value of portability between profiles; not doing so may cause
difficulty in migrating between profiles in the future. Using APIs associated with more
restrictive FACE Profiles facilitates ease of migrating to less restrictive FACE Profiles.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 107
An example would be using the Safety Profile APIs to meet requirements of a General-Purpose
Profile component to gain value in portability for a product planned to be used in the Safety
Profile for the future based on its product roadmap.
FACE Profiles are defined as a set of permissible APIs. More restrictive FACE Profiles are
subsets of less restrictive FACE Profiles. ARINC 653 is optional in the General-Purpose Profile.
ARINC 653 and POSIX are required in the Safety and Security profiles. A component is
portable from a more restrictive to a less restrictive profile, with the exception of moving from
ARINC 653 to a POSIX-only General-Purpose OS, because support for ARINC 653 APIs is
optional in the General-Purpose Profile.
Other key characteristics are helpful to include for purposes of migrating between FACE
Profiles. For software, this may include things such as program memory needed, dynamic
memory used, execution time on a given platform, etc. These characteristics may be further
broken down to include various usage cases.
Existing OFP
Human
Platform Device
Machine
& Networks
Interface
Capability 1 Capability 2
FACE
Infrastructure
Gray Box = Optional Blue Arrows = FACE
Component Interfaces
Blue Boxes = Avionics Capability 3 Capability ... Black Arrows = Existing
Components Interfaces
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 109
— Should the legacy architecture interface to a new FACE capability hosted within an
architecture aligned to the FACE Reference Architecture?
Implementation guidance for the FACE Data Architecture provides content to aid in
understanding the overall approach the FACE Consortium has taken with respect to data
management within the FACE Technical Standard. This document additionally provides insight
and guidance on how to apply the Data Architecture and data modeling techniques in the
development of a FACE UoP or a FACE component. The chapter begins by describing the
reasons for data modeling and describes the approaches that were considered and what drove the
FACE Technical Standard to the current implementation process. The chapter then defines high-
level modeling paradigms and concepts and the recommended modeling process before
presenting several data modeling examples. The chapter concludes with a list of common
questions, rationale for the chosen approach taken, and specific decisions that were made.
Why Data Modeling?
Overview of Modeling Concepts
Recommended Process
Data Modeling Example
Considerations for Conformance
Rationale/Common Questions
Figure 40 pictorially defines the different terminology used in the Data Architecture chapter of
this document.
Code and
Configuration
Unit of Portability
Model (UM)
(IDL, XML, Ada, C++, C,
Java)
Conceptual
Logical Views Platform Views
Views
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 111
(SDM) enhances reuse by establishing a standard communication method among software
components. The FACE Data Architecture is not a traditional message-based data model, but
instead it defines the foundation necessary for capturing semantic and syntactic data modeling
information.
The FACE Technical Standard defines a data modeling language via a Meta Object Facility
(MOF) metamodel. The FACE architecture data modeling language allows a consistent approach
for capturing data model content. The semantic and syntactic information captured as data model
content is more appropriately referred to as the semantic model. The semantic model includes
the Conceptual, Logical, and portions of the Platform Models. The message model is captured
through the remainder of the Platform Models and the UoP Supplied Model (USM).
Even though Unified Modeling Language (UML) is often employed in examples, the data model
is not a UML model. The FACE Data Architecture requires a greater degree of specificity then
UML can provide. Therefore, a new MOF metamodel was created for modeling FACE UoP
interfaces. The metamodel includes the capability to represent USMs and the SDM. The FACE
metamodel approach is to define data from two perspectives: a semantic perspective and a
measurement perspective. The Conceptual Model provides a semantic description of the
message fields in a FACE Transport Services (TS) message. The Logical Model adds the
measurement description to each message field by defining type, units, measurement, and frame
of reference (through the measurement system). By providing for unambiguous semantic and
measurement system descriptions of message fields, UoP developers can specify messages with
sufficient specificity to increase interoperability of UoPs.
By separating the semantic data model from the message model, existing components can
achieve FACE conformance with minimal change. Existing message model fields simply have to
be mapped to the semantic data model elements. This approach contrasts with more traditional
class-based designs that often require a specific class structure to be utilized for messages and
therefore would require a complete rewrite of the existing software component to support
interoperability.
In summary, the FACE Data Architecture facilitates the identification of horizontal interface
mismatches often found during development/integration of a system composed of software from
multiple suppliers. The data modeling language also enables existing components to be made
conformant to the FACE Data Architecture with minimal modification to message interfaces by
modeling the semantics captured in the existing message model. Lastly, the FACE Data
Architecture is a key component of the FACE Technical Standard and is essential to designing
systems and developing interoperable UoPs.
The Conceptual Model captures basis concepts, composition of those concepts into entities as
attributes and the associations between those entities. It also allows definition of conceptual
messages based on those entities and attributes.
The Logical Model provides a mechanism to extend each conceptual element with information
that supports particular logical processing requirements: units, measurement and coordinate
systems, value domains (e.g., Real, Natural Number), constraints, and measurement precision.
Each conceptual element can have many representations at the logical level based on the
selection of each of these additional elements of information. Also, conversion relationships
between logical elements may be specified in the Logical Data Model (LDM). This provides a
mechanism for sharing data between components that have different algorithms and therefore
different data representations. For example, the same conceptual element of altitude could be
represented as an integer number of meters above ground level and as a real number of feet
above mean sea level. The fact that these two representations are linked to the same concept
informs users that direct conversions between them are realizable. The existence of conversions
between the units, measurement and coordinate systems, value domains (e.g., Real, Natural
Number), constraints, and measurement precision define the method of performing those
conversions.
The Platform (Physical) Model takes the Logical Model a step further by allowing each logical
element to be extended to the specifics of the computing platform. The Platform Model
defines/determines the specific data type such as float or double used to represent the value type
allowing the logical type to be represented on computers with various physical architectures and
software compiled with various compiler settings and options. This capability allows
conversions between data elements represented on different computing platforms.
The FACE Data Architecture encompasses both a message model and a semantic data model to
which all data elements from each message are related. The FACE SDM is managed by the
FACE Consortium and supports interoperability between USMs that are developed by separate
software suppliers. Entities are the data elements that tie message elements to a common
meaning. Without the entities, each message stands alone with no ability to determine whether
elements in two messages having the same data types (e.g., float, double) actually share the same
meaning. This connection back to a common set of entities supports data conversion between
message sets which is critical to interoperability. Interoperability is a key requirement to support
portability and reusability due to component data dependencies.
Another paradigm expressed by the FACE Data Architecture is that of a view. A view is created
to assemble specific characteristics of one or more entities, and to preserve the context of each
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 113
characteristic. The primary utility of views is to assemble information that is necessary and
useful for a particular purpose without imposing unique specifications and requirements of that
purpose throughout the entire system, or on other systems. An example of a special purpose that
benefits from the ability to create views is message transmission over a Disadvantaged,
Intermittent, Limited (DIL) communication link. Characteristics of the DIL link place
requirements on a message that are not necessarily present on the same message when it is
transmitted within the airframe. Views allow different assemblies of characteristics to be created
while maintaining the original context, and documenting unambiguous links between the same
characteristic in different views.
Views created at the conceptual, logical, or platform level of the model have the same level of
abstraction as other data model elements. They can also have relationships from a view in the
conceptual model to one or more views in the logical data model; that is, a view in the logical
model can realize a view in the conceptual model. Similarly, a view in the logical model may
have a relationship to one or more views in the platform model; similarly, platform views may
realize logical views. It is also acceptable to have logical views that are not realizations of
conceptual views. Because it is possible to have both conditions, it is necessary to decide when a
logical view is independent, and when it is a realization of a conceptual view.
Views in the conceptual model are collections of characteristics. They specify a template of a
view that is to be realized by several corresponding logical views. It is desirable to create a
conceptual view when there are several logical views that have identical conceptual content, but
different representations of the concepts. The ability to indicate that each of the different logical
views realizes the same conceptual view clarifies the role that each logical view plays within the
system and reduces the effort needed to map between the different logical views. It is also useful
to create conceptual views to represent the conceptual interfaces of components or services. If
consumers and producers of data are modeled at the conceptual level – that is, there is a
specification of an interface – that interface is represented as a conceptual view.
It is necessary to create a logical view when a conceptual view is realized. It is also necessary to
create a logical view when there is no conceptual view, but it is necessary to assemble
characteristics from several logical entities. The most common use of such a view is as an input
or output message of a UoP.
The FACE Data Architecture describes mechanisms for defining basis elements in the
conceptual and logical models as well as mechanisms for extending those basis elements. UoPs
may extend those elements using these mechanisms and still maintain conformance to the FACE
Technical Standard and the FACE Data Architecture. There is a process in place to expand the
content captured in the SDM. The SDM is architected to enable and promote reuse and
expansion. The intent is that the SDM will evolve as elements are added. The FACE Shared
Data Model Governance Plan details the basis elements, extension elements, Object Constraint
Language (OCL) constraints, SDM conformance requirements and the process for maintaining
and updating the SDM. The process for incorporating extensions to the SDM based on user
needs are provided in the FACE Shared Data Model Governance Plan.
The SDM includes the basis elements which are managed by the FACE Shared Data Model
Configuration Control Board (CCB) as described in the FACE Shared Data Model Governance
Plan.
Figure 41 provides a graphical view of the PSSS and PCS components and interfaces to be
modeled. The following paragraphs provide a more detailed description of the components and
their functionality. Only the modeling of the Navigation Management portion of this system will
be discussed in detail.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 115
Sensor Moding/Control
Aircraft Situation (position, attitude, etc.)
Radar
- Sensor
Detections
- System
Status/Health
Aircraft Situation
Navigation (position, attitude, etc.)
Management Tactical Display
= PSSS Component
EGI 1 EGI 2 IMU
= PCS Component
= TS Interface
= IO Interface
The Navigation Management Component is responsible for gathering navigation data from
multiple sources and computing a single consolidated navigation solution. This function is
common on systems employing multiple navigation devices required to address safety and high
reliability concerns. This example is not specific on exact logic used to prepare the single
consolidated solution, but one should assume that it is a combination of communication status,
data validation, and source prioritization or averaging.
Navigation Sensor Manager components are PSS components that communicate with their
associated navigation device using I/O Services. The example portrays two types of navigation
devices, with two instances of one type installed to provide a redundant solution. Both types of
sensor managers use the TS Interface for communication with other FACE components.
The Radar Interface Component is a PSS component that uses I/O Services to communicate with
a specific radar over a standard data bus such as MIL-STD-1553 Multiplex (MUX). This
The Tactical Situation Manager Component stores tactical information from one or more sources
and reports a consolidated tactical picture for use by other system components. The types of
tactical entities and types of data sources providing data to the Tactical Situation Manager are
flexible. While our example illustrates radar, practical systems may also include sonar,
electronic surveillance, data links, etc. Consequently, data reported by this component could be a
heterogeneous mix of tactical objects, with many common attributes and also a subset of type-
specific ones.
The Tactical Situation Manager is a PCS component. Its communication with other entities is
restricted to the TS Interface, and its function is one that has applicability to multiple tactical
systems.
The Tactical Display Component is a PSS component responsible for presenting a mission
appropriate view of the tactical situation to the crew member display. It accepts a heterogeneous
mix of tactical data entities via the TS Interface and displays those using Graphics Services.
Conceptual Model
— Individual Entities and Associations
— Conceptual Data Model containing Observables
— Conceptual Data Model containing Views
Logical Model
— Individual Entities and Associations
— LDM containing Measurements
— LDM containing Units
— LDM containing Views
Platform Model
— Individual Entities and Associations
— Platform Data Model containing Physical Data Types
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 117
— Platform Data Model containing Views
UoP Supplied Model
— Individual UoPs, including their Message Ports
In this section, the reader is presented with an introduction to each of the process steps and
artifacts required for component development. It illustrates the basics of conceptual, logical, and
platform areas from the perspective of the single component. Some additional but commonly
occurring topics addressed by this example include:
Use of validity indicators and statuses
Implementation of enumerations
Communicating with multiple instances of the same type of component, something
common in systems with designed-in redundancy.
First, the modeler identifies the conceptual elements to be represented in the model. This
includes fundamental entities about pertinent items and any observable or informational
attributes those possess. Rather than create from scratch, the modeler should first explore the
SDM for existing model elements and import them into the model being constructed. New
elements should only be created when there exists no corresponding element in the SDM.
The Navigation Manager component obtains estimates of position, attitude, and sensor statuses
from multiple sources and computes a single consolidated estimate. A simple examination of the
example scenario yields the following entities:
Embedded Global Positioning System/Inertial Navigation System (EGI)
Inertial Measurement Unit (IMU)
Navigation Management Function
These define the system entities about which data is to be exchanged. As the entities themselves
will not be exchanged, the next task is to identify the observable and informational items that are
the characteristics of these elements.
The IMU reports an estimate of air vehicle attitude. The Observable elements in the SDM that
model the concept of attitude need to be identified. If these elements are not in the SDM, they
would need to be added as an extension element according to the rules of the FACE Shared Data
Model Governance Plan. In this case, attitude is modeled as an Orientation observable.
The example EGI reports Attitude and Position, leading to identification of the Position and
Orientation observables.
Note that since Orientation was already identified as an observable, there is no need to repeat the
identification of it for the EGI.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 119
Figure 42: Conceptual Entities Required for Navigation Management Component
One additional entity that can be identified is the Navigation Management Function itself. This
conceptual association type represents the estimated position of the system, based on the
attributes of the EGI(s) and IMU(s) installed on the system. The characteristics of this function
are Position and Orientation.
Since we have already defined Observable elements for Position and Orientation, those are
reused and do not need to be redefined.
Now that the elements in the conceptual model have been established, attention can be turned to
the LDM. The following tasks need to be accomplished to construct the elements required in the
LDM:
Create Measurements that correspond to the observables in the conceptual model.
Create Entities that realize corresponding elements at the conceptual level.
Create any Units, Frames of Reference, Conversions, and enumerations required to fully
specify the Logical Entities.
Create logical views to define message contents that are to be received and transmitted by
the component.
Proceeding with the first step called out above, measurements need to be created to realize the
observables in the conceptual model. This is shown in Figure 44. Since appropriate
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 121
Measurements for both the Position and Orientation observables already exist in the SDM, the
will be reused.
The Orientation observable from the conceptual model is realized as a compound measurement
as it is typically described as a set of angles in three-dimensional spaces (i.e., pitch, roll, and
yaw). To fully describe Orientation, the concept of an Angle must be introduced and added to
the Conceptual Model. It is necessary to include in the Logical Model measurements for Pitch,
Roll, and Yaw which are realizations of the Angle concept as illustrated Figure 45.
Since Pitch, Roll, and Heading are not further decomposed, they are modeled as simple
measures and the attributes of frame of reference, precision, units, and value type are specified to
describe the logical representation of each.
The same concept is performed for the compound measurement of the Position observable as
shown in Figure 46.
Now that the measures and information items have been established, entities for Navigation
Management Function, EGI, and IMU are created to realize their conceptual equivalents as
illustrated in Figure 47. It is important to note that the characteristics of the logical entities refer
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 123
to the measures and information items just defined at the logical level. As a result, the logical
representation of each entity represents a refinement of the conceptual entity by providing
additional detail for each characteristic.
Once definition of the entities has been completed, Logical Views projecting the characteristics
of entities can be constructed to describe message contents. Figure 48 shows the contents of the
“Nav_Data” message to be output by the Navigation Manager UoP. Projections from the
Nav_Data view select characteristics of the NavManagementFunction entity to be included in
the TS Interface message.
The diagram also demonstrates how one can rename a characteristic in a view. Consider the
projection of NavManagementFunction.Position. By giving the source role in the Nav_Data
view the name “pos”, the characteristic is effectively given a new name in the message.
The views used for the inputs to the Navigation Manager Component are modeled similarly.
Note that only one view is created for EGI data since that view will be reused in moving EGI1
and EGI2 data.
To create platform representations of the measures from the logical model, the modeler must
create a new instance of an Interface Definition Language (IDL) construct that will be used to
represent the measure. The diagram below demonstrates use of an IDL Primitive with an
IDLType of double in order to realize a Latitude measure from the logical model. The same
approach is used to define the platform representation for Longitude. Representations for
Measurements utilizing multiple axes are constructed using the IDLStruct element.
Figure 49 shows an IDLStruct used to realize the Position measure from the logical model. It
defines the fields of the position and uses the Latitude and Longitude platform representations to
apply the specific representation to them.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 125
Figure 49: Platform Data Types for the Position Measurement
The same process is followed to create physical data types for the orientation measurements and
associated structure as shown in Figure 50.
Once measures have been mapped to IDL constructs and platform entities have been created, the
platform view of messages flowing into and out of the component can be created. This process is
similar to establishing views at the logical level in that characteristics of entities are projected
into views to define message content. The primary difference with platform views is that they
project from platform model entities while logical views project from logical model entities.
Figure 52 shows an example of the platform model view for the Nav_Data message.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 127
Figure 52: Platform Views and Projections for the Navigation Manager Component
Figure 53 illustrates the component definition for the Navigation Manager component.
The USM includes the messages, represented as platform views that the UoP sends or receives
across the TS Interface, as well as some additional characterization data intended to support the
system integration process. Message definitions in the USM are used by the conformance
process to generate typed send and receive calls that are then linked to the UoP. The absence of
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 129
conformance tool errors ensures that the message is only sending and receiving information
declared in the USM.
The rules of construction of the FACE Data Architecture are based on the idea that each message
relates to elements in the platform data model, each platform element realizes an element in the
logical data model and each logical data model realizes an element in the conceptual data model.
Ultimately all elements are tied back to basis elements that are present in the SDM. USMs are
only conformant if they only utilize SDM CCB controlled elements that are present in the SDM.
6.1 Overview
Health Monitoring/Fault Management (HMFM) is responsible for monitoring and reporting
application faults and failures with the OS, application software, and hardware within a
computing module. Faults may occur at the system, computing platform, partition, application
level, or with I/O devices the computing platform is directly responsible for controlling. Fault
detection, propagation, reporting, and management require careful attention to detail and
coordination between multiple layers within a system to operate correctly. Not all of these layers
are defined by the FACE Technical Standard.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 131
In partitioned environments, partition-level faults may also occur from an incorrect
configuration or prior to application execution. None of these faults are reported via the
FACE HMFM API. These are also the responsibility of system integrator to address given
the OS provided mechanisms.
System-level faults are beyond the scope of the FACE Technical Standard.
Hardware
Built-In Test (BIT) Board Support Package (BSP)
Monitoring
HW
Hardware
Figure 54: HMFM Board Support Package and Real-Time Operating System Relationship
At the most fundamental level, the BSP is responsible for the exception handlers that catch faults
such as floating point errors and memory access violations. The BSP may use standard OS-
provided implementations of these processor-dependent exceptions. If the BSP is improperly
installed, the fault handling mechanisms defined by any framework will never be used.
Similarly, if device drivers do not detect and report faults in the devices they control, the faults
will never enter the health framework.
The BSP may also provide additional capabilities, such as Built-In Test (BIT). BIT may execute
continuously in the background or be executed on-demand. BIT executed on-demand may
require the associated hardware devices be taken offline and may negatively impact operational
readiness. The design of on-demand BIT may have to take into account safety considerations.
Some hardware configurations include sensors used to monitor the health-related environmental
factors. Examples include thermal sensors, humidity sensors, fan speed, and indicators that the
hardware case is open. The BSP may provide interfaces so the sensors can report faults.
Fleet
Aircraft Central Crew Alert
Maintenance
Maintenance System
Systems
Alerts or
Maintenance Alerts or
Maintenance
Module or Module or
Partition Partition
Reset Computing Platform Reset
HM
(module)
Partition 1 Partition M
Handler Handler
Report Report
Raise Raise
Redundant I/O
Sources
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 133
The hardware may be the source of faults, but this is considered beyond the current scope of
FACE HMFM. The exception is when the microprocessor detects certain erroneous application
behavior and reports it via the FACE HMFM capabilities.
The application’s fault handler may report the fault to a Computing Platform Health Manager if
it is unable to process the fault.
It is important to consider the intended audience when propagating or reporting faults outside the
computing platform. For example, a Pilot or other Crew Member is likely to need a different
level of detail than a Developer or Maintainer.
6.4 OS Configurations
The FACE Technical Standard specifies three OS configurations and the native HMFM
capabilities available:
Pure ARINC 653 OS
POSIX on ARINC 653 OS
Pure POSIX OS
An application can have an error handler process. A partition-level error mechanism is executed
if an application error handler does not exist, or the handler has an error. The OS Partition
Health Monitor Table specifies the action to take upon various faults at the partition level. If an
error occurs at the module level, the Module Health Monitor Table specifies the system action to
take based upon system mode and fault.
6.4.4 POSIX OS
For the purposes of this discussion, a pure POSIX OS is one with no underlying ARINC 653
services. Examples in this category include GNU/Linux, LynxOS, and Solaris.
There is no standard framework for pure POSIX FACE conformant components to have an
interoperable Health Services framework. Some of the ARINC 653 fault events are similar to
those defined to generate POSIX signals (e.g., SIGFPE, SIGBUS, SIGSEGV). Some faults can
be detected and reported but there is no standard Health Services framework in POSIX to define
what happens after the user signal handler is invoked.
Programming languages with built-in exception processing, such as Ada and Java, may install
handlers for the POSIX signals. For example, the Ada programming language run-time may
install a signal handler for SIGFPE and translate that into raising a NUMERIC_ERROR
exception as defined by the Ada standard. In these cases, the fault will likely be handled within
the context of the application and not involve the HMFM services.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 135
The FACE HMFM API is part of the OSS and provides compatible behavior across all of the OS
configurations. It would not be an ARINC 653 compatible solution on POSIX. Table 48
illustrates how the ARINC 653 Health Service can only address two of the three configurations.
Table 48: HM Options per OS Configuration
It is not a FACE component conformance requirement to use HMFM services. A component can
be conformant if it uses ARINC 653 HMFM services. Using the FACE HMFM API provides the
option for a FACE component developer to have the same HMFM API in all of the OS
configurations examined.
Fault Occurs
Fault
RTOS Application
Detected
By?
Local
OS Fault Application Fault
Yes
Handler Handler
Triggered Triggered
Fault
Pass to
Handled
Application?
Locally?
Raise Application Fault
Yes
Fault Handled
Fault Handled
by OS
Locally
All fault handling and management software remains quiescent until a fault occurs. If the
application has installed a fault handler, then that handler will be blocked waiting for a fault to
occur. If the fault is detected by the OS and can be processed by a thread-level fault handler
(e.g., a numeric exception or memory access error), the OS will trigger the execution of the
application-provided fault handler if one is installed; otherwise, it will perform the default
action. Similarly, if the application detects a fault and reports it via the appropriate HMFM API
service, then the fault handling support is triggered. It is important to note that any OS-triggered
fault indicates that an unexpected and potentially serious error has occurred in the application.
In either case, if installed, the application-provided fault handler will execute. It will execute in
the context of a special thread and there will be restrictions on the OS services which may be
invoked by the fault handler. The application-provided fault handler will take action which may
include:
Attempting to recover from the fault
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 137
Passing fault information to a logger or partition-level health monitor
Propagating the fault to the OS for further action
The signal parameter will contain the signal which has occurred. This can be mapped to a
FACE defined fault type. The signal parameter indicates the type of signal which is being
received. The implementation will map those to ARINC 653 faults. On some of the signal
types, an OS may provide additional information in the si_code field in the siginfo_t
structure pointed to by the info parameter. If available, this information may be used to
further identify the fault. Table 49 provides a mapping from a subset of POSIX signals to
the FACE faults which are based on those defined by ARINC 653.
SIGFPE NUMERIC_ERROR
SIGSEGV MEMORY_VIOLATION
SIGBUS MEMORY_VIOLATION
SIGSYS ILLEGAL_REQUEST
SIGXFSZ ILLEGAL_REQUEST
POSIX does not define a signal to indicate when a power failure has occurred. If the system
integrator desires to make this fault available to POSIX applications, then a POSIX signal is
picked to indicate this fault. Multiple signals were identified in Table 49 to indicate a power
failure. There is no FACE requirement to use a particular signal or for a hardware platform to
detect that power has failed.
The info parameter is a pointer to an instance of a siginfo_t structure. This structure
contains the field si_addr which indicates the address of the faulting instruction. If the
signal is SIGFPE or SIGILL, the structure also contains more detailed information about
the fault.
The extra parameter is a pointer to an implementation-defined structure. On some
GNU/Linux versions, this is a pointer to a ucontext_t structure.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 139
structures. However, this information may be useful to system integrators in evaluating
the source of the fault and eliminating it in the future.
Some examples of more detailed information include the following using the si_code
information:
SIGFPE could indicate multiple conditions including integer or floating point overflow,
underflow, or division by zero.
SIGILL could indicate the execution of an illegal instruction, a privileged instruction, or a
coprocessor error.
SIGSEGV could indicate an access of an invalid address or insufficient privileges.
SIGBUS could indicate an access with illegal alignment or an attempt to access a non-
existent physical address.
POSIX has no concept of ARINC 653 deadline-based scheduling. Based solely upon POSIX
capabilities, the DEADLINE_MISSED fault cannot be generated.
Based upon the capabilities of the RTOS, an implementation may not be able to generate all
fault types.
The goal of the FACE HMFM API is to provide application portability across all OS profiles.
An implementation on a pure POSIX OS provides source code-level compatibility but may have
limitations on the faults which are raised by the HMFM framework.
ARINC 653 does not consider non-volatile (or even volatile) storage of OS-detected faults to be
an OS vendor implementation-specific capability. Platforms that required non-volatile storage
could utilize one of the ARINC 653 Part 2 optional service categories (file system or logbooks)
The ARINC 653 health monitoring includes interfaces/descriptions intended to provide support
for communicating OS fault messages to some system-level HM capability. The intent is these
capabilities would be configured to forward on OS-related faults when logging of such faults
was to be included as part of the platform.
Care must be taken when writing a fault handler. The fault handler should under no
circumstances perform a blocking action. It may invoke a non-blocking communications method
to pass information to another partition. Hopefully, that other partition is not in a fault state and
can undertake more complex actions such as logging the fault.
The fault handler can attempt thread recovery but it must be cautious in doing so. The faulting
thread has both a fault condition and a logical state which must be addressed for successful
recovery to occur. In some cases, correct fault recovery will require addressing both the fault
condition and the logical state of the faulting thread. The specific OS services available to
address the faulting thread will vary based upon whether the partition is executing a POSIX or
ARINC 653-based application.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 141
To facilitate recovery, the fault handler must directly address the source of the fault and resolve
it. The fault handler may be designed such that a single event fault allows the application to retry
the operation. If the fault occurs again, then remedial action may be taken. For example, a fault
caused by a memory parity error may be a single event. However, if a programming error results
in a thread causing a memory violation, then the fault will occur again if the operation is retried.
In this case, in order to recover, the “pointer” that the thread is using must be corrected or the
thread will reuse the same invalid memory reference. Similarly, if the thread has a floating point
exception due to a programming error, a fault indicator will likely need to be cleared in hardware
and the faulting numeric operation will have to be corrected. In all these cases, the RTOS may
provide the fault handler with the address of the faulting instruction and faulting thread’s
context. Recovery is possible but requires processor and RTOS-specific information.
If the fault has occurred as the result of a soft or hard hardware fault, it is possible that the fault
handler can address the fault and the application recovers. This would require knowledge of the
fault, recovery actions possible, and, in some circumstances, the existence of backup devices and
how to switch to them.
Assuming that the fault is one which can be recovered from, there is still the logical state of the
faulting thread to address. In the case of a floating point exception, this might require knowledge
of the algorithm used by the faulting thread. Knowing that there was a divide by zero fault and
putting an arbitrary result into the destination register is one thing. Knowing the value to put into
that destination to correct this invalid computation and allow its algorithm to produce a
meaningful result is another matter entirely.
Other parts of the logical state of a thread include any locks held on resources, resources
allocated, partial computations, and application state information. For example, the fault may
have occurred while a thread held locks. Those locks would not automatically be released and it
would be the responsibility of the recovery actions taken or initiated by the fault handler to
release those. Similarly, if the thread has dynamically allocated any resources (e.g., RTOS
objects, memory), then those allocated resources may have to be freed or placed into a known
state.
The usual case is that an application reaches the fault handler when something has happened that
it could not foresee or avoid programmatically. This implies that the application designers did
not expect the condition, thus could not avoid it and are unlikely to know how to recover. For
example, if a divide by zero were expected by the application designers, then it would have been
trivial for them to include a test if the denominator were zero, perform an alternative
computation, and avoid the faulting operation.
In addition, all software in a system may have to be reviewed and undergo rigorous coverage
testing. In order to fully test complex fault recovery actions, there must be ways to generate the
appropriate fault conditions reliably in a testing environment. The correctness of simple fault
recovery actions is much easier to demonstrate. Thus, it is common to perform no recovery
attempt and reset or idle the partition.
FACE Platform-Specific Graphics Services support data flows that conform to OpenGL, ARINC
739, and ARINC 661. The Platform-Specific Graphics Services used by a component (i.e.,
OpenGL, ARINC 661, and ARINC 739) are the responsibility of the component developer. The
inclusion of the necessary supporting display infrastructures (e.g., GL/EGL/GLX services,
ARINC 661 services, and ARINC 739 services) to support the system applications are the
responsibility of the platform integrator.
The following specifications shown in Table 50 define the OpenGL functional behavior and
APIs for the General-Purpose Profile. Developers are given the choice between OpenGL with
GLX to support indirect rendering or OpenGL ES with EGL to support direct rendering.
Table 50: OpenGL Functional Behavior Specifications
Direct/Indirect Direct
Function Rendering Specification Rendering Specification
Window Management for Khronos Group EGL 1.2 Khronos Group EGL 1.2
Local Display Support
There are a several standards supporting variations of OpenGL, each with its own set of
associated versions. The OpenGL version selected for this profile was chosen to maximize
application portability between the Safety and the General-Purpose Profiles, without
significantly impacting imaging capabilities in an avionics environment. Software application
portability between the FACE Profiles is enhanced by the fact that OpenGL has a safety-critical
specification discussed in upcoming sections.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 143
7.1.1.2 OpenGL Use in the Safety Profile
The FACE Safety Profile supports a subset of the graphics commands and capabilities of the
General-Purpose Profile. Table 51 lists the specifications defining OpenGL functional behavior
and APIs for the Safety Profile.
Table 51: OpenGL Safety Profile Specifications
Function Specification
The FACE Security Profile does not support Platform-Specific Graphics Services
Implementations.
The following specifications shown in Table 52 define the ARINC 739 functional behavior and
protocol.
Table 52: ARINC 739 Functional Behavior Specifications
Function Specification
Single MCDU Specification ARINC 739: Multi-purpose Control and Display Unit
(MCDU))
Dual MCDU Specification ARINC 739A-1: Multi-purpose Control and Display Unit
(MCDU)
The General-Purpose, Safety, and Security Profile implementations of the ARINC 739 graphics
interface are identical.
Table 53 lists the specifications defining ARINC 661 functional behavior and protocol.
Function Specification
Cockpit Display System Interface and ARINC 661: Cockpit Display System Interfaces to User
Functional Specification System
The General-Purpose, Safety, and Security Profile implementations of the ARINC 661 graphics
interface are identical.
Because ARINC 661 defines a User Application (UA) that must know certain parameters of the
CDS, this section focuses on guidance to provide standards methods or values for the CDS-
specific configuration items that are left non-standardized by ARINC 661.
Points of focus will be Font, Color, and Style Indexing, and use of configuration parameters in
both the UA and the CDS to enhance portability in the FACE architecture.
UAs are only portable if a system integrator knows how it should communicate to the CDS. This
means that UA developers should provide some documentation on what and how widgets are
controlled; an example Definition File (DF) file specific to the UA should be enough to show
this.
The CDS should provide configuration options for the following items. It is suggested that these
be put in a file that is loaded by the CDS upon start-up:
Screen size in pixels
Pixels per inch
Pointers to graphical DF files; e.g., filenames
MaskContainer regions
Fonts, the ability to specify the font, its sizing, and indices for each size
Colors as mentioned in Appendix D: Standard Color Index
Style sets
The UA should add the ability to have its Layer ID(s), Context ID(s) set external to the UA. The
UA may also provide the ability to set a base widget ID offset; this allows for a UA to be created
controlling widgets 0 – 1000, but when the creator of the DF file puts those widgets at 23000 –
24000, the UA can adjust accordingly without any change to the UA, thus removing a hurdle for
the system integrators trying to reuse components working in an ARINC 661 system. A similar
base font offset is also suggested for font indexing. See Section 7.1.3.1.1 (Font Indexing) for
further discussion. The UA should provide configuration options for the following items. It is
suggested that these be put in a file that is loaded by the CDS upon start-up:
Layer ID
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 145
Context ID
Base Widget ID
Base Font Index
Font Indexing
A basic scheme is adopted for font indexing. Font indices will be based on size where font index
1 has a smaller point size then font index 2, and font index 3 is larger than font index 2. For
example, if font index 0 is defined for a specific CDS as 12 point, font index 1 could be 14 point,
and font index 2 could be 16 point.
Therefore, a UA simply has to increment the font index by one (1) to increase the font size.
Likewise, the UA decrements the font index by one (1) to decrease the font size. Using this
method, the system integrator can determine the font used by the system, but the UA has some
basic knowledge of which fonts it would be using.
Font Indices 0 – 9 are defined as system basic fonts.
Font Indices 10 – 19 are defined the same way but as bold fonts.
Font Indices 20 – 29 are defined the same way but as underline fonts.
All other indices (30 – 255) would be system integrator-defined, so the UAs that require other
types of fonts should allow the system integrator to associate the other types of fonts with those
defined by the system integrator.
This method allows the UA a way to use a bold, underline, or basic font with some knowledge
that by simply adding or subtracting 10 it can change the font style in a uniform way and reduce
integration issues because each UA from separate suppliers using different font indices that were
hard-coded and certified that way.
It is encouraged that the UA configuration include a means to provide a base offset such that
font bases can be changed such that the system integrator may increase/decrease the font size by
simply adding a font index base offset in the UA configuration file. This offset would have to be
applied to each range of fonts separately. This also encourages that UA authors start with index
5 as the default font and size appropriately from there, based on relative font sizing, knowing
that the system integrator may change the font index base offset to match the size as required by
the system.
Colors
As with fonts, color indices in ARINC 661 have been left non-standardized. To increase
portability this guide suggests that FACE portable UA and CDS that are integrated into a system
containing FACE conformant UoCs use a named color approach. The UA will use a color index
as associated with a color name; this way the UA can be guaranteed that when it changes from
Green to Red the CDS changes from Green to Red.
The FACE Technical Standard does not define required Red/Green/Blue (RGB) values for each
color as any color may need to be adjusted to display correctly on specific display hardware. As
ARINC 661 leaves the use of style indices up to the CDS integrator. When developing UAs that
change the style set indices at run-time, care should be taken to have those styles standardized in
some way between UA suppliers and CDS integrators. Styles for graphical primitive widgets and
label widgets may be standardized in later versions of the Reference Implementation Guide. For
now, when creating reusable UAs that change the style set index, best practice suggests that style
set indices are configurable from an external file. This allows the system integrator to set the
style set indices matching those defined in the CDS. This is similar to the approach taken for the
color indices.
7.1.4 Variability
Figure 57 shows an example data flow in an OpenGL distributed environment. This example
shows two client applications using the same GLX Server.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 147
PDS 1, PDS 2 and I/O
All data passed through Service are in different
Different address spaces
the TS API is conformant address spaces
to the FACE Data Model
Portable Component
Segment 1
1
OpenGL OpenGL
Graphics Client Graphics Client
Application Application
2
TS API TS API
TS library Transport Services TS library
2
Segment
X11 Byte Stream
3
TS library
TS API
4
GLX Server
5
Platform-Specific
Services Segment
GPU
Driver
Graphics
Processor
The list below describes the sequence of actions performed to send OpenGL data across the TS
Interface to a GLX Server:
1. OpenGL graphics client application uses OpenGL APIs natively as part of the TS
Interface.
2. TS Library sends the OpenGL commands using the X11 Byte Stream.
3. TS Library receives the X11 Byte Stream then provides it to the GLX Server.
4. TS Library handles the callback registered by the GLX Server if required.
5. GLX Server communicates natively with the GPU Driver to control the Graphics
Processor.
Figure 58 shows an example data flow in an OpenGL non-distributed environment. The example
shows a client application using a TS Library to communicate with a GPU Driver.
Portable Component
Segment
OpenGL 1
Graphics Client
Application
TS API
Transport Services
Segment
2
GPU
Driver
Graphics
Processor
The list below describes the sequence of actions performed to use OpenGL commands across the
TS Interface:
1. OpenGL graphics client application uses OpenGL APIs natively as part of the TS
Interface.
2. The TSS provides access to the OpenGL driver.
Figure 59 shows an example data flow in an ARINC 739 distributed environment. This example
shows two CDU-based client applications communicating with two ARINC 739 servers.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 149
PDS 1, PDS 2 and I/O
All data passed through Service are
Different in different
address spaces
the TS API is conformant address spaces
to the FACE Data Model
Portable Components
Segment
1
1
CDU-Based CDU-Based 2
Client Application Client Application
TS API TS API
2 TS library TS library
3
ARINC 739 Command Stream
ARINC 739 Command Stream
3
Transport Services
Segment TS library TS library
TS API TS API 4
4
ARINC 739 ARINC 739 5
5 Server Server
Platform-Specific
Services Segment 6
6 IO API IO API
I/O Services IO library IO library
Segment IO API IO API
7
7 ARINC 429 ARINC 429
Service Service
CDU1 CDU2
The list below describes the sequence of actions performed to send ARINC 739 data across the
TS Interface to multiple CDUs:
1. CDU-based client application packs the ARINC 739 command stream data using the
FACE Data Model (FACE Technical Standard, Section 3.6).
2. CDU-based client application provides packed data to TS Library by calling the TS API
Send_Message function (FACE Technical Standard, Section E.8).
3. TS Library executes the Send_Message function using IPC to send the ARINC 739
command stream.
4. TS Library receives the ARINC 739 command stream for the ARINC 739 server.
5. TS Library handles the callback registered by the ARINC 739 server if required.
6. ARINC 739 servers send the ARINC 739 data by using the I/O API (ARINC 739
protocol) I/O Interface and I/O Library to the ARINC 429 service (see Section 2.3.3.1 for
more information on I/O communication).
7. ARINC 429 service communicates with the non-standardized ARINC 429 drivers to
control the CDUs.
Figure 60 shows an example data flow in an ARINC 661 distributed environment. This example
shows two CDS-based client applications using the same ARINC 661 server.
PDS 1, PDS 2 and I/O
All data passed through Service are
Different in different
address spaces
the TS API is conformant address spaces
to the FACE Data Model
Portable Component 1
TS library
4 TS API
ARINC 661
Server
5
Platform-Specific
Services Segment
6
GPU
Driver
Graphics
Processor
The list below describes the sequence of actions performed to send OpenGL data across the TS
Interface to a GLX Server:
1. ARINC 661 graphics client application packs the ARINC 661 command stream data using
the FACE Data Model (FACE Technical Standard, Section 3.6).
2. ARINC 661 graphics client application provides packed data to TS Library by calling the
TS API Send_Message function (FACE Technical Standard, Section E.8).
3. TS Library executes the Send_Message function using IPC to send the ARINC 661
command stream.
4. TS Library receives the ARINC 661 command stream for the ARINC 661 server.
5. TS Library handles the callback registered by the ARINC 661 server if required.
6. ARINC 661 server communicates natively with the non-standardized GPU Driver which
controls the Graphics Processor.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 151
8 Configuration Services Guidance
8.1 Introduction
Configuration allows modification of a FACE component’s run-time behavior from input stored
on configuration media (e.g., files, shared memory, hardware strapping) without modifying the
component’s executable object code. For any given capability, the selection and interconnection
of components could be performed in multiple ways. Configurable components have the
potential for greater portability than components designed for a single platform or mission.
Figure 61 depicts two entities involved in this exchange: the configurable component and the
configuration media. These entities are directly related by operating system calls (e.g., open(),
read(), close()). Processing of configuration data occurs within the component. To avoid driving
cost, effort, and recertification into legacy components, the API-based Configuration approach,
defined in Section 8.2.3, should be considered over the Legacy Local Configuration approach.
When the software supplier identifies that Legacy Local Configuration is used, component
characterization, such as hard-coded configuration expectations, must be documented.
The Configuration Library may be supplied by the Avionics Supplier/System Integrator. This
division of labor provides the Avionics Supplier/System Integrator flexibility regarding where
the configuration data is stored and how it is accessed. The Avionics Supplier/System Integrator
selects or creates an implementation of a Configuration Library for each configurable
component. The intention is for a single Configuration Library (similar to TSS
implementations). No effort is required by software suppliers when changes in configuration
location, media, or access methods are made.
The software supplier is encouraged to use the anticipated Configuration API (future FACE
Technical Standard update) as provided in Appendix C of this Guide. Using this API enables the
Avionics Supplier/System Integrator to supply an appropriate Configuration Library for linking
to configurable software components.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 153
The benefit to the software supplier is that a single standardized API for configuration tasks with
a defined behavior may now be used in components targeted for any FACE segment. There is
also no need to modify the component for new environments because the implementation
requiring the change is now supplied by the Avionics Supplier/System Integrator.
The benefit to the Avionics Supplier/System Integrator is the ability to control where the
configuration data is stored. It allows the creation of a library which maps the location-agnostic
Configuration API calls to a platform and transport-appropriate implementations. It does all this
without the need for the software supplier (which could very likely be another vendor) to modify
the component.
One point should be made explicit: under Edition 2.1 of the Technical Standard, the library must
be linked in with the UoP with the implementation treated like a framework outside of the FACE
architecture from a conformance point of view. Once defined in the Technical Standard, the API
will be allowed to be externally provided by the OSS Configuration API.
Legacy Local Configuration has the drawback of limiting the potential for portability of a
component to other systems. Two examples illustrating this point are:
1. Secure operating systems having no file system to hold a configuration file
2. A need to relocate the configuration file without modifying the configurable component
The Configuration API supports a migration path for legacy components by providing data
movement and API usage behaviors similar to the operating system API used to access files;
e.g., open(), read(), and close(). The Configuration API has a few additional and required formal
parameters in their API calls to distinguish them from the standard OS APIs.
Note: Step 3 may be unnecessary if the target system implementation natively supports
XML.
Configurable Parameters are the named attributes of configurable components that effect
behavioral modification of the component without alteration of its executable object code. These
named attributes are called Configuration Parameter IDentifiers (CPIDs). The act of assigning
values to configurable parameters may be accomplished with a configuration data file containing
the CPIDs and their associated values.
The actual configurable parameter names, valid values, and file formats are defined and
documented by the software supplier. For any given capability provided by a FACE component,
various algorithms and feature sets may be selectable to configure the component. The values
assigned to the configurable parameters determine which algorithm or feature set is used by the
FACE component.
The range of valid values for each configurable parameter should be specified in the CCD to
provide the ability to validate the component configuration files.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 155
8.3.1.3 Behavioral Impacts Associated with Each Configuration Value
Each behavioral alternative must be defined for each valid value (or range of values) for each
CPID associated with each configurable parameter. The range of valid values of the CPID
TACAN_MODE is 0 through 4 with behavioral impacts as provided in Table 54.
Table 54: Configuration Parameter Example
Software suppliers should identify the default value for all configurable parameters.
Configurable parameters are not required to be explicitly set if the default value is the desired
configuration value. In the example of Table 54, the default value is specified as 2 (T/R Mode).
There are cases where selections of valid values for CPIDs are invalid as a group for the
component. The example in Section 8.3.1.6 shows the case where “InPrecision” is set to
“Single” and “OutPrecision” is set to “Double”. The significance of this example is that “Single”
is normally a valid value for “InPrecision” and “Double” is normally a valid value for
“OutPrecision”. However, these values are now an invalid combination for “InPrecision” and
“OutPrecision” as indicated using the xs:assert tag in the XSD in Section 8.3.1.6.
The example CCD defines two CPIDs: “InPrecision” and “OutPrecision”. For each CPID, the
attribute type=“PrecisionType” is a reference to a type definition which enumerates the range of
valid values (“Single” and “Double”). The behavior of each value is described in the comments
containing the word “BEHAVIOR”. The attribute specification of “default="Double"” informs
the reader that, if not otherwise specified, the value assigned to “InPrecision” will be “Double”.
The assertion line disallows setting “InPrecision” to “Single” and “OutPrecision” to “Double”.
<?xml version="1.0" encoding="UTF-8"?>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 157
named "PrecisionType". Please notice that both
InPrecision and OutPrecision use this type.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Single">
<xs:annotation>
<xs:documentation>This value selects Single Precision
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Double">
<xs:annotation>
<xs:documentation>This value selects Double Precision
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:schema>
The following example CCS is valid with respect to the CCD as shown in Section 8.3.1.6
containing the “ExampleComponentConfiguration” element. Within that XML element, two
other elements are found. The “InPrecision” element is given a value of “Double” as allowed by
the CCD with a type named “PrecisionType”. The “OutPrecision” element is optional in this
CCS. The “OutPrecision” parameter is given a value of “Single” by the System Integrator as is
allowed by the CCD.
<?xml version="1.0" encoding="UTF-8"?>
<ExampleComponentConfiguration>
<InPrecision>Double</InPrecision>
<OutPrecision>Single</OutPrecision>
</ExampleComponentConfiguration>
Figure 63 provides a pictorial representation of the XSD. Following the figure is the XSD used
for validation of the CSIL.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 159
describes the "data_set" names that may be requested by
the configurable component and the set of configurable
parameters to be supplied when that CSIL-ID is requested
</xs:documentation>
</xs:annotation>
<xs:element name="CSID">
<xs:complexType mixed="false">
<xs:all>
<xs:element ref="CPID" maxOccurs="unbounded"/>
</xs:all>
<xs:attribute name="name" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="CPID" nillable="false">
<xs:complexType mixed="false">
<xs:attribute name="name" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="CSIL">
<xs:complexType mixed="false">
<xs:all>
<xs:element name="ContainerID" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType mixed="false">
<xs:all>
<xs:element ref="CSID" maxOccurs="unbounded"/>
</xs:all>
<xs:attribute name="name" type="xs:string"
use="required"/>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="UoP-Conformance" type="xs:date"
use="required"/>
<xs:attribute name="UoP-ID" type="xs:string" use="required"/>
<xs:attribute name="UoP-Version" type="xs:string"
use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
The example CSIL shown below consists of a single root element named “CSIL” containing
information for two configuration data containers named “MyStuff” and
“C:\FACE\NavigationComponent\Config\Mypdi.pdi”. The Configuration Set Identifier (CSID)
“all” is defined for the “MyStuff” container and the CSID “compact” is defined for the
“C:\FACE\NavigationComponent\Config\Mypdi.pdi” container. Each configuration data
container enumerates the names of applicable CPIDs.
<?xml version="1.0" encoding="UTF-8"?>
<CSIL xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:noNamespaceSchemaLocation="FACE_CSIL_V1.xsd"
UoP-Conformance="2014-06-05"
UoP-ID="TrackCorrelator"
UoP-Version="3.0a">
<ContainerID name="MyStuff">
<CSID name="all">
<CPID name="InPrecision"/>
<CPID name="OutPrecision"/>
</CSID>
</ContainerID>
<ContainerID name="C:\FACE\NavigationComponent\Config\Mypdi.pdi">
<CSID name="compact">
<CPID name="InPrecision"/>
<!-- OutPrecision automatically tracks InPrecision -->
</CSID>
</ContainerID>
</CSIL>
In the case of a non-configurable component, the document is empty except for the CSIL open
tag, required attributes, and close tag. A CSIL describing a non-configurable component is
shown below:
<?xml version="1.0" encoding="UTF-8"?>
<CSIL xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:noNamespaceSchemaLocation="FACE_CSIL_V1.xsd"
UoP-Conformance="2014-06-05"
UoP-ID="TrackCorrelator"
UoP-Version="3.0a">
</CSIL>
The documented process for transforming the artifacts into the component encoded format is
necessary for all components. The documented process must include sufficient detail for the
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 161
Avionics Supplier/System Integrator to create configuration files to be consumed by the
component. If the process requires tool(s), platform-independent tool(s) must be provided.
Example input (CCS and CSIL) and corresponding output file(s) must accompany the CSEP to
assist the System Integrator in validating that the process is being executed correctly.
Initialize(CONFIG) is an optional call that prepares the Configuration Services for use by the
component. See Section C.3 for a full description of the parameters, return codes, and behaviors.
Read(CONFIG) retrieves configuration information. A particular data set from the container is
specified through the set_name parameter. See Section C.5 for a full description of the
parameters, return codes, and behaviors.
Seek(CONFIG) determines where data should be read from by specifying an origin and offset. It
supports stream and file access in implementations using variants of the OS call to seek() (e.g.,
fseek(), lseek()). Seek(CONFIG) may not be meaningful for a particular target system encoding.
See Section C.6 for a full description of the parameters, return codes, and behaviors.
The Open(CONFIG) API has an input parameter container_name used by the Configuration
Library to identify the desired configuration data resource. The API’s container_name parameter
is a unique identifier allowing the library to unambiguously resolve the configuration data
resource; be it a file, database, or any other media as determined by the Avionics
Supplier/System Integrator. Some possible options for identifying a configuration data resource
through container_name are:
1. Using the actual name of a configuration path and file for the library to directly access the
named file
2. Using the supplied path and filename as an indirect mapping to a differently named or
located resource
3. Using a string such as “MyStuff” which the library would resolve to access the
appropriate configuration resource
The container_name parameter to the Open(CONFIG) service refers to the storage of the
configuration data as depicted in Figure 64. Access to the configuration data container is in
Container
Parameter Value
{File,
Database,
Parameter Value
Etc.}
Parameter Value
Parameter Value
The Read(CONFIG) service has an input parameter set_name specifying the desired set of
encoded configuration data items and their assigned values. A configuration entity is composed
of a named parameter (CPID) and an assigned value. The configuration entity could be used
alone or in a group of configuration entities. The configuration entity is encoded in the format of
the configurable component. The set_name parameter is used to identify the desired
configuration entity. The set_name parameter may not directly address the configuration entity,
which is similar to the container_name parameter of the Open(CONFIG) service. In both the
Open(CONFIG) and Read(CONFIG) services, the Configuration Library maps the input
parameters to the desired container and configuration entity.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 163
9 Language Run-Time Guidance
9.1 Introduction
Components are designated as portable when they can be redeployed on different computing
hardware and/or FACE software environments without technically requiring more than a
recompilation of the component and a re-linking of software libraries, language run-times,
and/or frameworks.
A language run-time is an executable object code library used by a compiler (and linker) to
implement features and capabilities of a software programming language such as C, C++, Ada,
or Java. If a non-standard run-time is selected, it must be included in a UoP. If a FACE
recognized standard run-time is selected, it may be included within the UoP, or it may reside in a
software library the UoP is linked against, as shown in Figure 65.
Non-standard Non-standard
Programming Application
Language Run-time Framework
RT OS OS OS OS FW
Portability between
Interfaces Interfaces Interfaces
the Run-time and the Interfaces Interfaces Interfaces
Operating System
Interface
Standard Standard
Portability Operating System Portability
Programming Application
between the between the
Language Run-time Framework
Component and Component and
the Run-time Operating System Segment the Framework
If moving a component from one FACE OS to another, the component should be compiled using
system build tools for the target FACE OS.
Using a FACE recognized standard run-time may increase the flexibility to manage
obsolescence, but may require optimization in performance efforts to mitigate integration risks.
Integration of the run-times and OS can be beneficial as the integration risks have already been
eliminated and may include optimizations that improve performance, but may limit portability.
The language run-time may include language features that compete with features in the FACE
conformant OS (e.g., threading model). These features may have different operational
assumptions (e.g., when and how a thread is initially started) than the same feature in the FACE
conformant OS.
Language run-times are typically used to support a General-Purpose Profile environment. For
the Security and Safety Profiles, assurance activities and/or qualification concerns may restrict
the language features that can be used and/or supported. Many language run-times completely
implement an entire programming language standard. In these cases, the supported programming
language syntax is sufficiently complete that APIs from a FACE OSS do not have to be invoked
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 165
in order for the component to perform its intended function. These components are portable to
OSSs with the same level of language support.
The language run-time may require features that cannot be implemented by using the interfaces
defined in a FACE OS environment.
A no-run-time solution is not always a good solution. It may provide too few language features
or result in excessive object code that complicates structural coverage verification activities.
A formal safety program may require Configuration Management (CM) of all software lifecycle
artifacts including requirements, design, code, test reports, and supporting documents. This
requirement is driven by the Airworthiness Authority. Safety is assessed at the system level.
Safety certifications are not given to FACE components, services, UoPs, or packages. The
cognizant Airworthiness Authority should be involved during all stages of safety-critical
software development and test.
The design assurance level of the OSS must be equal to or greater than the highest design
assurance level required by the system. Any component in a safety-critical partition should have
artifacts for certification at the level of the partition. FACE components use APIs defined in the
FACE Safety Profile to support system-level safety requirements.
The FACE Safety Profile, as described in the FACE Technical Standard, Section 2.8.2, is a
constrained subset of the FACE General-Purpose Profile. Specific details on the APIs and other
restrictions imposed by the FACE Safety Profile are provided in the FACE Technical Standard,
Appendix A.
The FACE Safety Profile is defined for all the FACE segments: OSS, IOS, PSSS, TSS, and PCS.
For each of the segments, the Safety Profile limits the set of APIs necessary in developing
safety-related software components.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 167
11 Security Guidance
The following sections include guidance, clarification and examples of security considerations
associated with implementing the FACE Technical Standard. While this information is targeted
to all the security stakeholders, it is not intended to address all potential conformant FACE
implementations of the Security Profile.
11.1 Introduction
Security is a core consideration in developing robust tactical avionics systems. While security
enforcing functions can span all segments of the FACE architecture, a large portion of the
critical security functions reside in the OSS and one or more high-assurance partitions per
processor core (e.g., data flow policy enforcement and time/space isolation). The FACE Security
Profile provides a minimal API subset that facilitates evaluation to a high assurance level.
While the Security Profile can provide a framework for all assurance levels, given the
restrictions of the available APIs it is intended to be used primarily for high-assurance
components that provide security enforcing functions. Other FACE Profiles may provide similar
assurance but a separate Security Profile is needed to enable systems that require a minimal API
subset for security analysis and certification purposes. For systems with lower security assurance
requirements, it is possible to use either of the other FACE Profiles as long as the associated
process and assurance requirements are satisfied.
It is also important to reiterate that conformance to the Security Profile APIs does not guarantee
a FACE software component is certifiable to any security standard. Depending on the target
assurance level and certification process for the air platform as defined by the Designated
Approving Authority (DAA), the design may not support the security requirements and
subsequently may need modifications. Additional design artifacts may be needed to achieve
certification.
While the certification process and target assurance levels will vary between air platforms, the
FACE Technical Standard provides a common architectural framework that can be leveraged to
help lower the lifecycle costs associated with security certification. While there will always be
costs associated with certifying a system for each air platform, the FACE architecture helps
minimize this by enabling software reuse and portability between platforms. Additionally, this
architecture minimizes the impact of hardware obsolescence while providing competitive
lifecycle costs without sacrificing security. Because FACE requirements do not explicitly
specify hardware components, it is the responsibility of the system integrator to ensure
appropriate hardware is used to support the security controls of the composed system including
partitions, if any.
As per the FACE Technical Standard, the FACE Security Profile provides a wide range of
security enabling functions and attributes. These functions and attributes provide support for
implementations of single and multi-level security functions, protecting data in process, transit,
and at rest, isolation, failure recovery and reporting, and trusted information flows while
guaranteeing non-interference between the portable software components and the operating
environment and external interfaces. To reinforce a statement from the FACE Technical
Standard, these enablers do not in themselves satisfy the system-level characteristics of
Confidentiality, Integrity, and Availability. However, they do provide the necessary framework
to achieve these.
A large volume of guidance can be found in published security documents and is not repeated
herein. As stated previously, the Security Profile APIs do not inherently make a secure system;
additional data and context must be provided. The following list provides some examples of
high-level questions that should be answered and captured as design artifacts when
implementing a secure system.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 169
What are the certification requirements?
Who is the DAA?
Who is the certification authority?
What are the functional requirements associated with the software component?
What security functions does the software component provide?
What are the data flows into and out of the software component?
What protections are provided for data at rest and data in transit?
What computing resources does your software component need to operate?
What design and test artifacts are required for the software component?
11.3 Process
The intent of this section is to brief the reader on the various security processes that may be
required during the development, certification, and validation of software applications. For
systems intended for high-assurance use, various laws and regulations define the security
requirements that must be met. The documents referenced below provide an understanding of the
typical requirements associated with the development, certification, and accreditation of systems
and should be reviewed in that context.
The Federal Information Security Management Act (FISMA) of 2002 provides a comprehensive
framework for ensuring the effectiveness of information security controls, requires Information
Assurance (IA) oversight by the Secretary of Defense and the Director of National Intelligence,
and authorizes NIST and the NSA to issue guidance, including mandatory requirements for US
Government information systems.
Software assurance of FACE components will be a part of the overall system security assurance.
As systems are integrated, components and FACE UoPs are assembled onto platforms that
comply with the FACE Technical Standard. These integrated systems are subject to security
certification processes as outlined in the next section. The system-level controls, and the
acquisition policies that drive them, create requirements for the system that ultimately flow to
the software components.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 171
The source for system-level controls, and the rationale behind their elaboration into security
requirements for software components, are derived from the threats, information classifications,
and anticipated vulnerabilities for a system. These controls and requirements provide the
foundation for SwA.
The processes governing approval of systems for use in security-sensitive environments not only
specify security requirements (that can be addressed by the FACE software components), but
they also specify verification of those requirements so that SwA is achieved with confidence.
Figure 66 shows the flow of requirements from the high level (DoDI 8500.2 security controls) to
software components under one of two different paradigms – Common Criteria or Defense
Information Systems Agency (DISA) Security Technical Implementation Guides (STIGs).
Requirements flow from the top-level IA controls to requirements specified in either Common
Criteria Protection Profiles (PPs) or Security Requirements Guides (SRGs). Though some
Common Criteria PPs were discontinued by the NSA, they are still good reference documents to
utilize as a foundation for IA requirements flow down. Those requirements are further elaborated
for specific products through the STIGs. The implementation of products is then verified against
the requirements, and a package of verification data and reports is created that attests to the
satisfaction of the security requirements.
Platform IA controls may be addressed by FACE components spanning multiple segment layers.
The elaboration of a specific control would then create security requirements in one or more
PP/SRG as well as one or more FACE components. When security evaluators determine whether
a given control is satisfied, they would then use the aggregation of evidence provided by each of
the components to satisfy the control requirements mapping.1
11.4 Certification2
11.4.1 Methodology
For systems intended for use by the US government, various regulations define the IA
accreditation requirements that should be met. The following methodology is a specific example,
but it is not intended to reflect the only methodology that the FACE Technical Standard
supports. A specific system developed for a specific customer may have different requirements
than these.
Within the FACE Security Profile it is key to identify what items are needed for DoD
certification of IA systems across all branches. A critical starting point is the identification of the
Mission Assurance Category (MAC), Confidentiality Level (CL), which is in accordance with
the DoDI 8500.2 and identifies all IA Controls appropriate to the MAC and CL. The Program
Protection Plan (PPP) is a living-document incorporating security requirements created and
maintained at the platform level by Program Office Protection Lead (POPL) and not at the
FACE level.
1
The SwA Pocket Guide Series is available from the Department of Homeland Security (DHS): Build Security In
(https://buildsecurityin.us-cert.gov).
2
In this context, “Certification” refers to security certification to distinguish it from FACE certification mentioned elsewhere.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 173
11.4.2 Certification Example
The intent of this section is to brief the reader on the various security processes that may be
required during the development, certification, and validation of software applications.
In accordance with Naval Air Systems Command (NAVAIR) Instruction 4355.19D, all
NAVAIR and Aviation Program Executive Officer (PEO) programs involved with the design,
development, test and evaluation, certification, acquisition, and in-service support are required to
follow the Systems Engineering Technical Review (SETR) Process.
DODI 5000.02
MS-A MS-B MS-C
Concept Technology System Production & Operations &
Refinement Development Development Deployment Support
&
Demostration
SRR SFR PDR CDR OTRR FRP DR KEY:
ATO = Authority To Operate
IATT IATO ATO CDR = Critical Design Review
DR = Decision Review
FRP = Full Rate Production
IATO = Interim Authority To Operate
IATT = Interim Authority To Test
DIACAP MS = Milestone
OTRR = Operational Test Readiness
Review
Implement & Certify & Maintain & PDR = Preliminary Design Review
Concept Ref
Validate Accredit Conduct SFR = System Functional Review
Initiate & Plan SRR = System Readiness Review
Reviews
NSA SSE-100-1 describes four operational scenarios utilizing a separation kernel-based RTOS
and IA guidance for security-critical functions. For the purposes of our FACE implementation
discussion, we have elected to only present one of the four given the potential applicability to
avionics platforms. Scenario B is utilized because it describes an embedded system with multiple
processors such as an airborne system with limited network connectivity. The system is
comprised of four processors operating on a partitioned RTOS and show the horizontal
11.5.1 Scenario B
The example system provides Top Secret cleared users with fused situational awareness using
data from within the system and from external input. The system is comprised of four
independent processors each utilizing a partitioned RTOS and communicating via a COTS
Ethernet switch. The RTOS instance provides partitions supporting both single domain and
multiple-domains with varying levels of Robustness from Basic to High, as shown in Figure 69.
Basic to High Robustness for these components would require partition isolation and
information flow control between partitions on a processor, with the necessary monitoring
controls to prevent failures that result in Top Secret data being available to unclassified users.
Within Scenario B the cross-domain guard (identified in partition 1B) should achieve High
Robustness.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 175
Figure 69: Scenario B Component Robustness Levels
To reiterate, the focus of the FACE Security Profile is to address the security-critical functions
of the architecture that require High Robustness.
11.6 Encryption/Decryption
While there are many technical approaches for handling encryption/decryption, some are not
viable due to FACE architecture requirements. Specifically, data modeling is required to enable
information sharing and interoperability between FACE UoPs. This requirement prevents
opaque/encrypted data to be passed via the TSS APIs. However, there are options to satisfy
protection of Data at Rest and Data in Transit requirements.
The following are some potential implementations for encryption/decryption supported by the
FACE Technical Standard. See Figure 70 for an example of Encryption/Decryption.
Data in Transit:
Data at Rest:
Internal TSS encryption/decryption coupled with file I/O via the OSS
Encryption/decryption interfacing with external entities:
— PSS/IOS interfacing with local storage device (shown in Scenario 12.4)
— PSS/IOS interfacing with locally accessible security engine hardware (e.g., DES,
Secure Hash) connected to a storage device
Platform
Platform
Specific
Specific
Platform Platform
Common Common
Platform Services Services
Specific
Labeling Labeling
Platform
Information Flow Information Flow
I/O Device Portable Portable Control Policy
Control Policy
Data Module
Services Component Component
Security Security
Service
Data Control Verification User Verification
Data Logger
Manager Application
General Purpose Profile Security Profile General Purpose Profile Security Profile
Operating System Segment – Secure Hypervisor Operating System Segment – Secure Hypervisor
Processor 1 Processor 2
Ethernet
Data Module
Switch
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 177
12 Implementation Scenario Examples
12.1.2 Scope
12.1.2.1 Operational View
The user (Pilot/Co-Pilot) interfaces with the radio by interactions with the User Interface Device.
The user is capable of changing channels, frequencies, presets, and antenna selection of the radio
using this user input device.
The user interfaces through the User Interface Device with the DTD by loading presets, and
operational configuration files. The user interfaces through the user interface device with the
data transfer device to save presets, and operational configuration files.
We start this view from the point after the DTD has already been loaded onto the aircraft. This
excludes the pre-flight and post-flight actions.
Pilotinterfaces
Pilot uploads comm
DTD Pilot
Pilot makes in-flight
makes in-flight Pilot
Pilot saves
saves comm
comm data
data from DTD to the
comm data through changes
changes to comm
to comm data datatoback
back DTDto DTD
through
COMM Manager
the User the
Interface through User Interface
data through user the User the
through Interface
user
through User
Device Device
interface device Device
interface device
Interface Device
COMM Manager
Radio
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 179
12.1.2.3 Physical View
OS
BSP /
Device Drivers
Operating System Segment
RTOS
Interface Hardware
(i.e. MIL-STD-1553, Ethernet)
UHF/VHF Pilot
DTD CDU
Radio Controls
12.1.3 Assumptions
The devices that are depicted in this scenario are a DTD, Ultra High Frequency (UHF)/Very
High Frequency (VHF) Radio, Pilot Controls, and CDU. The CDU uses the ARINC 739
protocol and is connected over an ARINC 429 bus. A UHF/VHF Radio is connected over a
MIL-STD-1553 bus. The Pilot Controls use analog and discrete inputs. The DTD is connected
over Ethernet.
12.1.3.1 Profile
The software is run on a single processor in eight different partitions. The General-Purpose
Profile is being used with both ARINC 653 (APEX) partitions and POSIX partitions.
12.1.3.2 Performance
No strict real-time requirements. User Interface Service (UIS) must provide suitable human
response times.
The OSS provides and controls access to the computing platform for the other FACE segments.
12.1.4.1.1 POSIX
The OSS implements the FACE General-Purpose Profile for POSIX as defined in the FACE
Technical Standard, Section 3.11.3.
The OSS implements the FACE General-Purpose Profile for ARINC 653 (APEX) as defined in
the FACE Technical Standard, Section 3.11.3.
The OSS provides the appropriate BSP and/or device drivers for the MIL-STD-1553, ARINC
429, Ethernet, and discrete I/O interfaces.
The IOSS provides a common interface for I/O devices using the FACE standardized API.
The MIL-STD-1553 service normalizes the interface between the BSP and software
component(s) communicating with the platform device over the MIL-STD-1553 bus.
The ARINC 429 service normalizes the interface between the BSP and software component(s)
communicating with the platform device over ARINC 429.
The Discrete service normalizes the interface between the BSP and software component(s)
requiring the discrete inputs over the corresponding discrete connections.
The PSSS allows for platform-unique software component combinations corresponding to the
specific platforms requirements.
The Platform-specific Device Services (PDS) include components that provide control for,
receive data from, and send data to platform devices or external systems.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 181
UHF/VHF Manager
Communicates with the UHF/VHF device over the FACE I/O Interface according to the
UHF/VHF device’s ICD.
Receives data from the other FACE components and translates the data from the FACE
Data Model into messages the UHF/VHF device can understand.
Translates the ICD-defined data into the FACE Data Model for communication with other
FACE components:
— Provides health and status of the UHF/VHF device (Periodic Built-In Test (PBIT),
Continuous Built-In Test (CBIT), Initiated Built-In Test (IBIT)
— Provides command and control of the UHF/VHF device
Communicates with the Pilot Controls (e.g., stick, throttle, collective, cyclic) using
discrete inputs over the FACE I/O Interface.
Receives data from the other FACE components and translates the data from the FACE
Data Model into messages the Pilot Controls device can understand.
Translates inputs made from the Pilot Controls device into the FACE Data Model for
communication to other software components in the FACE environment:
— Provides health and status of the Pilot Controls device (PBIT, CBIT, IBIT)
— Provides command and control of the Pilot Controls device
DTD Manager
The Platform-Specific Common Services provides common services to other FACE segments
per system requirements. The Platform-Specific Common Services support Configuration
Services and System-Level Health Monitoring for this implementation as defined in the FACE
Technical Standard, Sections 3.15 and 3.16.2, respectively.
12.1.4.4.1 Components
In this implementation, there are no stand-alone services needed to handle the TS. The TS
Interface is instantiated within a TS Library which contains the business logic for the specific
transport mechanism. Refer to Section 12.1.4.7 for more implementation-specific details.
The PCS is a portion of a FACE solution whose contents are entirely independent from other
FACE segments. PCS components exclusively use the TS Interface for data exchanges.
The User Interface Service (UIS) is a configurable ARINC 739 client software component which
provides a service for software components to display and format information on the CDU. The
UIS communicates with the ARINC 739 Graphics Service (in PSS) using the ARINC 739
command stream over the TS Interface, as described in the FACE Technical Standard, Section
3.14.2. In addition to ARINC 739, the UIS can also communicate with other PSS Services (e.g.,
Pilot Controls Manager) to be provided user inputs from other sources. The UIS communicates
with other FACE components over the TS Interface. The actual information (e.g., menus, text
fields, options) which is displayed on the UIS is exchanged with other FACE components and is
retrieved using the FACE Configuration Services. The data configuring the display is retrieved
using FACE Configuration Services using the TS Interface and then provided to the ARINC 739
manager using the TS Interface.
Two similar portable applications are included in the example. They could be combined into a
single UoP, but have been separated to demonstrate the potential for additional reusability. If one
of the components was useful in a future FACE environment, it could be reused without
requiring modification.
The UHF/VHF Line of Sight (LOS) portable application manages frequency data, channel
information, and radio status for UHF/VHF LOS radios on the platform. It communicates with
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 183
actual radios through a UHF/VHF Manager located in PSS over the TS Interface using the
FACE Data Model. The UHF/VHF Manager provides any necessary translation between the
FACE Data Model and the specific UHF/VHF Radio ICD. The UHF/VHF LOS portable
application also provides information to be displayed by the UIS over the TS Interface.
The UHF/VHF Beyond Line of Sight (BLOS) portable application manages frequency data,
channel information, and radio status for UHF/VHF BLOS radios on the platform. It
communicates with actual radios through a UHF/VHF Manager located in PSS over the TS
Interface using the FACE Data Model. The UHF/VHF Manager provides any necessary
translation between the FACE Data Model and the specific UHF/VHF Radio ICD. The
UHF/VHF BLOS portable application also provides information to be displayed by the UIS over
the TS Interface.
The I/O Interface is instantiated within an IOS library which contains the business logic for the
specific transport mechanism. This is only used between IOS and PSSS.
The Analog/Discrete I/O Service requests data from the device driver included in the BSP. The
Analog/Discrete I/O Service then sends the command to the Pilot Control Manager, which then
makes those inputs available to the rest of the FACE environment via the TS Interface using
standardized FACE data formats.
The ARINC 429 I/O Service sends/receives ARINC 739 command stream data to/from the
ARINC 429 device driver included in the BSP. The ARINC 429 I/O Service then sends/receives
the data to the ARINC 739 manager, which then makes the ARINC 739 interface available to
other FACE software components over the TS Interface using the FACE Data Model.
The MIL-STD-1553 I/O Service sends/receives radio data, per the radio ICD, to/from the MIL-
STD-1553 device driver included in the BSP. The MIL-STD-1553 I/O Service then
sends/receives the data to the UHF/VHF Manager, which then makes the radio data available to
other FACE software components over the TS Interface using the FACE Data Model.
All services in the IOS communicate their health status to the System-Level HMFM through the
I/O Interface. Figure 73 does not show the communication lines between Configuration Services
and all other components. This was done on purpose to minimize the complexity of the diagram.
I/O Services are configured locally, either through direct file access or compiled in data.
The TS Interface is instantiated within a TS Library which contains the business logic for the
specific transport mechanism. This is only used between PCS and PSS. All data passed through
the TS Interface uses the FACE Data Model.
The source and destination for connections are used by the TS Library and are defined in the TS
Library configuration data; refer to the FACE Technical Standard, Section 3.7.
System-Level HMFM ↔ *
All Portable Applications, Managers, and Services in the PCS and PSSS communicate their
health status to the System-Level HMFM through the TS Interface. Figure 73 does not show the
communication lines between Configuration Services and all other components. This was done
on purpose to minimize complexity of the diagram.
Configuration Services ↔ *
All Portable Applications, Managers, and Services in the PCS and PSSS receive configuration
data from Configuration Services through the TS Interface. Figure 73 does not show the
communication lines between Configuration Services and all other components. This was done
on purpose to minimize the complexity of the diagram.
The UHF/VHF LOS component communicates with the DTD Manager to send/receive preset
data, frequency data, and radio data to be written to and/or read from the DTD using the TS
Interface. The DTD Manager then communicates the data directly to the DTD using the OS
Interface (Ethernet).
The UHF/VHF BLOS component communicates with the DTD Manager to send/receive preset
data, frequency data, and radio data to be written to and/or read from to the DTD using the TS
Interface. The DTD Manager then communicates the data directly to the DTD using the OS
Interface (Ethernet).
The UHF/VHF LOS component sends/receives frequency data, channel information, and radio
status to/from the UHF/VHF Manager through the TS Interface.
The VHF/UHF BLOS component sends/receives frequency data, channel information, and radio
status to/from the UHF/VHF Manager through the TS Interface.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 185
Pilot Controls Manager → UIS
The UIS component receives information about Pilot Controls inputs from the Pilot Controls
Manager through the TS Interface. These Pilot Controls inputs are used to perform actions which
are available through the CDU user interface, such as selecting a radio preset.
The UIS component communicates with the ARINC 739 using an ARINC 739 command stream
over the TS Interface.
The UIS common service communicates with the UHF/VHF BLOS portable application to
send/receive radio configuration data, frequency data, and preset data through the TS Interface.
This data is sent to the UHF/VHF BLOS portable application from the UIS common service
when a user input is made on the CDU or Pilot Controls. This data is sent from the UHF/VHF
BLOS portable application to the UIS common service in order to populate the CDU with
accurate UHF/VHF BLOS information.
The UIS common service communicates with the UHF/VHF LOS portable application to
send/receive radio configuration data, frequency data, and preset data through the TS Interface.
This data is sent to the UHF/VHF LOS portable application from the UIS common service when
a user input is made on the CDU or Pilot Controls. This data is sent from the UHF/VHF LOS
portable application to the UIS common service in order to populate the CDU with accurate
UHF/VHF LOS information.
Portable
Component
Portable
Portable
ARINC 429 Component Graphics
Platform Service Platform Platform Components Platform
Services
Common Device Device UHF/VHF Device
MIL-STD-1553
Common LOS
Services Services Services Services
Service Services
UHF/VHF
System Level DTD UHF/VHF ARINC 739 Configuration
Analog / Discrete BLOS
HMFM Manager UIS Manager Manager Services
Service
FACE FACE FACE FACE FACE FACE FACE FACE FACE FACE FACE FACE FACE
Transport I/O I/O Transport I/O Transport Transport I/O Transport Transport I/O Transport I/O
Services Interface Interface Services Interface Services Services Interface Services Services Interface Services Interface
Lib Lib Lib Lib Lib Lib Lib Lib Lib Lib Lib Lib Lib
Device
Driver APEX
SP/QP
APEX APEX APEX APEX APEX APEX APEX
and
POSIX
Processor 0
Comm Device Partitioned FACE Environment 20June13
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 187
12.2.2 Scope
Data Transfer
Pilot / Co-Pilot
Device
Changes configuration (map and waypoint data of the Pre-flight: loads configuration (map and waypoint data
avionics systems) using the User Interface device of the avionics systems) onto the DTD
User Interface
Device
Pilot / Co-Pilot
The user (Pilot/Co-Pilot) interfaces with the EGI by interactions with the User Interface Device.
The user is capable of changing EGI operational configuration and source selection using this
user input device.
The user (Pilot/Co-Pilot) interfaces with the Air Data Computer by interactions with the User
Interface Device. The user is capable of changing Air Data Computer operational configuration
and source selection using this user input device.
The user (Pilot/Co-Pilot) interfaces with the Tactical Air Navigation (TACAN) by interactions
with the User Interface Device. The user is capable of changing TACAN operational
configuration data and source, channel, and frequency selection using this user input device.
The user (Pilot/Co-Pilot) interfaces with the Radar Altimeter by interactions with the User
Interface Device. The user is capable of changing Radar Altimeter operational configuration data
and source, channel, and frequency selection using this user input device.
The user (Pilot/Co-Pilot) interfaces through the User Interface Device with the DTD by loading
presets, and configuration files. The user interfaces through the user interface device with the
data transfer device to save presets, and operational configuration files.
The user (Pilot/Co-Pilot) controls overlays, digital map source, map type, and configuration
through the bezels on the display.
We start this view from the point after the DTD has already been loaded onto the aircraft. This
excludes the pre-flight and post-flight actions.
OS
BSP /
Device Drivers
Operating System Segment
RTOS
Interface Hardware
(i.e. MIL-STD-1553, Ethernet)
VOR/
Air Data Radar
EGI DME/ILS TACAN DTD CDS
Computer Altimeter
Sensor
12.2.3 Assumptions
The devices that are depicted in this scenario are a CDS, an EGI, an Air Data Computer, a
VOR/DME/ILS sensor, a TACAN sensor, and a Radar Altimeter. The CDS uses the OpenGL
protocol and is connected over an Ethernet bus. Inputs from the bezels on the display are
provided over a serial service. An EGI is connected over a MIL-STD-1553 and ARINC 429 bus.
An Air Data Manager is connected over an ARINC 429 bus. Both the EGI and Air Data
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 189
Manager receive discrete inputs provided over analog connections. VOR/DME/ILS and TACAN
sensors are connected over a MIL-STD-1553 bus. A Radar Altimeter is connected over an
ARINC 429 bus.
12.2.3.1 Profile
The software is run on two processors in eleven different partitions. The empty partitions could
be used for expansion and future development.
This scenario could be implemented with the Safety Profile or the General-Purpose Profile. This
implementation assumes the General-Purpose Profile is being used with both ARINC 653
(APEX) partitions and POSIX partitions.
12.2.3.2 Performance
EGI and ILS have real-time requirements. UIS must provide suitable human response times.
12.2.4 Environment
The OSS provides and controls access to the computing platform for the other FACE segments.
12.2.4.1.1 POSIX
The OSS implements the FACE General-Purpose Profile for POSIX as defined in the FACE
Technical Standard, Section 3.10.3.
The OSS implements the FACE General-Purpose Profile for ARINC 653 (APEX) as defined in
the FACE Technical Standard, Section 3.10.3.
The OSS provides the appropriate BSP and/or device drivers for the MIL-STD-1553, ARINC
429, Ethernet, and discrete I/O interfaces.
The IOSS provides a common interface for I/O devices using the standardized API.
12.2.4.2.1 MIL-STD-1553
The MIL-STD-1553 service normalizes the interface between the BSP and software
component(s) communicating with the platform device over the MIL-STD-1553 bus.
The ARINC 429 service normalizes the interface between the BSP and software component(s)
communicating with the platform devices over ARINC 429.
The Serial service normalizes the interface between the BSP and software component(s)
communicating with the platform device using the serial bus.
12.2.4.2.4 Analog/Discrete
The Analog/Discrete service normalizes the interface between the BSP and software
component(s) requiring the discrete inputs over the corresponding analog/discrete connections.
The PSSS allows for platform-unique software component combinations corresponding to the
specific platform requirements.
The PDS include components that provide control for, receive data from, and send data to
platform devices or external systems.
EGI Manager
Communicates with the EGI device over the FACE I/O Interface according to the EGI
device’s ICD
Receives data from the other FACE components and translates the data from the FACE
Data Model into messages the EGI device can understand
Translates the ICD-defined data into the FACE Data Model for communication with other
FACE components:
— Provides health and status of the EGI device (PBIT, CBIT, IBIT)
— Provides command and control of the EGI device
Communicates with the Air Data Computer device over the FACE I/O Interface according
to the Air Data Computer device’s ICD
Receives data from the other FACE software components and translates the data into data
formats and messages the Air Data Computer can understand
Translates the ICD-defined data into data formats and messages that the other FACE
software components can understand:
— Provides health and status of the Air Data Computer (PBIT, CBIT, IBIT)
— Can provide command and control of the Air Data Computer and managed device
states
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 191
Radar Altimeter Manager
Communicates with the Radar Altimeter device over the FACE I/O Interface according to
the Radar Altimeter device’s ICD
Receives data from the other FACE components and translates the data from the FACE
Data Model into messages the Radar Altimeter device can understand
Translates the ICD-defined data into the FACE Data Model for communication with other
FACE components:
— Provides health and status of the Radar Altimeter device (PBIT, CBIT, IBIT)
— Provides command and control of the Radar Altimeter device
TACAN Manager
Communicates with the TACAN device over the FACE I/O Interface according to the
TACAN device’s ICD
Receives data from the other FACE components and translates the data from the FACE
Data Model into messages the TACAN device can understand
Translates the ICD-defined data into the FACE Data Model for communication with other
FACE components:
— Provides health and status of the TACAN device (PBIT, CBIT, IBIT)
— Provides command and control of the TACAN device
VOR/ILS/DME Manager
Communicates with the VOR/ILS/DME device over the FACE I/O Interface according to
the VOR/ILS/DME device’s ICD
Receives data from the other FACE components and translates the data from the FACE
Data Model into messages the VOR/ILS/DME device can understand
Translates the ICD-defined data into the FACE Data Model for communication with other
FACE components:
— Provides health and status of the VOR/ILS/DME device (PBIT, CBIT, IBIT)
— Provides command and control of the VOR/ILS/DME device
DTD Manager
Bezel Manager
The OpenGL Extension to the X Window System (GLX) Server provides a standardized
interface for client software components to display OpenGL-based information on a CDS. The
GLX Server allows for separation of the CDS display from the PCS components. OpenGL
commands are serialized and transmitted as packets to the remote display network location.
When received by the target display manager, those commands are de-serialized and passed to
the local display drivers.
The Platform-Specific Common Services provides common services to other FACE segments
per system requirements. The Platform-Specific Common Services support Configuration
Services and System-Level Health Monitoring for this implementation as defined in the FACE
Technical Standard, Sections 3.15 and 3.16.2, respectively.
12.2.4.4.1 Components
In this implementation, there are no components needed to handle the TS. The TS Interface is
instantiated within a TS Library which contains the business logic for the specific transport
mechanism. Refer to Section 12.2.4.7 for more implementation-specific details.
The PCS is a portion of a FACE solution whose contents are entirely independent from other
FACE segments. PCS components exclusively use the TS Interface for data exchanges.
Digital Map
The DigMap is a portable application that renders a map to send to the GLX Server given terrain
and Global Positioning System (GPS) data as inputs.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 193
Overlay Manager
The Overlay Manager is a portable application that provides navigation and sensor data given
terrain and GPS data as inputs.
The Digital Aeronautical Flight Information File (DAFIF) service provides airport and navaid
data given ownship position and inputs from the DTD Manager.
Terrain Server
The Terrain Server is a service that provides conversion utilities and processed DTED data
needed by the portable applications.
The GPS Aiding service provides heading and airspeed smoothing of the background GPS data
provided by the EGI. This utility receives background GPS data, heading, airspeed, altitude,
groundspeed, etc. from the PSS and creates a smoothed solution for use by other common
services or portable applications.
The Navigation Utilities (Nav Utils) are services that provide conversion utilities, and
calculations for ownership position amongst other utilities needed by the portable applications.
The User Interface Service (UIS) communicates to the DTD Manager what data is needed from
the DTD.
The I/O Interface is instantiated within an IOS library which contains the business logic for the
specific transport mechanism. This is only used between IOS and PSS.
The MIL-STD-1553 I/O Service sends/receives EGI, VOR/DME/ILS, and TACAN data, per the
pertinent MIL-STD-1553 ICD, to/from the MIL-STD-1553 device driver included in the BSP.
The MIL-STD-1553 I/O Service then sends/receives the data to the respective managers, which
then make the data available to other FACE software components over the TS Interface using
the FACE Data Model. The MIL-STD-1553 Service is configured by Configuration Services to
support the devices for the given implementation.
The ARINC 429 I/O Service sends/receives EGI, Air Data, and Radar Altimeter data to/from the
ARINC 429 device driver included in the BSP. The ARINC 429 I/O Service then sends/receives
the data to the respective managers, which then make the data available to other FACE software
components over the TS Interface using the FACE Data Model. The ARINC 429 service is
configured by Configuration Services to support the devices for the given implementation.
The Serial connection sends the Bezel commands to the Serial I/O Service. The Serial I/O
Service then sends the command to the Bezel Manager, which then makes those inputs available
to the rest of the FACE environment via the TS Interface using the FACE Data Model. The
Serial Service is configured by Configuration Services to support the device for the given
implementation.
The Analog/Discrete I/O Service requests data from the analog and discrete device drivers
included in the BSP. The Analog/Discrete I/O Service then sends the command to the EGI and
Air Data Managers, which then makes those inputs available to the rest of the FACE
environment via the TS Interface using the FACE Data Model. The Analog/Discrete Service is
configured by Configuration Services to support the devices for the given implementation.
All services in the IOS communicate their health status to the System-Level HMFM through the
I/O Interface. Figure 77 does not show the communication lines between System-Level HMFM
and all other components. This was done on purpose to minimize the complexity of the diagram.
I/O Services are configured locally, either through direct file access or compiled in data.
12.2.4.7 TS Interface
The TS Interface is instantiated within a TS Library which contains the business logic for the
specific transport mechanism. This is only used between PCS and PSS. All data passed through
the TS Interface uses the FACE Data Model.
The source and destination for connections are used by the TS Library and are defined in the TS
Library configuration data. Please refer to the FACE Technical Standard, Section 3.7.
System-Level HMFM ↔ *
All Portable Applications, Managers, and Services in the PCS and PSSS pass health status to the
System-Level HMFM through the TS Interface. Figure 77 does not show the communication
lines between the System-Level HMFM and all other components. This was done on purpose to
minimize the complexity of the diagram.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 195
Configuration Services ↔ *
All Portable Applications, Managers, and Services in the PCS and PSSS receive configuration
data from Configuration Services through the TS Interface. Figure 77 does not show the
communication lines between Configuration Services and all other components. This was done
on purpose to minimize the complexity of the diagram.
The DigMap component communicates with the GLX Server using an X11 Byte Stream over the
TS Interface.
The Overlay Manager component communicates with the GLX Server using an X11 Byte
Stream over the TS Interface.
The Navigation Utilities component communicates information about TACAN inputs to/from
the TACAN Manager through the TS Interface.
The Overlay Manager component receives information about bezel inputs from the Bezel
Manager through the TS Interface.
The UIS component communicates with the DTD Manager to send/receive data to be written to
and/or read from the DTD using the TS Interface. The DTD Manager then communicates the
data directly to the DTD using the OS Interface (Ethernet).
The DAFIF component communicates with the DTD Manager to send/receive data to be written
to and/or read from the DTD using the TS Interface. The DTD Manager then communicates the
data directly to the DTD using the OS Interface (Ethernet).
The Terrain Server component communicates with the DTD Manager to send/receive data to be
written to and/or read from the DTD using the TS Interface. The DTD Manager then
communicates the data directly to the DTD using the OS Interface (Ethernet).
The DigMap component receives data from the DTD Manager to render data to send to the GLX
Server using the TS Interface.
The Terrain Server component receives airspeed and altitude data from the Air Data Manager
using the TS Interface.
The Navigation Utilities component receives airspeed and altitude data from the Air Data
Manager using the TS Interface.
The Terrain Server component receives height above terrain data from the Radar Altimeter
Manager using the TS Interface.
The Navigation Utilities component receives height above terrain data from the Radar Altimeter
Manager using the TS Interface.
The Terrain Server component receives navigation data from the EGI Manager using the TS
Interface.
The Navigation Utilities component receives navigation data from the EGI Manager using the
TS Interface.
The GPS Aiding component receives navigation data from the EGI Manager using the TS
Interface.
The DigMap component receives terrain data from the Terrain Server component using the TS
Interface.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 197
GPS Aiding → Terrain Server
The Terrain Server component receives navigation data from the GPS Aiding component using
the TS Interface.
The Overlay Manager component receives terrain data from the Terrain Server component using
the TS Interface.
The DigMap component receives navigation data from the GPS Aiding component using the TS
Interface.
The Navigation Utilities component receives navigation data from the GPS Aiding component
using the TS Interface.
The Navigation Utilities component receives navaid data from the DAFIF component using the
TS Interface.
Platform
Device
Services
Portable Portable
Serial Service TACAN
Manager Component Component
Processor 0
Partition 0 Partition 1 Partition 2 Partition 3 Partition 4 Partition 5 Partition 6 Partition 7
Portable
Component
Portable Common
Component Platform Services
Platform Device
Common Graphics Services DAFIF
APEX
APEX APEX APEX and APEX
POSIX
Processor 1
Digital Map Partitioned FACE Environment 20June13
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 199
CDS and CDU. This scenario begins after the DTD has already been loaded onto the aircraft.
This excludes the pre-flight and post-flight actions.
12.3.2 Scope
12.3.2.1 Operational View
Data Transfer
Pilot/Co-Pilot
Device
User Interface
Device
Pilot/Co-Pilot
The user (Pilot/Co-Pilot) interfaces with the EGI by interactions with the User Interface Device.
The user is capable of changing EGI configuration and source selection using this user input
device.
The user (Pilot/Co-Pilot) interfaces with the Air Data Computer by interactions with the User
Interface Device. The user is capable of changing Air Data Computer operational configuration
and source selection using this user input device.
The user (Pilot/Co-Pilot) interfaces with the VOR/DME/ILS by interactions with the User
Interface Device. The user is capable of changing VOR/DME/ILS operational configuration data
and source, channel, and frequency selection using this user input device.
The user (Pilot/Co-Pilot) interfaces with the TACAN by interactions with the User Interface
Device. The user is capable of changing TACAN operational configuration data and source,
channel, and frequency selection using this user input device.
The user (Pilot/Co-Pilot) interfaces with the Radar Altimeter by interactions with the User
Interface Device. The user is capable of changing Radar Altimeter operational configuration data
and source, channel, and frequency selection using this user input device.
The user (Pilot/Co-Pilot) interfaces through the User Interface Device with the DTD by loading
presets, and operational configuration files. The user interfaces through the user interface device
with the data transfer device to save presets, and configuration files.
The user (Pilot/Co-Pilot) controls overlays, digital map source, map type, and operational
configuration through the bezels on the display.
TS Lib TS Lib
Graphics Services Platform Common Services
FCS TACAN
Manager Manager
Platform Device Services I/O Lib I/O Lib
OS
BSP/Device
Drivers
Operating System Segment
RTOS
Interface Hardware
(i.e., MIL-STD-1553, Ethernet)
VOR/
Air Data Radar
FCS EGI DME/ILS TACAN DTD CDS CDU
Computer Altimeter
Sensor
12.3.3 Assumptions
The devices that are depicted in this scenario are a CDU, CDS, an EGI, an Air Data Computer, a
VOR/DME/ILS sensor, a TACAN sensor, a Radar Altimeter, and a Flight Control System
(FCS). The CDU uses the ARINC 739 protocol and is connected over an ARINC 429 bus. The
CDS uses the ARINC 661 protocol and is connected over Ethernet. An EGI is connected over a
MIL-STD-1553 and ARINC 429 bus. An Air Data Manager is connected over an ARINC 429
bus. A VOR/DME/ILS and a TACAN sensor are connected over a MIL-STD-1553 bus. A Radar
Altimeter and FCS System are connected over an ARINC 429 bus.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 201
12.3.3.1 Profile
The software is all run on two processors in 13 different partitions. The FACE Safety Profile is
being used with both ARINC 653 (APEX) partitions and POSIX partitions.
12.3.3.2 Performance
The FCS has real-time requirements. UIS must provide suitable human response times.
12.3.4 Environment
12.3.4.1 Operating System Segment
The OSS provides and controls access to the computing platform for the other FACE segments.
12.3.4.1.1 POSIX
The OSS implements the FACE Safety Profile for POSIX as defined in the FACE Technical
Standard, Section 3.11.2.
12.3.4.1.2 ARINC-653
The OSS implements the FACE Safety Profile for ARINC 653 (APEX) as defined in the FACE
Technical Standard, Section 3.11.2.
The OSS provides the appropriate BSP and/or device drivers for the MIL-STD-1553, ARINC
429 I/O, and Ethernet interfaces.
The IOSS provides a common interface for I/O devices using the FACE standardized API.
The MIL-STD-1553 service normalizes the interface between the BSP and software
component(s) communicating with the platform device over the MIL-STD-1553 bus.
The ARINC 429 service normalizes the interface between the BSP and software component(s)
communicating with the platform device over ARINC 429.
The PSSS allows for platform-unique software component combinations corresponding to the
specific platforms requirements.
The PDS include components that provide control for, receive data from, and send data to
platform devices or external systems.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 203
TACAN Manager
VOR/ILS/DME Manager
The Platform-Specific Common Services provides common services to other FACE segments
per system requirements. The Platform-Specific Common Services support Configuration
Services, Logging, DPM Services, Streaming Media Services, and System-Level Health
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 205
Monitoring as defined in the FACE Technical Standard, Sections 3.15, 3.5.3.1, 3.5.3.2, 3.5.3.3,
and 3.16.2, respectively.
12.3.4.4.1 Components
In this implementation, there are no stand-alone services needed to handle the TS. The TS
Interface is instantiated within a TS Library which contains the business logic for the specific
transport mechanism. Refer to Section 12.3.4.7 for more implementation-specific details.
The PCS is a portion of a FACE solution whose contents are entirely independent from other
FACE segments. PCS components exclusively use the TS Interface for data exchanges.
Flight Management
The Flight Management is a portable application designed to manage the flight plan and provide
output to the UIS to be displayed given flight plan data as input.
DAFIF Service
The DAFIF Service provides airport and navaid data given ownership position and inputs from
the DTD Manager.
The UIS is a configurable ARINC 739 client software component which provides a service for
capability-based software components to display and format information on MCDU displays.
The UIS communicates with a ARINC 739 Graphics Service (in PSS) using the an ARINC 739
command stream over the TS Interface, as described in the FACE Technical Standard, Section
3.14.2. The UIS also communicates to the DTD Manager what data is needed from the DTD.
The UIS communicates with other FACE components over the TS Interface using the FACE
Data Model. The actual information (e.g., menus, text fields, options) which is displayed on the
CDU and the associated name/value pairs which are exchanged with other FACE components
are fully configurable, and are stored/retrieved using the FACE Configuration Services.
The flight planning utilities are services that provide conversion utilities and generated flight
plans amongst other utilities needed by the portable applications.
GPS Aiding
The GPS Aiding service provides heading and airspeed smoothing of the background GPS data
provided by the EGI. This utility receives background GPS data, heading, airspeed, altitude,
groundspeed, etc. from the PSS and creates a smoothed solution for use by other common
services or portable applications.
The Navigation Utilities are services that provide conversion utilities, and calculations for
ownership position amongst other utilities needed by the portable applications.
The I/O Interface is instantiated within an IOS library which contains the business logic for the
specific transport mechanism. This is only used between IOS and PSS.
The MIL-STD-1553 I/O Service sends/receives EGI, VOR/DME/ILS, and TACAN data, per the
specific ICDs, to/from the MIL-STD-1553 device driver included in the BSP. The MIL-STD-
1553 I/O Service then sends/receives the data to the respective managers, which then make the
data available to other FACE software components over the TS Interface using the FACE Data
Model. The MIL-STD-1553 Service is configured by Configuration Services to support the
devices for the given implementation.
12.3.4.6.2 ARINC 429 Service to FCS, EGI, Radar Altimeter, Air Data, and ARINC 739 Managers
The ARINC 429 I/O Service sends/receives FCS, EGI, Radar Altimeter, Air Data, and ARINC
739 data to/from the ARINC 429 device driver included in the BSP. The ARINC 429 I/O
Service then sends/receives the data to the respective managers, which then make the data
available to other FACE software components over the TS Interface using the FACE Data
Model. The ARINC 429 service is configured by Configuration Services to support the devices
for the given implementation.
All services in the IOS communicate their health status to the System-Level HMFM through the
I/O Interface. Figure 81 does not show the communication lines between Configuration Services
and all other components. This was done on purpose to minimize the complexity of the diagram.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 207
12.3.4.7 TS Interface
The TS Interface is instantiated within a TS Library which contains the business logic for the
specific transport mechanism. This is only used between PCS and PSS. All data passed through
the TS Interface uses the FACE Data Model.
The source and destination for connections are used by the TS Library and are defined in the TS
Library configuration data. Please see the FACE Technical Standard, Section 3.7.
System-Level HMFM ↔ *
All Portable Applications, Managers, and Services in the PCS and PSSS pass health status to the
System-Level HMFM through the TS Interface. Figure 81 does not show the communication
lines between the System-Level HMFM and all other components. This was done on purpose to
minimize the complexity of the diagram.
Configuration Services ↔ *
All Portable Applications, Managers, and Services in the PCS and PSSS receive configuration
data from Configuration Services through the TS Interface. Figure 81 does not show the
communication lines between Configuration Services and all other components. This was done
on purpose to minimize the complexity of the diagram.
The UIS communicates with the ARINC 739 server using an ARINC 739 command stream over
the TS Interface.
The RNP Manager communicates with the ARINC 661 server using an ARINC 611-4 command
stream over the TS Interface. The ARINC 661 server communicates directly with the GPU using
the OS Interface.
The Flight Plan Utilities component communicates information about VOR/DME/ILS inputs
to/from the VOR/DME/ILS Manager through the TS Interface.
The Flight Plan Utilities component communicates information about TACAN inputs to/from
the TACAN Manager through the TS Interface.
The Flight Plan Utilities component receives height above terrain data from the Radar Altimeter
Manager using the TS Interface.
The Flight Plan Utilities component receives navigation data from the EGI Manager using the
TS Interface.
The Flight Plan Utilities component receives airspeed and altitude data from the Air Data
Manager using the TS Interface.
The RNP Manager communicates information about FCS inputs to/from the FCS Manager
through the TS Interface.
The GPS Aiding component receives navigation data from the EGI Manager using the TS
Interface.
The UIS component communicates with the DTD Manager to send/receive data to be written to
and/or read from the DTD using the TS Interface. The DTD Manager then communicates the
data directly to the DTD.
The DAFIF component communicates with the DTD Manager to send/receive data to be written
to and/or read from the DTD using the TS Interface. The DTD Manager then communicates the
data directly to the DTD.
The Flight Plan Utilities component receives navaid data from the DAFIF component using the
TS Interface.
The Flight Plan Utilities component receives navigation data from the GPS Aiding component
using the TS Interface.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 209
Navigation Utilities → Flight Plan Utilities
The Flight Plan Utilities component receives navigation data from the Navigation Utilities
component using the TS Interface.
This Flight Management component receives flight plan information from the Flight Plan
Utilities component using the TS Interface.
DAFIF → RNP
The RNP component receives navaid data from the DAFIF component using the TS Interface.
The RNP component receives flight plan data from the Flight Plan Utilities component using the
TS Interface.
The RNP component receives navigation data from the GPS Aiding component using the TS
Interface.
The RNP component receives navigation data from the Navigation Utilities component using the
TS Interface.
RNP → UIS
The UIS component receives display and format information from the RNP component using the
TS Interface.
The UIS component receives display and format information from the Flight Management
component using the TS Interface.
Platform
Device
Services
Portable Portable
TACAN
Manager Component Component
FACE FACE FACE FACE FACE FACE FACE FACE FACE FACE FACE
I/O Transport I/O Transport Transport I/O Transport Transport I/O Transport I/O
Interface Services Interface Services Services Interface Services Services Interface Services Interface
Lib Lib Lib Lib Lib Lib Lib Lib Lib Lib Lib
Device
Driver
Processor 0
Partition 0 Partition 1 Partition 2 Partition 3 Partition 4 Partition 5 Partition 6 Partition 7
Portable
Component
Portable Common
Component Services
Platform
Common Graphics DAFIF
Platform Platform
Portable Services Services
Device Device
Components UIS
Services Services
Flight Flight Plan
Configuration ARINC 739 DTD FCS
Management Utils
Services Manager Manager Manager
FACE FACE FACE FACE FACE FACE FACE FACE FACE FACE
Transport Transport I/O Transport I/O Transport I/O Transport Transport I/O
Services Services Interface Services Interface Services Interface Services Services Interface
Lib Lib Lib Lib Lib Lib Lib Lib Lib Lib
APEX
APEX APEX APEX and APEX APEX
POSIX
Processor 1
20June13
RNP Partitioned FACE Environment
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 211
the FACE Profiles against an identified use-case in the public domain. It is recommended that
NSA SSE-100-1 be referenced for further details not provided in the sections below.
NSA SSE-100-1 Figure 15 (as replicated below in Figure 83) depicts a Reporting-Status use-
case where a TS User Application on Processor #2 provides basic status log information to a TS
removable memory device connected to Processor #1.
The NSA SSE-100-1 Scenario B Reporting Status scenario reflects sending basic status log
information from the TS User Application to the Data Module (NSA SSE-100-1, Section
8.3.3.6). This scenario begins after the TS User Application has created fused/composed a TS
situational awareness picture for the user.
The TS User Applications provides basic status log information to the Data Module without user
inputs. The user is capable of storing a TS report on the Data Module to be extracted and
analyzed at a later time.
We start this view after the TS User Application has fused a situational awareness picture.
TS User
Pilot Application
interfaces DTD Pilot makes in-flight Pilot saves comm
creates
comm datafused/
through TS User Application
changes to comm TS report
data backstored on
to DTD
combined
the User situational
Interface creates
data TS report
through user Data Module
through the user
awareness
Devicepicture interface device interface device
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 213
12.4.2.3 Physical View
Platform-Specific Services
Platform-Specific Services Segment
Segment
TSS Lib
TSS Lib
Information Flow
Data Control Manager Control Policy
Security Verification
IO
Platform Common Services
I/O Services Segment
Data Module
Service
OS OS
BSP/Device
BSP/Device Drivers
Operating System Segment: Drivers Operating System Segment:
General-Purpose Profile Security Profile
RTOS RTOS
Interface Hardware
(i.e,. MIL-STD-1553, Ethernet)
Ethernet Data
Switch Module
12.4.3 Assumptions
The system has reached a trusted state.
12.4.3.1 Profile
The software executes within two partitions per processor. The FACE Security Profile (POSIX)
is being used on the inter/intra-processor communications and a FACE General-Purpose Profile
(POSIX) partition is being used for the host applications.
12.4.3.2 Performance
The OSS provides and controls access to the computing platform for the other FACE segments.
12.4.4.1.1 POSIX
The OSS implements the FACE General-Purpose Profile for POSIX as defined in the FACE
Technical Standard, Section 3.11.3 for the single security-level partitions used for host
applications. Additionally, the OSS implements the FACE Security Profile for POSIX as defined
in the FACE Technical Standard, Section 3.11.1 for the multi-level secure partitions that perform
security enforcing and/or relevant functions.
The OSS provides the appropriate BSP and/or device drivers for the data storage device I/O, and
Ethernet interfaces.
The IOSS provides a common interface for I/O devices using the FACE standardized API.
The Data Module service normalizes the interface between the BSP and software component(s)
communicating with the platform storage device over the data bus. While NSA SSE-100-1 is not
explicit, we are assuming the storage device is connected to the platform through a standard
serial (e.g., SATA) or other common avionics bus (e.g., MIL-STD-1553).
The PSSS allows for platform-unique software component combinations corresponding to the
specific platforms requirements.
The PDS include components that provide control for, receive data from, and send data to
platform devices or external systems.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 215
— Provides command and control of the Data Module device
The Platform-Specific Common Services provides common services to other FACE segments
per system requirements.
The Information Flow Control Policy component authorizes the message flow between
applications on different partitions/devices.
Security Verification
The Security Verification component ensures the message was unaltered through the Ethernet
switch and that the data was not compromised.
The TS Interface is only instantiated within a TS Library which contains the business logic for
the specific transport mechanism. This is only used between PCS and PSS.
The source and destination for connections are used by the TS Library and are defined in the TS
Library configuration data. Please see the FACE Technical Standard, Section 3.7.
The Information Flow Control Policy component communicates with any application passing
messages between partitions/devices to receive the source and destination of any messages
through the TS Interface.
Security Verification ↔ *
The Security Verification component communicates with any application passing messages
between partitions/devices to receive message information through the TS Interface.
The Data Logger component receives TS reports and basic status log information to be written to
the Data Module using the TS Interface. The Data Control Manager then communicates the data
to the Data Module Device using the I/O Interface.
Data Logger ← *
The Data Logger component receives basic status log information from any application through
the TS Interface.
The Data Logger component receives a TS Report from the User Application through the TS
Interface.
Labeling ↔ *
The Labeling component communications with any application to apply or remove labels to a
message using the TS Interface.
Encryption ↔ *
The Encryption component communicates with any application to encrypt or decrypt a message
using the TS Interface.
The PCS is part of a FACE architecture whose contents are entirely independent from other
FACE segments. PCS components exclusively use the TS Interface for data exchanges.
Encryption Service
The Encryption Service (ES) is a Security Verification component which provides a service for
User Application data (Data in Transit) that moves from a General-Purpose Profile partition
flowing horizontally into a Security Profile partition through a High Robustness/Secure
Hypervisor OSS Partition, and then Encrypted based on required Confidential Level.
Labeling Service
The Labeling Service (LS) is a Security Verification component which provides a service to
ensure data confidentiality and integrity is enforced through Mandatory access controls labeling.
The Data Logger Service (DLS) is a PCS component with the responsibility of time stamping
and logging User Application data received via the TS Interface from Common Services
components and transferring the Application data at specified time intervals via the TS Interface
to the PSSS Data Control Manager.
User Application
The User Application (UA) manages various types of data that have been designated to be
moved from the General-Purpose Profile partition into a Security Profile partition via the FACE
TS Interface where the ES component will execute the data encryption process.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 217
12.4.4.6 I/O Interface
The I/O Interface is only instantiated within an IOS library which contains the business logic for
the specific transport mechanism. This is only used between IOS and PSSS.
The Data Module I/O Service sends encrypted data from the Data Control Manager, a Platform
Device Services component, to the Data Module device driver included in the BSP. The Data
Module device driver at specified intervals will send encrypted data to the Data Module.
12.4.4.7 TS Interface
The TS Interface is only instantiated within a TS Library which contains the business logic for
the specific transport mechanism. This is only used between PCS and PSS.
The source and destination for connections are used by the TS Library and are defined in the TS
Library configuration data. Please see the FACE Technical Standard, Section 3.7.
Application data from Partition Z PCS Common Services is transferred via TS Interface to PSS
Platform Common Services. Figure 88 shown in a subsequent notional data flow section below
does not show the communication lines between Partition Z PCS Common Services components
and PSS Platform Common Services components. This was done on purpose to minimize
complexity of the diagram.
Application data is transferred via the TS Interface to the Ethernet Device Driver BSP. Per
specified interval, the Application data will be sent via the TS Interface to Partition C (Single
Level/General-Purpose Partition) PCS.
Application data transferred via the TS Interface to the PCS Data Logger component is time-
stamped and logged before being transferred via the TS to Platform Device Services. Figure 88
does not show the communication lines between Partition C PCS Data Logger and Platform
Device Services components. This was done on purpose to minimize complexity of the diagram.
To further describe this FACE Secure Reporting Status example scenario, Figure 88 depicts the
partitions and data flow within Processor & Hardware #2, flowing between OSSs from partition
A to partition Processor & Hardware #1. Partitions are represented by the vertical barriers
between OSSs and the classification of the partitions is included within the components in each
FACE segment. The partitions that support the movement of data within a segment are shown at
different classification levels at the beginning of their name, as well as symbols to denote the
direction in which the data is flowing.
On Processor & Hardware #2, the OSS for Partition A provides the data flow from a User
Application (TS) through the TSS to Partition Z. The data moves from a General-Purpose Profile
partition flowing horizontally into a Security Profile partition through a High Robustness/Secure
Hypervisor Operating System (OSS Partition Z). After proper hardening of data (labeling and/or
encryption through the Security Verification component) the TS-level information can then
travel through a COTS Ethernet switch to Processor & Hardware #1.
The check between Security Verification components on the separate processor hardware is
needed to ensure the data was properly routed and unaltered through the Ethernet switch and that
the TS data was not compromised. Processor & Hardware #1 then reverses the process through
the TSS in the High Robustness Partition Z which subsequently sends the validated data via the
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 219
TSS and OSS to a Data Logger application in Partition C. The Data Logger application then
utilizes a platform-specific Data Control Manager to send the data to the external Data Module
using a Data Module Service in the IOSS of Partition C.
The data flow provided in this example code is for a PSSS process (GPS process) that polls a
hardware device for position data using the IOSS (Serial Device Service). The PSSS then sends
that data to a PCS (Guidance Service) service using the TSS. The entire COP Demo project is
provided with the modeling tools. Refer to Figure 89 for a diagram.
OS API OS API
TS Library TS Library
TS API TS API
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 221
subsections in Section 3.6.4.1.2 of the FACE Technical Standard for the IDL-to-programming
language mappings of data types.
struct BSOLocation
{
FACE::DM::Location_alt_lat_long bso_location;
};
struct Location_alt_lat_long
{
FACE::DM::WGS84PositionHeightMeasurementAxis altitude;
FACE::DM::WGS84PositionLatitudeMeasurementAxis latitude;
FACE::DM::WGS84PositionLongitudeMeasurementAxis longitude;
};
The following excerpts illustrate the opening sequences for the TSS and IOS. The TSS begins
with the Initialize(TS)/Create_Connection(TS) sequence in the INITIALIZE() function. The IOS
starts with the Initialize(I/O)/Open(I/O) sequence as implemented in the BEHAV_INITIALIZE()
function. Though the sequences are performed in the order presented for each segment interface,
the IOS and TS Interfaces are configured and started independently of each other. As an
alternative, the Initialize(I/O) could be called first, then the Initialize(TS), then the Open(I/O),
and finally the Create_Connection(TS). The developer should do whatever makes sense for their
specific implementation. The file referenced in the Initialize(I/O) call, ios_configuration.xml,
exists within the example and contains the parameters necessary for configuring the interface.
GPS_SENSOR_PSS::INITIALIZE() – GPS_Sensor_PSS.cpp
::FACE::RETURN_CODE_TYPE face_return_code;
BEHAV_INITIALIZE ();
}
BSOLocationWriter::Initialize () – BSOLocation_writer.cpp
::FACE::RETURN_CODE_TYPE BSOLocationWriter::Initialize ()
{
::FACE::RETURN_CODE_TYPE return_code;
::FACE::CONFIGURATION_RESOURCE gpsConnectionName =
"GPS_SENSOR_WRITER";
return return_code;
}
GPS_SENSOR_PSS::BEHAV_INITIALIZE() – GPS_Sensor_PSS_behav.cpp
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 223
::FACE::INTERFACE_HANDLE_TYPE GPS_IO_handle = NULL;
::FACE::RETURN_CODE_TYPE face_return_code;
// initialize IO
::FACE::INTERFACE_NAME_TYPE config = "ios_configuration.xml";
::FACE::IO::Initialize (config, face_return_code);
if (face_return_code != ::FACE::NO_ERROR)
fprintf (stderr, "initialize IO (%s) failed with return_code %u\n",
"PLATFORM_GPS", face_return_code);
The connection name is the key component to the Create_Connection(TS) call. The
Initialize(TS) call accepts an argument of type CONNECTION_NAME_TYPE (which resolves to
a type of char [256]), the implied operation is to access a configuration file or, possibly, a data
set. That data will contain the connection parameters for the various connections the service is
expected to make, each one referenced by a unique connection name. Upon successful
completion of Create_Connection(TS), a connection identifier is passed back to the calling
function for use in subsequent Send_Message(TS) and Receive_Message(TS) calls to identify
the connection to use for the specified transaction.
BSOLocationWriter::Create_Connection() – BSOLocation_writer.cpp
::FACE::RETURN_CODE_TYPE BSOLocationWriter::Create_Connection ()
{
::FACE::RETURN_CODE_TYPE return_code;
::FACE::TS::Create_Connection (*name, pattern, connid,
direction, size, 0, return_code);
if (return_code != ::FACE::NO_ERROR) {
fprintf (stderr, "Create_Connection (%s) failed with return_code
%u\n", *name, return_code);
}
else if (size != sizeof(FACE::DM::BSOLocation)) {
fprintf (stderr, "size from Create_Connection (%u bytes) does
not match sizeof FACE::DM::BSOLocation (%u bytes)\n",
(unsigned int) size, sizeof (FACE::DM::BSOLocation));
}
else {
printf ("Create_Connection (%s) successful\n", *name);
}
return return_code;
}
void Create_Connection (
/* in */ const FACE::CONNECTION_NAME_TYPE connection_name,
/* in */ FACE::MESSAGING_PATTERN_TYPE pattern,
/* out */ FACE::CONNECTION_ID_TYPE &connection_id,
/* out */ FACE::CONNECTION_DIRECTION_TYPE &connection_direction,
/* out */ FACE::MESSAGE_SIZE_TYPE &max_message_size,
/* in */ FACE::TIMEOUT_TYPE timeout,
/* out */ FACE::RETURN_CODE_TYPE &return_code)
{
FACE::TypeAbstractionTS::Create_Connection (
connection_name,
pattern,
connection_id,
connection_direction,
max_message_size,
timeout,
return_code);
}
FACE::TypeAbstractionTS::Create_Connection() – TypeAbstraction_TS.cpp
[…\cpp\tss\GuidanceDemoUDP\GPSProcess]
void Create_Connection (
/* in */ const FACE::CONNECTION_NAME_TYPE connection_name,
/* in */ FACE::MESSAGING_PATTERN_TYPE pattern,
/* out */ FACE::CONNECTION_ID_TYPE &connection_id,
/* out */ FACE::CONNECTION_DIRECTION_TYPE &connection_direction,
/* out */ FACE::MESSAGE_SIZE_TYPE &max_message_size,
/* in */ FACE::TIMEOUT_TYPE timeout,
/* out */ FACE::RETURN_CODE_TYPE &return_code)
{
if (strcmp ((const char *) connection_name, "PLATFORM_GPS") == 0) {
platform_gps_udp_publisher =
new :FACE::POSIX_TRANSPORT::UDPMulticastPublisher (
platform_gps_udp_group, platform_gps_udp_port);
if (!platform_gps_udp_publisher) {
return_code = ::FACE::NOT_AVAILABLE;
return;
}
return_code = ::FACE::NO_ERROR;
connection_id = 1;
max_message_size = sizeof (FACE::DM::BSOLocation);
connection_direction = ::FACE::SOURCE;
}
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 225
else {
return_code = ::FACE::INVALID_CONFIG;
}
}
Once initialization is complete, execution transitions to the STARTUP() function which calls
BEHAV_STARTUP(). The BEHAV_STARTUP() function activates the GPS_THREAD() function
to loop continuously to:
Retrieve data from the device via the Read(I/O) function
Confirm the return code indicates no error
Forward data to the Guidance System process using the BSOLocationWriter::send()
function
If an error is encountered when reading from the device, the process bypasses sending data to the
TSS.
GPS_SENSOR_PROCESS::GPS_THREAD() – GPS_Sensor_PSS_behav.cpp
::FACE::DM::BSOLocation location;
location.bso_location.latitude = 0.0;
location.bso_location.longitude = 0.0;
::FACE::RETURN_CODE_TYPE return_code;
// TIMEOUT_TYPE has a 1 nanosecond resolution
::FACE::TIMEOUT_TYPE timeout = 1000000000;
::FACE::IO::Read (GPS_IO_handle, timeout, message_length,
buffer_addr, return_code);
if (return_code == ::FACE::NO_ERROR) {
bool success = parse_nmea_sentence ((char *) buffer, location);
if (success) {
printf ("GPS_THREAD: Data received from IO:
latitude: %f longitude: %f\n",
location.bso_location.latitude,
location.bso_location.longitude);
platform_gps_writer.send (location);
}
}
else
printf ("Error FACE::IO::Read\n");
Read(I/O) calls a function defined in the SerialDevice class, which calls a device-specific
function to retrieve data from the hardware. A surrogate serial device class is included for testing
the code without the need of actual hardware.
IO::Read() – IOS.cpp
void Read (
/* in */ FACE::INTERFACE_HANDLE_TYPE handle,
/* in */ FACE::TIMEOUT_TYPE timeout,
/* inout */ FACE::MESSAGE_LENGTH_TYPE & message_length,
/* in */ FACE::MESSAGE_ADDR_TYPE data_buffer_address,
/* out */ FACE::RETURN_CODE_TYPE & return_code)
{
if (handle != NULL) {
SerialDevice *device = (SerialDevice *) handle;
// timeout for following read()is in millisecs
return_code = device->read (timeout, message_length,
data_buffer_address);
}
else {
return_code = ::FACE::INVALID_CONFIG;
}
}
The serial device read() function performs the device-specific access function. Notice that the
timeout used in the device-specific read() function is expressed in microseconds. The input
timeout is of TIMEOUT_TYPE, expressed in nanoseconds. Therefore, the implementor knows
this value must be scaled to behave appropriately. Also, note that the device-specific function
maps low-level return codes to the return codes defined in the FACE Technical Standard,
Section B.2 for proper interpretation by the calling function.
SerialDevice::read() – serial_device.cpp
::FACE::RETURN_CODE_TYPE SerialDevice::read (
::FACE::TIMEOUT_TYPE timeout,
::FACE::MESSAGE_LENGTH_TYPE &message_length,
const ::FACE::MESSAGE_ADDR_TYPE &buffer)
{
fd_set fds;
struct timeval tv;
int retval;
FD_ZERO (&fds);
FD_SET (fd, &fds);
// 1 second timeout
tv.tv_sec = 0;
tv.tv_usec = (long) timeout/1000;
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 227
retval = select (fd+1, &fds, NULL, NULL, &tv);
if (retval == -1) {
return ::FACE::NO_ACTION;
}
else if (retval == 0) {
return ::FACE::TIMED_OUT;
}
else if (FD_ISSET(fd, &fds)) {
char buffer[message_length];
int ret = ::read (fd, &buffer, sizeof(buffer));
if (ret == -1) {
perror ("Failed to read from serial port");
return ::FACE::NOT_AVAILABLE;
}
else {
//printf ("Read %d bytes: %s\n", ret, buffer );
return ::FACE::NO_ERROR;
}
}
else {
return ::FACE::NOT_AVAILABLE;
}
}
The BSOLocationWriter::send() function called from the thread invokes the Send_Message(TS)
function to forward the data read from the device to the PCS component. The value for the
connection_id argument was returned in the Create_Connection(TS) call and is used to identify
to the TSS the connection to be used for data transmission.
BSOLocationWriter::send() – BSOLocation_writer.cpp
::FACE::RETURN_CODE_TYPE BSOLocationWriter::send (
const FACE::DM::BSOLocation &data)
{
::FACE::RETURN_CODE_TYPE return_code;
::FACE::TRANSACTION_ID_TYPE transaction_id;
FACE::DM::BSOLocation tmpdata;
memcpy ((void *) &tmpdata, (const void *) &data,
sizeof (FACE::DM::BSOLocation));
The Send_Message(TS) function casts the data to type pointer to void and invokes the
TypeAbstraction_TS::Send_Message() which provides the desired method of delivery to the
specified recipient or recipients. The system-specific return codes are mapped to the return codes
defined Section B.2 of the FACE Technical Standard for proper interpretation by the calling
functions.
void Send_Message (
/* in */ FACE::CONNECTION_ID_TYPE connection_id,
/* in */ FACE::TIMEOUT_TYPE timeout,
/* inout */ FACE::TRANSACTION_ID_TYPE &transaction_id,
/* inout */ FACE::DM::BSOLocation &message,
/* inout */ FACE::MESSAGE_SIZE_TYPE &message_size,
/* out */ FACE::RETURN_CODE_TYPE &return_code)
{
// serialization logic here...
TypeAbstractionTS::Send_Message() – …\cpp\tss\GuidanceDemoUDP\GPSProcess\
TypeAbstraction_TS.cpp
void Send_Message (
/* in */ FACE::CONNECTION_ID_TYPE connection_id,
/* in */ FACE::TIMEOUT_TYPE timeout,
/* inout */ FACE::TRANSACTION_ID_TYPE &transaction_id,
/* in */ void *message,
/* in */ FACE::MESSAGE_TYPE_GUID message_type_id,
/* in */ FACE::MESSAGE_SIZE_TYPE message_size,
/* out */ FACE::RETURN_CODE_TYPE &return_code)
{
if (connection_id == 1) {
if (!platform_gps_udp_publisher) {
return_code = ::FACE::NOT_AVAILABLE;
return;
}
std::vector<unsigned char> v;
unsigned int i = 0;
while (i < message_size) {
v.push_back (((unsigned char *) message)[i]);
i++;
}
bool writeSuccess = platform_gps_udp_publisher->writePayload (v);
if (!writeSuccess) {
return_code = ::FACE::NOT_AVAILABLE;
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 229
return;
}
return_code = ::FACE::NO_ERROR;
}
else {
return_code = ::FACE::INVALID_CONFIG;
}
}
GUIDANCESYSTEM::GUIDANCE_THREAD() – GuidanceSystem_behav.cpp
if (return_code == ::FACE::NO_ERROR) {
printf ("GUDIANCE_THREAD: Data received from GPS_Sensor_PSS:
latitude: %f longitude: %f\n",
location.bso_location.latitude,
location.bso_location.longitude);
}
else
printf ("GUIDANCE_THREAD: Error receiving TSS message
BSOLocation\n");
sleep (1);
}
}
BSOLocationReader::receive() – BSOLocation_reader.cpp
::FACE::RETURN_CODE_TYPE BSOLocationReader::receive (
FACE::DM::BSOLocation &data,
::FACE::TIMEOUT_TYPE timeout)
return return_code;
}
void Receive_Message (
/* in */ FACE::CONNECTION_ID_TYPE connection_id,
/* in */ FACE::TIMEOUT_TYPE timeout,
/* inout */ FACE::TRANSACTION_ID_TYPE &transaction_id,
/* inout */ FACE::DM::BSOLocation &message,
/* in */ FACE::MESSAGE_SIZE_TYPE message_size,
/* out */ FACE::RETURN_CODE_TYPE &return_code)
{
void* typeAbstraction_message = (void *) &message;
FACE::MESSAGE_TYPE_GUID guid = 0;
TypeAbstractionTS::Receive_Message() – TypeAbstraction_TS.cpp
[…\cpp\tss\GuidanceDemoUDP\GuidanceSystem]
void Receive_Message (
/* in */ FACE::CONNECTION_ID_TYPE connection_id,
/* in */ FACE::TIMEOUT_TYPE timeout,
/* inout */ FACE::TRANSACTION_ID_TYPE &transaction_id,
/* in */ void *message,
/* inout */ FACE::MESSAGE_TYPE_GUID &message_type_id,
/* inout */ FACE::MESSAGE_SIZE_TYPE &message_size,
/* out */ FACE::RETURN_CODE_TYPE &return_code)
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 231
{
if (connection_id == 2) {
if (!guidance_bso_location_udp_subscriber) {
return_code = ::FACE::NOT_AVAILABLE;
return;
}
unsigned int i = 0;
while (i!=message_size) {
((unsigned char *) message)[i] = msg[i+4];
i++;
}
return_code = ::FACE::NO_ERROR;
}
else {
return_code = ::FACE::NOT_AVAILABLE;
return;
}
}
else {
return_code = ::FACE::INVALID_CONFIG;
}
}
This appendix contains the FACE Data Model UML Profile Description, which is based on the
FACE Technical Standard.
UML Profiles allow for the extension and customization of the UML language to target specific
domains. UML Profiles are only additive: they cannot contradict standard semantics. They are
allowed to refine semantics by defining or extending the domain the UML Profile applies to.
There are several standard UML Profiles used in government and industry today, such as for
building Systems Modeling Language (SysML) models.
Purpose
This document is intended to describe the FACE Data Model UML Profile in sufficient detail to
allow it to be customized for other UML modeling tools. The overarching intent is to provide
semantic equivalence between the UML and MOF representations of FACE Data Model content.
Section B.2 details the concepts captured in the profile. Appendices A and B contain the XMI
representation of the UML Profile as used by SparxSystem’s Enterprise Architect and the
Eclipse Foundation’s Eclipse. Unfortunately, the UML Profile requires slight customizations to
operate with specific UML modeling tools.
The FACE Technical Standard defines the FACE Data Model language as a MOF metamodel.
The MOF metamodel is an unambiguous, rigorous definition of the FACE Data Model language.
However, directly constructing Data Model content directly with the MOF metamodel is not
supported by a great number of available tools. The FACE Consortium identified the need for
greater tool support; this drove the development of the FACE Data Model UML Profile.
The concepts captured in the FACE Data Model UML Profile map directly to the concepts
defined in the FACE Data Model MOF metamodel. The UML Profile simply provides
customization of commercial tools to allow for the construction of FACE Data Model content.
No additional concepts or materials were used in developing the FACE Data Model UML
Profile.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 233
B.2 FACE Data Model UML Profile Detail
This document provides a complete overview of all element details. For simpler and more
focused reports, simply copy this initial template and turn off the sections not required.
Type: Package
Status: Proposed. Version 1.0. Phase 1.0.
Package: Model
Detail: Created on 5/18/2012. Last modified on 11/6/2012
GUID: {E0F0D380-D722-4c67-B168-BA1F7A0D65E6}
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 235
logical - (Class diagram)
Created By: sfrerking on 8/28/2012
Last Modified: 3/1/2013
Version: 1.0. Locked: False
GUID: {9F571D46-660A-4682-AA1B-F56E100E1408}
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 237
class logical_basis
«metaclass»
Class
- _Tag :Integer = 1
+ isActive :Boolean
AffineConv ersion
Boolean
Integer
Natural
Real +source ConvertibleElement
Conv ersion
NonNegativeReal
«taggedValue»
Character - description :String [0..1] - isDeprecated :Boolean = False
String - isDeprecated :Boolean = False +target - _faceUUID :String [0..1]
Enumeration - _faceUUID :String [0..1] «taggedValue» - description :String [0..1]
ValueElement
Unit
- valueType :ValueType = Boolean +unit
- description :String [0..1]
- _valueTypeFaceUUID :String [0..1] «taggedValue»
- _faceUUID :String [0..1]
«metaclass»
Attribute
MeasurementComposition
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 239
uop - (Class diagram)
Created By: sfrerking on 8/28/2012
Last Modified: 4/13/2013
Version: 1.0. Locked: False
GUID: {43A30176-E8B2-4bd7-92A5-03332E2B660B}
«enumeration» «enumeration»
FaceEdition PartitionType
MessagePort
«enumeration» «enumeration»
CommunicationStyle MessageExchangeType
C Blocking
CPP NonBlocking
Java
Ada
«metaclass»
Association
Attribute
Type: Metaclass
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 2/14/2013. Last modified on 4/13/2013.
GUID: {3A5F660C-42D8-469e-81A0-7E1B2C08E222}
Custom properties:
isActive = False
Connections:
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 241
Connector Source Target Notes
Association
Type: Metaclass
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/26/2012. Last modified on 2/15/2013.
GUID: {08CCD31F-CC6C-4ea4-AC39-7F0DF623CC74}
Custom properties:
isActive = False
Connections:
Class
Type: Metaclass
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 1/4/2013. Last modified on 4/13/2013.
GUID: {F8121481-F28F-4c3c-B457-C6FA9D4BF161}
Custom properties:
isActive = False
Connections:
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 243
Connector Source Target Notes
Attributes:
Package
Type: Metaclass
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/26/2012. Last modified on 11/6/2012.
GUID: {6204933D-5CEC-4c6f-A42C-9E97A1166C1B}
Custom properties:
isActive = False
Attributes:
FACEDataModel
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/26/2012. Last modified on 2/12/2013.
GUID: {6463DA63-4398-40a3-B592-42E1522A226C}
Custom properties:
isActive = False
Connections:
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 245
Attributes:
EntityType
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 8/23/2012. Last modified on 2/15/2013.
GUID: {9A508B0E-1F23-44b5-BF1E-F373EF6D7681}
Custom properties:
isActive = False
Connections:
Attributes:
Composition
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 2/14/2013. Last modified on 3/1/2013.
GUID: {454FF94B-FA3F-42c5-B56E-22910CC305C8}
Connections:
Attributes:
realizedComposition Default:
String
Private
[0..1]
AssociationType
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/26/2012. Last modified on 2/15/2013.
GUID: {7397D2CB-6339-41f0-A087-FCABA0A6BE5A}
Custom properties:
isActive = False
Connections:
Attributes:
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 247
Attribute Notes Constraints and Tags
ViewType
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 8/23/2012. Last modified on 2/15/2013.
GUID: {A0065C8D-C0E5-4b9e-A93D-B6D31D2E7DD6}
Custom properties:
isActive = False
Connections:
Attributes:
AssociatedEntity
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 11/12/2012. Last modified on 2/15/2013.
GUID: {A8773D69-D55D-40f8-9142-E3A9DCC5FE8E}
Custom properties:
isActive = False
Attributes:
realizedAssociatedEntity Default:
String
Private
Projection
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/26/2012. Last modified on 2/15/2013.
GUID: {66B6AA38-D9E8-4253-85F1-3F5A43CEFDB3}
Custom properties:
isActive = False
Connections:
Attributes:
realizedProjection Default:
String
Private
[0..1]
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 249
Attribute Notes Constraints and Tags
Realize
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/27/2012. Last modified on 2/15/2013.
GUID: {C17C7927-8044-4c65-973A-B8ADFF095128}
Custom properties:
isActive = False
Connections:
ConceptualModel
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/26/2012. Last modified on 2/12/2013.
GUID: {7A0B269F-046F-476d-8D99-47C923BDE0FB}
Custom properties:
isActive = False
Connections:
Attributes:
ConceptualInformation
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 8/22/2012. Last modified on 2/12/2013.
GUID: {A1FC98C2-45CF-41df-95F4-069F012F3E2D}
Custom properties:
isActive = False
Connections:
Attributes:
Observable
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/26/2012. Last modified on 2/15/2013.
GUID: {49783F61-7A37-4783-B728-62C1BBDA005B}
Custom properties:
isActive = False
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 251
Connections:
Attributes:
LogicalModel
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/27/2012. Last modified on 2/12/2013.
GUID: {A5FEEDD1-89AE-4185-98E5-CBECCF5D6DD3}
Custom properties:
isActive = False
Connections:
Attributes:
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 1/10/2013. Last modified on 1/13/2013.
GUID: {AFC80583-0593-45c3-81C6-CFC6057EBDA3}
Custom properties:
isActive = False
Connections:
Attributes:
Unit
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 253
Custom properties:
isActive = False
Connections:
FrameOfReference
Custom properties:
isActive = False
Connections:
LogicalEnumeration
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 1/3/2013. Last modified on 1/13/2013.
GUID: {29A0EA0A-97D0-462e-A75A-978F56E194EF}
Custom properties:
isActive = False
Attributes:
EnumLiteral
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 2/15/2013. Last modified on 2/15/2013.
GUID: {7F118B38-1804-49a4-A4B5-FF41815D3C22}
Custom properties:
isActive = False
Connections:
Attributes:
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 255
Attribute Notes Constraints and Tags
ValueElement
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 1/13/2013. Last modified on 1/13/2013.
GUID: {55F653D4-82C0-4de7-A83C-56EDEDC4B0F1}
Custom properties:
isActive = False
Connections:
Attributes:
_valueTypeFaceUUID Default:
String
Private
[0..1]
Custom properties:
isActive = False
Connections:
SimpleMeasurement
Custom properties:
isActive = False
Connections:
Attributes:
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 257
CompositeMeasurement
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/27/2012. Last modified on 1/28/2013.
GUID: {8B604060-9BD4-405e-BF3C-3336E9C36845}
Custom properties:
isActive = False
Connections:
Attributes:
MeasurementComposition
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 4/13/2013. Last modified on 4/13/2013.
GUID: {F63A7123-C439-4ed6-882D-70723E79C2A9}
Custom properties:
isActive = False
Attributes:
ValueConstraint
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/25/2012. Last modified on 2/15/2013.
GUID: {6E6871DB-15DF-485d-AA11-34BFF28EDD64
Custom properties:
isActive = False
Connections:
IntegerRangeConstraint
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 8/28/2012. Last modified on 2/12/2013.
GUID: {FBDAC323-55DC-4951-A459-09B13F1BC99E}
Custom properties:
isActive = False
Connections:
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 259
Attributes:
RealRangeConstraint
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 8/17/2012. Last modified on 2/12/2013.
GUID: {BD89653E-EE23-4200-A818-7220BC1CF7A5
Custom properties:
isActive = False
Connections:
Attributes:
RegularExpressionConstraint
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 8/17/2012. Last modified on 2/12/2013.
GUID: {59CAD5BD-990F-4b68-8F0C-500A4CA503FE}
Custom properties:
isActive = False
Connections:
Attributes:
EnumerationSelector
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 8/17/2012. Last modified on 1/13/2013.
GUID: {B9D5A11D-2129-4c20-B233-FB037A5EC57E}
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 261
Custom properties:
isActive = False
Connections:
Conversion
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/17/2012. Last modified on 1/13/2013.
GUID: {E3073A95-33DE-44c3-BBEE-B10A9B772691}
Custom properties:
isActive = False
Connections:
Attributes:
AffineConversion
Custom properties:
isActive = False
Connections:
Attributes:
PlatformModel
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/30/2012. Last modified on 2/12/2013.
GUID: {120F121F-3A13-4bbd-8711-8B614372ED49}
Custom properties:
isActive = False
Connections:
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 263
Attributes:
IDLPrimitive
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 8/2/2012. Last modified on 2/12/2013.
GUID: {4FA6F5E5-0163-45f5-91D3-EBFE65C1CEE7}
Custom properties:
isActive = False
Connections:
Attributes:
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/25/2012. Last modified on 2/12/2013.
GUID: {E173EC2F-6B65-4ecd-AD65-00A188BBDA3E}
Custom properties:
isActive = False
Connections:
Attributes:
IDLComposition
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 2/14/2013. Last modified on 2/15/2013.
GUID: {E443D9E1-AE51-4068-9705-77F9852945C1}
Custom properties:
isActive = False
Connections:
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 265
Attributes:
realizedMeasurement Default:
Composition String
Private
[0..1]
UoPModel
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/31/2012. Last modified on 2/12/2013.
GUID: {38304E20-338B-406c-B76E-798EC08F21E9}
Custom properties:
isActive = False
Connections:
Attributes:
UnitOfPortability
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/31/2012. Last modified on 4/13/2013.
GUID: {0E3A82C9-91C9-4f20-9BF9-6B3BEAA51F3F}
Connections:
Attributes:
_aliasSetFaceUUID Default:
String
Private
[0..1]
TransportEndpoint
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords
Detail: Created on 12/19/2012. Last modified on 12/19/2012.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 267
GUID: {D04AF2ED-F7C5-4d0b-A6A5-111EE0F2FB3F}
Custom properties:
isActive = False
Connections:
MessagePort
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/25/2012. Last modified on 3/5/2013.
GUID: {0F35DB7E-9216-45b6-A03B-6B66109C8091}
Custom properties:
isActive = False
Connections:
Attributes:
programmingLanguage Default: C
ProgrammingLanguage
Private
MessageType
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 7/31/2012. Last modified on 12/4/2012.
GUID: {429F0E38-92A5-4afb-BC41-52C3E43264C2}
Custom properties:
isActive = False
Connections:
ApplicationFramework
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/25/2012. Last modified on 11/6/2012.
GUID: {F35DC8E4-1916-4cee-9428-733ABFF2BEB6}
Custom properties:
isActive = False
Connections:
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 269
Attributes:
LanguageRunTime
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/25/2012. Last modified on 11/6/2012.
GUID: {20D34CC7-7000-4076-807F-70F8BBEB375C}
Custom properties:
isActive = False
Connections:
Attributes:
SupportingComponent
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Custom properties:
isActive = False
Connections:
Alias
Type: Stereotype
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 12/4/2012. Last modified on 12/19/2012.
GUID: {15DAD148-10CB-4f75-8910-F013685B0AED}
Custom properties:
isActive = False
Connections:
Attributes:
CommunicationStyle
Type: Enumeration
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/25/2012. Last modified on 3/5/2013.
GUID: {E471597A-FDD5-455f-833D-D417CE9BE28D}
Custom properties:
isActive = False
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 271
Attributes:
Queuing Default:
Public
«enum»
SingleInstanceMessaging Default:
Public
ComponentType
Type: Enumeration
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/26/2012. Last modified on 4/13/2013.
GUID: {CA658222-098D-4e78-9BB1-4B4B62F9D69E}
Custom properties:
isActive = False
Attributes:
Portable Default:
Public
«enum»
PlatformSpecific Default:
Public
«enum»
TransportService Default:
Public
«enum»
FaceEdition
Type: Enumeration
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/25/2012. Last modified on 11/6/2012.
GUID: {ACC77E1D-A9A9-4954-BF99-35CC1CBE8A15}
Custom properties:
isActive = False
_1_0 Default:
Public
«enum»
_2_0
Public
«enum»
FaceProfile
Type: Enumeration
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/25/2012. Last modified on 4/13/2013.
GUID: {2D098B6B-AB4E-4635-B243-F6B8E3625883}
Custom properties:
isActive = False
Attributes:
GeneralPurpose Default:
Public
«enum»
Security Default:
Public
«enum»
SafetyBase Default:
Public
«enum»
SafetyExtended Default:
Public
«enum»
IDLType
Type: Enumeration
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 8/2/2012. Last modified on 2/14/2013.
GUID: {E521CA08-B46E-4185-A649-F3D5CC00F153}
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 273
Custom properties:
isActive = False
Attributes:
Boolean Default:
Public
«enum»
Char Default:
Public
«enum»
WChar Default:
Public
«enum»
Octet Default:
Public
«enum»
String Default:
Public
«enum»
WString Default:
Public
«enum»
Enumeration Default:
Public
«enum»
Float Default:
Public
«enum»
Double Default:
Public
«enum»
LongDouble Default:
Public
«enum»
Fixed Default:
Public
«enum»
Short Default:
Public
«enum»
Long Default:
Public
«enum»
LongLong Default:
Public
«enum»
UShort Default:
Public
«enum»
ULong Default:
Public
«enum»
ULongLong Default:
Public
«enum»
MessageExchangeType
Type: Enumeration
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/25/2012. Last modified on 2/12/2013.
GUID: {3E6CE92C-1FC4-4961-ABFC-3433F62C5B28}
Custom properties:
isActive = False
Attributes:
InboundMessage Default:
Public
«enum»
OutboundMessage Default:
Public
«enum»
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 275
PartitionType
Type: Enumeration
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/25/2012. Last modified on 11/6/2012.
GUID: {22717EF2-3F80-4cdd-ADDA-068EA5DBFB8E}
Custom properties:
isActive = False
Attributes:
POSIX Default:
Public
«enum»
ARINC653 Default:
Public
«enum»
ProgrammingLanguage
Type: Enumeration
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/25/2012. Last modified on 2/12/2013.
GUID: {E2020221-BDA8-453f-B989-358A91A7947F}
Custom properties:
isActive = False
Attributes:
C Default:
Public
«enum»
CPP Default:
Public
«enum»
Java Default:
Public
«enum»
Ada Default:
Public
«enum»
SynchronizationStyle
Type: Enumeration
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 10/25/2012. Last modified on 2/12/2013.
GUID: {62E0A13A-1E74-495e-A09C-2AFB56B69071}
Custom properties:
isActive = False
Attributes:
Blocking Default:
Public
«enum»
NonBlocking Default:
Public
«enum»
ValueType
Type: Enumeration
Status: Proposed. Version 1.0. Phase 1.0.
Package: FaceDM Keywords:
Detail: Created on 8/17/2012. Last modified on 1/13/2013.
GUID: {DFF726B3-B233-429d-A009-6F0E34348508}
Custom properties:
isActive = False
Attributes:
Boolean Default:
Public
«enum»
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 277
Attribute Notes Constraints and Tags
Integer Default:
Public
«enum»
Natural Default:
Public
«enum»
Real Default:
Public
«enum»
NonNegativeReal Default:
Public
«enum»
Character Default:
Public
«enum»
String Default:
Public
«enum»
Enumeration Default:
Public
«enum»
B.3 FACE Data Model UML Profile for Enterprise Architect (XMI
Format)
<?xml version="1.0" encoding="UTF-8"?>
<!--
-->
<UMLProfile profiletype="uml2">
<Documentation id="A06BA04D-1" name="FaceDM" version="2.0"
notes="RedefinedToolbox=UML::Class;Alias=FaceDM;Notes=FaceDM;"/>
<Content>
<Stereotypes>
<Stereotype name="FACEDataModel" notes="">
<AppliesTo>
<Apply type="Package">
<Property name="_defaultDiagramType" value="UML Structural::Class"/>
<Property name="_makeComposite" value="true"/>
<Property name="URI" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="description" type="String" description="" unit="" values="" default=""/>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
<Stereotype name="EntityType" notes="">
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 279
<AppliesTo>
<Apply type="Association">
<Property name="direction" value="Source -> Destination"/>
</Apply>
</AppliesTo>
</Stereotype>
<Stereotype name="ConceptualModel" notes="">
<AppliesTo>
<Apply type="Package">
<Property name="_defaultDiagramType" value="UML Structural::Class"/>
<Property name="_makeComposite" value="true"/>
<Property name="URI" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="description" type="String" description="" unit="" values="" default=""/>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
<Stereotype name="ConceptualInformation" notes="">
<AppliesTo>
<Apply type="Class">
<Property name="_Tag" value="1"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="isDeprecated" type="Boolean" description="" unit="" values="True,False" default="False"/>
<Tag name="description" type="String" description="" unit="" values="" default=""/>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
<Stereotype name="Observable" notes="">
<AppliesTo>
<Apply type="Class">
<Property name="_Tag" value="1"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="isDeprecated" type="Boolean" description="" unit="" values="True,False" default="False"/>
<Tag name="description" type="String" description="" unit="" values="" default=""/>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
<Stereotype name="LogicalModel" notes="">
<AppliesTo>
<Apply type="Package">
<Property name="_defaultDiagramType" value="UML Structural::Class"/>
<Property name="_makeComposite" value="true"/>
<Property name="URI" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="description" type="String" description="" unit="" values="" default=""/>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
<Stereotype name="ConvertibleElement" notes="" isAbstract="true">
<AppliesTo>
<Apply type="Class">
<Property name="_Tag" value="1"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="isDeprecated" type="Boolean" description="" unit="" values="True,False" default="False"/>
<Tag name="description" type="String" description="" unit="" values="" default=""/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 281
<AppliesTo>
<Apply type="Attribute"/>
</AppliesTo>
<TaggedValues>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
<Stereotype name="ValueConstraint" notes="">
<AppliesTo>
<Apply type="Association">
<Property name="direction" value="Source -> Destination"/>
</Apply>
</AppliesTo>
</Stereotype>
<Stereotype name="IntegerRangeConstraint" notes="">
<AppliesTo>
<Apply type="Class">
<Property name="_Tag" value="1"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="lowerBound" type="Integer" description="" unit="" values="" default=""/>
<Tag name="upperBound" type="Integer" description="" unit="" values="" default=""/>
<Tag name="description" type="String" description="" unit="" values="" default=""/>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
<Stereotype name="RealRangeConstraint" notes="">
<AppliesTo>
<Apply type="Class">
<Property name="_Tag" value="1"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="lowerBound" type="Real" description="" unit="" values="" default=""/>
<Tag name="lowerBoundInclusive" type="Boolean" description="" unit="" values="True,False"
default="True"/>
<Tag name="upperBound" type="Real" description="" unit="" values="" default=""/>
<Tag name="upperBoundInclusive" type="Boolean" description="" unit="" values="True,False"
default="True"/>
<Tag name="description" type="String" description="" unit="" values="" default=""/>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
<Stereotype name="RegularExpressionConstraint" notes="">
<AppliesTo>
<Apply type="Class">
<Property name="_Tag" value="1"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="expression" type="String" description="" unit="" values="" default=""/>
<Tag name="description" type="String" description="" unit="" values="" default=""/>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
<Stereotype name="EnumerationSelector" notes="">
<AppliesTo>
<Apply type="Class">
<Property name="_Tag" value="1"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="sourceEnumeration"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 283
</AppliesTo>
<TaggedValues>
<Tag name="realizedMeasurementComposition" type="String" description="" unit="" values="" default=""/>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
<Stereotype name="UoPModel" notes="">
<AppliesTo>
<Apply type="Package">
<Property name="_defaultDiagramType" value="UML Structural::Class"/>
<Property name="_makeComposite" value="true"/>
<Property name="URI" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="description" type="String" description="" unit="" values="" default=""/>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
<Stereotype name="UnitOfPortability" notes="">
<AppliesTo>
<Apply type="Class">
<Property name="_Tag" value="1"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="componentType" type="enumeration" description="" unit="" values="Portable,PlatformSpecific,
TransportService" default="Portable"/>
<Tag name="faceEdition" type="enumeration" description="" unit="" values="_1_0,_2_0" default="_1_0"/>
<Tag name="faceProfile" type="enumeration" description="" unit="" values="GeneralPurpose,Security,
SafetyBase,SafetyExtended" default="GeneralPurpose"/>
<Tag name="notes" type="String" description="" unit="" values="" default=""/>
<Tag name="partitionType" type="enumeration" description="" unit="" values="POSIX,ARINC653"
default="POSIX"/>
<Tag name="description" type="String" description="" unit="" values="" default=""/>
<Tag name="_aliasSetFaceUUID" type="String" description="" unit="" values="" default=""/>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
<Stereotype name="TransportEndpoint" notes="">
<AppliesTo>
<Apply type="Association">
<Property name="direction" value="Source -> Destination"/>
</Apply>
</AppliesTo>
</Stereotype>
<Stereotype name="MessagePort" notes="">
<AppliesTo>
<Apply type="Class">
<Property name="_Tag" value="1"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
<TaggedValues>
<Tag name="communicationStyle" type="enumeration" description="" unit=""
values="Queuing,SingleInstanceMessaging" default="Queuing"/>
<Tag name="messageExchangeType" type="enumeration" description="" unit=""
values="InboundMessage,OutboundMessage" default="InboundMessage"/>
<Tag name="period" type="Real" description="" unit="" values="" default=""/>
<Tag name="programmingLanguage" type="enumeration" description="" unit="" values="C,CPP,Java,Ada"
default="C"/>
<Tag name="synchronizationStyle" type="enumeration" description="" unit=""
values="Blocking,NonBlocking" default="Blocking"/>
<Tag name="description" type="String" description="" unit="" values="" default=""/>
<Tag name="_faceUUID" type="String" description="" unit="" values="" default=""/>
</TaggedValues>
</Stereotype>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 285
B.4 FACE Data Model UML Profile for Eclipse (XMI Format)
<?xml version="1.0" encoding="UTF-8"?>
<uml:Profile xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_cvS1IDNWEeKNpLyJrThh0g" name="FaceDM"
metaclassReference="_362ngDNWEeKNpLyJrThh0g _362ngTNWEeKNpLyJrThh0g _363OkDNWEeKNpLyJrThh0g
_4ZydkHayEeKusumcOLyDqw" metamodelReference="_cvS1ITNWEeKNpLyJrThh0g">
<eAnnotations xmi:id="_6-VKIDNXEeKNpLyJrThh0g" source="http://www.eclipse.org/uml2/2.0.0/UML">
<contents xmi:type="ecore:EPackage" xmi:id="_lHNzkD4xEeK4XOnfNZo-Zg" name="FaceDM"
nsURI="http:///schemas/FaceDM/_lHECkD4xEeK4XOnfNZo-Zg/18" nsPrefix="FaceDM">
<eAnnotations xmi:id="_lH9acT4xEeK4XOnfNZo-Zg" source="PapyrusVersion">
<details xmi:id="_lH9acj4xEeK4XOnfNZo-Zg" key="Version" value="2.0.0"/>
<details xmi:id="_lH9acz4xEeK4XOnfNZo-Zg" key="Comment" value=""/>
<details xmi:id="_lH9adD4xEeK4XOnfNZo-Zg" key="Copyright" value="DISTRIBUTION STATEMENT A. Approved for
public release; distribution is unlimited..

 "/>
<details xmi:id="_lH9adT4xEeK4XOnfNZo-Zg" key="Date" value="2013-04-19"/>
<details xmi:id="_lH9adj4xEeK4XOnfNZo-Zg" key="Author" value="Stuart Frerking"/>
</eAnnotations>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHNzkT4xEeK4XOnfNZo-Zg" name="FACEDataModel">
<eAnnotations xmi:id="_lHNzkj4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_6oyNYDNWEeKNpLyJrThh0g"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHNzkz4xEeK4XOnfNZo-Zg" name="base_Package"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_wP7G5XVnEeKRBpo1mzOWtA" name="description"
ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHNzlT4xEeK4XOnfNZo-Zg" name="EntityType">
<eAnnotations xmi:id="_lHNzlj4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_Fzd9IDNXEeKNpLyJrThh0g"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHNzlz4xEeK4XOnfNZo-Zg" name="base_Class"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_wP7G63VnEeKRBpo1mzOWtA" name="description"
ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_RI7XOXa7EeKusumcOLyDqw" name="Composition">
<eAnnotations xmi:id="_RI7XOna7EeKusumcOLyDqw" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_M0AfAHazEeKusumcOLyDqw"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_RI7XO3a7EeKusumcOLyDqw"
name="realizedComposition" ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_RI7XPXa7EeKusumcOLyDqw" name="base_Property"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHNzmT4xEeK4XOnfNZo-Zg" name="AssociationType">
<eAnnotations xmi:id="_lHNzmj4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_TelpUDNXEeKNpLyJrThh0g"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHNzmz4xEeK4XOnfNZo-Zg" name="base_Class"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_wP7G8XVnEeKRBpo1mzOWtA" name="description"
ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 287
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHNztT4xEeK4XOnfNZo-Zg" name="isDeprecated"
ordered="false" lowerBound="1" defaultValueLiteral="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_wP7HEXVnEeKRBpo1mzOWtA" name="description"
ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHNztz4xEeK4XOnfNZo-Zg" name="Observable">
<eAnnotations xmi:id="_lHNzuD4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_7kyJUDNbEeKNpLyJrThh0g"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHNzuT4xEeK4XOnfNZo-Zg" name="base_Class"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHNzuz4xEeK4XOnfNZo-Zg" name="isDeprecated"
ordered="false" lowerBound="1" defaultValueLiteral="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_wP7HGXVnEeKRBpo1mzOWtA" name="description"
ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHNzvT4xEeK4XOnfNZo-Zg" name="LogicalModel">
<eAnnotations xmi:id="_lHNzvj4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_Mv1EUDPxEeKNpLyJrThh0g"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHNzvz4xEeK4XOnfNZo-Zg" name="base_Package"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_wP7HH3VnEeKRBpo1mzOWtA" name="description"
ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_GqVPkV5nEeK8qagMtO7Vdg" name="ConvertibleElement"
abstract="true">
<eAnnotations xmi:id="_GqVPkl5nEeK8qagMtO7Vdg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_lFFhEF34EeK8qagMtO7Vdg"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_GqVPk15nEeK8qagMtO7Vdg" name="isDeprecated"
ordered="false" lowerBound="1" defaultValueLiteral="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_GqVPlV5nEeK8qagMtO7Vdg" name="base_Class"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_wP7HJ3VnEeKRBpo1mzOWtA" name="description"
ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHNzwT4xEeK4XOnfNZo-Zg" name="Unit"
eSuperTypes="_GqVPkV5nEeK8qagMtO7Vdg">
<eAnnotations xmi:id="_lHNzwj4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_mlBgsDPxEeKNpLyJrThh0g"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHNzxz4xEeK4XOnfNZo-Zg" name="FrameOfReference"
eSuperTypes="_GqVPkV5nEeK8qagMtO7Vdg">
<eAnnotations xmi:id="_lHNzyD4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_oeSvcDPxEeKNpLyJrThh0g"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_FC23vVahEeK1kcktCzck8w" name="LogicalEnumeration">
<eAnnotations xmi:id="_FC23vlahEeK1kcktCzck8w" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_DAq5AFW_EeK1kcktCzck8w"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 289
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHNz5T4xEeK4XOnfNZo-Zg"
name="frameOfReference" ordered="false" lowerBound="1" eType="_lHNzxz4xEeK4XOnfNZo-Zg"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHNz5z4xEeK4XOnfNZo-Zg" name="unit"
ordered="false" lowerBound="1" eType="_lHNzwT4xEeK4XOnfNZo-Zg"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_MEmgA16MEeKACaBMOTakOg" name="isDeprecated"
ordered="false" lowerBound="1" defaultValueLiteral="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHNz6T4xEeK4XOnfNZo-Zg" name="CompositeMeasurement">
<eAnnotations xmi:id="_lHNz6j4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_IjtzwDPyEeKNpLyJrThh0g"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHNz6z4xEeK4XOnfNZo-Zg" name="base_Class"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHNz7T4xEeK4XOnfNZo-Zg"
name="frameOfReference" ordered="false" lowerBound="1" eType="_lHNzxz4xEeK4XOnfNZo-Zg"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_MEmgDF6MEeKACaBMOTakOg" name="isDeprecated"
ordered="false" lowerBound="1" defaultValueLiteral="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_wP7t_XVnEeKRBpo1mzOWtA" name="description"
ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_QIs71aRYEeKnVLeajH9I4w" name="MeasurementComposition">
<eAnnotations xmi:id="_QIs71qRYEeKnVLeajH9I4w" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_GbZP0KRVEeKnVLeajH9I4w"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_QIs716RYEeKnVLeajH9I4w" name="base_Property"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHNz7z4xEeK4XOnfNZo-Zg" name="ValueConstraint">
<eAnnotations xmi:id="_lHNz8D4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_VHp1cDPyEeKNpLyJrThh0g"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHNz8T4xEeK4XOnfNZo-Zg"
name="base_Association" ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Association"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHNz8z4xEeK4XOnfNZo-Zg" name="IntegerRangeConstraint">
<eAnnotations xmi:id="_lHNz9D4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_atk8IDPyEeKNpLyJrThh0g"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHNz9T4xEeK4XOnfNZo-Zg" name="base_Class"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHNz9z4xEeK4XOnfNZo-Zg" name="lowerBound"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Integer"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHNz-T4xEeK4XOnfNZo-Zg" name="upperBound"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Integer"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_wP7uC3VnEeKRBpo1mzOWtA" name="description"
ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHNz-z4xEeK4XOnfNZo-Zg" name="RealRangeConstraint">
<eAnnotations xmi:id="_lHNz_D4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_c-LFwDPyEeKNpLyJrThh0g"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 291
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHN0FT4xEeK4XOnfNZo-Zg" name="AffineConversion"
eSuperTypes="_lHN0ET4xEeK4XOnfNZo-Zg">
<eAnnotations xmi:id="_lHN0Fj4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_zfKmcDPyEeKNpLyJrThh0g"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHN0GT4xEeK4XOnfNZo-Zg"
name="conversionFactor" ordered="false" lowerBound="1">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Real"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHN0Gz4xEeK4XOnfNZo-Zg" name="offset"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Real"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHN0HT4xEeK4XOnfNZo-Zg" name="PlatformModel">
<eAnnotations xmi:id="_lHN0Hj4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_87wcsDPyEeKNpLyJrThh0g"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHN0Hz4xEeK4XOnfNZo-Zg" name="base_Package"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Package"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_wP7uQHVnEeKRBpo1mzOWtA" name="description"
ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHN0IT4xEeK4XOnfNZo-Zg" name="IDLPrimitive">
<eAnnotations xmi:id="_lHN0Ij4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="__pMTUDPyEeKNpLyJrThh0g"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHN0Iz4xEeK4XOnfNZo-Zg" name="base_Class"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHN0JT4xEeK4XOnfNZo-Zg" name="IDLType"
ordered="false" lowerBound="1" eType="_lHN0Kz4xEeK4XOnfNZo-Zg"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHN0Jz4xEeK4XOnfNZo-Zg" name="fixedDigits"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Integer"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHN0KT4xEeK4XOnfNZo-Zg" name="fixedScale"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Integer"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_wP7uTHVnEeKRBpo1mzOWtA" name="description"
ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EEnum" xmi:id="_lHN0Kz4xEeK4XOnfNZo-Zg" name="IDLType">
<eAnnotations xmi:id="_lHN0LD4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_dc-4oDfXEeKh4ss6R8mSnA"/>
<eLiterals xmi:id="_lHN0LT4xEeK4XOnfNZo-Zg" name="Boolean"/>
<eLiterals xmi:id="_lHN0Lj4xEeK4XOnfNZo-Zg" name="Char" value="1"/>
<eLiterals xmi:id="_lHN0Lz4xEeK4XOnfNZo-Zg" name="WChar" value="2"/>
<eLiterals xmi:id="_lHN0MD4xEeK4XOnfNZo-Zg" name="Octet" value="3"/>
<eLiterals xmi:id="_lHN0MT4xEeK4XOnfNZo-Zg" name="String" value="4"/>
<eLiterals xmi:id="_lHN0Mj4xEeK4XOnfNZo-Zg" name="WString" value="5"/>
<eLiterals xmi:id="_lHN0Mz4xEeK4XOnfNZo-Zg" name="Enumeration" value="6"/>
<eLiterals xmi:id="_lHN0ND4xEeK4XOnfNZo-Zg" name="Float" value="7"/>
<eLiterals xmi:id="_lHN0NT4xEeK4XOnfNZo-Zg" name="Double" value="8"/>
<eLiterals xmi:id="_lHN0Nj4xEeK4XOnfNZo-Zg" name="LongDouble" value="9"/>
<eLiterals xmi:id="_lHN0Nz4xEeK4XOnfNZo-Zg" name="Fixed" value="10"/>
<eLiterals xmi:id="_lHN0OD4xEeK4XOnfNZo-Zg" name="Short" value="11"/>
<eLiterals xmi:id="_lHN0OT4xEeK4XOnfNZo-Zg" name="Long" value="12"/>
<eLiterals xmi:id="_lHN0Oj4xEeK4XOnfNZo-Zg" name="LongLong" value="13"/>
<eLiterals xmi:id="_lHN0Oz4xEeK4XOnfNZo-Zg" name="UShort" value="14"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 293
<eAnnotations xmi:id="_lHN0VT4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_yFMdUDfYEeKh4ss6R8mSnA"/>
<eLiterals xmi:id="_lHN0Vj4xEeK4XOnfNZo-Zg" name="Portable"/>
<eLiterals xmi:id="_lHN0Vz4xEeK4XOnfNZo-Zg" name="PlatformSpecific" value="1"/>
<eLiterals xmi:id="_lHN0WD4xEeK4XOnfNZo-Zg" name="TransportService" value="2"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EEnum" xmi:id="_lHN0WT4xEeK4XOnfNZo-Zg" name="FaceEdition">
<eAnnotations xmi:id="_lHN0Wj4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_wAR_QDfYEeKh4ss6R8mSnA"/>
<eLiterals xmi:id="_lHN0Wz4xEeK4XOnfNZo-Zg" name="_1_0"/>
<eLiterals xmi:id="_lHN0XD4xEeK4XOnfNZo-Zg" name="_2_0" value="1"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EEnum" xmi:id="_lHN0XT4xEeK4XOnfNZo-Zg" name="FaceProfile">
<eAnnotations xmi:id="_lHN0Xj4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_u_U4kDfYEeKh4ss6R8mSnA"/>
<eLiterals xmi:id="_lHN0Xz4xEeK4XOnfNZo-Zg" name="GeneralPurpose"/>
<eLiterals xmi:id="_lHN0YD4xEeK4XOnfNZo-Zg" name="Security" value="1"/>
<eLiterals xmi:id="_lHN0YT4xEeK4XOnfNZo-Zg" name="SafetyBase" value="2"/>
<eLiterals xmi:id="_lHN0Yj4xEeK4XOnfNZo-Zg" name="SafetyExtended" value="3"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EEnum" xmi:id="_lHN0Yz4xEeK4XOnfNZo-Zg" name="PartitionType">
<eAnnotations xmi:id="_lHN0ZD4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_zL2jYDfYEeKh4ss6R8mSnA"/>
<eLiterals xmi:id="_lHN0ZT4xEeK4XOnfNZo-Zg" name="POSIX"/>
<eLiterals xmi:id="_lHN0Zj4xEeK4XOnfNZo-Zg" name="ARINC653" value="1"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_ibe8d0nuEeKfEobJ8kN6MA" name="TransportEndpoint">
<eAnnotations xmi:id="_ibe8eEnuEeKfEobJ8kN6MA" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_GrI-AEnqEeKhaI6O2M8CXg"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_ibe8eUnuEeKfEobJ8kN6MA"
name="base_Association" ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Association"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" xmi:id="_lHN0Zz4xEeK4XOnfNZo-Zg" name="MessagePort">
<eAnnotations xmi:id="_lHN0aD4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_UrXsoDPzEeKNpLyJrThh0g"/>
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHN0aT4xEeK4XOnfNZo-Zg" name="base_Class"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Class"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHN0az4xEeK4XOnfNZo-Zg"
name="communicationStyle" ordered="false" lowerBound="1" eType="_lHN0dT4xEeK4XOnfNZo-Zg"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHN0bT4xEeK4XOnfNZo-Zg"
name="messageExchangeType" ordered="false" lowerBound="1" eType="_lHN0eT4xEeK4XOnfNZo-Zg"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHN0bz4xEeK4XOnfNZo-Zg" name="period"
ordered="false" lowerBound="1">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Real"/>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHN0cT4xEeK4XOnfNZo-Zg"
name="programmingLanguage" ordered="false" lowerBound="1" eType="_lHN0fT4xEeK4XOnfNZo-Zg"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lHN0cz4xEeK4XOnfNZo-Zg"
name="synchronizationStyle" ordered="false" lowerBound="1" eType="_lHN0gz4xEeK4XOnfNZo-Zg"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_wP7uonVnEeKRBpo1mzOWtA" name="description"
ordered="false">
<eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EEnum" xmi:id="_lHN0dT4xEeK4XOnfNZo-Zg" name="CommunicationStyle">
<eAnnotations xmi:id="_lHN0dj4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_nrBkgDfYEeKh4ss6R8mSnA"/>
<eLiterals xmi:id="_lHN0dz4xEeK4XOnfNZo-Zg" name="Queuing"/>
<eLiterals xmi:id="_lHN0eD4xEeK4XOnfNZo-Zg" name="SingleInstanceMessaging" value="1"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EEnum" xmi:id="_lHN0eT4xEeK4XOnfNZo-Zg" name="MessageExchangeType">
<eAnnotations xmi:id="_lHN0ej4xEeK4XOnfNZo-Zg" source="http://www.eclipse.org/uml2/2.0.0/UML"
references="_lvgTADfYEeKh4ss6R8mSnA"/>
<eLiterals xmi:id="_lHN0ez4xEeK4XOnfNZo-Zg" name="InboundMessage"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 295
<eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lHN0nT4xEeK4XOnfNZo-Zg"
name="base_Association" ordered="false" lowerBound="1">
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Association"/>
</eStructuralFeatures>
</eClassifiers>
</contents>
</eAnnotations>
<elementImport xmi:id="_362ngDNWEeKNpLyJrThh0g" alias="Package">
<importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
</elementImport>
<elementImport xmi:id="_362ngTNWEeKNpLyJrThh0g" alias="Class">
<importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
</elementImport>
<elementImport xmi:id="_363OkDNWEeKNpLyJrThh0g" alias="Association">
<importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
</elementImport>
<elementImport xmi:id="_4ZydkHayEeKusumcOLyDqw" alias="Property">
<importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
</elementImport>
<packageImport xmi:id="_cvS1ITNWEeKNpLyJrThh0g">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
</packageImport>
<packageImport xmi:id="_cvS1IjNWEeKNpLyJrThh0g">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_6oyNYDNWEeKNpLyJrThh0g" name="FACEDataModel">
<ownedAttribute xmi:id="_-qJKADNWEeKNpLyJrThh0g" name="base_Package" association="_-qJKATNWEeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
</ownedAttribute>
<ownedAttribute xmi:id="_sGBBUHVeEeKRBpo1mzOWtA" name="description" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s76HgHVeEeKRBpo1mzOWtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s778sHVeEeKRBpo1mzOWtA" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_-qJKATNWEeKNpLyJrThh0g" name="E_FACEDataModel_Package1"
memberEnd="_-qJKAjNWEeKNpLyJrThh0g _-qJKADNWEeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_-qJKAjNWEeKNpLyJrThh0g" name="extension_FACEDataModel"
type="_6oyNYDNWEeKNpLyJrThh0g" aggregation="composite" association="_-qJKATNWEeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_Fzd9IDNXEeKNpLyJrThh0g" name="EntityType">
<ownedAttribute xmi:id="_NOTXADNXEeKNpLyJrThh0g" name="base_Class" association="_NOTXATNXEeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
</ownedAttribute>
<ownedAttribute xmi:id="_K_6bwHVhEeKRBpo1mzOWtA" name="description" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LU83oHVhEeKRBpo1mzOWtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LU9esHVhEeKRBpo1mzOWtA" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_NOTXATNXEeKNpLyJrThh0g" name="E_EntityType_Class1"
memberEnd="_NOTXAjNXEeKNpLyJrThh0g _NOTXADNXEeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_NOTXAjNXEeKNpLyJrThh0g" name="extension_EntityType"
type="_Fzd9IDNXEeKNpLyJrThh0g" aggregation="composite" association="_NOTXATNXEeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_M0AfAHazEeKusumcOLyDqw" name="Composition">
<ownedAttribute xmi:id="_aOcD0HazEeKusumcOLyDqw" name="realizedComposition">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nJ-yoH_GEeKvL4Vdnc9d5g"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nKAAwH_GEeKvL4Vdnc9d5g" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ihAW8HazEeKusumcOLyDqw" name="base_Property" association="_ihAW8XazEeKusumcOLyDqw">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_ihAW8XazEeKusumcOLyDqw" name="E_Composition_Property1"
memberEnd="_ihAW8nazEeKusumcOLyDqw _ihAW8HazEeKusumcOLyDqw">
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 297
<packagedElement xmi:type="uml:Extension" xmi:id="_jflAsTNXEeKNpLyJrThh0g" name="E_Projection_Association1"
memberEnd="_jflAsjNXEeKNpLyJrThh0g _jflAsDNXEeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_jflAsjNXEeKNpLyJrThh0g" name="extension_Projection"
type="_iSBocDNXEeKNpLyJrThh0g" aggregation="composite" association="_jflAsTNXEeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_wESecDNXEeKNpLyJrThh0g" name="Realize">
<ownedAttribute xmi:id="_xsE7oDNXEeKNpLyJrThh0g" name="base_Association"
association="_xsE7oTNXEeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_xsE7oTNXEeKNpLyJrThh0g" name="E_Realize_Association1"
memberEnd="_xsE7ojNXEeKNpLyJrThh0g _xsE7oDNXEeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_xsE7ojNXEeKNpLyJrThh0g" name="extension_Realize"
type="_wESecDNXEeKNpLyJrThh0g" aggregation="composite" association="_xsE7oTNXEeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_2vqKQDNXEeKNpLyJrThh0g" name="ConceptualModel">
<ownedAttribute xmi:id="_5EsvADNXEeKNpLyJrThh0g" name="base_Package" association="_5EsvATNXEeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
</ownedAttribute>
<ownedAttribute xmi:id="_t0zB4HVfEeKRBpo1mzOWtA" name="description" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yZq7QHVfEeKRBpo1mzOWtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yZsJYHVfEeKRBpo1mzOWtA" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_5EsvATNXEeKNpLyJrThh0g" name="E_ConceptualModel_Package1"
memberEnd="_5EsvAjNXEeKNpLyJrThh0g _5EsvADNXEeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_5EsvAjNXEeKNpLyJrThh0g" name="extension_ConceptualModel"
type="_2vqKQDNXEeKNpLyJrThh0g" aggregation="composite" association="_5EsvATNXEeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_3GG-kDNbEeKNpLyJrThh0g" name="ConceptualInformation">
<ownedAttribute xmi:id="_57Sb8DNbEeKNpLyJrThh0g" name="base_Class" association="_57Sb8TNbEeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
</ownedAttribute>
<ownedAttribute xmi:id="_LWqGoDNcEeKNpLyJrThh0g" name="isDeprecated" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LznvcDNcEeKNpLyJrThh0g" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LzoWgDNcEeKNpLyJrThh0g" value="1"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_rdueYDi6EeKcXdUi8X0jpw"/>
</ownedAttribute>
<ownedAttribute xmi:id="_vIpZ8HVgEeKRBpo1mzOWtA" name="description" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vfB5oHVgEeKRBpo1mzOWtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vfCgsHVgEeKRBpo1mzOWtA" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_57Sb8TNbEeKNpLyJrThh0g"
name="E_ConceptualInformation_Class1" memberEnd="_57Sb8jNbEeKNpLyJrThh0g _57Sb8DNbEeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_57Sb8jNbEeKNpLyJrThh0g"
name="extension_ConceptualInformation" type="_3GG-kDNbEeKNpLyJrThh0g" aggregation="composite"
association="_57Sb8TNbEeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_7kyJUDNbEeKNpLyJrThh0g" name="Observable">
<ownedAttribute xmi:id="_9FOBUDNbEeKNpLyJrThh0g" name="base_Class" association="_9FOBUTNbEeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
</ownedAttribute>
<ownedAttribute xmi:id="_IkoD4DNcEeKNpLyJrThh0g" name="isDeprecated" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JgZvoDNcEeKNpLyJrThh0g" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JgZvoTNcEeKNpLyJrThh0g" value="1"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_o2q8kDi6EeKcXdUi8X0jpw"/>
</ownedAttribute>
<ownedAttribute xmi:id="_zUTiEHVgEeKRBpo1mzOWtA" name="description" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zmtgsHVgEeKRBpo1mzOWtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zmuHwHVgEeKRBpo1mzOWtA" value="1"/>
</ownedAttribute>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 299
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ROXEMHeUEeKusumcOLyDqw"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ROYSUHeUEeKusumcOLyDqw" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_UkcPMHeUEeKusumcOLyDqw" name="base_Property" association="_UkcPMXeUEeKusumcOLyDqw">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_UkcPMXeUEeKusumcOLyDqw" name="E_EnumLiteral_Property1"
memberEnd="_UkcPMneUEeKusumcOLyDqw _UkcPMHeUEeKusumcOLyDqw">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_UkcPMneUEeKusumcOLyDqw" name="extension_EnumLiteral"
type="_Iym_4HeUEeKusumcOLyDqw" aggregation="composite" association="_UkcPMXeUEeKusumcOLyDqw"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_DsMToF4BEeK8qagMtO7Vdg" name="ValueElement"
isAbstract="true">
<ownedAttribute xmi:id="_TmqzUF4BEeK8qagMtO7Vdg" name="base_Class" association="_IMAeYTPyEeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Q-MWwF5lEeK8qagMtO7Vdg" name="valueType" visibility="public"
type="_gIDXwDfXEeKh4ss6R8mSnA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RxyW4F5lEeK8qagMtO7Vdg" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RxzlAF5lEeK8qagMtO7Vdg" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_Rx1aMF5lEeK8qagMtO7Vdg">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_yPCRMHViEeKRBpo1mzOWtA" name="description" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ylqBcHViEeKRBpo1mzOWtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ylqogHViEeKRBpo1mzOWtA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_fkE2YKRTEeKnVLeajH9I4w" name="_valueTypeFaceUUID">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o6qyUKRTEeKnVLeajH9I4w"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o6sAcKRTEeKnVLeajH9I4w" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_IMAeYTPyEeKNpLyJrThh0g" name="E_ValueElement_Class1"
memberEnd="_IMAeYjPyEeKNpLyJrThh0g _TmqzUF4BEeK8qagMtO7Vdg">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_IMAeYjPyEeKNpLyJrThh0g" name="extension_ValueElement"
type="_DsMToF4BEeK8qagMtO7Vdg" aggregation="composite" association="_IMAeYTPyEeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_BeXhsDPyEeKNpLyJrThh0g" name="LogicalInformation">
<generalization xmi:id="_WM5OsF4BEeK8qagMtO7Vdg" general="_DsMToF4BEeK8qagMtO7Vdg"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_Gk59sDPyEeKNpLyJrThh0g" name="SimpleMeasurement">
<generalization xmi:id="_XRcb8F4BEeK8qagMtO7Vdg" general="_DsMToF4BEeK8qagMtO7Vdg"/>
<ownedAttribute xmi:id="_W90VcDfaEeKh4ss6R8mSnA" name="precision" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XPRR0DfaEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XPRR0TfaEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_XPTHADfaEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_f20WcDfaEeKh4ss6R8mSnA" name="frameOfReference" visibility="public"
type="_oeSvcDPxEeKNpLyJrThh0g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gOoZgDfaEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gOpAkDfaEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_gOq1wDfaEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_ioEWEDfaEeKh4ss6R8mSnA" name="unit" visibility="public"
type="_mlBgsDPxEeKNpLyJrThh0g">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_i8E3MDfaEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_i8FeQDfaEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_i8HTcDfaEeKh4ss6R8mSnA">
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 301
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6O9kUDfZEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_6O-ycDfZEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_7FfjsDfZEeKh4ss6R8mSnA" name="upperBound" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7aHI0DfZEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7aHv4DfZEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_7aI-ADfZEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_Nhm1EHVkEeKRBpo1mzOWtA" name="description" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PHNg8HVkEeKRBpo1mzOWtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PHOIAHVkEeKRBpo1mzOWtA" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_cLtuETPyEeKNpLyJrThh0g"
name="E_IntegerRangeConstraint_Class1" memberEnd="_cLtuEjPyEeKNpLyJrThh0g _cLtuEDPyEeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_cLtuEjPyEeKNpLyJrThh0g"
name="extension_IntegerRangeConstraint" type="_atk8IDPyEeKNpLyJrThh0g" aggregation="composite"
association="_cLtuETPyEeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_c-LFwDPyEeKNpLyJrThh0g" name="RealRangeConstraint">
<ownedAttribute xmi:id="_ekSH8DPyEeKNpLyJrThh0g" name="base_Class" association="_ekSH8TPyEeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
</ownedAttribute>
<ownedAttribute xmi:id="_lablcDfZEeKh4ss6R8mSnA" name="lowerBound" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mKSVEDfZEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mKS8IDfZEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_mKUKQDfZEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_ntPVkDfZEeKh4ss6R8mSnA" name="lowerBoundInclusive" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oE1WMDfZEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oE19QDfZEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_LRKa0Di7EeKcXdUi8X0jpw" name="" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_pziTsDfZEeKh4ss6R8mSnA" name="upperBound" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qFPHsDfZEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qFPuwDfZEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_qFRj8DfZEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_rJR-oDfZEeKh4ss6R8mSnA" name="upperBoundInclusive" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgQUMDfZEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgQ7QDfZEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Ox59sDi7EeKcXdUi8X0jpw" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_WzLuIHVkEeKRBpo1mzOWtA" name="description" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XHg_YHVkEeKRBpo1mzOWtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XHhmcHVkEeKRBpo1mzOWtA" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_ekSH8TPyEeKNpLyJrThh0g" name="E_RealRangeConstraint_Class1"
memberEnd="_ekSH8jPyEeKNpLyJrThh0g _ekSH8DPyEeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_ekSH8jPyEeKNpLyJrThh0g" name="extension_RealRangeConstraint"
type="_c-LFwDPyEeKNpLyJrThh0g" aggregation="composite" association="_ekSH8TPyEeKNpLyJrThh0g"/>
</packagedElement>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 303
<packagedElement xmi:type="uml:Extension" xmi:id="_zLYHwTPyEeKNpLyJrThh0g" name="E_Conversion_Class1"
memberEnd="_zLYHwjPyEeKNpLyJrThh0g _zLYHwDPyEeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_zLYHwjPyEeKNpLyJrThh0g" name="extension_Conversion"
type="_x6B0oDPyEeKNpLyJrThh0g" aggregation="composite" association="_zLYHwTPyEeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_zfKmcDPyEeKNpLyJrThh0g" name="AffineConversion">
<generalization xmi:id="_RcZYUF36EeK8qagMtO7Vdg" general="_x6B0oDPyEeKNpLyJrThh0g"/>
<ownedAttribute xmi:id="_OQy3wDfWEeKh4ss6R8mSnA" name="conversionFactor" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_O1QPsDfWEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_O1SE4DfWEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_O1T6EDfWEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_URt4YDfWEeKh4ss6R8mSnA" name="offset" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UnAL4DfWEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UnAy8DfWEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_UnCBEDfWEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_87wcsDPyEeKNpLyJrThh0g" name="PlatformModel">
<ownedAttribute xmi:id="_-TGDEDPyEeKNpLyJrThh0g" name="base_Package" association="_-TGDETPyEeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
</ownedAttribute>
<ownedAttribute xmi:id="_R6OX8HVgEeKRBpo1mzOWtA" name="description" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SUyNAHVgEeKRBpo1mzOWtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SUy0EHVgEeKRBpo1mzOWtA" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_-TGDETPyEeKNpLyJrThh0g" name="E_PlatformModel_Package1"
memberEnd="_-TGDEjPyEeKNpLyJrThh0g _-TGDEDPyEeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_-TGDEjPyEeKNpLyJrThh0g" name="extension_PlatformModel"
type="_87wcsDPyEeKNpLyJrThh0g" aggregation="composite" association="_-TGDETPyEeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="__pMTUDPyEeKNpLyJrThh0g" name="IDLPrimitive">
<ownedAttribute xmi:id="_A9fMwDPzEeKNpLyJrThh0g" name="base_Class" association="_A9fz0DPzEeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
</ownedAttribute>
<ownedAttribute xmi:id="_wwnh8DfWEeKh4ss6R8mSnA" name="IDLType" visibility="public" type="_dc-
4oDfXEeKh4ss6R8mSnA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xBpnkDfWEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xBqOoDfWEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_xBrcwDfWEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_21AGQDfWEeKh4ss6R8mSnA" name="fixedDigits" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3L1R4DfWEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3L1R4TfWEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_3L2gADfWEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_7L-GgDfWEeKh4ss6R8mSnA" name="fixedScale" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7qDJoDfWEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7qDwsDfWEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_7qE-0DfWEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="__70fYHVkEeKRBpo1mzOWtA" name="description" visibility="public">
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 305
<ownedAttribute xmi:id="_CqqRUDi2EeKzGuILjx9cFw" name="faceEdition" visibility="public"
type="_wAR_QDfYEeKh4ss6R8mSnA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DNzaoDi2EeKzGuILjx9cFw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DN0owDi2EeKzGuILjx9cFw" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_DN2d8Di2EeKzGuILjx9cFw">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_V8EvIDfbEeKh4ss6R8mSnA" name="faceProfile" visibility="public"
type="_u_U4kDfYEeKh4ss6R8mSnA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WXNzADfbEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WXOaEDfbEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_WXQPQDfbEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_ZChisDfbEeKh4ss6R8mSnA" name="notes" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZRhoADfbEeKh4ss6R8mSnA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZRiPEDfbEeKh4ss6R8mSnA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_eUd9cDfbEeKh4ss6R8mSnA" name="partitionType" visibility="public"
type="_zL2jYDfYEeKh4ss6R8mSnA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_epUzIDfbEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_epVaMDfbEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_epWoUDfbEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
<ownedAttribute xmi:id="_oWcUEHVlEeKRBpo1mzOWtA" name="description" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_os99sHVlEeKRBpo1mzOWtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_os-kwHVlEeKRBpo1mzOWtA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_jPyIkKRSEeKnVLeajH9I4w" name="_aliasSetFaceUUID">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uYGg0KRSEeKnVLeajH9I4w"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uYI9EKRSEeKnVLeajH9I4w" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_TNDUgTPzEeKNpLyJrThh0g" name="E_UnitOfPortability_Class1"
memberEnd="_TNDUgjPzEeKNpLyJrThh0g _TNDUgDPzEeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_TNDUgjPzEeKNpLyJrThh0g" name="extension_UnitOfPortability"
type="_SItioDPzEeKNpLyJrThh0g" aggregation="composite" association="_TNDUgTPzEeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_GrI-AEnqEeKhaI6O2M8CXg" name="TransportEndpoint">
<ownedAttribute xmi:id="_i6w1cEnqEeKhaI6O2M8CXg" name="base_Association"
association="_i6xcgEnqEeKhaI6O2M8CXg">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_i6xcgEnqEeKhaI6O2M8CXg"
name="E_TransportEndpoint_Association1" memberEnd="_i6xcgUnqEeKhaI6O2M8CXg _i6w1cEnqEeKhaI6O2M8CXg">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_i6xcgUnqEeKhaI6O2M8CXg" name="extension_TransportEndpoint"
type="_GrI-AEnqEeKhaI6O2M8CXg" aggregation="composite" association="_i6xcgEnqEeKhaI6O2M8CXg"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_UrXsoDPzEeKNpLyJrThh0g" name="MessagePort">
<ownedAttribute xmi:id="_WKQFcDPzEeKNpLyJrThh0g" name="base_Class" association="_WKQFcTPzEeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
</ownedAttribute>
<ownedAttribute xmi:id="_5Iw70DfaEeKh4ss6R8mSnA" name="communicationStyle" visibility="public"
type="_nrBkgDfYEeKh4ss6R8mSnA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5ZZY0DfaEeKh4ss6R8mSnA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5ZZ_4DfaEeKh4ss6R8mSnA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_5ZbOADfaEeKh4ss6R8mSnA">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 307
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_x-oyYTPzEeKNpLyJrThh0g"
name="E_ApplicationFramework_Class1" memberEnd="_x-oyYjPzEeKNpLyJrThh0g _x-oyYDPzEeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_x-oyYjPzEeKNpLyJrThh0g" name="extension_ApplicationFramework"
type="_w5HUwDPzEeKNpLyJrThh0g" aggregation="composite" association="_x-oyYTPzEeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_MM0EkDP2EeKNpLyJrThh0g" name="LanguageRunTime">
<ownedAttribute xmi:id="_NK1MADP2EeKNpLyJrThh0g" name="base_Class" association="_NK1zEDP2EeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
</ownedAttribute>
<ownedAttribute xmi:id="_l7s44GmREeKdKM9sFJQ3qA" name="version" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mVaZYGmREeKdKM9sFJQ3qA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mVbngGmREeKdKM9sFJQ3qA" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_s6V9EHVlEeKRBpo1mzOWtA" name="description" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tVaIcHVlEeKRBpo1mzOWtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tVavgHVlEeKRBpo1mzOWtA" value="1"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_NK1zEDP2EeKNpLyJrThh0g" name="E_LanguageRunTime_Class1"
memberEnd="_NK1zETP2EeKNpLyJrThh0g _NK1MADP2EeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_NK1zETP2EeKNpLyJrThh0g" name="extension_LanguageRunTime"
type="_MM0EkDP2EeKNpLyJrThh0g" aggregation="composite" association="_NK1zEDP2EeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_RwnEUDP2EeKNpLyJrThh0g" name="SupportingComponent">
<ownedAttribute xmi:id="_SyILsDP2EeKNpLyJrThh0g" name="base_Association"
association="_SyIywDP2EeKNpLyJrThh0g">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_SyIywDP2EeKNpLyJrThh0g"
name="E_SupportingComponent_Association1" memberEnd="_SyIywTP2EeKNpLyJrThh0g _SyILsDP2EeKNpLyJrThh0g">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_SyIywTP2EeKNpLyJrThh0g" name="extension_SupportingComponent"
type="_RwnEUDP2EeKNpLyJrThh0g" aggregation="composite" association="_SyIywDP2EeKNpLyJrThh0g"/>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_hqIosD4xEeK4XOnfNZo-Zg" name="Alias">
<ownedAttribute xmi:id="_jSRrMD4xEeK4XOnfNZo-Zg" name="base_Association" association="_jSRrMT4xEeK4XOnfNZo-
Zg">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_jSRrMT4xEeK4XOnfNZo-Zg" name="E_Alias_Association1"
memberEnd="_jSRrMj4xEeK4XOnfNZo-Zg _jSRrMD4xEeK4XOnfNZo-Zg">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_jSRrMj4xEeK4XOnfNZo-Zg" name="extension_Alias"
type="_hqIosD4xEeK4XOnfNZo-Zg" aggregation="composite" association="_jSRrMT4xEeK4XOnfNZo-Zg"/>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_dc-4oDfXEeKh4ss6R8mSnA" name="IDLType">
<ownedLiteral xmi:id="_8-ySgDfXEeKh4ss6R8mSnA" name="Boolean"/>
<ownedLiteral xmi:id="__jK60DfXEeKh4ss6R8mSnA" name="Char"/>
<ownedLiteral xmi:id="_HJmgsDfYEeKh4ss6R8mSnA" name="WChar"/>
<ownedLiteral xmi:id="_H9GaMDfYEeKh4ss6R8mSnA" name="Octet"/>
<ownedLiteral xmi:id="_KA5d8DfYEeKh4ss6R8mSnA" name="String"/>
<ownedLiteral xmi:id="_KrnO4DfYEeKh4ss6R8mSnA" name="WString"/>
<ownedLiteral xmi:id="_LTfuQDfYEeKh4ss6R8mSnA" name="Enumeration"/>
<ownedLiteral xmi:id="_Nw3IkDfYEeKh4ss6R8mSnA" name="Float"/>
<ownedLiteral xmi:id="_OfJK4DfYEeKh4ss6R8mSnA" name="Double"/>
<ownedLiteral xmi:id="_PG9_4DfYEeKh4ss6R8mSnA" name="LongDouble"/>
<ownedLiteral xmi:id="_P1WI0DfYEeKh4ss6R8mSnA" name="Fixed"/>
<ownedLiteral xmi:id="_QaNwcDfYEeKh4ss6R8mSnA" name="Short"/>
<ownedLiteral xmi:id="_RHa0sDfYEeKh4ss6R8mSnA" name="Long"/>
<ownedLiteral xmi:id="_RoUiUDfYEeKh4ss6R8mSnA" name="LongLong"/>
<ownedLiteral xmi:id="_TPEdsDfYEeKh4ss6R8mSnA" name="UShort"/>
<ownedLiteral xmi:id="_UHsu0DfYEeKh4ss6R8mSnA" name="ULong"/>
<ownedLiteral xmi:id="_UuaJgDfYEeKh4ss6R8mSnA" name="ULongLong"/>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_gIDXwDfXEeKh4ss6R8mSnA" name="ValueType">
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 309
C Configuration Services API
C.1 Introduction
The Configuration Services API provides a normalized interface for PSSS components and other
UoPs to obtain configuration information from either a local or centralized configuration service
in a portable manner. The Configuration Services API is part of the OSS.
In cases where the IDL differs from the example source code, the IDL takes precedence.
Note: All IDLs have an identical accompanying source code file that can be downloaded and
used for compilation. The code in this document is formatted to align within Microsoft
Word document formatting constraints.
FACE_Configuration.idl
#include <FACE_common.idl>
module FACE {
//! This type is used to represent the handle used during a session
//! with a configuration container.
typedef long HANDLE_TYPE;
//! This type is used to represent the desired offset used with
//! Seek().
typedef long OFFSET_TYPE;
//! This type is used to represent the specify the whence parameter to
//! Seek(). It indicates the manner in which the offset is to be
//! interpreted.
enum WHENCE_TYPE {
//! This indicates that the offset value is to be interpreted as an
//! offset from the beginning of the file. The offset should be a
//! positive number and represent a position in the file.
SEEK_FROM_START,
//! This indicates that the offset value is to be interpreted as an
//! offset from the current position in the file. The offset may be
//! a positive or negative number to seek backward or forward in the
//! in the file.
SEEK_FROM_CURRENT,
//! This indicates that the offset value is to be interpreted as an
//! offset from the end of the file. The offset should be a
//! negative number and represent how many bytes to back up.
SEEK_FROM_END
};
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 311
//! successful completion of the operation.
//! @return INVALID_CONFIG is returned in @a return_code to indicate
//! that the @a configuration container specified is invalid.
//! @return INVALID_PARAM is returned in @a return_code to indicate
//! that the @a handle pointer (in appropriate languages) is
//! invalid.
//! @return INVALID_MODE is returned in @a return_code to indicate
//! the caller does not have permission to access the
//! @a configuration container.
void Open
( in CONTAINER_NAME_TYPE container_name,
out HANDLE_TYPE handle,
out RETURN_CODE_TYPE return_code);
//! The @a Seek method is used to set the current position indicator
//! in the configuration session.
//!
//! @param[in] handle indicates the current session.
};
};
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 313
The parameters to this method are as follows:
initialization_information – provides implementation-specific information which assists in
the initialization of a Configuration API implementation.
return_code – upon return contains a status code indicating success or failure.
The return_code output parameter contains a value indicating that the method executed
successfully or failed for a specific reason. The return code value returned from
Initialize(CONFIG) is one of the following:
FACE_NO_ERROR to indicate successful completion of the operation.
FACE_INVALID_PARAM to indicate that the return_code pointer (in appropriate
languages) is invalid.
};
};
The return_code output parameter contains a value indicating that the method executed
successfully or failed for a specific reason. The return code value returned from Open(CONFIG)
is one of the following:
FACE_NO_ERROR to indicate successful completion of the operation.
FACE_INVALID_CONFIG to indicate that the configuration container specified is
invalid.
The handle parameter must contain the session handle returned by a previous call to
Open(CONFIG).
The element parameter must contain the name of the configuration element to obtain the value of
or one of the following special configuration element names:
“all” to indicate that the intent is to read all data from the configuration container as a
stream.
Upon successful return, the memory specified by buffer contains the contents of the requested
configuration element. This value will be bytes_read octets in length. When reading the special
set_name “all” to indicate that the data is to be read as a stream, it is possible that the entire
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 315
contents can not be read into the buffer provided. In the event, the size of the buffer provided is
not large enough to contain the entire value and bytes_read will be equal to buffer_size and
subsequent Read() operations may be performed to obtain the remainder of the data. When there
is no more data to obtain, bytes_read may contain zero or larger up to buffer_size and the
return_code will be set to FACE_NOT_AVAILABLE.
The return_code output parameter contains a value indicating that the method executed
successfully or failed for a specific reason. The return code value returned from Read(CONFIG)
is one of the following:
FACE_NO_ERROR to indicate successful completion of the operation.
FACE_INVALID_CONFIG to indicate that the handle specified is invalid.
FACE_INVALID_PARAM to indicate that either the buffer or return_status pointer (in
appropriate languages) is invalid.
FACE_NOT_AVAILABLE to indicate that there is no more data to be read in the
configuration stream “all.” There may be zero or more bytes returned in this case.
The whence parameter is used to indicate whether the offset parameter is to be relative to the
beginning of the configuration session, an arbitrary position, or relative to the end of the
configuration session. The whence parameter is of an enumerated type which can have the
following values:
The return_code output parameter contains a value indicating that the method executed
successfully or failed for a specific reason. The return code value returned from Seek(CONFIG)
is one of the following:
FACE_NO_ERROR to indicate successful completion of the operation.
FACE_INVALID_CONFIG to indicate that the handle specified is invalid.
FACE_INVALID_PARAM to indicate that the whence parameter is invalid, the offset is
invalid for the specified value of whence, or that the return_code pointer (in the
appropriate languages) is invalid.
Note: This method may not be supported by all underlying configuration media.
The return_code output parameter contains a value indicating that the method executed
successfully or failed for a specific reason. The return code value returned from Close(CONFIG)
is one of the following:
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 317
FACE_NO_ERROR to indicate successful completion of the operation.
FACE_INVALID_CONFIG to indicate that the handle specified is invalid.
0 Black 0x000000
1 White 0xFFFFFF
2 AliceBlue 0xF0F8FF
3 AntiqueWhite 0xFAEBD7
4 Aqua 0x00FFFF
5 Aquamarine 0x7FFFD4
6 Azure 0xF0FFFF
7 Beige 0xF5F5DC
8 Bisque 0xFFE4C4
9 BlanchedAlmond 0xFFEBCD
10 Blue 0x0000FF
11 BlueViolet 0x8A2BE2
12 Brown 0xA52A2A
13 BurlyWood 0xDEB887
14 CadetBlue 0x5F9EA0
15 Chartreuse 0x7FFF00
16 Chocolate 0xD2691E
17 Coral 0xFF7F50
18 CornflowerBlue 0x6495ED
19 Cornsilk 0xFFF8DC
20 Crimson 0xDC143C
21 Cyan 0x00FFFF
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 319
Color Index Color Name Default Color Value
22 DarkBlue 0x00008B
23 DarkCyan 0x008B8B
24 DarkGoldenRod 0xB8860B
25 DarkGray 0xA9A9A9
26 DarkGreen 0x006400
27 DarkKhaki 0xBDB76B
28 DarkMagenta 0x8B008B
29 DarkOliveGreen 0x556B2F
30 Darkorange 0xFF8C00
31 DarkOrchid 0x9932CC
32 DarkRed 0x8B0000
33 DarkSalmon 0xE9967A
34 DarkSeaGreen 0x8FBC8F
35 DarkSlateBlue 0x483D8B
36 DarkSlateGray 0x2F4F4F
37 DarkTurquoise 0x00CED1
38 DarkViolet 0x9400D3
39 DeepPink 0xFF1493
40 DeepSkyBlue 0x00BFFF
41 DimGray 0x696969
42 DimGrey 0x696969
43 DodgerBlue 0x1E90FF
44 FireBrick 0xB22222
45 FloralWhite 0xFFFAF0
46 ForestGreen 0x228B22
47 Fuchsia 0xFF00FF
48 Gainsboro 0xDCDCDC
49 GhostWhite 0xF8F8FF
50 Gold 0xFFD700
51 GoldenRod 0xDAA520
52 Gray 0x808080
53 Green 0x008000
54 GreenYellow 0xADFF2F
55 HoneyDew 0xF0FFF0
56 HotPink 0xFF69B4
57 IndianRed 0xCD5C5C
58 Indigo 0x4B0082
59 Ivory 0xFFFFF0
60 Khaki 0xF0E68C
61 Lavender 0xE6E6FA
62 LavenderBlush 0xFFF0F5
63 LawnGreen 0x7CFC00
64 LemonChiffon 0xFFFACD
65 LightBlue 0xADD8E6
66 LightCoral 0xF08080
67 LightCyan 0xE0FFFF
68 LightGoldenRodYellow 0xFAFAD2
69 LightGray 0xD3D3D3
70 LightGreen 0x90EE90
71 LightPink 0xFFB6C1
72 LightSalmon 0xFFA07A
73 LightSeaGreen 0x20B2AA
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 321
Color Index Color Name Default Color Value
74 LightSkyBlue 0x87CEFA
75 LightSlateGray 0x778899
76 LightSteelBlue 0xB0C4DE
77 LightYellow 0xFFFFE0
78 Lime 0x00FF00
79 LimeGreen 0x32CD32
80 Linen 0xFAF0E6
81 Magenta 0xFF00FF
82 Maroon 0x800000
83 MediumAquaMarine 0x66CDAA
84 MediumBlue 0x0000CD
85 MediumOrchid 0xBA55D3
86 MediumPurple 0x9370DB
87 MediumSeaGreen 0x3CB371
88 MediumSlateBlue 0x7B68EE
89 MediumSpringGreen 0x00FA9A
90 MediumTurquoise 0x48D1CC
91 MediumVioletRed 0xC71585
92 MidnightBlue 0x191970
93 MintCream 0xF5FFFA
94 MistyRose 0xFFE4E1
95 Moccasin 0xFFE4B5
96 NavajoWhite 0xFFDEAD
97 Navy 0x000080
98 OldLace 0xFDF5E6
99 Olive 0x808000
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 323
Color Index Color Name Default Color Value
This appendix contains the schema definition supporting the description of the I/O and TS
configuration data as given in the FACE Technical Standard, Edition 2.1, Sections D.12 and E.5,
respectively.
E.1 Schema
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="connection_list">
<xs:complexType>
<xs:sequence>
<xs:element name="connection" type="connection_Type" maxOccurs="unbounded"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="connection_Type">
<xs:sequence>
<xs:element name="name" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="type" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="direction" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="createconnection" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="portname" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="messagesize" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="messagerange" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="refreshperiod" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="reliability" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="readwrite_behav" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="queue_discipline" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="domain" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="sockettype" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="receiveflag" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="sendflag" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="sourceaddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="destinationaddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="sourceport" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="destinationport" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="iotype" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="threadlist" type="threadlist_Type" maxOccurs="1" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 325
<xs:complexType name="threadlist_Type">
<xs:sequence>
<xs:element name="priority" type="xs:integer" maxOccurs="1" minOccurs="0"/>
<xs:element name="schedulingpolicy" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="threadrate" type="xs:integer" maxOccurs="1" minOccurs="0"/>
<xs:element name="threadstacksize" type="xs:integer" maxOccurs="1" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
While software itself is an abstraction, and thus has no substance and cannot directly harm
people, property, or the environment – it is the nature of the software’s sensing and control of
physical components within a system and its environment that render that system safe or not.
Safety of software, then, depends on the combined interactions of the software with hardware,
system operator, and external factors. Leveson’s definition3 of software system safety, while
consistent with the Naval Sea Systems Command (NAVSEA) definition of software safety, is
more explicit about this dependency:
“Software System Safety implies that the software will execute within a system context without
contributing to hazards.”
The system software results from the correct set of high-level requirements, decomposed into
lower-level requirements, from which code was generated to implement the functions defined
thereby. Further, no functionality is implemented in the software that is not described by the
requirements. The requirements must (all) be shown to be represented by a set of test
procedures, execution of which verifies that the software correctly implements the requirements;
it must be documented that the tests were executed with acceptable results. The software must be
proven to produce exactly one result when presented with a given set of inputs. Traceability of
the requirements to the software and to the tests must be documented in a manner conducive to
evaluation of these concerns.
The documentation artifacts required by an Airworthiness Authority are not goals in and of
themselves; they are documentation showing that the proper goals were achieved during the
program. Early generation of the appropriate plans and coordination of their content with the
cognizant Airworthiness Authority increases the likelihood of efficient achievement.
3
Taken from SafeWare: System Safety and Computers, Nancy Leveson, Addison-Wesley, 1995.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 327
It is absolutely impractical to properly achieve the goals associated with this documentation in
retrospect at the program's end. Early, in-depth involvement of the qualifying authority is key to
achieving efficiency in this process through:
Providing engineering cognizance of the various development processes
Establishing agreement as to task requirements that lead most directly to qualification
Agreement that goals are achieved at the appropriate program phase
Conformance to the FACE Safety Profile is intended to impose the following key attributes that
support qualification, depending on the evaluated criticality level:
Non-interference between applications
Non-interference between applications and the operational environment
Non-interference between applications and external interfaces
Software fault isolation
Software fault recovery
Reliable information flow between applications
Reliable information flow between applications and the external interfaces
Integrated health monitoring and management
Standards-based system configuration data
F.2 Purpose
This text applies to reuse of portable software components, particularly those developed
specifically for reuse. Integrators accept the software component, and its associated
documentation plan, and perform the technical work to integrate that software component into a
software system. Integrators then seek a certification of airworthiness from the appropriate
Airworthiness Authority, based on the evaluation of a documented qualification effort. To make
the case for qualification of the software system that incorporates the component, the integrator
offers documentation that was delivered with the software component, and also provides
substantiation that all additional qualification objectives have been satisfied.
F.3 Applicability
In addition to the airworthiness qualification requirements defined by the cognizant military
authority, systems incorporating FACE software components may fall under the requirements
applied by Civil authorities. DoD aircraft operating in the National Airspace (NAS) must
consider those requirements, and similarly must address the requirements of international
regulatory authorities for airspace in which they operate; e.g., International Civil Aviation
Organization (ICAO), etc.
F.4.1 Start Assessment Very Early and Update as the Program Progresses
Every system development must include a safety program, which necessarily includes a Safety
Assessment Process.
The Safety Assessment (SA) process provides a methodology to evaluate aircraft functions and
the design of systems performing these functions, and seeks to establish that the associated
hazards have been addressed.
The SA process for a system must establish that all failure conditions and significant
combinations failures have been considered, including additional complexities arising from
integrated system architectures.
At a top level, stated in common terminology, the SA process comprises a Functional Hazard
Assessment (FHA), a Preliminary System Safety Assessment (PSSA), and a final System Safety
Assessment (SSA). The SA process is iterative, tracking the system development as it
progresses, and should be executed as an inherent part of this process. As the program
progresses, it is expected that each analysis will be revised. The software development plan can
be used to document this strategy.
The SA process begins with concept design, and derives any safety requirements for the design.
These derived safety requirements are documented as part of the software requirements, and are
expected to trace directly to source code and test cases for verification of implementation.
The endpoint of the SA process is definition of the safety and safety-related requirements as
input to evaluation of criticality for software components. The SA process concludes with
verification that the design meets the safety requirements.
The FHA identifies and classifies the failure conditions associated with the aircraft functions
(and combinations thereof) at the beginning of the development cycle. Classification of failure
conditions (establishing criticality) establishes the safety objectives.
The PSSA is a systematic examination of the proposed system architecture(s) to determine how
failures can cause the functional hazards identified by the FHA. The goal is to establish system
safety requirements; these are derived requirements (not traced directly from higher-level
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 329
requirements), that require verification as part of qualification to determine compliance with the
system safety plan.
The SSA is a systematic, comprehensive evaluation of the implemented system to show that
safety objectives from the FHA and derived safety requirements from the PSSA are met.
Requirements at all levels that trace to safety-related functionality must be identified, since they
impact criticality evaluations, engineering trade space decisions, and regression testing required
by software maintenance and revision.
A software Failure Modes Effects Analysis (FMEA) is also a systematic and comprehensive
evaluation from a bottom-up view of the system. The effects of failures within the system on the
end result are determined. An FMEA is encouraged to understand the ramifications of such
errors.
Although most FACE components might be developed as part of complete systems, the context
of FACE does open up a market for software developed specifically as portable components, and
suppliers should consider the qualification implications for the integrators of their software to
maximize reuse.
F.5.2 Plan for Future Use of Functionality at a Higher Design Assurance Level
The expense associated with qualification varies significantly (~25%-150% of the project cost)
with the assessed criticality of the functionality provided by software. The immediate benefits of
qualification at the initially assessed level of criticality may be outweighed, however, by the
long-term benefit of increased use of one’s software if accompanied by artifacts that support
qualification at higher levels. Therefore, suppliers of FACE software components should
consider achievement of a higher level of qualification than immediately necessary, and to
reflect a higher level of documentation in the FACE Registry.
The qualification strategy for complex software may include the concept of configurability at
run-time. This configurability is usually based on the contents of small configuration files, read
by the software during start-up, that cause operation to take a variety of configurations. This
alleviates the generation and maintenance of many different software loads, rather than one
larger application that can accommodate these configurations, although the qualification effort
may be somewhat greater because of the increased complexity. Other methods of configurability
include hardware strapping and user interface via entry of codes or option selections while the
software is in maintenance mode; particular attention to allowances for “dead and deactivated”
code is advised, and early coordination of approach is key to efficiency in development and
qualification.
Developers and users of software components may need to address configurability as they seek
flight release for their systems in their plan for qualification, which must address the variability
associated with configurability. Application of this concept is likely to result in a code base that
includes “deactivated code” that traces to software requirements, is documented, tested, and
managed with the rest of the software, but which is not always executed for specific operational
configurations. Consensus with the Airworthiness Authority for this approach is required. Also,
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 331
additional testing must verify the proper operation of the configuration mechanisms of the
software, and must include robustness testing that proves the fault tolerance of the final product.
Response of the software to invalid configuration information (out-of-bounds and incorrect
values, etc.) must be shown to be in conformance with formal requirements, with no adverse
effects.
The level of rigor defines the set of particular artifacts that are required, and definition of the
circumstances under which they must be developed, verified, delivered, and maintained.
Achievement of proof of qualification represents a significant expense in terms of cost and
schedule that can increase dramatically with increasing level of criticality. It is therefore
important to properly perform functional and hazard analyses early in the development cycle to
establish the qualification objectives that must be achieved, since many of the requirements are
best executed at the appropriate stages of development (early) rather than by post-documentation
at later program stages. Some artifacts are effectively useless if written late in a program simply
to satisfy documentation requirements (i.e., a software development plan).
The qualification effort should consist of executing a valid engineering process to generate
system software and documenting that process, and its achievements. Therefore, this effort is
best executed according to a formal agreement, established early with the correct qualification
authority and maintained at each phase, rather than through a flurry of document generation
immediately before seeking a flight release. The latter approach is less efficient, less accurate,
and more expensive.
For FACE software components, the qualification process is complicated by the intent to
generate software components that can be integrated into many software systems. In order to
achieve the stated goal of reducing development effort, integration costs, and time-to-field
avionics capabilities, suppliers of FACE conformant software components should consider the
qualification implications of their products, and coordinate with the appropriate release authority
in the initial stages of software development or execution of programs that incorporate FACE
conformant software components into the software (i.e., “reuse”).
Proper pointer management is also critical to ensure correct operation. Use of dynamic memory
allocation is not recommended due to possible access conflicts (although mechanisms can be
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 333
incorporated and qualified to alleviate this concern). Proper management of cache use must be
substantiated (it is likely that this issue will present qualification challenges in multi-core
applications in the future).
In this regard (and others), the guidelines for restricting use of specific high-level languages
should be applied to support qualification at the level of rigor associated with the FHA.
Examples would be: adherence to the Motor Industry Software Reliability Association (MISRA)
restrictions for C, the Ravenscar restrictions for Ada, and similar restrictions for C++ and Java
(if available, and useful in safety-related qualifications, per the cognizant Airworthiness
Authority).
Some level of requirements-based and robustness testing should be done to assure proper
memory management.
The FACE Conformance Policy allows a software supplier to decide to list a software
component in the FACE Registry at any time after achieving FACE Conformance Certification.
Therefore, suppliers who wish to complete the FACE Conformance Certification process may do
so in advance of completing qualification of the components as part of a system, and then list the
components in the FACE Registry with the qualification pedigree. Considerations for the extent
of qualification credit are subject to terms that are discussed elsewhere in this section.
Software components that are first qualified as part of a complete software system should be
separately documented. Submission of system qualification artifacts with a FACE software
component to the FACE Registry puts the integrators of those software components at risk by
requiring that they disentangle the qualification picture for the software components from the
documentation of the entire system of which they were originally a part.
Those who reuse existing software components in subsequent system developments must
consider installation, safety, security, operational, functional, and performance issues for each
project; the integration of software components into new applications has technical and
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 335
qualification implications. Integrators should expect that their airworthiness certification
agencies will require them to substantiate not only the qualification of the FACE software
components they integrate, but the quality of the integration, and the suitability of the reuse
components, from both a functional and a safety perspective, to application in their systems.
Analysis of performance may also be required to show suitability in a given integration.
Analysis has shown that the cost to fix a software problem increases exponentially as it is
discovered later in the lifecycle. Good requirements result in better unit testing and earlier
problem resolution.
In order to properly reuse a software component, detailed information must be available as to the
functionality that it provides. When qualifying a software system that incorporates a particular
portable software component, the requirements for the portable component will be central to the
verification of the implementation in software for that component. Each requirement must have a
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 337
program-unique identifier for use in establishing traceability from high to low-level
requirements, from requirements to verification, and from requirements to code. Also, each
requirement involved in the implementation of safety-critical functionality must be so identified.
During regression testing, the software that implements safety-critical functionality must be
retested.
A key characteristic of FACE software components that are engineered for reuse is that their set
of requirements can be used to document the component in the context of a new integration with
no modification, or possibly with little modification.
F.9.2 Tests
Test documentation typically consists of a test plan and a test description. In general, the test
plan provides an overview and the general terms of verification testing, and the test description
gives the specific details of the tests that will be executed to verify the software implementation.
The test plan may be generic enough to describe testing for the portable software component as
well as for the entire software suite (during initial qualification), but the test description must
separately detail the test steps defined to verify the implementation of each requirement in the
portable software component.
The test plan should document the procedure for recording red-line changes to the test sequence
discovered during testing, and the procedure for feeding these changes back into the test
sequence to ensure accurate testing in the future. This is particularly critical to test plans and
descriptions that accompany portable software components for integration testing or verification
of compiled code during the qualification activities for subsequent Integrations.
Testing that verifies the operation of interfaces to the portable software component must also be
detailed in the test description or in other documentation. This is critical to the qualification of
the new integration of a software component into a new software system, and represents a
critical component of the qualification objectives that remain to be done by an integrator.
A key characteristic of FACE software components is that they have a set of tests that can be
used and reused, to verify that an executable implements the detailed requirements for the
component.
F.9.3 Traceability
Traceability refers to an evaluator’s ability to analytically establish the following:
A User Need resulted in definition of a set of System Requirements that were decomposed into a
set of detailed Software Requirements, from which software source code was generated. To
verify this, a sufficient set of accurate tests were defined and executed to establish that all of the
software requirements were correctly implemented.
Bi-directional traceability exists when no software was generated that did not originate from the
defined software requirements. Software that does not trace to requirements will not be traceable
to tests that verify its implementation (unless there are tests that don’t trace to requirements,
which further complicates the qualification picture).
In order for a qualification analysis to include substantiation that a test suite has been executed
that verifies the implementation of a FACE software component’s detailed requirements, the
traceability of the requirements to the software and to the set of tests must be provided.
Again, each requirement must have a program-unique identifier for use in establishing
traceability from high to low-level requirements, from requirements to verification, and from
requirements to code, and each requirement involved in the implementation of safety-critical
functionality must be so identified.
F.9.4 IRS/IDD/ICD
Key documentation for reuse of software components is the interface description, including
Interface Requirements Specifications (IRS), Interface Design Descriptions (IDD), and Interface
Control Documents (ICD). The Data Item Descriptions (DIDs) referenced by the Contract Data
Requirements Lists (CDRLs) commonly found in DoD acquisitions describe various formats for
the content required to define the interfaces in a system. Documentation of interfaces is key to
the successful reuse of FACE software components, as they provide value through the
capabilities they provide to the systems into which they are integrated. Interface definition must
accurately depict not only the capability provided by a software component, but the format in
which it is provided. As is the case with software requirements, a software component has little
value unless accompanied by formal documentation that specifies its interfaces. Innovations in
acquisition methodology may rely on complete definition of a component’s interfaces, especially
if that interface is properly modeled in a format that can be used to accurately specify, and
perhaps validate, its interface characteristics.
Documentation of these details by the developer and their evaluation by the certification
authority will be essential to evaluation of the qualification merits of a software reuse component
during assessment of each subsequent integration. If the same Airworthiness Authority evaluates
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 339
a subsequent integration, the qualification picture is clearer than in cases where a different
Airworthiness Authority considers the merits of software reuse; careful documentation is
necessary to maximize the benefits of software reuse in the latter case. Coordination between
Airworthiness Authorities is advantageous if possible.
FACE software components should be accompanied with documentation that definitively frames
the conditions for their reuse, which should be coordinated in advance with the qualification
authority for a system that integrates these components.
Developers seeking flight release for their software should remain aware that automated testing
must be documented in sufficient detail that an evaluator can ascertain that the test sequence
properly verifies implementation of the requirements in software. Automated testing has little
qualification merit if the test procedure merely lists the title of the automated test script that
purports to verify a specific requirement is properly implemented in code. Technical details must
be available to show that the verification is sufficient. This visibility is particularly important in
the reuse case, where the tests are also reused.
In order to achieve the FACE goal of reduction of development and integration costs and time-
to-field new avionics capabilities, the cognizant qualification authority must have access to
documentation that substantiates achievement of qualification tasks (refer to the FACE
Technical Standard, Chapter 5) that are of useful in evaluating a qualification decision.
The following general categories of artifacts are typically required by an authority responsible
for flight release:
Planning Documents
CM/QA Artifacts
Design and Specifications
Source and Executable Object Code
Traceability Artifacts
Safety Analysis/Hazard Assessment
Review Artifacts
Test and Coverage Artifacts (including manual and automated tests)
Analysis Artifacts
Availability of artifacts (and the specifics of their content) may significantly impact the cost and
schedule associated with reuse of software components and, once again, early coordination of a
qualification approach with the integrator’s Airworthiness Authority is advisable to achieve
reuse goals.
A plan that includes reuse of FACE software components should include early coordination with
the Airworthiness Authority to achieve consensus as to any qualification credit that will be
sought for that reuse, and the documentation that will be required to substantiate that credit.
Also, agreement as to the extent of verification that will be necessary for the balance of the
qualification is important to efficient qualification and flight release. If no credit is sought, early
consensus as to the type, number, and content of artifacts that must be available for review
during airworthiness qualification of the resulting system should be established to avoid
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 341
potential conflicts over documentation requirements for that portion of the software
implementation. Description of the credit sought should appear in an Airworthiness
Qualification Specification (AQS) or Plan for Software Aspects of Certification (PSAC).
The supplier of FACE software components should provide documentation to support the extent
to which qualification objectives have been met, and be able to provide artifacts as evidence. Of
equal importance is a statement of the qualification tasks that remain to be accomplished by
subsequent users, and any definition of those tasks offered. These should be used by integrators
when presenting qualification evidence for their composite system software in an SAS, an
Airworthiness Qualification Substantiation Report (AQSR), or similar documentation.
Documentation of Results
Integrators of FACE software components should perform and document the completion tasks as
indicated by the component supplier when seeking airworthiness release, and any other
qualification tasks identified during the early coordination with their certifying authority.
Even though qualification at higher levels of rigor can imply significant increase in cost and
schedule (possibly amounting to a significant increase in the cost of a project), many factors
enter into the decision regarding use of a partitioning OS. This is an engineering decision that
should be based on analysis. Partitioning, in and of itself, does not imply an increase in system
safety or reliability, and could result in a decrease in either or both of these if partitioning is not
properly implemented (considering balance of resources, interfaces, etc.). On the other hand,
partitioning is the only way to segregate software components within a single computing
environment in order to achieve qualification at different criticality levels; without formal
partitioning, a lower-level criticality application may interfere with a higher-level application.
Memory, hardware resources, and processing requirements for applications that share a
computing platform are significant factors in the decision to partition, and in balancing the use of
resources if partitioning is implemented.
In order to achieve credit for segregation of software components with regard to qualification at
varying levels of criticality, a partitioning system must possess the following key attributes:
Temporal Separation (schedule control)
Spatial Separation (memory control)
The mechanisms that supply this segregation must be qualified to the highest level of criticality
that applies to any software application they protect.
Test of software described by (1) is implicit, because the software has changed. Testing of
software of types (2) and (3) is a consequence of the fact that the new/altered software could
impact previously qualified software; this is particularly important in the case of software that
implements safety-related functionality, which drives qualification of all software executing
within a particular computing space (partition or processor) to the level of rigor of equivalent to
the level of the most critical software function. Therefore, the extent of Regression Testing in an
incremental software development plan is a cost consideration in architecting a partitioning
design.
Qualification Rigor has significant programmatic impact with regard to cost and schedule.
Software should be engineered to achieve a proper balance between qualification requirements
and the additional complexity and cost of segregation (partitioning) of software components,
selection and availability of Application Programming Interface (API) calls, and other factors, as
these impact the portability of software and, therefore, attainment of the goals of the FACE
architecture. These decisions should be based on evaluation of hazards using a process
appropriate to the situation (i.e., Joint or Service-specific).
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 343
conform to the FACE architecture by meeting the requirements of the FACE General-Purpose
Profile.
Software evaluated to have any higher criticality must conform to the FACE Safety Profile,
requirements for which are defined in the FACE Technical Standard. Meeting any FACE Safety
Profile does not imply that any airworthiness qualification requirements are met; these are
specified by the cognizant qualification authority. Terms for meeting qualification requirements
should be coordinated early with the authority.
The FACE Technical Standard, Section 3.9.2 describes two sub-profiles for the use of POSIX in
conformance with the FACE Safety Profile: the Base and Extended Sub-profiles. The Extended
Sub-profile is a superset of the Base Sub-profile, and includes POSIX API calls that require
special review by a program's safety qualification authority, as the calls may not be considered a
candidate for qualification in some contexts. Refer to the FACE Technical Standard, Section
3.9.2 and Appendix A for more specific information before choosing to use the Extended Sub-
profile. Any component using the API calls specified for any FACE Profile is subject to the
qualification requirements established by the cognizant authority. The implementation of the
APIs themselves is also subject to qualification.
The FACE Technical Standard includes five other types that include language run-times (C,
C++, Ada, Java) and frameworks (currently OSGi). These are specified for use in the various
FACE Profiles, and, like the ARINC 653 and POSIX interfaces already described, may impact
the partitioning strategy in a FACE implementation.
When used with run-times or frameworks, C and C++, standard Java, and OSGi as specified in
the FACE Technical Standard may not be considered a candidate for qualification by particular
Airworthiness Authorities, and may require isolation through partitioning.
The OS, hardware, and support elements that provide the formal segregation on which
qualification to different levels of criticality is based must be shown to provide this to a level of
criticality equivalent to, or greater than, the highest level of criticality of the software
functionality it supports. Users of partitioning mechanisms must be aware of the qualification
implications of any given configuration.
For information regarding Civil policy relating to Safety-identified requirements, see RTCA
DO-178B, Section 2.4 item e, User Selectable Option Software, and 5.2.3, as a suggestion of the
types of considerations an Airworthiness Authority is likely to evaluate.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 345
Implications of configurable software require special consideration during safety
assessment to ensure that consequences of incorrect operation are considered.
Software that modifies behavior based on an external configuration file must implement
that functionality in accordance with stated requirements, and must be verified by test
cases that trace to those requirements.
Another benefit of this strategy is that software fixes in the “common code” are automatically
included for every configuration represented, rather than requiring implementation in separate
software versions that support various configurations. This single advantage can represent
significant programmatic savings with regard to regression testing, although caution is warranted
to ensure that changes made to support one configuration do not degrade operation for any other
configuration.
Deactivated code is software that is traceable to requirements and, by design, is either not
intended to be executed, or is only executable in certain configurations of the current system.
Existence of deactivated code that is not intended for use in the current application is subject to
additional qualification activities, including proof of the mechanisms that prevent its execution.
A possible drawback of this strategy is additional qualification effort for configurable software.
It must be demonstrated that the mechanisms that read and use the configuration information
operate reliably, and protect both the used and unused functionality. The software that
implements the configuration functionality must trace to detailed requirements and be covered
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 347
F.15.2 Low-Level Software Requirements Testing
High-level requirements are traceable to low-level (detailed implementation) requirements. Low-
level requirements testing ensures that the lowest level of operation has been tested to properly
implement the low-level requirements. This may require white box testing in which the
developer has to connect a debugger to invoke non-reachable states. Also, depending on the
level of criticality, the code may require instrumentation to perform structural coverage analysis.
A specialized form of integration testing applies to the interaction of the application software
with the infrastructure that supports its execution. Suppliers of software that is part of the
support infrastructure should plan and execute an appropriate approach to qualification of these
components, including documentation that helps subsequent users engineer solutions based on
them, and that supports their efforts to establish qualification. Depending on the requirements of
the certification authority, full documentation may be required for these elements. It is unlikely
that missing documentation can be reverse-engineered by an integrator, especially in the case of
planning documents that are intended to guide the software engineering process.
Not only must the integration of the application with the run-time or framework be verified, but
the implementation of the run-time or framework is subject to qualification. While any particular
The FACE concept of a UoP seeks, in part, to foster integrity by allowing suppliers to combine
software support elements with the applications that need them. Presumably, prudent suppliers
will perform verification of the interactions between the application and these support elements,
and will offer documentation with the UoP that assists integrators with their qualification efforts
for the resulting system. To achieve FACE conformance, a UoP must implement FACE allowed
interfaces for its integration into a FACE OE; if a supplier provides qualification evidence for
the application and for the interface to the FACE OE, the qualification case for a system having
previously qualified FACE interfaces is strengthened. Airworthiness evaluation is likely to
include the merits of both the FACE UoP and the OE supporting it.
The requirements should clearly indicate the initial state of all parameters so that a known state
is achieved upon power-up. The initial states of the variables should be verified to meet these
requirements during qualification testing.
Any configuration of parameters within the valid range for each parameter should be checked.
Also, values outside the range should be tested to ensure proper handling by the software.
External database load files that determine the run-time configuration of the software should be
tested within bounds and out of bounds.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 349
F.15.7 Information Interface Testing
All interfaces should be well defined in the requirements with their proper protocol, data types,
and little/big endian configuration. Also, data integrity and checking of the data transferred by
the interface should be tested.
Boundary Conditions
Inability to exhaustively test the operation of software elements where ranges of input values
may occur can be mitigated by selecting test cases where values both just inside, just outside,
and exactly on the defined boundaries demonstrate correct operation (e.g., per requirements).
Intelligent selection of other input values can provide verification evidence without exhaustive
testing; the supplier or integrator should document the strategy used.
Error Checking (in the Config Files, in Messages, Data Exchanges, Message Order, Checksum/CRC
failures, etc.)
In addition to boundary value checking, error checking provides robustness. This will be
particularly true with regard to configuration file content where modes of operation are based on
The FACE Technical Standard requires health monitoring and fault management at the OS level
and at higher levels (see the FACE Technical Standard). Verification of the operation of these
strengthen the qualification case for software systems seeking flight release, and may offer
mitigations that increase the calculated system reliability, depending on their coverage and
verification. Suppliers should document these features and the associated verifications as part of
the artifact set for consideration of qualification.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 351
procedures for problem reporting, tracking, and correction that address the requirements of the
Airworthiness Authorities, security, and satisfy the conditions for continued airworthiness.
These general categories and types of artifacts are typically required by an authority responsible
for flight releases:
Technical Planning Documents:
— Design and Specification Documents
— Requirements
Programmatic Planning Documents:
— Process Descriptions
— CM Plans
— QA Plans
— Reviews
Safety Analyses:
— Hazard Analyses
— Functional Analyses
— Failure Mode Effects and Criticality
Test Artifacts:
— Test Procedures/Plans
— Test Results
— Robustness Verification and Documentation of Supporting Elements
— Test Coverage Reporting
— Traceability
More information on the specifics of the artifact listing and content is available in MIL-STD-498
(cancelled 1998), the subsequent Electronic Industries Alliance (EIA) J-STD-016-1995, and the
RTCA DO-178B, et al. Suppliers and integrators of FACE components should refer to the
appropriate Airworthiness Authorities for definitive guidance for their particular situations.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 353
F.18 Model-Based Engineering of Software
The use of Model-Based Engineering (MBE) potentially enhances the integrity and safety of a
software product, as well as presenting opportunities to improve efficiency in the areas of
development and qualification. Other benefits such as succinct communication of requirements
and verification of design before implementation may be available as well. Successful
approaches will carefully consider the benefits of a tool chain that facilitates each phase of the
software engineering process from requirements management to model development, to
generation of source code, and formulation of a set of tests that verify the implementation.
Effective tools will produce output that is useful for evaluation of qualification, including
traceability data that substantiates the integrity of the system, and coverage of the test suite.
In cases where qualification credit for an application is sought due to the use of software tools,
such tools must be qualified according to the level of rigor associated with the software
functions they are used to implement or verify. Many tools have not been qualified. Those that
have been qualified must still be proven to operate effectively for the development under
consideration, and so users of these tools should plan for additional effort. To aid in this, the tool
supplier may offer a set of resources to support qualification of the tools for a particular use (at a
possibly substantial price).
In cases where no qualification credit is sought due to the use of specific tools, the tool set
should be planned and used in such a way that typical qualification artifacts will be produced
that support evaluation of qualification according to the appropriate established processes. The
development approach should be accurately documented so that a qualification evaluation can
consider the merits of the tool chain and the documentation produced.
Refer to the FACE Technical Standard, Section 3.12.1 for detailed information regarding the use
of language run-times within the definition of the FACE architecture.
Definition of a subset of API titles does not constitute qualification, which includes verification
of the implementation of those functions on the particular processing engine/electronic
hardware, and within the software environment, that supports execution of an application that
relies on them. Verification of the API’s executable code is required to establish the FACE
software quality attributes listed in the FACE Technical Standard, Sections 4.3 and 5.3, and
Chapter 10 herein, and other qualities as required for airworthiness release.
Credit for service history must be based on documented service records showing that the
software possesses the necessary quality attributes, and evidence supporting the claim that the
It is commonplace that restrictions have been defined for the use of language run-times that
improve the qualification picture by seeking to limit violation of the FACE software quality
attributes. Applicability of these restrictions should be coordinated early with the Airworthiness
Authority prior to implementation or integration of existing software components to avoid
expensive and time-consuming re-qualifications. Use of some languages and their run-time
libraries without these restrictions may make qualification problematic.
Implementations that disregard these limiting definitions should carefully evaluate this strategy
before placing limitations on the applicability of their products.
F.19.2 Frameworks
The FACE Technical Standard allows frameworks as part of the OSS of a FACE conformant
UoC.
For a description of the FACE concepts that apply to use of frameworks, refer to the FACE
Technical Standard, Section 3.13.1. In short, the distinction between language run-times and
frameworks is made:
“With libraries, applications instantiate and invoke the functions and objects provided by the
library, but with frameworks, developers implement functions and objects specific to their
component which are then instantiated and invoked by the framework.”
Put another way, run-time libraries are called (and instantiated) by the applications they support,
but a framework calls the applications as the arbitrator of execution.
Within the definition of the FACE Technical Standard use of frameworks in both the General-
Purpose and Safety Profiles consists of framework features described in OSGi Service Platform,
Release 4, Version 4.3 (Core).
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 355
Frameworks that arbitrate the execution of applications, or bundles of applications, must be
proven to provide the separation necessary to ensure their correct and timely operation,
especially frameworks that seek to build systems that emerge from joining different components
that have no pre-existing knowledge of each other, and systems which arise dynamically by
combining the available applications and services as needed. Further attention must be applied to
frameworks that arbitrate the provision of services from one application or group to another, and
removes them asynchronously, requiring the consumers of those services to adjust their
operation. The goal of integration testing in military avionics qualification programs is to ensure
that systems comprising various applications function correctly in every operant configuration;
therefore, dynamic configuration of software components in avionics is only acceptable if every
configuration is qualified, and every schedule of dynamic configuration is tested and proven to
meet real-time determinism and reliability. The mechanisms that provide this functionality are
also subject to qualification.
An Airworthiness Authority will seldom base a qualification decision solely on the fact that a
given software component (whether application software providing mission capability, or OS,
language run-time, or framework) has been previously used, is said to have been qualified
elsewhere, or has an established service record, without artifacts that document its quality, and
the conditions under which these achievements were attained. Equivalence of the conditions of
application (including operating environment), as well as documented service history, will be
required by a certification authority to consider qualification credit for previous use in lieu of
other artifacts; early coordination with the appropriate agency is advisable to establish consensus
as to the plan for certification.
F.20 Conclusion
Engineering of software components for reuse represents enhanced market availability. Reuse of
such software components presents opportunities for savings in terms of cost and schedule. Each
strategy, however, has some associated cost and schedule implications of its own to consider.
All parts of a software product are subject to qualification, and an integration program that
incorporates existing software components will at least be required to verify correct integration
and operation of that system, and at most will be required to re-qualify those reused components,
especially if the components are not properly documented.
Execution of a Safety Program is required, including analyses to establish the criticality of all
software that comprises an avionic system, which then defines the level of rigor to which that
software must be qualified.
Early coordination with the cognizant Airworthiness Authority is advisable in any development
or acquisition of avionics where flight release is required, so that an agreeable course is taken to
substantiate a case for qualification. This will result in the most efficient qualification possible.
One of the functions of the RIG is to provide notification of content expected in a future
Technical Standard. The content of this appendix is provided in anticipation of release of the
FACE Technical Standard Edition 3.0 and supplies readers with advanced notice of new
material. The specifics of this section may change between the publication of this document and
the next Technical Standard, but the reader can gain familiarity with new concepts and
technologies before official release.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 357
TS API
FACE HMFM API
FACE TS Syntactic Interface and
FACE Semantic Data Model
FACE Config API
Runtime Lifecycle Messages FACE PCS UoP
(FACE Data Model)
Messaging Time Service
Get/Set Time Message Framework Adaptation
Runtime Lifecycle
Adaptation HMFM Config
Adaptation Library
(FACE Data Model) Module Library Library
Framework request
response, publish subscribe,
persistence storage and Framework
event based APIs Configuration API
Framework Get/Set
Time API
Figure 90 depicts the mapping of the FACE PCS UoP abstraction interfaces to the Framework
Module Container interfaces.
Framework request
response, publish subscribe,
persistence storage and Framework
event based APIs Configuration API
Framework Get/Set
Time API
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 359
Figure 92: UoP Model of Lifecycle Messages
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 361
Framework Component
X
FACE PCS UoP FACE PCS UoP
Framework Messaging
Runtime Lifecycle
Time Service Messaging
Runtime Lifecycle
Time Service
Supervisor Adaptation
Adaptation Library
Adaptation HMFM Config Framework X Adaptation
Adaptation Library
Adaptation HMFM Config
Module Library Library Module Library Library
X and Y
Data
FACE PCS UoP FACE PCS UoP
Framework Component
X
FACE PCS UoP
X and Y
Data
FACE PCS UoP FACE PCS UoP
The library approach also enables the Business Logic to be ported across different middleware
APIs (including different FACE Profiles) for ultimate reuse opportunity.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 363
G.2.2 Create_Connection Function
The TSS provides an interface to create a connection. This interface allows the use of DDS,
CORBA, ARINC 653, and POSIX connections. The TSS implements the underlying DDS,
CORBA, ARINC 653, and POSIX function calls, and passes the parameters and data of the PCS
through these standardized function calls. The parameters for the individual connections are
determined through the TSS configuration capability. The TSS manages the system-level
connection identifiers based on DDS, CORBA, ARINC 653, and POSIX connections for routing
purposes. Certain communication APIs may be called natively without using the TS Interface.
For restrictions, see Section F.4.
/* IDL declaration */
module FACE
{
interface TS
{
void Create_Connection
( in CONNECTION_NAME_TYPE connection_name,
in MESSAGING_PATTERN_TYPE pattern,
out CONNECTION_ID_TYPE connection_id,
out CONNECTION_DIRECTION_TYPE connection_direction,
out MESSAGE_SIZE_TYPE max_message_size,
in TIMEOUT_TYPE timeout,
out RETURN_CODE_TYPE return_code);
};
};
When a queuing port is instantiated through Create_Connection(TS) there are certain parameters
that have input and others associated with POSIX connections that are NULL due to no
operation for this particular transport mechanism.
/* NOTE: THESE ARE THE CALLS MADE BY TRANSPORT SERVICES */
void CREATE_QUEUING_PORT (
/*in */ QUEUING_PORT_NAME_TYPE QUEUING_PORT_NAME,
/*in */ MESSAGE_SIZE_TYPE MAX_MESSAGE_SIZE,
/*in */ MESSAGE_RANGE_TYPE MAX_NB_MESSAGE,
POSIX Socket
When a socket is instantiated through Create_Connection(TS) there are certain parameters that
have input and others associated with ARINC 653 connections that are NULL due to no
operation for this particular transport mechanism.
Note the order of the OS calls necessary to implement a TCP POSIX socket.
/* NOTE: THESE ARE THE CALLS MADE BY TRANSPORT SERVICES */
1. int socket(int domain, /* connection_domain */
int type, /* socket_type */
int protocol); /* chosen by the TSS */
2. int bind(int socket, /* connection_id */
const struct sockaddr *address, /* provided by TSS */
socklen_t address_len); /* provided by TSS */
OR
int connect( int socket, /* connection_id */
const struct sockaddr *address, /* provided by TSS */
socklen_t address_len); /* provided by TSS */
3. int listen(int socket, /* connection_id */
int backlog); /* provided by TSS */
4. int accept(int socket,
struct sockaddr *restrict address,
socklen_t *restrict address_len);
/* The returned “int” maps to the connection_id */
POSIX Queue
When a queue is instantiated through Create_Connection(TS) there are certain parameters that
have input and others associated with ARINC connections that are NULL due to no operation
for this particular transport mechanism. The TSS is responsible for completing the parameter list
of the mq_open() function call.
/* NOTE: THESE ARE THE CALLS MADE BY TRANSPORT SERVICES */
mqd_t mq_open(const char *name, /* connection_name */
int oflag); /* connection_direction */
/* mqd_t is mapped to connection_id through TSS */
Note the order of the function calls necessary to establish a POSIX shared memory connection.
/* NOTE: THESE ARE THE CALLS MADE BY TRANSPORT SERVICES */
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 365
1. int shm_open(const char *name, /* connection_name */
int oflag, /* chosen by TSS */
mode_t mode); /* chosen by TSS */
/* The returned “int” maps to the connection_id */
2. void *mmap(void *addr, /* connection_id */
size_t len,
int prot, /* chosen by TSS */
int flags, /* chosen by TSS */
int fildes, /* chosen by TSS */
off_t off); /* chosen by TSS */
CORBA
The following CORBA methods are called in this order by Transport Services when a CORBA
Object Request Broker (ORB) is instantiated by Create_Connection(TS).
Since CORBA is distributed object middleware, a CORBA object is created for components
receiving data. Any component sending data retrieves a reference to the CORBA object to which
it wants to send data. The configuration file for a component determines the unique name(s) for
the CORBA object(s) used.
/* NOTE: THESE ARE THE CALLS MADE BY TRANSPORT SERVICES FOR THE
COMPONENT SENDING DATA */
/* NOTE: These calls assume a C++ mapping from the CORBA IDL, and
should be performed in the order specified below */
/* NOTE: These calls assume an IDL FACE module with a TransportObject
interface. The FACE module name and the TransportObject interface
name is verbatim including case */
1. CORBA::ORB_ptr CORBA::ORB_init (int arg_count,
// count of ORB arguments
char** arg_vector); // vector of ORB arguments
2. CORBA::ORB_ptr CORBA::ORB:resolve_initial_references
(char * objectId);
// the objectId is set to "NameService" to retrieve
the CORBA Naming Service.
3. CosNaming::NamingContext_ptr CosNaming::NamingContext::_narrow
(CORBA::Object_ptr);
// Narrow the CORBA object to the Naming Service
4. bool CORBA::is_nil (CORBA::Object_ptr);
// Check that the object reference was narrowed correctly
to a NamingService.
5. CORBA::ORB_ptr CosNaming::NamingContext:resolve
(CosNaming::Name receiver_name);
// Retrieve the object to receive the data
6. bool CORBA::is_nil (CORBA::Object_ptr);
// Check that the Naming Service was able to resolve the name.
7. CosNaming::NamingContext_ptr FACE::TransportObject::_narrow
(CORBA::Object_ptr);
// Narrow the CORBA object to the one and only Transport object
8. bool CORBA::is_nil (CORBA::Object_ptr);
// Check that the object reference was narrowed correctly
to a Transport object.
/* NOTE: THESE ARE THE CALLS MADE BY TRANSPORT SERVICES FOR THE
When the Data Distribution Service (DDS) is instantiated through Create_Connection(TS) there
are certain parameters that have input and others associated with POSIX and ARINC
connections that are NULL.
Since DDS does not provide a connection_id, the TSS is responsible for generating the
connection_id. For the following, the data namespace is “SPACE” and the data type used is
“Foo”. Any call involving the QoS of a domain entity can be modified based upon the needs of
the connection.
1. DDS_DomainParticipantFactory
DDS_DomainParticipantFactory_get_instance(void);
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 367
2. DDS_DomainParticipant
DDS_DomainParticipantFactory_create_participant(
DDS_DomainParticipantFactory factory, /* Provided by 1 */
const DomainID_t domainId, /* Empty variable */
const DDS_DomainParticipantQos *qos, /* chosen/configured by TSS */
const struct DDS_DomainParticipantListener *a_listener,
/* chosen by TSS */
const DDS_StatusMask mask); /* chosen by TSS */
3. DDS_TypeSupport SPACE_FooTypeSupport__alloc(void);
4. DDS_string SPACE_FooTypeSupport_get_type_name
(DDS_TypeSupport type);
5. DDS_ReturnCode_SPACE_FooTypeSupport_register_type (
DDS_TypeSupport type, /* Provided by 3 */
DDS_DomainParticipant participant, /* Provided by 2 */
DDS_string type_name); /* Provided by 4 */
6. DDS_TopicQos* DDS_TopicQos__alloc(void);
7. DDS_ReturnCode_t DDS_DomainParticipant_get_default_topic_qos (
DDS_DomainParticipant participant, /* Provided by 2 */
DDS_TopicQos* qos); /* Provided by 6 */
8. Adjust the QoS as configured/required by modifying the DDS_TopicQos
structure.
9. DDS_Topic DDS_DomainParticipant_create_topic (
DDS_DomainParticipant participant, /* Provided by 2 */
const DDS_char* topic_name, /* Parsed connection_name */
const DDS_char* type_name, /* Provided by 4 */
const DDS_TopicQos* qos, /* Provided by 6 */
const struct DDS_TopicListener* a_listener, /* Chosen by TSS */
const DDS_StatusMask mask); /* Chosen by TSS */
10.If connection_direction is:
a. SOURCE
i. DDS_PublisherQos* DDS_PublisherQos__alloc(void);
ii. DDS_ReturnCode_t
DDS_DomainParticipant_get_default_publisher_qos(
DDS_DomainParticipant participant, /* Provided by 2 */
DDS_PublisherQos* qos); /* Provided by 10.a.i */
iii.Adjust partition name in the DDS_PublisherQos structure.
Partition name provided by the connection_name attribute.
iv. DDS_Publisher DDS_DomainParticipant_create_publisher (
DDS_DomainParticipant participant, /* Provided by 2 */
const DDS_PublisherQos* qos, /* Provided by 10.a.i */
const struct DDS_PublisherListener* a_listener,
/* Chosen by TSS */
const DDS_StatusMask mask); /* Chosen by TSS */
v. DDS_DataWriterQos* DDS_DataWriterQos__alloc(void);
vi. DDS_ReturnCode_t DDS_Publisher_get_default_datawriter_qos (
DDS_Publisher publisher, /* Provided by 10.a.iv */
DDS_DataWriterQos* qos); /* Provided by 10.a.v */
vii.DDS_ReturnCode_t DDS_Publisher_copy_from_topic_qos (
DDS_Publisher publisher, /* Provided by 10.a.iv */
DDS_DataWriterQos* dw_qos, /* Provided by 10.a.v */
const DDS_TopicQos* topic_qos); /* Provided by 6 */
viii.DDS_DataWriter DDS_Publisher_create_datawriter (
DDS_Publisher publisher, /* Provided by 10.a.iv */
const DDS_Topic a_topic, /* Provided by 9 */
The Destroy_Connection(TS) function performs no action and returns no errors for ARINC 653-
based software components.
POSIX Queue
Transport Services is responsible for tracking of the mqd_t descriptors and have them searchable
by connection name.
Transport Services is responsible for calling int mq_unlink(const char *name); after mq_close()
in Transport Services.
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 369
POSIX Shared Memory
Transport Services is responsible for tracking of the address and length of the shared memory
referenced by the connection name.
Transport Services is responsible for calling int shm_unlink(const char *name); after munmap()
in Transport Services.
For the DDS, Transport Services is responsible for tracking of the DDS_DomainParticipant and
DDS_Topic variables for deletion.
CORBA
The following CORBA method is called by Transport Services when CORBA is shutdown by
Destroy_Connection(TS).
/* NOTE: THIS IS THE CALL MADE BY TRANSPORT SERVICES */
CORBA::ORB:destroy (); // Destroy the ORB.
The TypeAbstraction Receive_Message(TS) is used to call the following ARINC 653 function
calls:
The TSS manages the source information from the recvfrom() and recvmsg() function calls for
routing purposes.
Certain communication APIs may be called natively without using the TS Interface. For
restrictions, see Section F.4.
When the connection is set up as a CLIENT, the transaction_id is an “in” parameter. In this
case, Receive_Message(TS) blocks until the TSS receives a response from the server matching
that transaction_id.
When the connection is set up as a SERVER, the transaction_id is an “out” parameter. In this
case, Receive_Message(TS) returns the transaction_id of the incoming message from the client.
The server component uses this transaction_id when sending a response using
Send_Message(TS).
CORBA
The following CORBA method is called by Transport Services when receiving data using
CORBA.
/* NOTE: THIS IS THE CALL MADE BY TRANSPORT SERVICES */
/* NOTE: These calls use a CORBA IDL FACE module with a
TransportObject interface. The TransportObject interface
has two methods: get_data() that returns an array of bytes
and store_data() which stores an array of bytes. The FACE
module name, the TransportObject interface name, and the
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 371
method names of get_data and store_data is
used verbatim including case. */
FACE::TransportObject:get_data (); // Get the data stored in the CORBA
object.
The TSS manages the destination information from the sendto() and sendmsg() function calls for
routing purposes.
Certain communication APIs may be called natively without using the TS Interface. For
restrictions, see Section F.4.
When the connection is set up as a CLIENT, the transaction_id is an “out” parameter. In this
case, TSS generates a unique transaction_id and returns it. Subsequently, the client component
passes this to Receive_Message(TS) when waiting on the response from the server.
CORBA
The following CORBA method is called by the TSS when sending data using CORBA.
/* NOTE: THIS IS THE CALL MADE BY TRANSPORT SERVICES */
/* NOTE: These calls use a CORBA IDL FACE module with
TransportObject interface. The TransportObject interface
has two methods: get_data() that returns an array of bytes
and store_data() which stores an array of bytes. The FACE
module name, the TransportObject interface name, and the
method names of get_data and store_data is
used verbatim including case */
FACE::TransportObject:store_data(); // Store the data in the CORBA
object.
Register read callback is used to address periodic ARINC 653 function calls without having to
poll for data:
The Register_Callback(TS) call is used to address periodic POSIX function calls without having
to poll for data:
The TSS manages the source information from the recvfrom() and recvmsg() function calls for
routing purposes. The form of this function is as follows:
/* IDL declaration */
module FACE
{
interface TypeSpecificTS
{
void Register_Callback (
in CONNECTION_ID_TYPE connection_id,
in WAITSET_TYPE waitset,
inout Read_Callback data_callback,
in MESSAGE_SIZE_TYPE max_message_size,
out RETURN_CODE_TYPE return_code);
};
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 373
};
The get_connection_parameters() call is used to call the following ARINC 653 function calls:
POSIX calls:
Sockets getsockname()
DDS does not need to call anything to determine the status of the connection. The most recent
DDS_ReturnCode_t or the validity of DataReader/Writer handles can be used to determine the
connection status.
/* IDL declaration */
module FACE
{
interface TS
{
void Get_Connection_Parameters
( inout CONNECTION_NAME_TYPE connection_name,
inout CONNECTION_ID_TYPE connection_id,
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 375
H Example USM FACE XMI
<?xml version="1.0" encoding="UTF-8"?>
<face:DataModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
xmlns:conceptual="http://www.opengroup.us/face/conceptual/2.1" xmlns:face="http://www.opengroup.us/face/2.1"
xmlns:logical="http://www.opengroup.us/face/logical/2.1"
xmlns:platform="http://www.opengroup.us/face/platform/2.1" xmlns:uop="http://www.opengroup.us/face/uop/2.1"
xmi:id="_AJ9NYBRAEeSZNohePfXakg" name="FACE_Data_Model">
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_3511E63F_1D0B_4e10_A561_57648BBF67D4"
name="Conceptual_Model">
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_B39E9DAD_7B4E_4eff_89C0_FCD963B8235C"
name="Observables">
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_944C9593_EADB_41f9_BE22_B7F71BBA5E8E"
name="InformationElement" description="Abstract information that applies to attributes of an entity
(e.g., text, diagrams, labels, etc.)">
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_1234D951_C778_464c_84EB_7081F576A92E"
name="Description">
<element xmi:type="conceptual:Observable" xmi:id="EAID_137FD219_342E_47be_A785_7324D2954BAB"
name="Description" description="Summary level information about an item."/>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_6E186690_63B7_4e35_8E7E_B5D8DFFD6D2E"
name="Name">
<element xmi:type="conceptual:Observable" xmi:id="EAID_44DA0EBC_675A_476f_8EC1_E10C43728A21"
name="Name" description="Human meaningful term for referring to an item. Names are often but not
always unique for a given entity."/>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_53BCC2C7_42F6_46b7_9DD0_7F901BF5AF83"
name="Status">
<element xmi:type="conceptual:Observable" xmi:id="EAID_7BF4374F_EC27_40ba_B155_54CEA52345C2"
name="HealthStatus" description="Condition of an item with respect to some purpose or use."/>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_F87F5A3C_11D8_4b0f_9FDF_9449EBC63D3F"
name="Validity">
<element xmi:type="conceptual:Observable" xmi:id="EAID_629FBDD0_AEAD_41f0_9C6F_603D7CF9D269"
name="Validity" description="Indication of fitness of information with respect to some use or
purpose."/>
</cdm>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_259A9F0C_5DB1_4fb3_B9E2_C0EBB9654C1B"
name="Orientation">
<element xmi:type="conceptual:Observable" xmi:id="EAID_AB3FAE18_6F92_4a74_812F_77AF2DCD6F6F"
name="Orientation" description="Angular position of an object relative to a fixed reference frame
that describes how the object is placed."/>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_FD9862C9_B48C_481a_8116_AF98D0A35708"
name="AmountOfSubstance">
<element xmi:type="conceptual:Observable" xmi:id="EAID_280D1606_DD95_455c_B535_04810D45E721"
name="AmountOfSubstance" description="Quantity of elementary entities, such as atoms, molecules,
electrons, and other particles."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_0016984E_BB39_4f54_95F7_41C62B101EBF"
name="ChemicalConcentration" description="Amount of substance contained within a defined volume or
mass."/>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_23E097F2_6E1A_4d74_B068_649072247CC5"
name="Angle">
<element xmi:type="conceptual:Observable" xmi:id="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D"
name="Angle" description="Divergence of two straight lines from a common point or of two planes
from a common line."/>
</cdm>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 377
<element xmi:type="conceptual:Observable" xmi:id="EAID_F07E3618_8CE7_4422_9D21_C8FBB9D77794"
name="Illuminance" description="Total luminous flux incident on a surface per unit area."/>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_7C07FAB4_CDF5_4a09_9787_55E357205B81"
name="Length">
<element xmi:type="conceptual:Observable" xmi:id="EAID_80D92BE8_8DF0_4f7c_82A6_CBF5DF17443A"
name="Distance" description="Amount of separation between two points."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_0C0725EB_2FB1_46d2_A11A_716E6D6299E3"
name="Extent" description="Dimensions of the bounding region encompassing the item."/>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_1D725B44_BAC9_4733_8D4B_4F072340BC6F"
name="LuminousIntensity">
<element xmi:type="conceptual:Observable" xmi:id="EAID_8B463517_0982_4cd0_884D_DD91D17AC345"
name="LuminousIntensity" description="Wavelength weighted power emitted by a light source in a
particular direction per unit solid angle."/>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_6133412F_3EAA_4a9b_8B54_C2A30F2E4A0C"
name="Mass">
<element xmi:type="conceptual:Observable" xmi:id="EAID_5D0D98B4_F3C5_4131_ACA9_A6CBCDEE8F6B"
name="Mass" description="Amount of matter in a physical body (solid, liquid, gas) which determines
the body's resistance to being accelerated by a force and the strength of its mutual gravitational
attraction with other bodies."/>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_87B06E46_6F77_4b0f_B10F_811F93CF30BF"
name="Position">
<element xmi:type="conceptual:Observable" xmi:id="EAID_7CA3D9F9_0614_4f82_A971_D2367427403F"
name="Position" description="Location of an item relative to a fixed reference frame."/>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_C73A97BA_5AAF_4a5a_A17D_D3F6C6378F53"
name="Power">
<element xmi:type="conceptual:Observable" xmi:id="EAID_0FE1D4CF_7DB9_46c2_961B_2C3AB44B694F"
name="Power" description="Rate at which work is performed or energy is converted."/>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_2AA28623_C4E2_4471_85F6_79A1D13E5768"
name="Pressure">
<element xmi:type="conceptual:Observable" xmi:id="EAID_54D14004_BB23_4f72_95FB_9FF384A743A7"
name="Pressure" description="Force per unit area perpendicular to the surface of an item."/>
</cdm>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_82448C3A_F8D7_4ffd_A311_F530C41FA5ED"
name="Rate">
<element xmi:type="conceptual:Observable" xmi:id="EAID_A082A853_2D96_4222_8065_D06483A48AE8"
name="Acceleration" description="Rate of change of velocity per unit time."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_E0FD8349_12D2_40aa_9131_1FF4BA823E26"
name="AngularAcceleration" description="Rate of change of angular velocity."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_21309243_2D0E_4536_8135_69F86BE3D515"
name="AngularVelocity" description="Norm of a vector of angular motion of the target body."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_29913A1B_DFBB_4db4_AE2B_93C6CC1EF116"
name="CountRate" description="Rate at which a total amount is accumulated over a time period."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_5C94882D_D81D_44fd_9A96_04915D63D7BD"
name="DataRate" description="Quantity of data transferred over a defined time period."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_2435A700_DF6F_4e88_98FA_05AD14BA5F5D"
name="MassFlowRate" description="Mass of substance which passes through a given surface per unit
time."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_6A475A9C_9D31_4f7e_92EF_2D00DE6F7E66"
name="OrientationAcceleration" description="Rate of change in Orientation Velocity."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_8A6BA64A_0232_41e4_AA18_CD71B80A66DC"
name="OrientationVelocity" description="Rate of change in Orientation."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_CD425350_A680_49d4_974D_4052C9BABB30"
name="ScalarAcceleration" description="Rate of change of speed."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_06B460A8_5CEC_4e63_9607_4413DB527E37"
name="Speed" description="Rate at which an object covers a distance."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_6576E8D2_2D88_4881_819E_7CA0B661B8A5"
name="TemporalFrequency" description="Number of occurrences of a repeating event per unit time.
Events are assumed to have a uniform period."/>
<element xmi:type="conceptual:Observable" xmi:id="EAID_331BB7F2_6E37_433e_8027_991D9E82BA67"
name="Velocity" description="Rate at which an object covers a distance in a specified direction."/>
</cdm>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 379
</element>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="EAID_F26F2D3F_ACAF_42fe_B3AA_B7518E7B5F64"
name="Observables"/>
<cdm xmi:type="face:ConceptualDataModel" xmi:id="_AJ_ppBRAEeSZNohePfXakg" name="ConceptualViews">
<element xmi:type="conceptual:View" xmi:id="_AKA3whRAEeSZNohePfXakg" name="EGI_Data">
<characteristic xmi:type="conceptual:CharacteristicProjection" xmi:id="_AKA3wxRAEeSZNohePfXakg"
projectedCharacteristic="_AJ90cBRAEeSZNohePfXakg" rolename="att" path=".attitude"/>
<characteristic xmi:type="conceptual:CharacteristicProjection" xmi:id="_AKA3xBRAEeSZNohePfXakg"
projectedCharacteristic="_AJ90cBRAEeSZNohePfXakg" rolename="pos" path=".position"/>
</element>
<element xmi:type="conceptual:View" xmi:id="_AKAQsBRAEeSZNohePfXakg" name="IMU_Data">
<characteristic xmi:type="conceptual:CharacteristicProjection"
xmi:id="EAID_53314BC3_ABC7_4bb6_8A78_006A8DFB5EA7"
projectedCharacteristic="_AJ_CkxRAEeSZNohePfXakg" rolename="att" path=".attitude"/>
</element>
<element xmi:type="conceptual:View" xmi:id="_AKA3xRRAEeSZNohePfXakg" name="Nav_Data">
<characteristic xmi:type="conceptual:CharacteristicProjection" xmi:id="_AKA3xhRAEeSZNohePfXakg"
projectedCharacteristic="_AJ_ClhRAEeSZNohePfXakg" rolename="att" path=".attitude"/>
<characteristic xmi:type="conceptual:CharacteristicProjection" xmi:id="_AKA3xxRAEeSZNohePfXakg"
projectedCharacteristic="_AJ_ClhRAEeSZNohePfXakg" rolename="pos" path=".position"/>
</element>
</cdm>
</cdm>
</cdm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_9BA39F14_4927_484a_B00F_7D1C8B0CC103"
name="Logical_Model">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_1D413311_4852_40a3_8919_33A7AD77146E"
name="CoordinateSystems">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_5F7EE196_6B19_4727_BBA7_C39452D13B3C"
name="Cartesian">
<element xmi:type="logical:CoordinateSystem" xmi:id="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D"
name="Cartesian1D" description="One dimensional Cartesian coordinate system."
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087" axisRelationshipDescription="There is only one
axis." angleEquation="n/a" distanceEquation="d = x2-x1"/>
<element xmi:type="logical:CoordinateSystem" xmi:id="EAID_91380EB8_66EF_4d12_AC1D_84FF7F719080"
name="Cartesian2D" description="Two dimensional Cartesian coordinate system."
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087 EAID_185CD9A8_B677_41ab_907D_C7F232756DCE"
axisRelationshipDescription="Axes are orthogonal to each other." angleEquation="theta = inverse cos
((a dot b)/(|a|*|b|)), where a and b are vectors." distanceEquation="d=sqrt((x2-x1)^2+(y2-y1)^2)"/>
<element xmi:type="logical:CoordinateSystem" xmi:id="EAID_E16B78B2_B2BA_43e5_837E_018DC1FD621C"
name="Cartesian3D" description="Three dimensional Cartesian coordinate system."
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087 EAID_185CD9A8_B677_41ab_907D_C7F232756DCE
EAID_C74601C9_0E7A_483b_AD4C_28D64BE141E3" axisRelationshipDescription="Axes are orthogonal to each
other." angleEquation="theta = inverse cos ((a dot b)/(|a|*|b|)), where a and b are vectors."
distanceEquation="d = sqrt((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2)"/>
<element xmi:type="logical:CoordinateSystem" xmi:id="EAID_B55C9EAD_191D_4857_B016_3DA66484CD06"
name="Cartesian4D" description="4 dimensional Cartesian coordinate system."
axis="EAID_B9400988_0D42_4158_B085_F2301B7EC419 EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087
EAID_185CD9A8_B677_41ab_907D_C7F232756DCE EAID_C74601C9_0E7A_483b_AD4C_28D64BE141E3"
axisRelationshipDescription="Axes are orthogonal to each other." angleEquation="theta = inverse cos
((a dot b)/(|a|*|b|)), where a and b are vectors." distanceEquation="d = sqrt((x2-x1)^2 + (y2-y1)^2
+ (z2-z1)^2 + (t2-t1)^2)"/>
<element xmi:type="logical:CoordinateSystemAxis" xmi:id="EAID_B9400988_0D42_4158_B085_F2301B7EC419"
name="CartesianTAxis" description="T (time) axis of Cartesian coordinate system"/>
<element xmi:type="logical:CoordinateSystemAxis" xmi:id="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
name="CartesianXAxis" description="X Axis of Cartesian coordinate system."/>
<element xmi:type="logical:CoordinateSystemAxis" xmi:id="EAID_185CD9A8_B677_41ab_907D_C7F232756DCE"
name="CartesianYAxis" description="Y Axis of Cartesian coordinate system"/>
<element xmi:type="logical:CoordinateSystemAxis" xmi:id="EAID_C74601C9_0E7A_483b_AD4C_28D64BE141E3"
name="CartesianZAxis" description="Z Axis of Cartesian coordinate system"/>
</ldm >
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_E26AFB94_7E63_47b5_A95F_373A0B2B8F3B"
name="Discrete">
<element xmi:type="logical:CoordinateSystem" xmi:id="EAID_9073ABED_00F3_4b1f_8045_9AE46DBC3456"
name="Discrete1D" description="Coordinate system used to model sets of discrete states (e.g.,
enumerations)." axis="EAID_DBE6EC88_CB55_4a45_8937_D79C72C5D688" axisRelationshipDescription="n/a"
angleEquation="n/a" distanceEquation="n/a"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 381
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_A1ED4E98_B10D_4e7f_BFAD_86BA34D7C3DB"
name="VolumeMeasurementSystem" description="Measurement system for values of volume."
measurementSystemAxis="EAID_F7F3A12A_7530_4370_9235_928317E0BC98"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Values increase as volume increases.">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_E74EA2A2_D555_4371_9AC2_C14B2243D666" name="ZeroVolumeReferencePoint"
description="Reference point for a zero volme"
landmark="EAID_2205BF3D_7A57_4440_A3B4_1D1EE359EFDF">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_A1182165_AEE6_4671_8589_54799FFD9E3C"
axis="EAID_F7F3A12A_7530_4370_9235_928317E0BC98" value="0.0"
valueTypeUnit="EAID_F77FC9A7_BB84_4e52_96C5_088210366367"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_18278755_32E3_4550_A88E_C57EE92ECFEF" name="OneCubicMeterReferencePoint"
description="reference point for a volume of one cubic meter."
landmark="EAID_1550FA6E_1F8C_4b47_9DC2_F36336B730F0">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_5F2E34BC_46ED_4b54_8866_4878F80D86BB"
axis="EAID_F7F3A12A_7530_4370_9235_928317E0BC98" value="1.0"
valueTypeUnit="EAID_F77FC9A7_BB84_4e52_96C5_088210366367"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_F7F3A12A_7530_4370_9235_928317E0BC98" name="VolumeMeasurementSystemAxis"
description="Measurement system axis for values of volume."
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_F77FC9A7_BB84_4e52_96C5_088210366367"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_7A761013_2939_482c_9DBE_FBFE3256BAF6"
name="TemporalFrequency" description="Logical model for the number of occurrences of a repeating
event per unit time">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_AFB6D10F_59C7_4f0b_882F_858971C1E91D"
name="RealHertz" description="Temporal frequency as real number in Hertz"
unit="EAID_161469CC_7BFE_4206_BF8E_17E105C1A679"
valueType="EAID_7CB1E0A3_7D27_45fa_BF9E_22EB15886D68"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_173741CF_C731_4508_AFC9_DB1919375D9C"
name="OneHertzLandmark" description="One occurrence of a repeatable event per second"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_4221DC2B_A11C_4974_B680_59E35E5F3D34"
name="ZeroFrequencyLandmark" description="No occurrences of a repeatable event"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_FFDFA047_BDBD_4ab3_A66D_B8AB68DBA582"
name="TemporalFrequencyMeasurementSystem" description="Measurement system for frequency of periodic
events." measurementSystemAxis="EAID_FB000C46_0D64_4280_8E88_5C967757A7BE"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D"
externalStandardReference="International System of Units (SI)" orientation="Value increases as
frequency increases.">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_78B1F6C4_434F_4197_B3C3_001A14EC2BDA" name="OneHertzReferencePoint"
description="One occurrence per second" landmark="EAID_173741CF_C731_4508_AFC9_DB1919375D9C">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_0CDFCF20_54D5_49fd_870A_8B329ABF6C87"
axis="EAID_FB000C46_0D64_4280_8E88_5C967757A7BE" value="1.00"
valueTypeUnit="EAID_AFB6D10F_59C7_4f0b_882F_858971C1E91D"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_1CF7F1AF_B4BF_408c_8CDB_6B7AC1939E01" name="ZeroFrequencyReferencePoint"
description="No occurrences per second" landmark="EAID_4221DC2B_A11C_4974_B680_59E35E5F3D34">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_5E653C8A_BDAA_4470_A3DF_CBF01A408367"
axis="EAID_FB000C46_0D64_4280_8E88_5C967757A7BE" value="0.00"
valueTypeUnit="EAID_AFB6D10F_59C7_4f0b_882F_858971C1E91D"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="EAID_FB000C46_0D64_4280_8E88_5C967757A7BE"
name="TemporalFrequencyMeasurementSystemAxis" description="Measurement axis for frequency."
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 383
measurementSystem="EAID_3328F5AF_7CAE_4149_A03E_EB78F6653396"
realizes="EAID_137FD219_342E_47be_A785_7324D2954BAB"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_29A7DF39_BC02_4cf3_8899_D586B7220C67"
name="NameMeasurement" description="Measurement for representing a name."
measurementAxis="EAID_C1593D3F_5E10_4f8e_8DB3_E6D374FA42E3"
measurementSystem="EAID_3328F5AF_7CAE_4149_A03E_EB78F6653396"
realizes="EAID_44DA0EBC_675A_476f_8EC1_E10C43728A21"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_19947789_47A4_4add_A517_DF904813B923"
name="DescriptionMeasurementAxis" precision="1"
measurementSystemAxis="EAID_53E5C75D_0FAB_4090_9AB4_763E7AEF327C"
realizes="EAID_137FD219_342E_47be_A785_7324D2954BAB"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_C1593D3F_5E10_4f8e_8DB3_E6D374FA42E3"
name="NameMeasurementAxis" precision="1"
measurementSystemAxis="EAID_53E5C75D_0FAB_4090_9AB4_763E7AEF327C"
realizes="EAID_44DA0EBC_675A_476f_8EC1_E10C43728A21"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_D64E0352_022A_4eeb_B9FD_BD7E6BDAD940"
name="NameTextPrimaryAxis" description="The primary name axis." precision=""
measurementSystemAxis="EAID_53E5C75D_0FAB_4090_9AB4_763E7AEF327C"
realizes="EAID_44DA0EBC_675A_476f_8EC1_E10C43728A21"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_4AD8CC67_0181_4553_A1D4_0811D74BC14D"
name="UniqueIdentifierMeasurements"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_449BBCB0_25E2_4bb8_B6B7_08676DD46583"
name="StatusMeasures">
<element xmi:type="logical:Enumerated" xmi:id="EAID_9BB3F64F_2C33_422a_8B59_28D92F6410C6"
name="HealthStatusStateSet" description="Set of possible HealthStatus states" standardReference="">
<label xmi:type="logical:EnumerationLabel" xmi:id="EAID_28135A7A_37C1_416a_A295_D6EA78B7DDAF"
name="Bus_Error"/>
<label xmi:type="logical:EnumerationLabel" xmi:id="EAID_A34427F2_D922_49f3_8909_323CA5FA6FA7"
name="Go"/>
<label xmi:type="logical:EnumerationLabel" xmi:id="EAID_184A694E_8080_458a_8F5E_56367E965403"
name="Mem_Error"/>
<label xmi:type="logical:EnumerationLabel" xmi:id="EAID_4D807032_2282_4f20_8E3D_E1AFDB3F1BD2"
name="NoGo"/>
</element>
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_3989746A_802A_4357_80BE_5ED3CA4CF862"
name="HealthStatusDiscreteStates" description="The set of possible HealthStatus states"
unit="EAID_0C482F2C_A548_4cf1_B9AD_5086FD62C41B"
valueType="EAID_9BB3F64F_2C33_422a_8B59_28D92F6410C6"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_DD698959_0290_4a32_9D3A_F37F5DB63DC3"
name="HealthStatusMeasurement" description="Multistate health status measurement."
measurementAxis="EAID_CBC2B1EA_AB83_45fe_B831_3D2DE67241A1"
measurementSystem="EAID_0D6D5FAF_71A2_4452_B2F9_AB8F15C4D13F"
realizes="EAID_7BF4374F_EC27_40ba_B155_54CEA52345C2"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_CBC2B1EA_AB83_45fe_B831_3D2DE67241A1"
name="HealthStatusMeasurementAxis" valueTypeUnit="EAID_3989746A_802A_4357_80BE_5ED3CA4CF862"
precision="1" measurementSystemAxis="EAID_A60E666A_2E05_4c81_A7CB_BDE7B7C3A189"
realizes="EAID_7BF4374F_EC27_40ba_B155_54CEA52345C2"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_72328038_53DE_4bc6_A6E7_FDD926C9D0B7"
name="ValidityMeasures">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_CBC4F83A_D055_404a_948F_301D7024B339"
name="TwoStateValidityStates" description="Discrete states representing data validity indications"
unit="EAID_0C482F2C_A548_4cf1_B9AD_5086FD62C41B"
valueType="EAID_98387E85_666B_4e9b_86E1_AA9E9975500E">
<constraint xmi:type="logical:EnumerationConstraint"
xmi:id="EAID_B4F76269_74CF_4aba_867F_9D69CCDCBEF4" name="ValidityConstraintTwoState"
description="Constraint limiting validity to Valid & Invalid (omits FunctionalTest &
NoComputedData)" allowedValue="EAID_B70F6907_5B02_4d61_83CD_C6F4385FDB1A
EAID_F0A086C3_4797_48f4_8DC4_DCD5EDB30DAF"/>
</element>
<element xmi:type="logical:Measurement" xmi:id="EAID_2843BB77_A385_4725_8143_5561E157F9E3"
name="ValidityMeasurementFourState" description="Data validity measurement that can have the four
states common to ARINC 429, 664P7, & 653P2 (Valid, Invalid, Functional test, & No Computed
Data)" measurementAxis="EAID_DF346A52_E72B_456d_ABA1_E36EF3060986"
measurementSystem="EAID_0D6D5FAF_71A2_4452_B2F9_AB8F15C4D13F"
realizes="EAID_629FBDD0_AEAD_41f0_9C6F_603D7CF9D269"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 385
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_10C3231C_6547_464f_A0F2_D6750CB4E51B"
name="OneMolePerCubicMeterConcentrationReferencePoint" description="Represents a unit amount of
chemical concentration (i.e., 1 mole/cubic meter."
landmark="EAID_E6D16447_F932_4bae_85F5_749590338288">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_D43002FD_821D_4679_9A53_3B58FA9E7017"
axis="EAID_46FC50D2_7494_46f3_8494_DDAA55E45A2F" value="1.0"
valueTypeUnit="EAID_76E379BA_96C9_4f5d_A0F4_BCF5D4D5B9D3"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_E5210479_294C_4137_A1CB_8F34A558D305" name="ZeroConcentrationReferencePoint"
description="Origin point for chemical concentration"
landmark="EAID_BA35625A_C590_411f_83AA_23C717E26A46">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_CBBC03AF_8E5C_49af_A5DA_D64E2F5EFD20"
axis="EAID_46FC50D2_7494_46f3_8494_DDAA55E45A2F" value="0"
valueTypeUnit="EAID_76E379BA_96C9_4f5d_A0F4_BCF5D4D5B9D3"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="EAID_46FC50D2_7494_46f3_8494_DDAA55E45A2F"
name="AmountOfConcentrationMeasurementSystemAxis" axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_76E379BA_96C9_4f5d_A0F4_BCF5D4D5B9D3"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_C39FE4A0_A543_485f_9E48_280DB21A5EBC"
name="AmountOfSubstanceMeasures">
<element xmi:type="logical:Measurement" xmi:id="EAID_BAB39D5C_4C60_4915_B31B_4F1E398424CD"
name="AmountOfSubstanceMeasurement" description="A measure of the number of entities (atoms,
molecules) present in a substance." measurementAxis="EAID_50838858_BB3A_4378_849A_0A29801BEB06"
measurementSystem="EAID_DC62CAA1_21DA_4849_8464_F08A23263D53"
realizes="EAID_280D1606_DD95_455c_B535_04810D45E721"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_50838858_BB3A_4378_849A_0A29801BEB06"
name="AmountOfSubstanceMeasurementAxis" description="Value increases as amount of substance
increases." precision="0.01" measurementSystemAxis="EAID_EA62EF67_9A36_4f82_BCF9_74E7F11310BB"
realizes="EAID_280D1606_DD95_455c_B535_04810D45E721"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_1A43B456_A5AC_4744_8F9F_E72B5B739C01"
name="AmountOfSubstanceLandmarks" description="Collection of landmark elements applicable to Amount
Of Substance measurements.">
<element xmi:type="logical:Landmark" xmi:id="EAID_E586CBA3_83E6_448e_86FC_785FB8EA3435"
name="OneMoleAmountOfSubstanceLandmark" description="The mole represents an amount of substance in
the unit of Avogadro's constant (6.022x10^23) of atoms or molecules."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_396D9821_327B_4ed3_ABD0_A4ABACE8B529"
name="ZeroAmountOfSubstanceLandmark" description="The natural units of substances are molecules,
which are groups of atoms bonded together, this represents no molecules for a referenced
substance."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_B43B92D6_DE84_4481_9483_B92CC02C264C"
name="AmountOfSubstanceMeasurementSystem" description="Collection of elements applicable to Amount Of
Substance measurements.">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_B50F1085_EE30_4408_9028_ECD2D1151D8A"
name="RealMoles" description="Amount of Substance described in the real numerical value of Moles."
unit="EAID_81285D76_2D91_4edd_B41D_009A1301FB63"
valueType="EAID_1EA04603_631A_403e_82FD_D6E5825D1F31"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_DC62CAA1_21DA_4849_8464_F08A23263D53"
name="AmountOfSubstanceMeasurementSystem" description="The measurement system for amount of
substance is a quantity proportional to the number of entities N in a sample. The proportionality
constant is the same for all substances and is the reciprocal of the Avogadro constant."
measurementSystemAxis="EAID_EA62EF67_9A36_4f82_BCF9_74E7F11310BB"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Right-Handed">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_7B50FCD5_19F1_4317_B1F1_85C69EC70BD6" name="OneMoleAmountOfSubstanceReferencePoint"
description="The mole represents an amount of substance in the unit of Avogadro's constant
(6.022x10^23) of atoms or molecules." landmark="EAID_E586CBA3_83E6_448e_86FC_785FB8EA3435">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_4FEC69AA_F25D_40e4_95E4_BD3CCE7F0723"
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 387
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_B1CF8E91_53B6_4940_A3C5_98F8828300D4"
name="PitchMeasurementDegreesAxis" description="Pitch Axis (Lateral Axis) passes through the
plane from wingtip to wingtip. Pitch changes the vertical direction the aircraft’s nose is
pointing." valueTypeUnit="EAID_C5AE86FF_FB90_4d95_A739_4025CA644CDF" precision="0.0001"
measurementSystemAxis="EAID_CACB8663_7644_489e_BE01_2F05B1EE3997"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_83FE7B24_DB9C_4220_A419_4F326C52A5F7" constraintText="-180 <= value <
180"/>
</element>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_9F6F8C29_7A0A_414c_A920_246C93235289"
name="RollMeasurementDegreesAxis" description="Roll Axis (Longitudinal Axis) passes through the
plane from nose to tail. Roll changes the orientation of the aircraft’s wings with respect to
the downward force of gravity." valueTypeUnit="EAID_C5AE86FF_FB90_4d95_A739_4025CA644CDF"
precision="0.0001" measurementSystemAxis="EAID_772DB699_434A_45e4_B6D8_A0E020712C67"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_FA20FFE7_2899_4717_B74F_4F0546D64D61" constraintText="-180 <= value <
180"/>
</element>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_BFC17479_9D79_4762_BCDB_CEB6B869A8FB"
name="YawMeasurementDegreesAxis" description="Yaw Axis (Normal Axis) is the vertical axis
through an aircraft, rocket or similar body about which the body yaws."
valueTypeUnit="EAID_C5AE86FF_FB90_4d95_A739_4025CA644CDF" precision="0.0001"
measurementSystemAxis="EAID_C0539EFA_68AA_4243_81E3_F2052C1B496A"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_B43C1E49_38A4_4f74_B438_C8F42A70316F" constraintText="-180 <= value <
180"/>
</element>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_E85CF7BF_F349_4e79_A032_1C5B9874F3F5"
name="BodyAngleMeasurement">
<element xmi:type="logical:Measurement" xmi:id="EAID_F34BA7FF_1BEF_41e1_B694_812BE1BFCD49"
name="PitchMeasurement" description="Specifies the rotation about the latitudinal axis (pitch)
measured as an angle with respect to the vertical axis as viewed from the origin of the local
vehicle frame of reference." measurementAxis="EAID_A322E2DF_714C_45ae_AF5C_9D42179B6E83"
measurementSystem="EAID_5CDB3F7E_0762_43c5_ABBD_F6F8B4685244"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_99BA0E0C_1417_4ff9_9B37_E18BD579FBF9"
name="RollMeasurement" description="Specifies the rotation about the longitudinal axis (roll)
measure as a angle with respect to the latitudinal axis as viewed from the origin of the Local
Vehicle Frame of Reference." measurementAxis="EAID_D5479935_C658_4188_AD63_965007CA6583"
measurementSystem="EAID_5044E59D_C305_465e_944E_4DA6187EF0DC"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_94E1CAC3_2D40_40fd_9A11_3A8F53B0E484"
name="YawMeasurement" description="Specifies the rotation about the vertical axis (yaw) measure
as a angle with respect to the longitudinal axis as viewed from the origin of the Local Vehicle
Frame of Reference." measurementAxis="EAID_371B3270_F224_4dbc_B1E1_9482D3E91066"
measurementSystem="EAID_9F30D0CA_14E4_4d03_9B4B_6E859FE51594"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_A322E2DF_714C_45ae_AF5C_9D42179B6E83"
name="PitchMeasurementAxis" description="Pitch Axis (Lateral Axis) passes through the plane from
wingtip to wingtip. Pitch changes the vertical direction the aircraft’s nose is pointing."
precision="0.000001" measurementSystemAxis="EAID_CACB8663_7644_489e_BE01_2F05B1EE3997"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_FF4C0E70_6155_4dae_8A6E_3557D56AC874" constraintText="-Pi <= value < Pi"/>
</element>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_D5479935_C658_4188_AD63_965007CA6583"
name="RollMeasurementAxis" description="Roll Axis (Longitudinal Axis) passes through the plane
from nose to tail. Roll changes the orientation of the aircraft’s wings with respect to the
downward force of gravity." precision="0.000001"
measurementSystemAxis="EAID_772DB699_434A_45e4_B6D8_A0E020712C67"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_9F201858_916A_44b1_B1DA_8D8C3700A2E7" constraintText="-Pi <= value < Pi"/>
</element>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 389
description="Zero rotation about the Vertical axis"
landmark="EAID_7E2AA6B0_4E32_428e_B420_674937EB807B">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_9A3CAADF_5147_4276_86E1_94F9D00E26C2"
axis="EAID_C0539EFA_68AA_4243_81E3_F2052C1B496A" value="0"
valueTypeUnit="EAID_FE60D41B_86AF_4f9e_B507_96A5730B1E52"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_37757EE5_7A9F_4d5c_840C_9E456D90643D" name="PiOver6RadianYawLeftReferencePoint"
description="-Pi/6 radian rotation along the vertical axis (a yaw left)"
landmark="EAID_7BA5AA9E_8487_4169_8591_E8A62103DE76">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_8DFE9652_ACCA_4cf7_A11F_9F0194AE2751"
axis="EAID_C0539EFA_68AA_4243_81E3_F2052C1B496A" value="-Pi/6"
valueTypeUnit="EAID_FE60D41B_86AF_4f9e_B507_96A5730B1E52"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_A4B9B253_9061_4f28_A8F7_89BFA86EE91A" name="BodyAngleOfRotationAboutLateralAxis"
description="An axis running from the pilot's left to right in piloted aircraft, and parallel to
the wings of a fixed winged aircraft. Rotation about this axis is called pitch."
axis="EAID_185CD9A8_B677_41ab_907D_C7F232756DCE"
defaultValueTypeUnit="EAID_FE60D41B_86AF_4f9e_B507_96A5730B1E52"/>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_CACB8663_7644_489e_BE01_2F05B1EE3997" name="BodyAngleOfRotationAboutLateralAxis1D"
description="An axis running from the pilot's left to right in piloted aircraft, and parallel to
the wings of a fixed winged aircraft. Rotation about this axis is called pitch."
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_FE60D41B_86AF_4f9e_B507_96A5730B1E52"/>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_309DE716_2AA8_4eb3_A6EA_C0C37AA8CA84"
name="BodyAngleOfRotationAboutLongitudinalAxis" description="An axis drawn through the body of
the vehicle from tail to nose in the direction of flight, or the direction the pilot faces.
Rotation about this axis is called bank or roll."
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_FE60D41B_86AF_4f9e_B507_96A5730B1E52"/>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_772DB699_434A_45e4_B6D8_A0E020712C67"
name="BodyAngleOfRotationAboutLongitudinalAxis1D" description="An axis drawn through the body of
the vehicle from tail to nose in the direction of flight, or the direction the pilot faces.
Rotation about this axis is called bank or roll."
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_FE60D41B_86AF_4f9e_B507_96A5730B1E52"/>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_1B9ED73D_796D_487c_85CC_15170C5E25E5" name="BodyAngleOfRotationAboutVerticalAxis"
description="Also known as the Normal axis is drawn from top to bottom, and perpendicular to the
other two axes. Rotation about this axis is called yaw."
axis="EAID_C74601C9_0E7A_483b_AD4C_28D64BE141E3"
defaultValueTypeUnit="EAID_FE60D41B_86AF_4f9e_B507_96A5730B1E52"/>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_C0539EFA_68AA_4243_81E3_F2052C1B496A"
name="BodyAngleOfRotationAboutVerticallAxis1D" description="Also known as the Normal axis is
drawn from top to bottom, and perpendicular to the other two axes. Rotation about this axis is
called yaw." axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_FE60D41B_86AF_4f9e_B507_96A5730B1E52"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_B08FDE57_5C49_41e7_9D11_EF49F447F2BC"
name="BodyAngleLandmark">
<element xmi:type="logical:Landmark" xmi:id="EAID_7E2AA6B0_4E32_428e_B420_674937EB807B"
name="BodyAngleAttitudeEquilibrium" description="The point at which the local vehicle body frame
has no rotation in any of the three axes that originate at the vehicle center of gravity
(longitudinal, lateral, & vertical)."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_EB421BF8_9BA2_4b2c_9F12_89947506FFAC"
name="BodyAnglePiOver2RadianLeftRoll" description="The orientation of the local vehicle body
frame with respect to the vertical axis (or lateral axis) after a -Pi/2 radian rotation along
the longitudinal axis (a roll to left)"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_46C2DBA8_097E_4920_BA96_7CC8F27215AC"
name="BodyAnglePiOver4RadianPitchUp" description="The orientation of the local vehicle body
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 391
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_8B7A7415_09ED_466a_95DA_0D8D6CC83444"
name="CountingMeasures">
<element xmi:type="logical:Measurement" xmi:id="EAID_3A0FDB20_5D89_4e8c_A4B3_FC7719F166BA"
name="ResolutionMeasurement" measurementAxis="EAID_99FB9D82_EA30_4b1e_AB91_811010E0A1E5
EAID_76F671A6_9D73_4c82_A243_5BF51576FBA0"
measurementSystem="EAID_4FE8838C_BDFB_4d71_BB05_B6665A4465B9"
realizes="EAID_D6D476D1_7FDC_4375_B79B_785E5E9EBA3D"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_99FB9D82_EA30_4b1e_AB91_811010E0A1E5"
name="HorizontalResolutionMeasurementAxis" precision="1"
measurementSystemAxis="EAID_68D640BD_4D6B_4d01_BE52_5CDF213BC3EB"
realizes="EAID_D6D476D1_7FDC_4375_B79B_785E5E9EBA3D"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_76F671A6_9D73_4c82_A243_5BF51576FBA0"
name="VerticalResolutionMeasurementAxis" precision="1"
measurementSystemAxis="EAID_ADF21458_AA79_4492_AB79_71DE58A8D6DE"
realizes="EAID_D6D476D1_7FDC_4375_B79B_785E5E9EBA3D"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_3307EE35_37F1_4f0a_AB2C_3934FFD68366"
name="ResolutionLandmarks">
<element xmi:type="logical:Landmark" xmi:id="EAID_58DED9B5_477F_4054_AA12_9877FDC7782B"
name="OriginLandmark" description="Screen resolution origin expressed as (0,0)"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_57C5E3B5_6C67_4d1b_89B9_6EFD08E28F1B"
name="UnitPixelLandmark" description="A one unit pixel defined landmark."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_B0F4D136_C746_421e_AC20_CCD2912DA500"
name="ResolutionMeasurementSystem">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_888A1206_11E0_434b_A43D_1CC0091F92BB"
name="NaturalPixelCount" description="Pixel count as a natural numerical representation."
unit="EAID_0C482F2C_A548_4cf1_B9AD_5086FD62C41B"
valueType="EAID_7DE12CF5_1B85_482b_9830_783D356833E9"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_4FE8838C_BDFB_4d71_BB05_B6665A4465B9"
name="ResolutionMeasurementSystem" description="Measurement system for screen resolution
measurements." measurementSystemAxis="EAID_68D640BD_4D6B_4d01_BE52_5CDF213BC3EB
EAID_ADF21458_AA79_4492_AB79_71DE58A8D6DE"
coordinateSystem="EAID_91380EB8_66EF_4d12_AC1D_84FF7F719080" externalStandardReference=""
orientation="Value increases as Pixel Count increase">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_F4FA9B7F_4286_4f34_9D52_B8B4810DE16C" name="OriginResolutionReferencePoint"
description="screen (x,y) origin" landmark="EAID_58DED9B5_477F_4054_AA12_9877FDC7782B">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_F83C22E7_CA3F_4405_A97B_C8388252225D"
axis="EAID_68D640BD_4D6B_4d01_BE52_5CDF213BC3EB" value="0"
valueTypeUnit="EAID_888A1206_11E0_434b_A43D_1CC0091F92BB"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_16B296C2_5A87_4c1f_8E7E_9ADE3D4087F9"
axis="EAID_ADF21458_AA79_4492_AB79_71DE58A8D6DE" value="0"
valueTypeUnit="EAID_888A1206_11E0_434b_A43D_1CC0091F92BB"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_CFDDFAC6_32C7_4a89_AFDA_019DD2B5B204" name="UnitHorizontalResolutionReferencePoint"
description="Unit resolution in the horizontal direction (x,0)"
landmark="EAID_57C5E3B5_6C67_4d1b_89B9_6EFD08E28F1B">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_6106A8C5_C4B4_4051_A516_394C4DE0A589"
axis="EAID_68D640BD_4D6B_4d01_BE52_5CDF213BC3EB" value="1"
valueTypeUnit="EAID_888A1206_11E0_434b_A43D_1CC0091F92BB"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_319F870C_336A_4ca9_97AE_D7458E9EB116"
axis="EAID_ADF21458_AA79_4492_AB79_71DE58A8D6DE" value="0"
valueTypeUnit="EAID_888A1206_11E0_434b_A43D_1CC0091F92BB"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_616DD011_CF4C_483d_B9CB_0FE99097B0CE"
axis="EAID_ADF21458_AA79_4492_AB79_71DE58A8D6DE" value="0"
valueTypeUnit="EAID_888A1206_11E0_434b_A43D_1CC0091F92BB"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_67B2D930_02EF_4ab1_B71F_2CC1F29D9024" name="UnitVerticalResolutionReferencePoint"
description="Unit resolution in the vertical direction (0,y)"
landmark="EAID_57C5E3B5_6C67_4d1b_89B9_6EFD08E28F1B">
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 393
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_A6B2FEB4_F4FF_4b7b_973C_1CB5F0BB5FB6"
name="DensityMeasures">
<element xmi:type="logical:Measurement" xmi:id="EAID_069A0A6A_83E0_408f_9A38_D2A5CFAC0962"
name="DensityMeasurement" description="Measurement used to describe observable properties of
density." measurementAxis="EAID_57E6F76F_CAE2_4230_AFC1_CBC9C319C84E"
measurementSystem="EAID_824295E2_26C0_4f6b_AC04_AAD0D5331862"
realizes="EAID_4D9CB92E_1010_4fd8_9520_0184188C4374"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_B983D025_1147_429e_A693_68357EA7B8D8"
name="RelativeHumidtyMeasurement" description="Measure of relative humidity."
measurementAxis="EAID_9D3B6233_550D_4b5e_95C2_E3A06AE6CA15"
measurementSystem="EAID_249E210D_69CB_4315_BCF4_0DD0B5EE9AF0"
realizes="EAID_29F6EF02_F3F2_4590_8A84_3F28FE25B16F"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_57E6F76F_CAE2_4230_AFC1_CBC9C319C84E"
name="DensityMeasurementAxis" precision="0.001"
measurementSystemAxis="EAID_EAFBC1AF_4737_43c5_842B_282D3FCEBF0D"
realizes="EAID_4D9CB92E_1010_4fd8_9520_0184188C4374"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_9D3B6233_550D_4b5e_95C2_E3A06AE6CA15"
name="RelativeHumidtyMeasurementAxis" precision="0.001"
measurementSystemAxis="EAID_95FFC181_60A9_41cf_9486_008968CEDD17"
realizes="EAID_29F6EF02_F3F2_4590_8A84_3F28FE25B16F">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_316ED692_652D_4082_AAB4_294CD0350A62" constraintText="Values are constrained to the
range of 0 to 100%."/>
</element>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_46AE3D14_1673_4d58_B36F_2EF1CB493C2B"
name="DensityLandmarks">
<element xmi:type="logical:Landmark" xmi:id="EAID_9F7700F1_01DE_4525_A353_EFB98340E64A"
name="WaterDensityLandmark" description="Density of water at 4 degrees C and 1 Atmosphere
pressure"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_ED886DCA_4126_41d7_88CF_DEB43A2462C8"
name="ZeroDensityLandmark" description="Zero value of density (i.e., no mass in a volume)"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_DAC1E95A_198D_4400_87B1_E8C99B2C9FC5"
name="DensityMeasurementSystem">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_1194AAE8_DD2D_44c0_BD43_58C01BD29FFF"
name="RealKilogramsPerCubicMeter" description="Real kilograms per cubic meter."
unit="EAID_BE2795B1_06AD_4261_B7E8_8A4F4D94FC84"
valueType="EAID_1EA04603_631A_403e_82FD_D6E5825D1F31"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_824295E2_26C0_4f6b_AC04_AAD0D5331862"
name="DensityMeasurementSystem" description="Measurement system used in the measurement of density
(mass per unit volume)" measurementSystemAxis="EAID_EAFBC1AF_4737_43c5_842B_282D3FCEBF0D"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Values increase as density increases">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_C4FE9A96_0B55_4772_A566_8C3B434AA18E" name="ZeroDensityReferencePoint"
description="Reference point corresponding to a density of zero (no mass in a defined volume)"
landmark="EAID_ED886DCA_4126_41d7_88CF_DEB43A2462C8">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_4082573B_B06E_4a62_B5B4_E35307277C38"
axis="EAID_EAFBC1AF_4737_43c5_842B_282D3FCEBF0D" value="0.0"
valueTypeUnit="EAID_1194AAE8_DD2D_44c0_BD43_58C01BD29FFF"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_B67544D5_0574_43c3_B6AC_02BD0A4D8F76" name="WaterDensityReferencePoint"
description="Reference point corresponding to the density of water at 4 degrees C and 1
atmosphere of pressure." landmark="EAID_9F7700F1_01DE_4525_A353_EFB98340E64A">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_C035D78E_D6F3_47d9_BE86_AA03FD77F6F5"
axis="EAID_EAFBC1AF_4737_43c5_842B_282D3FCEBF0D" value="1000.0"
valueTypeUnit="EAID_1194AAE8_DD2D_44c0_BD43_58C01BD29FFF"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="EAID_EAFBC1AF_4737_43c5_842B_282D3FCEBF0D"
name="DensityMeasurementSystemAxis" description="Primary axis for measurements of density"
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_1194AAE8_DD2D_44c0_BD43_58C01BD29FFF"/>
</ldm>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 395
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_37C9B33F_D967_4ee4_8DF4_29C3A93114CB"
name="ElectricCapacitanceMeasurementAxisMicroFarads" precision=".001"
measurementSystemAxis="EAID_4F1DFAAF_75EF_460f_B55F_D3876B433EFA"
realizes="EAID_FFF9F507_6448_48bd_B548_5B85F4057903">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_6547DB5A_FA45_4e86_83E2_84DFAA7E3289" constraintText="Always >= 0"/>
</element>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_10CC9195_10BE_4103_9B78_7FF765EF835C"
name="ElectricCapacitanceMeasurementSystem" description="Collection of elements applicable to
Electric Capacitance measurements.">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_88944113_E0D8_475b_90B9_A0BF53FE5027"
name="RealFarad" description="Electric capacitance described in real numerical value Farad."
unit="EAID_2DEC664F_516A_499d_A29B_661CC1D8C7B2"
valueType="EAID_7CB1E0A3_7D27_45fa_BF9E_22EB15886D68"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_5EB6B860_4679_41b4_AB31_F06F93C6F5E3"
name="ElectricCapacitanceMeasurementSystem" description="The measurement system to describe an
objects ability to store an electrical charge."
measurementSystemAxis="EAID_4F1DFAAF_75EF_460f_B55F_D3876B433EFA"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Values increase as capacitance increases.">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_AEDA2D5B_F743_4e70_A597_17CBDA09232E" name="ZeroCapacitanceReferencePoint"
description="Representative of no measureable electrical capacitance."
landmark="EAID_425AD038_620E_4728_AAEA_06C1B85F4160">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_84D9B296_E078_4453_AEE4_7BC3C0234C45"
axis="EAID_4F1DFAAF_75EF_460f_B55F_D3876B433EFA" value="0"
valueTypeUnit="EAID_88944113_E0D8_475b_90B9_A0BF53FE5027"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_181F8DE7_E8CE_432c_860D_8F8331EB3C5A" name="OneFaradCapacitanceReferencePoint"
description="Representative of ability to store one farad unit of electrical charge."
landmark="EAID_79DB8969_ED34_45fa_B559_C6C84BCA72C0">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_768FA36A_E0E1_434d_9747_F9A6E94AAD31"
axis="EAID_4F1DFAAF_75EF_460f_B55F_D3876B433EFA" value="1"
valueTypeUnit="EAID_88944113_E0D8_475b_90B9_A0BF53FE5027"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_4F1DFAAF_75EF_460f_B55F_D3876B433EFA"
name="ElectricCapacitanceMeasurementSystemAxis" description="The measurement system axis to
describe the nature of the electric capacitance measurement."
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_88944113_E0D8_475b_90B9_A0BF53FE5027"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_9AA6CDE5_4DDE_4e2a_8A65_B28A159A7A85"
name="ElectricCharge" description="Root package for Electric Charge measure">
<element xmi:type="logical:Measurement" xmi:id="EAID_B48F7C3A_377D_4969_A199_C77B8B11BBCA"
name="ElectricChargeMeasurementAmpHour" description="The physical property of matter that causes it
to experience a force when close to other electrically charged matter; the charge is either
positive: having more protons than electrons or negative: having more electrons than protons."
measurementAxis="EAID_BE0B46F9_1387_40b3_86E4_3AFB6476CBFD"
measurementSystem="EAID_3B0BCA26_22AB_4c9e_9047_D9107BD68377"
realizes="EAID_0B869DF6_099A_4526_95F5_4BFC7393718E"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_2BA7BCEA_FA7F_48dc_BEEF_B83BA9D7F83C"
name="ElectricChargeMeasurement" description="The physical property of matter that causes it to
experience a force when close to other electrically charged matter; the charge is either positive:
having more protons than electrons or negative: having more electrons than protons."
measurementAxis="EAID_5BD43CDE_4522_40cf_8AE6_C65552E0BCF9"
measurementSystem="EAID_3B0BCA26_22AB_4c9e_9047_D9107BD68377"
realizes="EAID_0B869DF6_099A_4526_95F5_4BFC7393718E"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_BE0B46F9_1387_40b3_86E4_3AFB6476CBFD"
name="ElectricChargeMeasurementAxisAmpHour"
valueTypeUnit="EAID_B1320CCC_42D6_40f1_ADFE_41BD8B26E069" precision="0.001"
measurementSystemAxis="EAID_8D1D2442_0110_4250_BA82_97688EC62F37"
realizes="EAID_0B869DF6_099A_4526_95F5_4BFC7393718E"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 397
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Values increase as charge density increases.">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_D9D49BE6_E438_4e43_8A62_2702AD15CF9D" name="ZeroChargeDensity"
description="Representative of no measureable linear electric charge density."
landmark="EAID_3099F886_D076_4f49_98A5_452E887259DA">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_DFDF7387_5899_49d8_9EB7_CD2BBC89BDA9"
axis="EAID_B383AED6_CE79_452a_83B5_3D3452624D24" value="0"
valueTypeUnit="EAID_FC0CC9EF_5264_46f8_97E5_BD9B4B98D732"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_73DE5CE4_CA7B_45e8_8CB5_2A91EA022C59" name="OneCoulombPerMeterChargeDensity"
description="Representative of one unit of linear electric charge density measured in coulombs
per meter" landmark="EAID_E266B00D_B505_41f8_8219_9AF152973344">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_7AA65249_F422_4a22_AB8E_70BCDE44CF8B"
axis="EAID_B383AED6_CE79_452a_83B5_3D3452624D24" value="1"
valueTypeUnit="EAID_FC0CC9EF_5264_46f8_97E5_BD9B4B98D732"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_B383AED6_CE79_452a_83B5_3D3452624D24"
name="ElectricChargeDensityLinearMeasurementSystemAxis" description="The measurement system axis
to describe the electric charge density of per unit length."
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_FC0CC9EF_5264_46f8_97E5_BD9B4B98D732"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_5C6DCB9B_9DEF_4ca7_AE1B_912C5ADD7AE5"
name="ElectricCurrent" description="Root package for electtric current measure">
<element xmi:type="logical:Measurement" xmi:id="EAID_ABF24DC3_5528_4c1f_9B20_FB1962FA03F1"
name="ElectricCurrentMeasurement" description="An electric current is a flow of electric charge
when there is voltage present across a conductor."
measurementAxis="EAID_AFAA7020_957F_4f96_A42A_DBFF475E676A"
measurementSystem="EAID_0BBECB23_57B7_42d6_B9FD_4D5DC34E99B8"
realizes="EAID_35DDCEBF_B184_4159_B5C4_932587A840B5"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_AFAA7020_957F_4f96_A42A_DBFF475E676A"
name="ElectricCurrentMeasurementAxis" precision="0.001"
measurementSystemAxis="EAID_50C42368_AC6D_49d2_8BE4_652F6B4AD446"
realizes="EAID_35DDCEBF_B184_4159_B5C4_932587A840B5"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_36935DC1_A845_4466_AE64_5917C02AA51C"
name="ElectricCurrentMeasurementSystem" description="Collection of elements applicable to Electric
Current measurements.">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_08C169D6_365F_4573_BB2D_87F29AFF3BF0"
name="RealAmp" description="Electric current described in the real numerical value of Amp."
unit="EAID_1BC72413_1442_4d9a_BBC6_5D13EA4B334F"
valueType="EAID_7CB1E0A3_7D27_45fa_BF9E_22EB15886D68"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_0BBECB23_57B7_42d6_B9FD_4D5DC34E99B8"
name="ElectricCurrentMeasurementSystem" description="The measurement system to describe
electrical current as the rate at which a charge flows past a point on a circuit."
measurementSystemAxis="EAID_50C42368_AC6D_49d2_8BE4_652F6B4AD446"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Right-Handed">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_D788B9DC_6BF3_4d81_B245_7B9C4F2C57A7" name="ZeroCurrentReferencePoint"
description="No electric current is the absence of flow of electric charge moving through a
wire." landmark="EAID_C4DAF340_8D6D_494b_A77D_B012BDCC2CB0">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_65041C17_2ED2_4ee0_9AE8_24A640DFB3F8"
axis="EAID_50C42368_AC6D_49d2_8BE4_652F6B4AD446" value="0"
valueTypeUnit="EAID_08C169D6_365F_4573_BB2D_87F29AFF3BF0"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_F20FBF46_F3AE_44ff_AC38_CD7A65FCC0ED" name="OneAmpCurrentReferencePoint"
description="A positive one amp current value means that the actual direction of current
through that circuit element is same direction of the chosen reference direction."
landmark="EAID_1F30EE79_9169_465b_865B_96D6C06844B4">
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 399
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_F483C36F_331D_4d0c_9EDD_912DCD43CE91"
name="OneAmpPerSquareMeterDensityYDirection" description="Representative of measureable vector
direction of electric current density in the Y direction."
landmark="EAID_97227095_5555_43bc_A29F_18C21EF95AD1">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_0BE0740D_F248_449a_963A_22D8F1B93DB0"
axis="EAID_6146F258_1614_44a4_92C3_D40E23FF89B9" value="0.0"
valueTypeUnit="EAID_D0606B2C_8462_4b2d_969A_CA3E6A32276C"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_4FF3F3AD_B986_4983_8A66_5DFCCE79A852"
axis="EAID_5489D8EA_46AC_4632_8A58_B90539C4B59D" value="1.0"
valueTypeUnit="EAID_D0606B2C_8462_4b2d_969A_CA3E6A32276C"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_1528AABB_3F0E_449e_8CF5_D6EAD649505A"
axis="EAID_E044265D_45C5_4ed4_8A99_C51C425DF2F9" value="0.0"
valueTypeUnit="EAID_D0606B2C_8462_4b2d_969A_CA3E6A32276C"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_1D428E76_D0B4_4d52_89A9_046287D3630A"
name="OneAmpPerSquareMeterDensityZDirection" description="Representative of measureable vector
direction of electric current density in the Z direction."
landmark="EAID_3812651D_A79A_4181_8D48_8E7D2B39160E">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_57A067CF_8E75_4aad_8C21_B5012315F693"
axis="EAID_6146F258_1614_44a4_92C3_D40E23FF89B9" value="0.0"
valueTypeUnit="EAID_D0606B2C_8462_4b2d_969A_CA3E6A32276C"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_71B1245A_ECD5_4a92_9B94_6802ECE82FDC"
axis="EAID_5489D8EA_46AC_4632_8A58_B90539C4B59D" value="0.0"
valueTypeUnit="EAID_D0606B2C_8462_4b2d_969A_CA3E6A32276C"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_F8E725C6_4842_4692_867E_F180C2B32A72"
axis="EAID_E044265D_45C5_4ed4_8A99_C51C425DF2F9" value="1.0"
valueTypeUnit="EAID_D0606B2C_8462_4b2d_969A_CA3E6A32276C"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_FF2A9D86_F4E3_43b1_911B_F038297B2D75"
name="OneAmpPerSquareMeterDensityXDirection" description="Representative of measureable vector
direction of electric current density in the X direction."
landmark="EAID_D906AAE7_5FE3_46a0_8164_81A17CE49BDB">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_29043933_0AAF_4908_B83F_7663090F50B9"
axis="EAID_6146F258_1614_44a4_92C3_D40E23FF89B9" value="1.0"
valueTypeUnit="EAID_D0606B2C_8462_4b2d_969A_CA3E6A32276C"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_D98A1665_F1C9_4ada_B665_63FF3240D6E5"
axis="EAID_5489D8EA_46AC_4632_8A58_B90539C4B59D" value="0.0"
valueTypeUnit="EAID_D0606B2C_8462_4b2d_969A_CA3E6A32276C"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_78D0A7CE_1478_4a1f_AD1F_68BE0293C1FC"
axis="EAID_E044265D_45C5_4ed4_8A99_C51C425DF2F9" value="0.0"
valueTypeUnit="EAID_D0606B2C_8462_4b2d_969A_CA3E6A32276C"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_6146F258_1614_44a4_92C3_D40E23FF89B9"
name="ElectricCurrentDensityMeasurementSystemXAxis" description="The measurement system axis to
describe the nature of the electric current density measurement X direction."
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_D0606B2C_8462_4b2d_969A_CA3E6A32276C"/>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_5489D8EA_46AC_4632_8A58_B90539C4B59D"
name="ElectricCurrentDensityMeasurementSystemYAxis" description="The measurement system axis to
describe the nature of the electric current density measurement Y direction."
axis="EAID_185CD9A8_B677_41ab_907D_C7F232756DCE"
defaultValueTypeUnit="EAID_D0606B2C_8462_4b2d_969A_CA3E6A32276C"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 401
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_6FE2873F_6DC7_416e_B5B4_C25387FF0D58"
name="ElectricPotentialMeasurementSystem" description="Measurement system to describe the amount
of potential energy per unit of charge."
measurementSystemAxis="EAID_387376D6_BB43_44ac_9375_40F79A2E3641"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Values increase as electric potential increases.">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_FE16C2DC_AFB9_4763_AE36_8D3FE34ADBAA" name="ZeroVoltageReferencePoint"
description="Representative of no measureable electric potential energy."
landmark="EAID_02BD4EDE_A62E_44d3_806E_5F0959476547">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_AD4BEDEF_5FA7_4e6b_AF5B_E314614DE4B7"
axis="EAID_387376D6_BB43_44ac_9375_40F79A2E3641" value="0"
valueTypeUnit="EAID_BB71A3BE_09B3_4824_95EF_19A4464F51B8"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_7BA0F893_82EE_44b6_99C6_B3C6830EA306" name="OneVoltReferencePoint"
description="Representative of voltage measured as one volt of electric potential.."
landmark="EAID_36E07197_7892_4ac1_A1DE_03F74C4423F3">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_0CE5E2ED_452F_4ec0_A6D7_290C550B4E7E"
axis="EAID_387376D6_BB43_44ac_9375_40F79A2E3641" value="1"
valueTypeUnit="EAID_BB71A3BE_09B3_4824_95EF_19A4464F51B8"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_387376D6_BB43_44ac_9375_40F79A2E3641" name="ElectricPotentialMeasurementSystemAxis"
description="The measurement system axis to describe the nature of the electrical potential
measurement." axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_BB71A3BE_09B3_4824_95EF_19A4464F51B8"/>
</ldm>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_E26B9376_676D_49b1_9B1D_53C60D15AB0B"
name="EnergyMeasures">
<element xmi:type="logical:Measurement" xmi:id="EAID_8235F89B_570F_44f3_8727_450838068E4E"
name="AbsorbedDoseMeasurement" description="Measurement for absorbed doses of energy."
measurementAxis="EAID_D31D0AEB_C79B_459e_A73E_64936C46B1B0"
measurementSystem="EAID_B590A760_ABD9_4fce_AB3E_FC4F371B75D5"
realizes="EAID_AFCB75C7_863B_4112_8F1E_2FB4FE1D4D2A"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_D239BB0A_61E9_4d73_B220_267948315A3B"
name="AbsorbedDoseRateMeasurement" description="Measurement for absorbed dose rates of energy."
measurementAxis="EAID_FA7A6735_EC09_41b6_8827_23E614353067"
measurementSystem="EAID_480C3917_A3B2_485d_BE04_C95A1B7ACA62"
realizes="EAID_EEED99B8_359B_41bf_B6B0_2BA8EC5E1B07"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_6C9FA1B6_8028_4e37_B5C2_DA1F53AE15B1"
name="DoseEquivalentMeasurement" description="Measurement of dose equivalence."
measurementAxis="EAID_B65BC791_44F7_4bf8_BC40_F903D9667248"
measurementSystem="EAID_B4EBE367_B3E2_40d8_ABED_E1C8BE743AA2"
realizes="EAID_29F32E46_EDB2_472d_80CA_7B91F8275889"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_EE720C4B_87E1_4002_849B_B49DB991A0AB"
name="EnergyMeasurement" description="Measurement for energy."
measurementAxis="EAID_CFD06888_1695_41c6_9409_2C79101B0BD1"
measurementSystem="EAID_35B208F2_17F0_4a5e_B767_DC3DA3ADFF87"
realizes="EAID_32D02294_1A54_48ee_AA9D_2EA0EDBC4B76"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_D31D0AEB_C79B_459e_A73E_64936C46B1B0"
name="AbsorbedDoseMeasurementAxis" precision="0.000001"
measurementSystemAxis="EAID_48DD6F0C_0129_4d4a_B28C_90CE92C8B6E3"
realizes="EAID_AFCB75C7_863B_4112_8F1E_2FB4FE1D4D2A"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_FA7A6735_EC09_41b6_8827_23E614353067"
name="AbsorbedDoseRateMeasurementAxis" precision="0.001"
measurementSystemAxis="EAID_2061E509_E576_4a46_9159_FE533C475099"
realizes="EAID_EEED99B8_359B_41bf_B6B0_2BA8EC5E1B07"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_B65BC791_44F7_4bf8_BC40_F903D9667248"
name="DoseEquivalentMeasurementAxis" precision="0.0001"
measurementSystemAxis="EAID_BB03831D_9E78_4a66_82E2_40B4EB76F437"
realizes="EAID_29F32E46_EDB2_472d_80CA_7B91F8275889"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 403
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_019E1CF2_F9C6_40af_97F7_24E68D5C2759"
name="OneGrayPerSecondAbsorbedDoseRateReferencePoint" description="Represents 1 unit value of
absorbed dose rate." landmark="EAID_47DED456_6C3D_44c7_9586_CAFE4585DB0E">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_E6673EA7_F2FC_4b52_B5DA_963F9C7A3D45"
axis="EAID_2061E509_E576_4a46_9159_FE533C475099" value="1.0"
valueTypeUnit="EAID_AC8A2C1D_F694_403a_A8A3_79014B281D10"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_EA33F6E2_A38C_4fd8_8236_0F33D7875D1B" name="ZeroAbsorbedDoseRateReferencePoint"
description="Represents a zero value of absorbed dose rate"
landmark="EAID_FD255658_0DE4_4a8c_8C24_E8A7983EA13D">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_5A89051E_0E85_490b_903D_289958F27BF6"
axis="EAID_2061E509_E576_4a46_9159_FE533C475099" value="0.0"
valueTypeUnit="EAID_AC8A2C1D_F694_403a_A8A3_79014B281D10"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="EAID_2061E509_E576_4a46_9159_FE533C475099"
name="AbsorbedDoseRateMeasurementSystemAxis" description="The measurement system axis to describe
the nature of measuring absorbed doses of energy." axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_AC8A2C1D_F694_403a_A8A3_79014B281D10">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_1F5B2E71_5834_4214_85AC_A8BC0FEEC1EA" constraintText="Always >= 0"/>
</element>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_4FCEC184_A34E_4892_A205_A30FEEA2C46B"
name="DoseEquivalentLandmarks">
<element xmi:type="logical:Landmark" xmi:id="EAID_FDC373B4_972D_4e28_BF96_F2C36D7ADDD3"
name="OneSievertDoseEquivalentLandmark" description="One Sievert dose equivalent."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_DA54FC44_ED7D_48f6_AB58_4EB88B717F97"
name="ZeroDoseEquivalentLandmark" description="Zero dose equivalent"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_C73089B7_D748_467b_A674_AB298B91299B"
name="DoseEquivalentMeasurementSystem">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_46C7930A_5384_4f0e_BF83_DF1D0ABF6026"
name="NonNegativeRealSieverts" description="Sieverts as a non-negative real representation."
unit="EAID_FEF61F65_30EA_4429_BF95_EC1A4A8AC7E7"
valueType="EAID_1EA04603_631A_403e_82FD_D6E5825D1F31"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_B4EBE367_B3E2_40d8_ABED_E1C8BE743AA2"
name="DoseEquivalentMeasurementSystem" description="Measurement system for measuring dose
equivalent." measurementSystemAxis="EAID_BB03831D_9E78_4a66_82E2_40B4EB76F437"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Values increase as dose equivalent increases.">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_00C8A671_0B68_4506_B0E6_E0C87D23C5BB" name="ZeroDoseEquivalentReferencePoint"
description="zero amount of dose equivalent reference point"
landmark="EAID_DA54FC44_ED7D_48f6_AB58_4EB88B717F97">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_D92AE307_9C49_45ed_9F50_56959A048DA4"
axis="EAID_BB03831D_9E78_4a66_82E2_40B4EB76F437" value="0.0"
valueTypeUnit="EAID_46C7930A_5384_4f0e_BF83_DF1D0ABF6026"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_6DC57B3A_3E40_4338_8F01_C7F4DA9B22FD" name="OneSievertDoseEquivalentReferencePoint"
description="Unit amount of dose equivalent reference point"
landmark="EAID_FDC373B4_972D_4e28_BF96_F2C36D7ADDD3">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_C4AF5F2C_8209_4659_9EC1_C66804F0C374"
axis="EAID_BB03831D_9E78_4a66_82E2_40B4EB76F437" value="1.0"
valueTypeUnit="EAID_46C7930A_5384_4f0e_BF83_DF1D0ABF6026"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="EAID_BB03831D_9E78_4a66_82E2_40B4EB76F437"
name="DoseEquivalentMeasurementSystemAxis" description="Measurement system axis for dose equivalent
measurements." axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_46C7930A_5384_4f0e_BF83_DF1D0ABF6026"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 405
<element xmi:type="logical:Landmark" xmi:id="EAID_7EB3F434_82EC_4375_A434_5085A142F9BA"
name="ZeroForceLandmark" description="Landmark indicating a force of zero (no applied force)"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_A1FF4BC8_634C_4fe2_99BE_47273C78E79D"
name="ForceMeasurementSystem">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_D40F5AB0_A485_4b81_AA5B_E668E0ACB798"
name="RealNewtons" description="Value type used to describe a value of Newtons as a real."
unit="EAID_3F9CBF28_F842_4896_ABEC_B4498760BD80"
valueType="EAID_7CB1E0A3_7D27_45fa_BF9E_22EB15886D68"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_1811EA5E_350D_45ca_9BE1_1E9D148DB99F"
name="ForceMeasurementSystem" description="Measurement system used to measure values of force"
measurementSystemAxis="EAID_763EF3D5_B7E4_4c88_88A6_5843A9D2A1FF"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Values increase as force increases.">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_50ED91CE_76C8_485c_A7B9_4CCF2F142A08" name="KilopondForceReferencePoint"
description="Reference point indicating a value of 1 kilopond of applied force"
landmark="EAID_75F976AD_CA44_4adb_8D48_8BA2B25A1DCD">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_9FB666DC_BBE3_4bdf_A369_F70CE02C7F96"
axis="EAID_763EF3D5_B7E4_4c88_88A6_5843A9D2A1FF" value="9.80665"
valueTypeUnit="EAID_D40F5AB0_A485_4b81_AA5B_E668E0ACB798"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_F11A00B4_2F80_425e_B134_9FB2542E1B61" name="ZeroForceReferencePoint"
description="Reference point indicating a value of zero applied force"
landmark="EAID_7EB3F434_82EC_4375_A434_5085A142F9BA">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_C20DB0BF_1455_4f4a_BF97_EF2679C53818"
axis="EAID_763EF3D5_B7E4_4c88_88A6_5843A9D2A1FF" value="0.0"
valueTypeUnit="EAID_D40F5AB0_A485_4b81_AA5B_E668E0ACB798"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="EAID_763EF3D5_B7E4_4c88_88A6_5843A9D2A1FF"
name="ForceMeasurementSystemAxis" description="Measurement system axis used to measure values of
force." axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_D40F5AB0_A485_4b81_AA5B_E668E0ACB798"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_6CA6C2B7_0436_414a_B387_95B15A033D83"
name="TorqueLandmarks">
<element xmi:type="logical:Landmark" xmi:id="EAID_12C94E15_7436_4c2e_891F_279398A2CD96"
name="OneNewtonMeterLandmark" description="Unit value of torque representing 1 newton of force
applied to a moment arm of 1 meter."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_0A16B1C3_3293_4b6d_AE0B_CD5DB0606EC2"
name="ZeroTorqueLandmark" description="No measureable torque."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_F2AB5E2B_3EB4_4603_B191_9DB594494BD8"
name="TorqueMeasurementSystem">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_2E982ED3_8795_413c_9E7D_AF1362B8E313"
name="RealNewtonMeters" description="Real newton meters"
unit="EAID_0A9F29A7_3ABC_4790_9E6D_CEBD6C7DBE5E"
valueType="EAID_7CB1E0A3_7D27_45fa_BF9E_22EB15886D68"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_A7098479_C56F_4dae_B04A_092FA4562F75"
name="TorqueMeasurementSystem" description="Measurement system used to measure values of torque"
measurementSystemAxis="EAID_B2CA99C4_C812_4ecf_AE6E_BA15A40467E3"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Values increase as torque increases">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_DCB29640_5B46_4820_93A6_2001AF13D37B" name="ZeroTorqueReferencePoint"
description="Reference point indicating a value measurement of zero torque"
landmark="EAID_0A16B1C3_3293_4b6d_AE0B_CD5DB0606EC2">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_15D18789_956D_468e_BA59_191A890A8425"
axis="EAID_B2CA99C4_C812_4ecf_AE6E_BA15A40467E3" value="0.0"
valueTypeUnit="EAID_2E982ED3_8795_413c_9E7D_AF1362B8E313"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_43B3D3A9_8135_4f01_928D_AB6B81E910E2" name="OneNewtonMeterReferencePart"
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 407
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_D7BCB56E_6A7C_49a8_BC34_45FCEB45A6C3"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_67A5C16C_9418_41af_B588_2D7F0FDCF8ED"
name="LengthMeasures">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_642F751C_E910_46ec_9EA5_066FF96764C1"
name="DistanceMeasure">
<element xmi:type="logical:Measurement" xmi:id="EAID_8AA5E3A8_094B_4a89_A0CE_5E652A534005"
name="DistanceMeasurement" description="Measurement for distance"
measurementAxis="EAID_418E7BCF_83F3_4c3c_B7C9_ACA0796FB814"
measurementSystem="EAID_63B53D7F_65B9_4808_94CB_79D57291FFF1"
realizes="EAID_80D92BE8_8DF0_4f7c_82A6_CBF5DF17443A"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_418E7BCF_83F3_4c3c_B7C9_ACA0796FB814"
name="DistanceMeasurementAxis" precision="0.0001"
measurementSystemAxis="EAID_28497806_74F7_4473_A56D_C9978462C722"
realizes="EAID_80D92BE8_8DF0_4f7c_82A6_CBF5DF17443A"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_CDEEE592_702E_4842_AD6E_72C39B337181"
name="DistanceMeasurementSystem">
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_63B53D7F_65B9_4808_94CB_79D57291FFF1"
name="DistanceMeasurementSystem" description="Measurement system for distance"
measurementSystemAxis="EAID_28497806_74F7_4473_A56D_C9978462C722"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Value increases as distance increases">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_6654049D_9954_49fe_9D11_31C05FCC2076" name="ZeroDistanceReferencePoint"
description="zero distance reference point"
landmark="EAID_DD4089D3_E5F9_459f_AF68_2E7D03864E85">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_9BC877DD_877F_495b_8D94_8B2D61BB0FCE"
axis="EAID_28497806_74F7_4473_A56D_C9978462C722" value="0.0"
valueTypeUnit="EAID_08FEE312_2D6C_498d_B43C_0A241BED52B2"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_C095602A_9B87_446b_88FB_860C39785536" name="OneMeterDistanceReferencePoint"
description="Unit distance reference point"
landmark="EAID_80F96761_0360_479d_98D0_300A625D8793">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_B3526424_147A_4bfe_9E72_C0DD95FFD0C0"
axis="EAID_28497806_74F7_4473_A56D_C9978462C722" value="1.0"
valueTypeUnit="EAID_08FEE312_2D6C_498d_B43C_0A241BED52B2"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_28497806_74F7_4473_A56D_C9978462C722" name="DistanceMeasurementSystemAxis"
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_08FEE312_2D6C_498d_B43C_0A241BED52B2"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_6F44EB0A_D348_4d67_A98B_4943DE4C339B"
name="ExtentMeasures">
<element xmi:type="logical:Measurement" xmi:id="EAID_9F6CBA03_9585_4e44_A3F2_4AB40FE76C7D"
name="ExtentMeasurement" description="Length distance dimension of the extent."
measurementAxis="EAID_025B2FE1_E76C_4b77_ABF9_8475DD97BCE5
EAID_E145CFA5_FCBB_4d8e_B452_DA9F6D17F2CF"
measurementSystem="EAID_CA5FF699_AFF6_41b4_A05F_9FB0BFCF2BA8"
realizes="EAID_0C0725EB_2FB1_46d2_A11A_716E6D6299E3"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_025B2FE1_E76C_4b77_ABF9_8475DD97BCE5"
name="LengthExtentMeasurementAxis" precision="0.001"
measurementSystemAxis="EAID_9670FC89_77BA_435e_8566_E620BCF11743"
realizes="EAID_0C0725EB_2FB1_46d2_A11A_716E6D6299E3"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_E145CFA5_FCBB_4d8e_B452_DA9F6D17F2CF"
name="WidthExtentMeasurementAxis" precision="0.001"
measurementSystemAxis="EAID_A7E348A5_3B56_4b27_BCDF_5CCD3E178C10"
realizes="EAID_0C0725EB_2FB1_46d2_A11A_716E6D6299E3"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_5EA28638_8A2C_45a6_8C1F_7C9EC5DA8FED"
name="ExtentMeasurementSystem">
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 409
<element xmi:type="logical:Landmark" xmi:id="EAID_80F96761_0360_479d_98D0_300A625D8793"
name="OneMeterDistanceLandmark" description="One meter."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_BE2755D6_D723_4955_A378_04212C88ACF3"
name="ONeMeterWidthExtentLandmark" description="One Meter width landmark for extent"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_DD4089D3_E5F9_459f_AF68_2E7D03864E85"
name="ZeroDistanceLandmark" description="Zero distance."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_AD61766A_1A38_4e9c_9F7E_680E1CDD052B"
name="LengthValueUnitType" description="Length measures common value unit pairs">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_08FEE312_2D6C_498d_B43C_0A241BED52B2"
name="NonNegativeRealMeter" description="Meter as a non-negative real numerical representation."
unit="EAID_0A9F29A7_3ABC_4790_9E6D_CEBD6C7DBE5E"
valueType="EAID_1EA04603_631A_403e_82FD_D6E5825D1F31"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_E789B9AA_560D_437c_A519_E00704438780"
name="LocalAir" description="Length measurements based on the Local Air Reference Frame."/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_47FB3278_127F_4372_90C5_026806D81CA2"
name="LocalBody" description="Length measurements based on the Local Body Reference Frame."/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_C3B69079_5BCD_414b_AF59_DB18386970DE"
name="LocalGround" description="Length measurements based on the Local Ground Reference Frame."/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_D2CEC778_6599_40a5_B974_E45C3FAD538B"
name="LocalHorizontal" description="Length measurements based on the Local Horizontal Reference
Frame."/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_4A531006_8DAE_4373_9413_FAA3AEDC7186"
name="LocalNorthEastDown" description="Length measurements based on the Local North East Down
Reference Frame."/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_A5691424_7631_47f7_85BE_0761869349F7"
name="LocalVehicle" description="Length measurements based on the Local Vehicle Reference Frame."/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_BC6E8DBF_BC82_4eee_B57D_628DFD2E97DD"
name="MeanSeaLevel" description="Length measurements based on the Mean Sea Level Reference Frame."/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_D6B2314B_B07A_4d2a_89CE_3F39060A3534" name="WGS84"
description="Length measurements based on the WGS-84 Reference Frame."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_D2B4934D_072A_4582_8210_0E84B8CC846C"
name="LuminousIntensityMeasures">
<element xmi:type="logical:Measurement" xmi:id="EAID_8156220D_353F_4be1_95A6_FA2553A6F3DD"
name="LuminousIntensityMeasurement" description="Measurement of wavelength weighted power (as
perceived by human eyes) emitted by a light source per unit solid angle. "
measurementAxis="EAID_F322AA41_26F6_4dd1_A3C9_1CF2B763BFBA"
measurementSystem="EAID_76A044C2_309B_4032_9FD0_493AEA64E632"
realizes="EAID_8B463517_0982_4cd0_884D_DD91D17AC345"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_F322AA41_26F6_4dd1_A3C9_1CF2B763BFBA"
name="LuminousIntensityMeasurementAxis" precision="0.001"
measurementSystemAxis="EAID_C186715F_C942_416c_A08C_EF95261E82E7"
realizes="EAID_8B463517_0982_4cd0_884D_DD91D17AC345"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_F3688BCF_0AE5_4ca9_BB0C_11EC5E0BD15C"
name="LuminousIntensityLandmarks">
<element xmi:type="logical:Landmark" xmi:id="EAID_E55AD9BB_D33A_4a81_8ED1_1B0833BA91BF"
name="Darkness" description="Represents no visible light."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_899B5AFF_D42E_4649_8089_0D7F02146AB6"
name="SingleCandela" description="power emitted by a light source in a particular direction"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_36CD1855_3C72_48b8_BE7D_B1E6C4FFE78C"
name="LuminousIntensityMeasurementSystem">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_2AD72CD8_0C70_4620_A675_683A13073D43"
name="NonNegativeRealCandelas" description="power emitted by a light source in a particular
direction" unit="EAID_846F619C_9BC7_40b2_AAA5_3CD2222F84CF"
valueType="EAID_1EA04603_631A_403e_82FD_D6E5825D1F31"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_76A044C2_309B_4032_9FD0_493AEA64E632"
name="LuminousIntensityMeasurementSystem" description="Measurement system for LuminusIntensity
measured in Candelas" measurementSystemAxis="EAID_C186715F_C942_416c_A08C_EF95261E82E7"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Value increases as luminous intensity increases.">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_E9211DAA_1222_4019_95A2_F071E6D2ADF6" name="LuminousIntensityOfOne"
description="Luminous Intensity of a single Candela"
landmark="EAID_899B5AFF_D42E_4649_8089_0D7F02146AB6">
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 411
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_BB6C5E54_554A_4c0e_AA0D_856061A0AC49"
axis="EAID_1B100E6A_9C51_4e2a_A9A7_0DD7B2772F94" value="0"
valueTypeUnit="EAID_B4409B5D_DA7B_4d42_9A81_C62B97A89B11"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="EAID_1B100E6A_9C51_4e2a_A9A7_0DD7B2772F94"
name="MassMeasurementSystemAxis" description="The measurement system axis describing an objects
resistance to changing its state of motion." axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_B4409B5D_DA7B_4d42_9A81_C62B97A89B11"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_8D89E667_43D0_40bd_9175_D2444B83B96E"
name="OrientationMeasures">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_C038CD82_5CA1_459a_B2EC_0285C602DD57"
name="AttitudeMeasures">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_2599B789_CB20_440f_B297_B743757DDEA6"
name="BodyFrameAttitudeMeasure">
<element xmi:type="logical:Measurement" xmi:id="EAID_71E81CF0_EAF6_44d4_BD02_86707A5FC113"
name="BodyFrameAttitudeMeasurement" description="The measure to describe the attitude of an
aircraft in flight with the relative orientation is body-fixed, with origins moving along with
the aircraft, typically at the center of gravity"
measurementAxis="EAID_D2CAC852_73A3_4aec_9790_9640043C825C
EAID_C3BAB08D_406E_4267_B08C_E97972CB018C EAID_821137A0_2FF0_4ad2_8E68_8EC50128AD03"
measurementSystem="EAID_449F4D2F_6805_4049_BD5B_FA27FD570EEF"
realizes="EAID_AB3FAE18_6F92_4a74_812F_77AF2DCD6F6F"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_199CAB4E_D00F_4e3c_BB08_00DCC2C374AC"
name="BodyFrameAttitudeMeasurementDegrees" description="The measure to describe the attitude of
an aircraft in flight with the relative orientation is body-fixed, with origins moving along
with the aircraft, typically at the center of gravity"
measurementAxis="EAID_1E4718CF_69A1_459d_B69A_73171E3B4B38
EAID_FAE1C598_8B37_4329_A065_0AEE5E518F65 EAID_C6705DC3_8C55_4de3_A7A6_C7B36A93C5A3"
measurementSystem="EAID_449F4D2F_6805_4049_BD5B_FA27FD570EEF"
realizes="EAID_AB3FAE18_6F92_4a74_812F_77AF2DCD6F6F"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_9B4979E6_2648_41b3_B77B_09B193C47BCB"
name="BodyFrameAttiudeLandmark">
<element xmi:type="logical:Landmark" xmi:id="EAID_39753BD3_1FF4_47ca_A367_845117E99553"
name="BodyAttitudeOriginLandmark" description="The point at which the body attitude is aligned
to the local level frame and has no rotation in any of the three axes that originate at the
vehicle center of gravity (longitudinal, lateral, & vertical)."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_913ABE8D_D741_4b8e_AA57_E015677CB52D"
name="BodyAttitudePiOver2RadianLeftRoll" description="The orientation of the body with respect
to the vertical axis (or lateral axis) after a Pi/2 radian rotation along the longitudinal
axis (a roll to left)"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_3E7D915F_92BA_4d27_BC1A_52D9915CAFEF"
name="BodyAttitudePiOver4RadianUpPitch" description="The orientation of the body with respect
to the longitudinal (or vertical axis) after a Pi/4 radian rotation along the lateral axis (a
pitch up)"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_F8CBB773_7EC3_4cf3_A6BF_322F5E0611A2"
name="BodyAttitudePiOver6RadianLeftYaw" description="The orientation of the body with respect
to the longitudinal axis (or lateral axis) after a -Pi/6 radian rotation along the vertical
axis (a yaw left)"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_F8D4CE33_D33E_4592_A072_3F5AED57D0CF"
name="BodyFrameMeasurementAxes">
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_D2CAC852_73A3_4aec_9790_9640043C825C"
name="BodyFrameMeasurementPitchAxis" description="Pitch Axis (Lateral Axis) passes through the
plane from wingtip to wingtip. Pitch changes the vertical direction the aircraft’s nose is
pointing." precision="0.01" measurementSystemAxis="EAID_A4B9B253_9061_4f28_A8F7_89BFA86EE91A"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_C3BAB08D_406E_4267_B08C_E97972CB018C"
name="BodyFrameMeasurementRollAxis" description="Roll Axis (Longitudinal Axis) passes through
the plane from nose to tail. Roll changes the orientation of the aircraft’s wings with respect
to the downward force of gravity." precision="0.01"
measurementSystemAxis="EAID_309DE716_2AA8_4eb3_A6EA_C0C37AA8CA84"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_821137A0_2FF0_4ad2_8E68_8EC50128AD03"
name="BodyFrameMeasurementYawAxis" description="Yaw Axis (Normal Axis) is the vertical axis
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 413
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_A6FD8A95_4692_4947_A93B_58B5A5A3D625"
axis="EAID_1B9ED73D_796D_487c_85CC_15170C5E25E5" value="-Pi/6"
valueTypeUnit="EAID_FE60D41B_86AF_4f9e_B507_96A5730B1E52"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_A660FC74_BA5D_4baf_9057_163ED0282462"
axis="EAID_A4B9B253_9061_4f28_A8F7_89BFA86EE91A" value="0"
valueTypeUnit="EAID_FE60D41B_86AF_4f9e_B507_96A5730B1E52"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_C5187DAA_C4FB_43b0_839F_9BCD601F1C19"
axis="EAID_309DE716_2AA8_4eb3_A6EA_C0C37AA8CA84" value="0"
valueTypeUnit="EAID_FE60D41B_86AF_4f9e_B507_96A5730B1E52"/>
</referencePoint>
</element>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_A734C35A_5D32_456a_97BD_D2A02279EC6D"
name="BodyFrameMeasurementAxesDegrees">
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_1E4718CF_69A1_459d_B69A_73171E3B4B38"
name="BodyFrameMeasurementPitchDegreesAxis" description="Pitch Axis (Lateral Axis) passes
through the plane from wingtip to wingtip. Pitch changes the vertical direction the aircraft’s
nose is pointing." valueTypeUnit="EAID_C5AE86FF_FB90_4d95_A739_4025CA644CDF" precision="0.01"
measurementSystemAxis="EAID_A4B9B253_9061_4f28_A8F7_89BFA86EE91A"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_FAE1C598_8B37_4329_A065_0AEE5E518F65"
name="BodyFrameMeasurementRollDegreesAxis" description="Roll Axis (Longitudinal Axis) passes
through the plane from nose to tail. Roll changes the orientation of the aircraft’s wings with
respect to the downward force of gravity."
valueTypeUnit="EAID_C5AE86FF_FB90_4d95_A739_4025CA644CDF" precision="0.01"
measurementSystemAxis="EAID_309DE716_2AA8_4eb3_A6EA_C0C37AA8CA84"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_C6705DC3_8C55_4de3_A7A6_C7B36A93C5A3"
name="BodyFrameMeasurementYawDegreesAxis" description="Yaw Axis (Normal Axis) is the vertical
axis through an aircraft, rocket or similar body about which the body yaws."
valueTypeUnit="EAID_C5AE86FF_FB90_4d95_A739_4025CA644CDF" precision="0.01"
measurementSystemAxis="EAID_1B9ED73D_796D_487c_85CC_15170C5E25E5"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_85A5AF60_6477_47dc_B465_7159E6A57CD8"
name="EarthFrameAtitude">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_03631913_CE44_4aa5_88D3_63FF2683AF4E"
name="EarthFrameLandmarks"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_0384A349_1EB3_4f7a_80BE_3FEB25F9BC52"
name="EarthFrameMeasurementSystem"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_43008F72_D8DD_4a6b_B144_767CEE45E6F1"
name="CenterOfGravity" description="Orientation measurements based on the Center of Gravity Reference
Frame."/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_CDBB94DC_6048_422d_BD41_62B7DB15BA49"
name="LocalVehicle" description="Orientation measurements based on the Local Vehicle Reference
Frame."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_A02E9E72_52C6_4ebb_A39E_D9FBF4C98149"
name="PositionMeasures">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_A8094015_98E2_4ffe_AA60_5ED65E11EAED"
name="ECEFPosition">
<element xmi:type="logical:Measurement" xmi:id="_HIqhDQExEeSj3_IywtjKpA"
name="ECEFPositionMeasurement" description="Describes a position in the ECEF measurement system."
measurementAxis="_HIqhDwExEeSj3_IywtjKpA _HIqhEQExEeSj3_IywtjKpA _HIqhEwExEeSj3_IywtjKpA"
measurementSystem="_HIqhBAExEeSj3_IywtjKpA" realizes="EAID_7CA3D9F9_0614_4f82_A971_D2367427403F"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="_HIqhDwExEeSj3_IywtjKpA"
name="ECEFPositionMeasurementXAxis" description="ECEF X axis." precision="0.001"
measurementSystemAxis="_HIqhCAExEeSj3_IywtjKpA"
realizes="EAID_80D92BE8_8DF0_4f7c_82A6_CBF5DF17443A"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="_HIqhEQExEeSj3_IywtjKpA"
name="ECEFPositionMeasurementYAxis" description="ECEF Y axis." precision="0.001"
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 415
<element xmi:type="logical:MeasurementAxis" xmi:id="_vZiY4wg5EeSFspy8Kj3F4Q"
name="WGS84PositionLatitudeMeasurementAxis" description="Specifies the latitude component of
location." precision="0.000001" measurementSystemAxis="_vZiY2gg5EeSFspy8Kj3F4Q"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="_vZiY5Ag5EeSFspy8Kj3F4Q"
name="WGS84PositionLongitudeMeasurementAxis" description="Specifies the longitude component of
location." precision="0.000001" measurementSystemAxis="_vZiY2wg5EeSFspy8Kj3F4Q"
realizes="EAID_5977632F_0313_4d51_82A4_E716D94C7D7D"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_520D39E0_B7F5_4946_A25B_023F5682F4F2"
name="WGS84PositionMeasurementSystem">
<element xmi:type="logical:ValueTypeUnit" xmi:id="_vZiY3wg5EeSFspy8Kj3F4Q" name="RealMeters"
description="Meters representation as a Real" unit="EAID_0A9F29A7_3ABC_4790_9E6D_CEBD6C7DBE5E"
valueType="EAID_7CB1E0A3_7D27_45fa_BF9E_22EB15886D68"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="_vZiY2Ag5EeSFspy8Kj3F4Q"
name="WGS84PositionMeasurementSystem" description="Describes the WGS84 Frame of Reference in
terms of coordinate system, origin, and axis orientation."
measurementSystemAxis="_vZiY2Qg5EeSFspy8Kj3F4Q _vZiY2gg5EeSFspy8Kj3F4Q _vZiY2wg5EeSFspy8Kj3F4Q"
coordinateSystem="_vZiY1wg5EeSFspy8Kj3F4Q" externalStandardReference="Reference: http://earth-
info.nga.mil/GandG/publications/tr8350.2/wgs84fin.pdf
DEPARTMENT OF DEFENSE WORLD GEODETIC
SYSTEM 1984 Its Definition and Relationships with Local Geodetic Systems" orientation="right-
handed orthogonal">
<referencePoint xmi:type="logical:ReferencePoint" xmi:id="_LPRUIAg7EeSFspy8Kj3F4Q"
name="EarthCenter" description="Earths Center of Mass" landmark="_qfQeQAE1EeSj3_IywtjKpA">
<referencePointPart xmi:type="logical:ReferencePointPart" xmi:id="_WU1TUAg7EeSFspy8Kj3F4Q"
axis="_vZiY2Qg5EeSFspy8Kj3F4Q" value="Earths Center of mass (-height)"
valueTypeUnit="_vZiY3wg5EeSFspy8Kj3F4Q"/>
<referencePointPart xmi:type="logical:ReferencePointPart" xmi:id="_Xq1c8Ag7EeSFspy8Kj3F4Q"
axis="_vZiY2gg5EeSFspy8Kj3F4Q" value="0"/>
<referencePointPart xmi:type="logical:ReferencePointPart" xmi:id="_XACMcAg7EeSFspy8Kj3F4Q"
axis="_vZiY2wg5EeSFspy8Kj3F4Q" value="0"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint" xmi:id="_SvmAEAg9EeSFspy8Kj3F4Q"
name="PrimeMeridianEquatorSurface" description="Describes the point of Intersection of the
prime meridian, the equator, and the surface of the earth."
landmark="_jDNG8AE2EeSj3_IywtjKpA">
<referencePointPart xmi:type="logical:ReferencePointPart" xmi:id="_XQ8EUAg9EeSFspy8Kj3F4Q"
axis="_vZiY2Qg5EeSFspy8Kj3F4Q" value="0" valueTypeUnit="_vZiY3wg5EeSFspy8Kj3F4Q"/>
<referencePointPart xmi:type="logical:ReferencePointPart" xmi:id="_XQ8EUQg9EeSFspy8Kj3F4Q"
axis="_vZiY2gg5EeSFspy8Kj3F4Q" value="0"/>
<referencePointPart xmi:type="logical:ReferencePointPart" xmi:id="_XQ8EUgg9EeSFspy8Kj3F4Q"
axis="_vZiY2wg5EeSFspy8Kj3F4Q" value="0"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="_vZiY2Qg5EeSFspy8Kj3F4Q"
name="WGS84PositionMeasurementSystemHeightAxis" description="Specifies the height axis for WGS-
84." axis="_vZiY1Qg5EeSFspy8Kj3F4Q" defaultValueTypeUnit="_vZiY3wg5EeSFspy8Kj3F4Q"/>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="_vZiY2gg5EeSFspy8Kj3F4Q"
name="WGS84PositionMeasurementSystemLatitudeAxis" description="Specifies the latitude axis for
WGS-84." axis="_vZiY1Ag5EeSFspy8Kj3F4Q"
defaultValueTypeUnit="EAID_C5AE86FF_FB90_4d95_A739_4025CA644CDF"/>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="_vZiY2wg5EeSFspy8Kj3F4Q"
name="WGS84PositionMeasurementSystemLongitudeAxis" description="Specifies the longitude axis for
WGS-84." axis="_vZiY1gg5EeSFspy8Kj3F4Q"
defaultValueTypeUnit="EAID_C5AE86FF_FB90_4d95_A739_4025CA644CDF"/>
</ldm>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_16C3F0D3_66F4_4482_814F_DD6029B51906"
name="PowerMeasures">
<element xmi:type="logical:Measurement" xmi:id="EAID_F2DF1196_40EB_41a4_AC09_72D6A55D3C4F"
name="PowerMeasurement" description="Measurement for power."
measurementAxis="EAID_2B1F4E67_0284_4990_9F3F_37C03457F75E"
measurementSystem="EAID_AC33E859_EF4E_4f9e_B9F1_9E8EFA9D1497"
realizes="EAID_0FE1D4CF_7DB9_46c2_961B_2C3AB44B694F"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_2B1F4E67_0284_4990_9F3F_37C03457F75E"
name="PowerMeasurementAxis" precision="0.001"
measurementSystemAxis="EAID_E60055A6_AAF7_4b15_9B96_2E85E42CB36A"
realizes="EAID_0FE1D4CF_7DB9_46c2_961B_2C3AB44B694F"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 417
unit="EAID_9CDA2125_1689_411c_AC85_04287E8FC3CE"
valueType="EAID_7CB1E0A3_7D27_45fa_BF9E_22EB15886D68"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_FE7D5B8A_FF57_4418_A928_E78D52681907"
name="PressureMeasurementSystem" description="Measurement system for pressure."
measurementSystemAxis="EAID_3DE8B358_7FA3_4f96_AEF9_B36F9DCC3E6E"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Value increases as pressure increases">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_BE496D32_F9EA_4203_8E96_0BF7EB86FE21" name="ZeroPressureReferencePoint"
description="zero pressure reference point"
landmark="EAID_5E2A754E_190C_41fb_92DA_1C9627E027DA">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_57D96CF0_5037_4ac5_9A84_2FA8560A2B49"
axis="EAID_3DE8B358_7FA3_4f96_AEF9_B36F9DCC3E6E" value="0.0"
valueTypeUnit="EAID_19E866E6_D186_469f_8670_97CDF785C2D9"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_3CC8A464_0727_4da4_83C3_E28FC922F77F" name="OnePascalReferencePoint"
description="unit amount of pressure" landmark="EAID_CF1128BC_C286_4666_BAD7_F91AD3BA58FC">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_D508BF70_60B3_4d29_B305_ED4D0587ABC8"
axis="EAID_3DE8B358_7FA3_4f96_AEF9_B36F9DCC3E6E" value="1.0"
valueTypeUnit="EAID_19E866E6_D186_469f_8670_97CDF785C2D9"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="EAID_3DE8B358_7FA3_4f96_AEF9_B36F9DCC3E6E"
name="PressureMeasurementSystemAxis" description="measurement axis for pressure"
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_19E866E6_D186_469f_8670_97CDF785C2D9"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_E97DCBEF_91E8_4511_8334_4BF8F1476CEA"
name="LocalAir" description="Pressure measurements based on the Local Air Reference Frame."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_3FE463AE_0E83_4e93_8E97_443FFEF54796"
name="RateMeasures">
<element xmi:type="logical:Measurement" xmi:id="EAID_8C5A362E_D672_4335_B72E_C2CC6252F884"
name="SpeedMeasurement" description="Measurement for speed."
measurementAxis="EAID_FA94A385_E790_4ab7_965F_D81D542D69F9"
measurementSystem="EAID_CA7165EF_5605_49ab_8B6F_24B78C4842AF"
realizes="EAID_06B460A8_5CEC_4e63_9607_4413DB527E37"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_FA94A385_E790_4ab7_965F_D81D542D69F9"
name="SpeedMeasurementAxis" precision="0.0001"
measurementSystemAxis="EAID_34208C77_1C32_4838_89B7_FC6777140322"
realizes="EAID_06B460A8_5CEC_4e63_9607_4413DB527E37"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_4F6B65DC_D0F5_4997_B653_D3E8BF595D9B"
name="AngularAcceleration">
<element xmi:type="logical:Measurement" xmi:id="EAID_15163722_EC03_48fc_BD03_A4303213DCC5"
name="AngularAccelerationMeasurement" description="Measurement for values of angular acceleration."
measurementAxis="EAID_F8F45C73_9387_4734_94DC_24DDADF11AF2"
measurementSystem="EAID_20463F5D_4D0E_4f2f_917D_A96A001118FC"
realizes="EAID_E0FD8349_12D2_40aa_9131_1FF4BA823E26"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_F8F45C73_9387_4734_94DC_24DDADF11AF2"
name="AngularAccelerationMeasurementAxis" description="Measurement axis for values of angular
acceleration." precision="0.001" measurementSystemAxis="EAID_4178F53A_5F5A_45a3_B674_461B48DA2C25"
realizes="EAID_E0FD8349_12D2_40aa_9131_1FF4BA823E26"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_B715C26A_2294_4470_BD10_E657D1177AAC"
name="AngularAccelerationLandmarks">
<element xmi:type="logical:Landmark" xmi:id="EAID_D2BEEBE6_6083_41a1_A2D1_218FFEB94D37"
name="PiRadiansPerSecondPerSecondAngularAccelerationLandmark" description="Landmark for Pi
radians per second per second."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_00FDA1C5_DB08_435d_B0B5_3EB09EB42534"
name="ZeroAngularAccelerationLandmark" description="Landmark for zero angular acceleration."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_E8ACE295_224A_4a91_BD1F_214E6361B3AA"
name="AngularAccelerationMeasurementSystem">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_8AB5E4C7_4D23_411d_B40D_01DD8CDD2525"
name="RealRadiansPerSecondPerSecond" description="Real radians per second per second."
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 419
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_B3DD7932_FC3F_4445_9D0E_5743C99FECCA"
axis="EAID_89BC6B2D_8DE0_4dde_AC7C_66F795A553C2" value="0.0"
valueTypeUnit="EAID_7C107E2B_CDC3_4f2f_86AD_DBEC40A0C0E3"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_162DFA87_A40D_419f_8119_29AF0BDC65AF"
name="PiRadiansPerSecondAngularVelocityReferencePoint" description="Reference point for pi
radians per second." landmark="EAID_C33668AC_6B16_4868_B8DF_EFCD6DF0F440">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_5D2C477B_3CC0_4e30_B5E5_F4C821ACC9C0"
axis="EAID_89BC6B2D_8DE0_4dde_AC7C_66F795A553C2" value="3.1415927"
valueTypeUnit="EAID_7C107E2B_CDC3_4f2f_86AD_DBEC40A0C0E3"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_89BC6B2D_8DE0_4dde_AC7C_66F795A553C2" name="AngularVelociityMeasurementSystemAxis"
description="Measurement system axis used to express values of angular rate."
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_7C107E2B_CDC3_4f2f_86AD_DBEC40A0C0E3"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_5B1DC97A_BC16_4e20_AA26_D17043A737D5"
name="OrientationAcceleration" description="Logical model representing the rate of orientation
acceleration measurement">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_880C3557_FFFE_4dfc_AE15_C94E41EB8931"
name="OrientationAccelerationLandmarks" description="Logical package to capture orientation
acceleration landmarks elements.">
<element xmi:type="logical:Landmark" xmi:id="EAID_ABE2EA4A_7F83_4b9e_817F_592893C43816"
name="AxialForcePiOver4RadianUpPitchAxis" description="Net force in the positive x-direction
(Lateral Axis/PitchAxis) to create an angle Pi/4 radians in the up direction"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_8F4761A5_A3AE_468f_B499_319860B64B8D"
name="NormalForcePiOver6RadianLeftYawAxis" description="Net force in positive z-direction
(Vertical Axis/Yaw Axis) to create a Pi/6 radians angle in the negative direction"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_0F69C644_7864_4e70_9C0C_97365921347E"
name="SideForcePiOver2RaidanRightRollAxis" description="Net force in positive y-direction
(Longitudinal Axis/Roll Axis) to create a Pi/2 radians angle in the positive direction."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_FEB346B7_0463_40ca_BDEF_CC2F44B8CF5A"
name="ZeroRotationalAcceleration" description="No rotation about any axis due to external forces
on an object."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_D7B238E2_71E3_4e71_A259_E98A96FF49DB"
name="OrientationAccelerationMeasurement" description="Root package orientation acceleration in
radians.">
<element xmi:type="logical:Measurement" xmi:id="EAID_33B19387_B68E_4b45_8CE2_0A0BACE6F94F"
name="OrientationAccelerationMeasurement" description="Measurement representing the acceleration
applied to the orientation angles: pitch, roll and yaw"
measurementAxis="EAID_F8FC376A_2D5B_45a8_9C61_76AF25616387
EAID_D22FA4DD_BE4B_4a7f_BE0B_3863D495D7E3 EAID_3DF79A56_B732_4042_A1C6_F54295C8FB16"
measurementSystem="EAID_C0798AAE_A69A_44b5_AEE1_2AA620670786"
realizes="EAID_6A475A9C_9D31_4f7e_92EF_2D00DE6F7E66"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_F8FC376A_2D5B_45a8_9C61_76AF25616387"
name="OrientationAccelerationPitchAxis" description="Pitch Axis (Lateral Axis) passes through
the plane from wingtip to wingtip. Pitch changes the vertical direction the aircraft’s nose is
pointing." precision="0.0001" measurementSystemAxis="EAID_D1088725_2FE5_41e1_8EE4_3A5867309583"
realizes="EAID_E0FD8349_12D2_40aa_9131_1FF4BA823E26"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_D22FA4DD_BE4B_4a7f_BE0B_3863D495D7E3"
name="OrientationAccelerationRollAxis" description="Roll Axis (Longitudinal Axis) passes through
the plane from nose to tail. Roll changes the orientation of the aircraft’s wings with respect
to the downward force of gravity." precision="0.0001"
measurementSystemAxis="EAID_B735596A_CC53_4799_99A1_48A8D7846841"
realizes="EAID_E0FD8349_12D2_40aa_9131_1FF4BA823E26"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_3DF79A56_B732_4042_A1C6_F54295C8FB16"
name="OrientationAccelerationYawAxis" description="Yaw Axis (Normal Axis) is the vertical axis
through an aircraft, rocket or similar body about which the body yaws." precision="0.0001"
measurementSystemAxis="EAID_394EB610_0E99_47a3_B0D7_9F458AD50B21"
realizes="EAID_E0FD8349_12D2_40aa_9131_1FF4BA823E26"/>
</ldm>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 421
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_489E8E99_D971_4523_82A1_531645182D07" name="RollMomentPoint" description="A roll
moment is the vertical force applied at a distance from an aircraft's center of mass that
causes the aircraft to undergo angular acceleration about its longitudinal axis. "
landmark="EAID_0F69C644_7864_4e70_9C0C_97365921347E">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_EDA4F4BE_0900_45f7_BBA7_854EE53B54A9"
axis="EAID_B735596A_CC53_4799_99A1_48A8D7846841" value="-Pi/2"
valueTypeUnit="EAID_D2F368C7_B356_4229_B15D_89F2E1A76DC7"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_53E6F3C4_3645_4251_89A0_A1B6CA78783C"
axis="EAID_D1088725_2FE5_41e1_8EE4_3A5867309583" value="0"
valueTypeUnit="EAID_D2F368C7_B356_4229_B15D_89F2E1A76DC7"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_F560F233_CE7E_41fe_9F57_92B1BD8FE655"
axis="EAID_394EB610_0E99_47a3_B0D7_9F458AD50B21" value="0"
valueTypeUnit="EAID_D2F368C7_B356_4229_B15D_89F2E1A76DC7"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_BEFAC062_6355_4715_983F_5968C835270F" name="YawMomentPoint" description="A yaw
moment is a horizontal force applied to rotate an airplane about its vertical aixs, with a
rotation to the right considered positiive and rotation to the left as negative."
landmark="EAID_8F4761A5_A3AE_468f_B499_319860B64B8D">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_E7F60801_8515_4c7a_A37E_36E713168C8B"
axis="EAID_394EB610_0E99_47a3_B0D7_9F458AD50B21" value="-Pi/6"
valueTypeUnit="EAID_D2F368C7_B356_4229_B15D_89F2E1A76DC7"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_7C4874E4_8E28_46fb_B466_09FBBD80A9F2"
axis="EAID_D1088725_2FE5_41e1_8EE4_3A5867309583" value="0"
valueTypeUnit="EAID_D2F368C7_B356_4229_B15D_89F2E1A76DC7"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_53957466_7975_4111_A0F0_367A0685CB0D"
axis="EAID_B735596A_CC53_4799_99A1_48A8D7846841" value="0"
valueTypeUnit="EAID_D2F368C7_B356_4229_B15D_89F2E1A76DC7"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_0E9282DC_C8CD_4d3e_8244_5F9ABC152DA6" name="MassMomentOfInertia"
description="Measures the extent to which an object resists rotational acceleration about an
axis." landmark="EAID_FEB346B7_0463_40ca_BDEF_CC2F44B8CF5A">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_61B7B684_2BE1_4142_ABE0_203BD2B7FDAC"
axis="EAID_D1088725_2FE5_41e1_8EE4_3A5867309583" value="0"
valueTypeUnit="EAID_D2F368C7_B356_4229_B15D_89F2E1A76DC7"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_E571F250_8452_40e3_B92A_EC0F26E57305"
axis="EAID_B735596A_CC53_4799_99A1_48A8D7846841" value="0"
valueTypeUnit="EAID_D2F368C7_B356_4229_B15D_89F2E1A76DC7"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_483AC7FE_8D99_400a_B71D_5098AD6DD0B0"
axis="EAID_394EB610_0E99_47a3_B0D7_9F458AD50B21" value="0"
valueTypeUnit="EAID_D2F368C7_B356_4229_B15D_89F2E1A76DC7"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_D1088725_2FE5_41e1_8EE4_3A5867309583" name="OrientationAccelerationLateralAxis"
description="Change of orientation acceleration about the lateral axis."
axis="EAID_185CD9A8_B677_41ab_907D_C7F232756DCE"
defaultValueTypeUnit="EAID_D2F368C7_B356_4229_B15D_89F2E1A76DC7"/>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_B735596A_CC53_4799_99A1_48A8D7846841"
name="OrientationAccelerationLongitudinalAxis" description="Change of orientation accelertion
about the longitudinal axis." axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_D2F368C7_B356_4229_B15D_89F2E1A76DC7"/>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_394EB610_0E99_47a3_B0D7_9F458AD50B21" name="OrientationAccelerationVeriticalAxis"
description="Change of orientation acceleration about the veritical axis."
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 423
passes through the plane from nose to tail. Roll changes the orientation of the aircraft’s wings
with respect to the downward force of gravity."
valueTypeUnit="EAID_B153F0A8_254B_414d_B9B4_F51B02D32419" precision="0.0001"
measurementSystemAxis="EAID_D695C2CA_5B48_483e_A5EC_31D7A40CCA0D"
realizes="EAID_21309243_2D0E_4536_8135_69F86BE3D515"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_214A281F_382B_483b_87C4_9DF9EA6BA97E"
name="OrientationVelocityYawAxisDegreesPerSecond" description="Yaw Axis (Normal Axis) is the
vertical axis through an aircraft, rocket or similar body about which the body yaws."
valueTypeUnit="EAID_B153F0A8_254B_414d_B9B4_F51B02D32419" precision="0.0001"
measurementSystemAxis="EAID_48607400_E718_4ac3_ACC8_78052AA684CB"
realizes="EAID_21309243_2D0E_4536_8135_69F86BE3D515"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_12F876C2_E11E_4f1d_9C11_037BEB2FD997"
name="OrientationVelocityMeasurementSystem">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_222F7273_01B5_4e83_B616_DFEC1E04ABED"
name="RealRadianPerSecond" description="Orientation velocity in radians per second as a real
numerical representation." unit="EAID_C21F5F62_131A_4807_894F_A58BF924B164"
valueType="EAID_7CB1E0A3_7D27_45fa_BF9E_22EB15886D68"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_B0F6E3C3_4CA7_44fa_93FD_C211F4F956B0"
name="OrientationVelocityMeasurementSystem" description="Measurement system representing the
rate change of velocity applied to the orientation angles: pitch, roll and yaw"
measurementSystemAxis="EAID_06891598_E070_4ae8_AEE7_67A5B8BBCA90
EAID_D695C2CA_5B48_483e_A5EC_31D7A40CCA0D EAID_48607400_E718_4ac3_ACC8_78052AA684CB"
coordinateSystem="EAID_E16B78B2_B2BA_43e5_837E_018DC1FD621C" externalStandardReference=""
orientation="Right-Handed">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_5422D41E_2CF8_4d14_8F11_BB6DF0421437" name="YawRatePoint" description="Represents
the change of 20 degrees in yaw angle resulting the necessary change in velocity rate."
landmark="EAID_EF97A4DA_ED5B_4704_B17D_2A4FA62603C6">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_8FC47AC2_AF60_487b_82EF_C60D6683D8BF"
axis="EAID_48607400_E718_4ac3_ACC8_78052AA684CB" value="-Pi/6"
valueTypeUnit="EAID_222F7273_01B5_4e83_B616_DFEC1E04ABED"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_001CEA74_FD44_4a88_A29E_020C9C780800"
axis="EAID_06891598_E070_4ae8_AEE7_67A5B8BBCA90" value="0"
valueTypeUnit="EAID_222F7273_01B5_4e83_B616_DFEC1E04ABED"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_1581437E_5E34_4dec_B736_6DE35872A4D1"
axis="EAID_D695C2CA_5B48_483e_A5EC_31D7A40CCA0D" value="0"
valueTypeUnit="EAID_222F7273_01B5_4e83_B616_DFEC1E04ABED"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_A9CC8532_D91E_4932_AF87_DBF096389F27" name="RollRatePoint"
description="Represents the change of 90 degrees in roll angle resulting the necessary change
in velocity rate." landmark="EAID_6A77CF2F_C9B8_47e5_BF5B_6B243F14AAB6">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_B30A8DB8_EF19_4581_8FC9_12E7D77A8BFD"
axis="EAID_D695C2CA_5B48_483e_A5EC_31D7A40CCA0D" value="Pi/2"
valueTypeUnit="EAID_222F7273_01B5_4e83_B616_DFEC1E04ABED"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_B92398BE_6176_43bb_85F9_915925C6DBDF"
axis="EAID_06891598_E070_4ae8_AEE7_67A5B8BBCA90" value="0"
valueTypeUnit="EAID_222F7273_01B5_4e83_B616_DFEC1E04ABED"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_22EC6337_816E_4de3_8045_06029D6D09AD"
axis="EAID_48607400_E718_4ac3_ACC8_78052AA684CB" value="0"
valueTypeUnit="EAID_222F7273_01B5_4e83_B616_DFEC1E04ABED"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_962FB837_2091_483a_816D_C42829589B73" name="PitchRatePoint"
description="Represents the change of 45 degrees in pitch angle resulting the necessary change
in velocity rate." landmark="EAID_37236D77_26DF_45fd_B528_88F78467EE4C">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_2AE136A8_CF32_469b_9F40_EF56601F36FC"
axis="EAID_06891598_E070_4ae8_AEE7_67A5B8BBCA90" value="Pi/4"
valueTypeUnit="EAID_222F7273_01B5_4e83_B616_DFEC1E04ABED"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 425
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_7A26FFB7_E420_4c15_8E7F_BC831D7FE3A2"
name="ScalarAccelerationMeasurementSystem" description="System for measuring scalar acceleration
ie: speeding up or slowing down."
measurementSystemAxis="EAID_DCE9B393_1F4E_472a_A293_0587767C6BB2"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Values increase as object speeds up in a forward direction.">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_9B745EC7_EF25_40dc_8229_1958086F7BD4" name="ZeroAccelerationReferencePoint"
description="Zero velocity in any direction"
landmark="EAID_79DDE6C7_4797_4dfd_975D_116B337B8E63">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_CCCC2DEC_4AC5_42ce_8B9D_D6453DB54293"
axis="EAID_DCE9B393_1F4E_472a_A293_0587767C6BB2" value="0"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_0ED24CF4_E1D9_4b2e_83A8_15FFC5161CDE"
name="OneMeterPerSecondPerSecondAccelerationReferencePoint" description="One meter/sec in
positive acceleration." landmark="EAID_816CEBC9_F8B9_4002_8383_997BAA6C63DB">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_8BB3FE11_741F_4801_8125_C9DA48BB10E9"
axis="EAID_DCE9B393_1F4E_472a_A293_0587767C6BB2" value="1"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_DCE9B393_1F4E_472a_A293_0587767C6BB2"
name="ScalarAccelerationMeasurementSystemAxis" description="The measurement system axis to
describe the nature of measuring scalar acceleration of an object."
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_BC96F5E1_6F63_462c_84A3_61CFB36D8011"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_E69B26E5_875C_4325_AF95_BD44D4C2B6DD"
name="SpeedLandmarks">
<element xmi:type="logical:Landmark" xmi:id="EAID_E463202C_BB78_4ea0_ACCE_34527B0C18C5"
name="OneMeterPerSecondLandmark" description="One meter per second"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_7D5FCB19_24EB_4641_BA39_BD21319038CD"
name="ZeroSpeedLandmark" description="Zero speed."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_A6A59C8E_19E5_4248_8C6C_A203F150BC84"
name="SpeedMeasurementSystem">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_21572174_353B_4fb9_92AB_66D35B6D1D45"
name="NonNegativeRealMetersPerSecond" description="Meters per second as a non-negative real
numerical representation." unit="EAID_D656A860_B181_4712_B6C0_3CC4761A682D"
valueType="EAID_1EA04603_631A_403e_82FD_D6E5825D1F31"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_CA7165EF_5605_49ab_8B6F_24B78C4842AF"
name="SpeedMeasurementSystem" description="Measurement system for measuring speed."
measurementSystemAxis="EAID_34208C77_1C32_4838_89B7_FC6777140322"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Value increases as speed increases">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_5A0740C1_C539_41b0_8E59_BC3163D70547" name="ZeroSpeedReferencePoint"
description="zero speed reference point" landmark="EAID_7D5FCB19_24EB_4641_BA39_BD21319038CD">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_F1CC04E6_3801_4835_9AB8_48F6007DC0D8"
axis="EAID_34208C77_1C32_4838_89B7_FC6777140322" value="0.0"
valueTypeUnit="EAID_21572174_353B_4fb9_92AB_66D35B6D1D45"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_9589609F_BFE9_48fa_BAC5_5E2BE1D3D4F6" name="OneMeterPerSecondReferencePoint"
description="unit speed reference point" landmark="EAID_E463202C_BB78_4ea0_ACCE_34527B0C18C5">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_A42AC528_2AC6_4a19_8DDA_CB965EB271B9"
axis="EAID_34208C77_1C32_4838_89B7_FC6777140322" value="1.0"
valueTypeUnit="EAID_21572174_353B_4fb9_92AB_66D35B6D1D45"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="EAID_34208C77_1C32_4838_89B7_FC6777140322"
name="SpeedMeasurementSystemAxis" description="Measurement system axis for speed measurements"
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 427
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_F9D8A82F_C1F7_44f8_92AD_535912C28E4C"
name="AccelerationMeasurementSystem" description="System for measuring vector acceleration."
measurementSystemAxis="EAID_F160EF73_8C7D_496f_93C7_020262ED8563
EAID_C8DCFFF3_1918_49fb_B7EE_0A801B03FE9E EAID_5446A913_78FE_4af0_BDAD_17593E11AAFE"
coordinateSystem="EAID_E16B78B2_B2BA_43e5_837E_018DC1FD621C" externalStandardReference=""
orientation="right handed">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_C01943E2_09A4_470c_9C38_05637F047A66"
name="OneMeterPerSecondPerSecondAccelerationZAxisReferencePoint" description="One meter/sec in
positive Z direction,0 in X & Y" landmark="EAID_B317A567_5F73_4116_B993_B97BBEF86098">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_8D4EF853_154F_40f0_8AFA_36DAC5BCE616"
axis="EAID_5446A913_78FE_4af0_BDAD_17593E11AAFE" value="1.0"
valueTypeUnit="EAID_BC96F5E1_6F63_462c_84A3_61CFB36D8011"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_8B13499B_A6A6_404a_8C85_3BAD93522D30"
axis="EAID_F160EF73_8C7D_496f_93C7_020262ED8563" value="0.0"
valueTypeUnit="EAID_BC96F5E1_6F63_462c_84A3_61CFB36D8011"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_22B3E877_F6C4_4bad_9909_779EEE3D5206"
axis="EAID_C8DCFFF3_1918_49fb_B7EE_0A801B03FE9E" value="0.0"
valueTypeUnit="EAID_BC96F5E1_6F63_462c_84A3_61CFB36D8011"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_0BB5D96B_BBBE_4a00_AFDB_2C3DC4E146DF"
name="OneMeterPerSecondPerSecondAccelerationYAxisReferencePoint" description="One meter/sec in
positive Y direction,0 in X & Z" landmark="EAID_323305A0_518D_4ce4_8088_588354B84E57">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_251B16D3_41F8_454e_977C_320DEEEAA2C3"
axis="EAID_C8DCFFF3_1918_49fb_B7EE_0A801B03FE9E" value="1.0"
valueTypeUnit="EAID_BC96F5E1_6F63_462c_84A3_61CFB36D8011"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_4A2B13FC_BD1C_4579_9DCE_64E6A057A985"
axis="EAID_F160EF73_8C7D_496f_93C7_020262ED8563" value="0.0"
valueTypeUnit="EAID_BC96F5E1_6F63_462c_84A3_61CFB36D8011"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_D7F0CE70_1956_4b8b_A38E_18C4533DC4B1"
axis="EAID_5446A913_78FE_4af0_BDAD_17593E11AAFE" value="0.0"
valueTypeUnit="EAID_BC96F5E1_6F63_462c_84A3_61CFB36D8011"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_5631F1B3_161E_4e32_B02B_2C1840480007" name="ZeroAccelerationReferencePoint"
description="Zero velocity in any direction"
landmark="EAID_D136372D_418A_4f80_B84C_9244DE95A17A">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_C3FA5A2C_FC0C_4da9_B381_C4A0BE591BA0"
axis="EAID_F160EF73_8C7D_496f_93C7_020262ED8563" value="0.0"
valueTypeUnit="EAID_BC96F5E1_6F63_462c_84A3_61CFB36D8011"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_327AB049_B6C4_4c50_A3F7_AF2F27CC0874"
axis="EAID_C8DCFFF3_1918_49fb_B7EE_0A801B03FE9E" value="0.0"
valueTypeUnit="EAID_BC96F5E1_6F63_462c_84A3_61CFB36D8011"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_7EFA9382_A10A_455f_8921_8F54CFCF9352"
axis="EAID_5446A913_78FE_4af0_BDAD_17593E11AAFE" value="0.0"
valueTypeUnit="EAID_BC96F5E1_6F63_462c_84A3_61CFB36D8011"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_A9E08B88_6502_4fdd_B913_12760C6778FF"
name="OneMeterPerSecondPerSecondAccelerationXAxisReferencePoint" description="One meter/sec in
positive X direction,0 in Y & Z" landmark="EAID_09ABA2E4_B0C7_44a8_BE55_4EA8AAA0A739">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_1EFC0410_9438_40e2_875A_A55F6BC00C84"
axis="EAID_F160EF73_8C7D_496f_93C7_020262ED8563" value="1.0"
valueTypeUnit="EAID_BC96F5E1_6F63_462c_84A3_61CFB36D8011"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_59B7A04D_ED38_434a_82CE_9738801152AE"
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 429
Real numbers" measurementAxis="EAID_96AB26FE_F38A_4d37_8733_8514CC518EAB"
measurementSystem="EAID_1B1757D9_6651_468a_93E2_FDD643FC0B28"
realizes="EAID_29913A1B_DFBB_4db4_AE2B_93C6CC1EF116"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_96AB26FE_F38A_4d37_8733_8514CC518EAB"
name="CountRateMeasurementAxis" precision="1"
measurementSystemAxis="EAID_05CB9A19_1A96_4048_8133_20D818840B1C"
realizes="EAID_29913A1B_DFBB_4db4_AE2B_93C6CC1EF116"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_64A2A70D_8134_4dd2_B865_768418BE803A"
name="DataRate" description="Logical model for the number of occurrences of a repeating event per
unit time">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_22D33FCC_F623_427d_B954_D2AFD978990E"
name="NaturalBitsPerSecond" description="Data rate as real number in bits per second"
unit="EAID_4BD00953_158E_4ebe_B5C2_5D7F99C4C843"
valueType="EAID_7DE12CF5_1B85_482b_9830_783D356833E9"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_BE0A312C_18B3_4bab_AB14_66F783441FB7"
name="OneBitPerSecondDataRateLandmark" description="One bit per second data movement"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_21588F8E_3D75_4d1b_8D50_3C1D7B234FA8"
name="ZeroDataRateLandmark" description="No data movement"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_67D02CF0_6F36_4512_9A72_79FC782D1877"
name="DataRateMeasurementSystem" description="Measurement system for data rate."
measurementSystemAxis="EAID_CA4F5AB4_B6C5_4e43_AB25_8C2FBDBCCC48"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Value increases as data rate increases">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_9D0A8CEE_93F1_422a_B8B2_D33EEF1E3960" name="OneBitPerSecondDataRateReferencePoint"
description="One bit per second" landmark="EAID_BE0A312C_18B3_4bab_AB14_66F783441FB7">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_4EE2A836_8AC3_4665_B834_31E344A78461"
axis="EAID_CA4F5AB4_B6C5_4e43_AB25_8C2FBDBCCC48" value="1.00"
valueTypeUnit="EAID_22D33FCC_F623_427d_B954_D2AFD978990E"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_DA83A96E_5D75_468b_AD74_FA565EDA2677" name="ZeroDataRateReferencePoint"
description="No data movement" landmark="EAID_21588F8E_3D75_4d1b_8D50_3C1D7B234FA8">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_E061979C_47D3_48a7_886B_648ADCBBF48E"
axis="EAID_CA4F5AB4_B6C5_4e43_AB25_8C2FBDBCCC48" value="0.00"
valueTypeUnit="EAID_22D33FCC_F623_427d_B954_D2AFD978990E"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="EAID_CA4F5AB4_B6C5_4e43_AB25_8C2FBDBCCC48"
name="DataRateMeasurementSystemAxis" description="Measurement axis for data rate measured in bits
per second with real numbers." axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_22D33FCC_F623_427d_B954_D2AFD978990E"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_8FB0E728_5F04_4523_B308_CB1890B0CBD8"
name="DataRateMeasurement" description="Measurement of data rater measured in bits per second with
real numbers" measurementAxis="EAID_A6D1CF56_59FA_41c5_B889_F2666586D756"
measurementSystem="EAID_67D02CF0_6F36_4512_9A72_79FC782D1877"
realizes="EAID_5C94882D_D81D_44fd_9A96_04915D63D7BD"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_A6D1CF56_59FA_41c5_B889_F2666586D756"
name="DataRateMeasurementAxis" precision="1"
measurementSystemAxis="EAID_CA4F5AB4_B6C5_4e43_AB25_8C2FBDBCCC48"
realizes="EAID_5C94882D_D81D_44fd_9A96_04915D63D7BD"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_343D18EE_EB21_4691_988F_57A0F932238C"
name="DataRateUnits">
<element xmi:type="logical:Unit" xmi:id="EAID_4BD00953_158E_4ebe_B5C2_5D7F99C4C843"
name="BitsPerSecond" description="Bits per second"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_3C0A8364_1658_4665_88CE_FD29B718C67E"
name="LocalAir" description="Rate measurements based on the Local Air Reference Frame."/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_E49420B6_67AA_4440_8BB1_B736DD667A73"
name="LocalGround" description="Rate measurements based on the Local Ground Reference Frame."/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_AB3D4BB4_40B8_492e_B145_0C49070B2BA0"
name="LocalHorizontal" description="Rate measurements based on the Local Horizontal Reference
Frame."/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 431
<element xmi:type="logical:Measurement" xmi:id="EAID_62DE52DE_264C_47c4_AD06_EF3052056DD5"
name="VelocityMeasurementRealKnots" description="Measurement for 3D velocity vector in knots."
measurementAxis="EAID_7CE90824_A338_4b84_9E20_4AC763056349
EAID_66DB4E23_EE19_4baa_8587_649E0EBDD9E0 EAID_A3844C03_BC64_4ee2_AAAC_26846D39BF3A"
measurementSystem="EAID_9A7494F0_FA99_4291_B943_D13D93CB8970"
realizes="EAID_331BB7F2_6E37_433e_8027_991D9E82BA67"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_04695DE4_B19B_49ba_884F_ACF26F444B6B"
name="VelocityMeasurementXAxis" precision="0.01"
measurementSystemAxis="EAID_00AA39C5_5552_4b3c_B216_E8BB9C034583"
realizes="EAID_331BB7F2_6E37_433e_8027_991D9E82BA67"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_7CE90824_A338_4b84_9E20_4AC763056349"
name="VelocityMeasurementXAxisRealKnots" valueTypeUnit="EAID_F6853D08_6D00_4844_AB9C_60686E09323F"
precision="0.01" measurementSystemAxis="EAID_00AA39C5_5552_4b3c_B216_E8BB9C034583"
realizes="EAID_331BB7F2_6E37_433e_8027_991D9E82BA67"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_DE69C0F8_4DC4_4a07_A0A9_F3314F74DBEA"
name="VelocityMeasurementYAxis" precision="0.01"
measurementSystemAxis="EAID_3DDF59AE_D3CF_4af4_B961_74B4767E82F4"
realizes="EAID_331BB7F2_6E37_433e_8027_991D9E82BA67"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_66DB4E23_EE19_4baa_8587_649E0EBDD9E0"
name="VelocityMeasurementYAxisRealKnots" valueTypeUnit="EAID_F6853D08_6D00_4844_AB9C_60686E09323F"
precision="0.01" measurementSystemAxis="EAID_3DDF59AE_D3CF_4af4_B961_74B4767E82F4"
realizes="EAID_331BB7F2_6E37_433e_8027_991D9E82BA67"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_DCB13086_2312_460f_A6FB_B5AE29D9C94F"
name="VelocityMeasurementZAxis" precision="0.01"
measurementSystemAxis="EAID_5ED509C3_48D9_4c7f_9047_B636C7162F68"
realizes="EAID_331BB7F2_6E37_433e_8027_991D9E82BA67"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_A3844C03_BC64_4ee2_AAAC_26846D39BF3A"
name="VelocityMeasurementZAxisRealKnots" valueTypeUnit="EAID_F6853D08_6D00_4844_AB9C_60686E09323F"
precision="0.01" measurementSystemAxis="EAID_5ED509C3_48D9_4c7f_9047_B636C7162F68"
realizes="EAID_331BB7F2_6E37_433e_8027_991D9E82BA67"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_FF1AFED9_85B0_4398_8DA0_715BEAEDAFE1"
name="VelocityLandmarks">
<element xmi:type="logical:Landmark" xmi:id="EAID_924F91D1_E7B0_41f0_9E35_9A5EABAD0DDC"
name="NoMotionVelocityLandmark" description="Landmark for zero velocity in all directions"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_C4B225CB_048A_4847_8BB7_5FE18049CAA5"
name="UnitVelocityInXAxisLandmark" description="Velocity landmark of one m/sec in X axis"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_BA313E72_BA10_4b3f_B184_7B146075F771"
name="UnitVelocityInYAxisLandmark" description="Velocity landmark of one m/sec in Y axis"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_0456CB67_FDB8_48db_B9AF_0690B41F3AA1"
name="UnitVelocityInZAxisLandmark" description="Velocity landmark of one m/sec in Z axis"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_5CB4F2D0_60BC_4706_8678_BC030735133D"
name="VelocityMeasurementSystem">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_A3E35DAE_F099_4f94_814A_3CCBD68FD08E"
name="RealMetersPerSecond" description="Velocity In Meters Per Second As Real"
unit="EAID_D656A860_B181_4712_B6C0_3CC4761A682D"
valueType="EAID_7CB1E0A3_7D27_45fa_BF9E_22EB15886D68"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_9A7494F0_FA99_4291_B943_D13D93CB8970"
name="VelocityMeasurementSystem" description="Measurement system for values of velocity."
measurementSystemAxis="EAID_00AA39C5_5552_4b3c_B216_E8BB9C034583
EAID_3DDF59AE_D3CF_4af4_B961_74B4767E82F4 EAID_5ED509C3_48D9_4c7f_9047_B636C7162F68"
coordinateSystem="EAID_E16B78B2_B2BA_43e5_837E_018DC1FD621C" externalStandardReference=""
orientation="right handed">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_6AC32D56_19A0_4f1c_98B6_7936DDC88E8E" name="ZeroVelocityReferencePoint"
description="Zero velocity in any direction"
landmark="EAID_924F91D1_E7B0_41f0_9E35_9A5EABAD0DDC">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_9F9DD44A_D086_4418_B650_0D75E6DBCCC7"
axis="EAID_00AA39C5_5552_4b3c_B216_E8BB9C034583" value="0.0"
valueTypeUnit="EAID_A3E35DAE_F099_4f94_814A_3CCBD68FD08E"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_33CA168C_C05A_477b_9931_C0F2EC5C2464"
axis="EAID_3DDF59AE_D3CF_4af4_B961_74B4767E82F4" value="0.0"
valueTypeUnit="EAID_A3E35DAE_F099_4f94_814A_3CCBD68FD08E"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_C3523237_D62D_4f01_8E0E_2BA6AA763C56"
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 433
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_472F515A_471B_46b8_B93A_34C59A3D56FA"
name="TemperatureMeasures">
<element xmi:type="logical:Measurement" xmi:id="EAID_96A30055_C2CE_41c4_8B18_54D31F550C5C"
name="TemperatureDeltaMeasurement" description="Measurement for expressing temperature deltas"
measurementAxis="EAID_9A198C4A_7F41_49c8_8E88_A78CC6036D71"
measurementSystem="EAID_170CE113_B44C_4e3d_900C_145AD5038DA1"
realizes="EAID_413788BB_764C_45d6_BBB3_904F396F92A3"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_4D93682B_D923_46db_BEBE_5316D34D5BA9"
name="TemperatureMeasurement" description="Thermodynamic temperature measures in degrees Kelvin."
measurementAxis="EAID_383C7B72_1F72_4471_8962_0676820582FD"
measurementSystem="EAID_170CE113_B44C_4e3d_900C_145AD5038DA1"
realizes="EAID_2912B4B3_E784_4796_A911_6CE50C6872FB"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_4C0798C1_CC70_4d59_9836_14C5490A158D"
name="TemperatureMeasurementDegreesCelsius" description="Thermodynamic temperature measures in
degrees Celsius." measurementAxis="EAID_AD359229_9EA5_4b17_BD48_3ACADEFBE806"
measurementSystem="EAID_170CE113_B44C_4e3d_900C_145AD5038DA1"
realizes="EAID_2912B4B3_E784_4796_A911_6CE50C6872FB"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_4992D477_7343_44e0_BE44_8BB3DDDDE001"
name="TemperatureMeasurementDegreesFahrenheit" description="Thermodynamic temperature measures in
degrees Fahrenheit." measurementAxis="EAID_985CF56E_0DC3_49a8_B45C_40933A0703B2"
measurementSystem="EAID_170CE113_B44C_4e3d_900C_145AD5038DA1"
realizes="EAID_2912B4B3_E784_4796_A911_6CE50C6872FB"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_9A198C4A_7F41_49c8_8E88_A78CC6036D71"
name="TemperatureDeltaMeasurementAxis" description="Measurement axis for values of temperature
deltas." precision="0.001" measurementSystemAxis="EAID_E023E619_ED37_429a_B3FC_653CDC4D5C26"
realizes="EAID_413788BB_764C_45d6_BBB3_904F396F92A3"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_383C7B72_1F72_4471_8962_0676820582FD"
name="TemperatureMeasurementAxis" valueTypeUnit="EAID_8AEE5DA4_5925_412c_9D23_D625B93B0665"
precision=".01" measurementSystemAxis="EAID_E023E619_ED37_429a_B3FC_653CDC4D5C26"
realizes="EAID_2912B4B3_E784_4796_A911_6CE50C6872FB">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_233E9016_F98B_4932_B10B_C9111298BEF9" constraintText="Always >= absolute zero"/>
</element>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_AD359229_9EA5_4b17_BD48_3ACADEFBE806"
name="TemperatureMeasurementAxisDegreesCelsius"
valueTypeUnit="EAID_5570B556_17D4_41a8_B786_840B7A4CAAE3" precision=".01"
measurementSystemAxis="EAID_E023E619_ED37_429a_B3FC_653CDC4D5C26"
realizes="EAID_2912B4B3_E784_4796_A911_6CE50C6872FB">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_4AE4B31A_323C_4b0c_B0AB_201895AE1287" constraintText="Always >= absolute zero."/>
</element>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_985CF56E_0DC3_49a8_B45C_40933A0703B2"
name="TemperatureMeasurementAxisDegreesFahrenheit"
valueTypeUnit="EAID_E3839F0F_515A_4496_AE49_EA85C5A5F0AC" precision=".01"
measurementSystemAxis="EAID_E023E619_ED37_429a_B3FC_653CDC4D5C26"
realizes="EAID_2912B4B3_E784_4796_A911_6CE50C6872FB">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_D23D6885_FC6D_4ee1_852A_98E10C9DF1B4" constraintText="Always >= absolute zero"/>
</element>
<element xmi:type="logical:MeasurementConversion" xmi:id="EAID_F027902E_D342_4e78_8E53_ADCCA7688954"
name="DegC_to_DegF_Temperature_Conversion" description="Conversion from Degrees Celsius to Degrees
Fahrenheit" conversionLossDescription="none" source="EAID_4C0798C1_CC70_4d59_9836_14C5490A158D"
target="EAID_4992D477_7343_44e0_BE44_8BB3DDDDE001">
<equation>DegF=1.8*DegC+32</equation>
</element>
<element xmi:type="logical:MeasurementConversion" xmi:id="EAID_3409B03E_9DDA_4fef_B2BB_C07BE7EF6729"
name="DegC_to_DegK_Temperature_Conversion" description="Conversion from Degrees Celsius to Degrees
Kelvin" conversionLossDescription="none" source="EAID_4C0798C1_CC70_4d59_9836_14C5490A158D"
target="EAID_4D93682B_D923_46db_BEBE_5316D34D5BA9">
<equation>DegK=DegC + 273.15</equation>
</element>
<element xmi:type="logical:MeasurementConversion" xmi:id="EAID_E3B47DC7_E224_4876_9E21_81391DB7FB19"
name="DegF_to_DegC_Temperature_Conversion" description="Conversion from Degrees Fahrenheit to Degrees
Celsius" conversionLossDescription="none" source="EAID_4992D477_7343_44e0_BE44_8BB3DDDDE001"
target="EAID_4C0798C1_CC70_4d59_9836_14C5490A158D">
<equation>DegC=(DegF-32)/1.8</equation>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 435
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_4154DA2F_D4A4_484a_933F_4A0FC6D8565E" name="AbsoluteZeroPoint"
description="Represents zero point of temperature"
landmark="EAID_99B14262_EA23_4511_A3F0_3546D028849D">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_255054E2_0E11_469b_9A82_CDC964ACB70D"
axis="EAID_E023E619_ED37_429a_B3FC_653CDC4D5C26" value="0"
valueTypeUnit="EAID_8AEE5DA4_5925_412c_9D23_D625B93B0665"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="EAID_E023E619_ED37_429a_B3FC_653CDC4D5C26"
name="TemperatureMeasurementSystemAxis" description="Axis for Real number values in degrees Kelvin"
axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_8AEE5DA4_5925_412c_9D23_D625B93B0665"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_8C083820_6466_483b_9047_3DF9D2990363"
name="LocalAir" description="Temperature measurements based on the Local Air Reference Frame.">
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_528F4773_240A_4ac0_AA34_1F6F4C40D1BD"
name="LocalAirMeasurementAxis_DegreesCelsius" precision="How should this be specified"
measurementSystemAxis="EAID_E023E619_ED37_429a_B3FC_653CDC4D5C26">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_74F489DA_BA25_4578_A399_D0C72DA7834C" constraintText="Temperature range in Earth
atmosphere from surface through stratosphere (-70C to +70C)"/>
</element>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_B58D75F6_F61A_4f66_A846_031A65AA3EF0"
name="LocalAirMeasurementAxis_DegreesFahrenheit" precision="How should this be specified?"
measurementSystemAxis="EAID_E023E619_ED37_429a_B3FC_653CDC4D5C26">
<constraint xmi:type="logical:MeasurementConstraint"
xmi:id="EAID_7B22CF80_557D_42c6_B26B_FD70DA877CEF" constraintText="Temperature range in Earth
atmosphere from surface through stratosphere (-100F to +160F)"/>
</element>
<element xmi:type="logical:MeasurementConversion" xmi:id="EAID_9C5FFD4F_C2C7_404d_B8F8_B4BC7CD0C64D"
name="DegC_to_DegF_TAT_LocalAir_Temperature_Conversion" description="Conversion from Degrees
Celsius to Degrees Fahrenheit" conversionLossDescription="none"
source="EAID_4C0798C1_CC70_4d59_9836_14C5490A158D"
target="EAID_4992D477_7343_44e0_BE44_8BB3DDDDE001">
<equation>DegF=1.8*DegC+32</equation>
</element>
<element xmi:type="logical:MeasurementConversion" xmi:id="EAID_071E1D6E_7654_4dd4_AF38_FECB88F6FB0A"
name="DegF_to_DegC_TAT_LocalAir_Temperature_Conversion" description="Conversion from Degrees
Fahrenheit to Degrees Celsius" conversionLossDescription="none"
source="EAID_4992D477_7343_44e0_BE44_8BB3DDDDE001"
target="EAID_4C0798C1_CC70_4d59_9836_14C5490A158D">
<equation>DegC=(DegF-32)/1.8</equation>
</element>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_9314B184_811C_43b2_AB0D_F8D48CA1AD23"
name="TimeMeasures">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_E7A2C8B2_BF2F_43b2_AE9F_AACEFA4B26FA"
name="CalendarTimeMeasures">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_B6E638E9_194C_407f_A1F3_BCC272577B5E"
name="UTC_Measures">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_78C708C0_6629_4464_B0DD_8D88EF3B63EC"
name="StringISO8601Basic" description="Text String formatted per ISO 8601's basic format"
unit="EAID_0C482F2C_A548_4cf1_B9AD_5086FD62C41B"
valueType="EAID_B93CB919_D464_4577_82EB_0298B395EDB4"/>
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_ED9E8C67_EADC_4e8b_AE9D_FDE127E74F8A"
name="StringISO8601Extended" description="Text String formatted per ISO 8601's extended format"
unit="EAID_0C482F2C_A548_4cf1_B9AD_5086FD62C41B"
valueType="EAID_B93CB919_D464_4577_82EB_0298B395EDB4"/>
<element xmi:type="logical:Measurement" xmi:id="EAID_E8FA7DE3_3604_472d_845F_1BC6324B3DA8"
name="TimeISO8601BasicMeasurement" description="A date-time expressed as a text string
conforming to the ISO8601 standard's basic format (no separators between time and date
components)" measurementAxis="EAID_389549E1_3214_4ab6_AD52_31456B5B56D0"
measurementSystem="EAID_919C63A9_0165_4912_8EB0_2385631BEDF5"
realizes="EAID_6F2C6003_64FF_42a1_B4D1_00E34745B793"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 437
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_4B74DE56_0A5D_4f0e_9B46_9C2D5DDA1DCE"
name="UTCTimeMeasurementAxis" description="Measurement axis for UTC time"
valueTypeUnit="EAID_4363AD8C_A1ED_447c_8074_A9C2C1BFAD59
EAID_E2FA4AF7_5100_4797_A1BD_B5E448ED93EE EAID_770A3B26_286B_4669_9D59_28EEEDDFA38D
EAID_7CE0FD03_E2B8_4a2b_BEF3_AC063A10AF19 EAID_6BBAF578_C863_44a7_A3E6_EDCF0E358B65
EAID_C6177F0A_A31C_496d_8F54_D3C02C9FA020" precision="1"
measurementSystemAxis="EAID_5464AD82_2C21_4ad1_9FF8_77A64C196E82"
realizes="EAID_6F2C6003_64FF_42a1_B4D1_00E34745B793"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_DB5F3FD5_6C95_4a75_919D_81F51C907608"
name="UTC_MeasurementSystem" description="Time measurements based on Universal Coordinated Time.">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_4363AD8C_A1ED_447c_8074_A9C2C1BFAD59"
name="UTC_GregorianYear" description="Gregorian calendar year of the measurement"
unit="EAID_0C482F2C_A548_4cf1_B9AD_5086FD62C41B"
valueType="EAID_372D8BFC_47B1_4385_AD77_6703541E7FAC"/>
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_E2FA4AF7_5100_4797_A1BD_B5E448ED93EE"
name="UTC_MonthOfGregorianYear" description="Month of the Gregorian Year of the measurement"
unit="EAID_0C482F2C_A548_4cf1_B9AD_5086FD62C41B"
valueType="EAID_372D8BFC_47B1_4385_AD77_6703541E7FAC">
<constraint xmi:type="logical:IntegerRangeConstraint"
xmi:id="EAID_18669915_5A53_4caa_9D0A_354EE23975D8" name="UTC_MonthOfYearConstraint"
description="UTC (& Gregorian calendar) uses values of 1 through 12 to represent the 12
months January through December, respectively" lowerBound="1" upperBound="12"/>
</element>
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_770A3B26_286B_4669_9D59_28EEEDDFA38D"
name="UTC_DayOfGregorianMonth" description="Day of the Gregorian Month & Year of the
measurement" unit="EAID_0C482F2C_A548_4cf1_B9AD_5086FD62C41B"
valueType="EAID_372D8BFC_47B1_4385_AD77_6703541E7FAC">
<constraint xmi:type="logical:IntegerRangeConstraint"
xmi:id="EAID_E5263524_9EF8_4bea_BF77_DB5811A1CA39" name="UTC_DayOfMonthConstraint"
description="UTC (& Gregorian) Day of Month is represented by values from 1 for the first
day of the month to the number of days in the month, which depends on the month and year, but
never exceeds 31" lowerBound="1" upperBound="31"/>
</element>
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_7CE0FD03_E2B8_4a2b_BEF3_AC063A10AF19"
name="UTC_HourOfGregorianDay" description="Hour of the Gregorian Day, Month, Year of the
measurement. Each UTC day contains exactly 24 hours."
unit="EAID_0C482F2C_A548_4cf1_B9AD_5086FD62C41B"
valueType="EAID_372D8BFC_47B1_4385_AD77_6703541E7FAC">
<constraint xmi:type="logical:IntegerRangeConstraint"
xmi:id="EAID_C2BB6D22_F3FC_4b14_8CCB_6543C0CD22D5" name="UTC_HourOfDayConstraint"
description="UTC Hour of Day starts a 0 and ends at 23. All days are 24 hours long."
upperBound="23"/>
</element>
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_6BBAF578_C863_44a7_A3E6_EDCF0E358B65"
name="UTC_MinuteOfHour" description="Minute of the hour of the Gregorian Day, Month, Year of the
measurement. Each UTC hour contains exactly 60 minutes."
unit="EAID_0C482F2C_A548_4cf1_B9AD_5086FD62C41B"
valueType="EAID_372D8BFC_47B1_4385_AD77_6703541E7FAC">
<constraint xmi:type="logical:IntegerRangeConstraint"
xmi:id="EAID_0F803579_FBA4_47ea_948A_0E98A06E0885" name="UTC_MinuteOfHourConstraint"
description="UTC Minute of hour starts at 0 and ends at 59. There are always 60 minutes per
hour, though sometimes the last minute may be 1 sec longer or shorter than the other minutes"
upperBound="59"/>
</element>
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_C6177F0A_A31C_496d_8F54_D3C02C9FA020"
name="UTC_SecondOfMinute" description="Second of the hour and minute of the Gregorian Day,
Month, Year of the measurement. UTC minutes usually have 60 seconds, but the last minute of the
last day of a month can have 59 or 61 seconds." unit="EAID_17A1BB83_047A_4b42_A183_1237BC07B435"
valueType="EAID_372D8BFC_47B1_4385_AD77_6703541E7FAC">
<constraint xmi:type="logical:IntegerRangeConstraint"
xmi:id="EAID_921B1D6C_6254_44e5_8454_D836DF6B4046" name="UTC_SecondOfMinuteConstraint"
description="UTC second of day starts at 0 and ranges to the number of seconds in a minute
minus 1. UTC minutes usually have 60 seconds, but the last minute of the last day of a month
can have 59 or 61 seconds." upperBound="60"/>
</element>
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_F525FE9D_FC27_4971_AB94_AAB65C8FD169"
name="UTC_LocalTimeHourOffset" description="The number of hours that the local time is before or
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 439
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_659DD027_C82C_48f9_ADC6_571A156A2CB9"
axis="EAID_5464AD82_2C21_4ad1_9FF8_77A64C196E82" value="1"
valueTypeUnit="EAID_770A3B26_286B_4669_9D59_28EEEDDFA38D"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_652FD54A_1EC2_49a7_A85A_FAC77D3FB135"
axis="EAID_5464AD82_2C21_4ad1_9FF8_77A64C196E82" value="1"
valueTypeUnit="EAID_E2FA4AF7_5100_4797_A1BD_B5E448ED93EE"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_A665040B_20B6_45d3_B8F9_F9DAC9CE5986"
axis="EAID_5464AD82_2C21_4ad1_9FF8_77A64C196E82" value="1970"
valueTypeUnit="EAID_4363AD8C_A1ED_447c_8074_A9C2C1BFAD59"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_42C27C48_F64D_4fd9_9097_9D1138D8C112"
axis="EAID_5464AD82_2C21_4ad1_9FF8_77A64C196E82" value="0"
valueTypeUnit="EAID_7CE0FD03_E2B8_4a2b_BEF3_AC063A10AF19"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_798AF305_1CE8_4eaa_96A3_620F0CC6BC12"
axis="EAID_5464AD82_2C21_4ad1_9FF8_77A64C196E82" value="0"
valueTypeUnit="EAID_6BBAF578_C863_44a7_A3E6_EDCF0E358B65"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_B49E1C0E_B45E_43f8_B957_DF81D9BCB4ED"
axis="EAID_5464AD82_2C21_4ad1_9FF8_77A64C196E82" value="0"
valueTypeUnit="EAID_C6177F0A_A31C_496d_8F54_D3C02C9FA020"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_C66BB73F_A016_4fd9_95DE_4C176E4A2DBC"
axis="EAID_5464AD82_2C21_4ad1_9FF8_77A64C196E82" value="0"
valueTypeUnit="EAID_F525FE9D_FC27_4971_AB94_AAB65C8FD169"/>
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_7DE63EBC_2574_42a6_9CF8_F6F402BB4A6D"
axis="EAID_5464AD82_2C21_4ad1_9FF8_77A64C196E82" value="0"
valueTypeUnit="EAID_DA807F63_757D_47ee_9A1A_4C45CFA6E054"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_5464AD82_2C21_4ad1_9FF8_77A64C196E82" name="UTCLocalTimeMeasurementSystemAxis"
description="Represents calendar day using Gregorian calendar (year, month of year, & day of
month), time of day as hour of day, minute of hour, and second of minute, and local offset from
UTC as count of hours, count of minutes." axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_4363AD8C_A1ED_447c_8074_A9C2C1BFAD59
EAID_7CE0FD03_E2B8_4a2b_BEF3_AC063A10AF19 EAID_E2FA4AF7_5100_4797_A1BD_B5E448ED93EE
EAID_6BBAF578_C863_44a7_A3E6_EDCF0E358B65 EAID_770A3B26_286B_4669_9D59_28EEEDDFA38D
EAID_C6177F0A_A31C_496d_8F54_D3C02C9FA020 EAID_F525FE9D_FC27_4971_AB94_AAB65C8FD169
EAID_DA807F63_757D_47ee_9A1A_4C45CFA6E054"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_75917908_BE51_48a0_90FA_6112089129D3"
name="TimeDurationMeasures">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_A71F1148_7ED6_47bb_8D23_40879881A511"
name="IntegerHours" description="Integer hours" unit="EAID_ACBBECC7_C23C_48d8_8355_ED0A3A3A3324"
valueType="EAID_372D8BFC_47B1_4385_AD77_6703541E7FAC"/>
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_4F8968A0_E38F_4434_B511_EE50E0BD0A5A"
name="IntegerMinutes" description="Integer minutes"
unit="EAID_D16C8EB8_AEA3_4dc4_B32D_2EA864931180"
valueType="EAID_372D8BFC_47B1_4385_AD77_6703541E7FAC"/>
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_D4E6F91B_E17A_42b5_9D3F_A5A852B8519E"
name="IntegerSeconds" description="Integer seconds"
unit="EAID_17A1BB83_047A_4b42_A183_1237BC07B435"
valueType="EAID_372D8BFC_47B1_4385_AD77_6703541E7FAC"/>
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_C9419C4D_A541_4810_82FB_FC6266B893DD"
name="IntegerMilliseconds" description="Integer milliseconds"
unit="EAID_CDB24D2F_2CBF_4617_BD58_7A64770B4AF7"
valueType="EAID_372D8BFC_47B1_4385_AD77_6703541E7FAC"/>
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_53D339BB_B8AB_4c87_8FCE_EF87F0CB7BEF"
name="IntegerMicroseconds" description="Integer microseconds"
unit="EAID_DD9D1386_CC2E_4f76_BD72_A2E1BAF61CAC"
valueType="EAID_372D8BFC_47B1_4385_AD77_6703541E7FAC"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 441
integer seconds." precision="1" measurementSystemAxis="EAID_13D5B7DF_48FF_4ad4_B66E_AA8AD7621A42"
realizes="EAID_4E729952_4D4F_46f9_B372_04489372E9D4"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_3F6678FA_B48F_41b2_8C42_35C4BC3901C0"
name="TimeDurationMeasurementAxisIntegerMicroseconds" description="Measurement axis for time
duration in integer microseconds." valueTypeUnit="EAID_53D339BB_B8AB_4c87_8FCE_EF87F0CB7BEF"
precision="1" measurementSystemAxis="EAID_13D5B7DF_48FF_4ad4_B66E_AA8AD7621A42"
realizes="EAID_4E729952_4D4F_46f9_B372_04489372E9D4"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_3457128D_EDE7_4e41_9D0F_E05E81B52C4A"
name="TimeDurationMeasurementAxisIntegerMilliseconds" description="Measurement axis for time
duration in integer milliseconds." valueTypeUnit="EAID_C9419C4D_A541_4810_82FB_FC6266B893DD"
precision="1" measurementSystemAxis="EAID_13D5B7DF_48FF_4ad4_B66E_AA8AD7621A42"
realizes="EAID_4E729952_4D4F_46f9_B372_04489372E9D4"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_9850C6AD_C2FE_44b1_B2E2_D25EE8E548B5"
name="TimeDurationMeasurementAxisIntegerNanoseconds" description="Measurement axis for time
duration in integer nanoseconds." valueTypeUnit="EAID_8FAB4588_E952_4394_AA69_083EAF893AF4"
precision="1" measurementSystemAxis="EAID_13D5B7DF_48FF_4ad4_B66E_AA8AD7621A42"
realizes="EAID_4E729952_4D4F_46f9_B372_04489372E9D4"/>
<element xmi:type="logical:MeasurementAxis" xmi:id="EAID_C60479DC_124E_4445_82B5_55F128A30016"
name="TimeDurationMeasurementAxisRealSeconds" description="Time duration measurement axis for
measure in real seconds." valueTypeUnit="EAID_A558BC68_B8EF_43d8_8889_65E126114613"
precision=".000001" measurementSystemAxis="EAID_13D5B7DF_48FF_4ad4_B66E_AA8AD7621A42"
realizes="EAID_4E729952_4D4F_46f9_B372_04489372E9D4"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_88109987_2B7A_4359_BF72_824220B1B26D"
name="TimeDurationMeasurementSystem">
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_4C31C156_E6E2_4115_AF63_8794199664AA"
name="TimeDurationMeasurementSystem" description="Measurement system for time duration."
measurementSystemAxis="EAID_13D5B7DF_48FF_4ad4_B66E_AA8AD7621A42"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D"
externalStandardReference="International System of Units - Second" orientation="Value increases
as time moves towards the future">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_8E969EF7_1154_4619_88E5_A384897359FF" name="ZeroDurationReferencePoint"
description="Duration origin" landmark="EAID_3149A12E_1AB1_4ffd_9D14_1466FA5DCDE0">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_3632CAB3_6D8C_4605_A19E_449E330C68CE"
axis="EAID_13D5B7DF_48FF_4ad4_B66E_AA8AD7621A42" value="0.0"
valueTypeUnit="EAID_D4E6F91B_E17A_42b5_9D3F_A5A852B8519E"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_E1F77F65_7D13_4ac2_B7FE_207A831259B4" name="OneSecondDurationReferencePoint"
description="Duration on positive one second"
landmark="EAID_26121EAF_96C4_4e3b_90B5_568E427782FE">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_6326CE28_99C7_4c52_9584_D40D5451D565"
axis="EAID_13D5B7DF_48FF_4ad4_B66E_AA8AD7621A42" value="1.0"
valueTypeUnit="EAID_D4E6F91B_E17A_42b5_9D3F_A5A852B8519E"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis"
xmi:id="EAID_13D5B7DF_48FF_4ad4_B66E_AA8AD7621A42" name="TimeDurationMeasurementSystemAxis"
description="Axis for time duration in seconds" axis="EAID_3EFC05DA_4D3A_4e3d_8AEC_C9FEC8D85087"
defaultValueTypeUnit="EAID_D4E6F91B_E17A_42b5_9D3F_A5A852B8519E"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_69800871_BDC1_4b18_8A05_965A0D6AA56B"
name="PosixTimeMeasurementSystem">
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_3E078B08_3024_4dfe_B01E_74929C579251"
name="PosixTimeMeasurementSystem" description="Measurement system for time in accordance with
the Posix." measurementSystemAxis="EAID_789E08B1_DC02_497e_A8C9_75BC1AB027CD"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference="IEEE Std
1003.1-2008" orientation="Value increases as time moves towards the future">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_BD9DFD8C_8109_4fca_AE6D_751BDFE80A13" name="PositiveOneSecondAfterEpochStart"
description="Duration on positive one second"
landmark="EAID_26121EAF_96C4_4e3b_90B5_568E427782FE">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_4412FD57_2CF3_444c_81F6_A45CDB5C4DB3"
axis="EAID_789E08B1_DC02_497e_A8C9_75BC1AB027CD" value="1"
valueTypeUnit="EAID_D4E6F91B_E17A_42b5_9D3F_A5A852B8519E"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 443
bull in 1582, to reform the Julian calendar to set the date for Easter to the time the First
Council of Nicaea had agreed to in 325."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_26121EAF_96C4_4e3b_90B5_568E427782FE"
name="OneSecondDurationLandmark" description="One second duration landmark."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_526E5000_ED7A_408d_86CD_65EEED91050F"
name="SpecificGregorianDayStart" description="The moment that a specified day of a specified month
of a specified year starts. e.g. 0:00:0 of Feb 12, 2000."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_D15D3A25_475C_4597_A3C8_D1BCE85BA908"
name="SpecificGregorianMonthStart" description="The moment that a specified month of a specified
year starts. e.g. 0:00:0 of Feb 1, 2000."/>
<element xmi:type="logical:Landmark" xmi:id="EAID_0114BCB1_A3F4_44b0_B710_D128C24A8C58"
name="SpecificGregorianYearStart" description="The moment that a specified year starts (0:00:00 on
Jan 1 of specified year)"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_DE454468_5239_4a39_81AC_B71B1EEAC2CA"
name="SpecificTimeOfDay" description="The time duration between the specified time and the start of
the specified Gregorian day"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_E3DB5E79_28F5_4546_AF37_5C5C59EAA687"
name="UnixEpochStart" description="Start of Unix Epoch (Jan 1, 1970 0:00:00)"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_07D5AF61_422D_4fff_8E3F_EBADE19C9743"
name="UTC_DayStart" description="The moment that a specified UTC day of a specified month of a
specified year starts. e.g. 0:00:00 Zulu"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_0F3F8CEA_7F8A_4d9d_B338_692BCEA4F9EB"
name="UTC_Noon" description="12 hours after the start of a specified UTC day of a specified month
of a specified year. e.g. 12:00:00 Zulu"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_3149A12E_1AB1_4ffd_9D14_1466FA5DCDE0"
name="ZeroDurationLandmark" description="A zero second duration meaning no time has elapsed."/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_59C3F554_23B6_4bf8_A0F8_107DDD00657E"
name="ViscosityMeasures">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_057CBEFA_AE56_4c92_9C84_8EC23BBF9DDA"
name="DynamicViscosityMeasures">
<element xmi:type="logical:ValueTypeUnit" xmi:id="EAID_B31A800C_880E_4285_8914_12871094C4EE"
name="RealPascalSeconds" description="Real numeric value for dynamic viscosity in SI units of
Pascal-seconds" unit="EAID_1C753236_2F55_4424_9CA3_47AD45CC4934"
valueType="EAID_7CB1E0A3_7D27_45fa_BF9E_22EB15886D68"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_2F0D69A5_4129_4c17_9019_E5E7887CF69B"
name="DynamicViscosityOfWaterAt100DegreesC" description="Dynamic viscosity of liquid water at100
degrees Celsius"/>
<element xmi:type="logical:Landmark" xmi:id="EAID_4A5A23A8_A843_4a9e_AD4A_123D5C05C2E1"
name="DynamicViscosityOfWaterAt20DegreesC" description="Dynamic viscosity of liquid water at 20
degrees Celsius"/>
<element xmi:type="logical:MeasurementSystem" xmi:id="EAID_ABE06F26_4180_4736_BB0D_CF8FE9B05010"
name="DynamicViscosityMeasurementSystem" description="Measurement system for dynamic (shear)
viscosity." measurementSystemAxis="EAID_2CA8F2E2_0148_48c7_BA65_555A7CEED7EF"
coordinateSystem="EAID_D73E1979_E607_48ce_A01F_2EAD5226614D" externalStandardReference=""
orientation="Values increase as viscosity increases">
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_EB720FFC_942A_41de_88DE_362C5C31D500" name="WaterDynamicViscosityAt100DegreesC"
description="Reference point for dynamic viscosity of liquid water at100 degrees Celsius"
landmark="EAID_2F0D69A5_4129_4c17_9019_E5E7887CF69B">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_9B78B3A4_8A08_49f0_92DC_44D610044196"
axis="EAID_2CA8F2E2_0148_48c7_BA65_555A7CEED7EF" value="0.0002822"
valueTypeUnit="EAID_B31A800C_880E_4285_8914_12871094C4EE"/>
</referencePoint>
<referencePoint xmi:type="logical:ReferencePoint"
xmi:id="EAID_D7BF3B19_656B_49c8_A910_3A29EB42B993" name="WaterDynamicViscosityAt20DegreesC"
description="Dynamic viscosity of liquid water at 20 degrees Celsius"
landmark="EAID_4A5A23A8_A843_4a9e_AD4A_123D5C05C2E1">
<referencePointPart xmi:type="logical:ReferencePointPart"
xmi:id="EAID_53BE9E6D_168D_445f_86D8_65FE73FA216C"
axis="EAID_2CA8F2E2_0148_48c7_BA65_555A7CEED7EF" value="0.001002"
valueTypeUnit="EAID_B31A800C_880E_4285_8914_12871094C4EE"/>
</referencePoint>
</element>
<element xmi:type="logical:MeasurementSystemAxis" xmi:id="EAID_2CA8F2E2_0148_48c7_BA65_555A7CEED7EF"
name="DynamicViscosityMeasurementSystemAxis" description="Measurement system axis for dynamic
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 445
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_7F48F8D3_EBBB_43d4_A3FC_28E4C02FD6D7" name="Units">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_E119CB56_8C90_4344_9234_48BC281646E1"
name="ElectricChargedDensity">
<element xmi:type="logical:Unit" xmi:id="EAID_DED3DC3D_2228_4180_9A4F_CF994B64B6CF"
name="CoulombsPerMeter" description="Coulombs per meter"/>
<element xmi:type="logical:Unit" xmi:id="EAID_90D9E4E8_7A91_4dd4_A96E_DF01C3157644"
name="CoulombsPerMeterCubed" description="Coulombs per meter cubed."/>
<element xmi:type="logical:Unit" xmi:id="EAID_C784CF8E_F7F8_4370_865A_33FDF5B0CF44"
name="CoulombsPerMeterSquared" description="Coulombs per meter squared"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_1155820A_4F2D_4c2a_AE88_C07FB1D7DCEE"
name="ElectricCurrentDensity">
<element xmi:type="logical:Unit" xmi:id="EAID_1B59A0CB_A750_4fde_B861_3C0FBACB9E7B"
name="AmpPerSquareMeter" description="Unit of measure for representing one amp of electric current
flowing through a material with a cross-sequential area of one square meter."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_34A3104E_B9CC_4d0c_B1ED_7A8A9A725886"
name="Percentage">
<element xmi:type="logical:Unit" xmi:id="EAID_68A9F947_C54C_4c06_84C6_29E302284981" name="Percentage"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_141C89BD_8FBF_4ba9_8C07_06EA541A4D65"
name="AbsorbedDose">
<element xmi:type="logical:Unit" xmi:id="EAID_06F05060_CF06_4f65_A9AF_75CA9D6D4343" name="Grays"
description="Unit of measure for the absorption of on joule of radiation energy by one kilogram or
matter."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_A48F5144_B237_48e3_95DE_91E8428E64AC"
name="AbsorbedDoseRate">
<element xmi:type="logical:Unit" xmi:id="EAID_F8CE6A2C_0E47_4f2f_88E0_5F255664DCDA"
name="GraysPerSecond" description="Unit of measure for the rate of the absorption of on joule of
radiation energy by one kilogram or matter over a one second of time."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_F0484DCD_1396_4317_A8A3_067DDB8A1CC3"
name="Acceleration">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_06176F99_5497_4016_AB99_E148D5C196E8"
name="AngularAcceleration">
<element xmi:type="logical:Unit" xmi:id="EAID_8864E77B_D4D8_4491_8145_285B1F8959A2"
name="DegreesPerSecondPerSecond" description="Unit of measure for the rate of change of an angular
speed in which the base angular measure unit is degees."/>
<element xmi:type="logical:Unit" xmi:id="EAID_F2444AAF_68C5_4355_8AB0_5BFC0A73975F"
name="RadiansPerSecondPerSecond" description="Unit of measure for the rate of change of an angular
velocity in which the base angular measure unit is radian."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_341B2966_715A_4534_BA74_851528FAF3AE"
name="LinearAcceleration">
<element xmi:type="logical:Unit" xmi:id="EAID_FCADE251_5B0A_4336_9E35_DE698096B06F"
name="FeetPerSecondPerSecond" description="Unit of measure for the rate of change of velocity in
which the base distance measure traveled is feet."/>
<element xmi:type="logical:Unit" xmi:id="EAID_9B5484D4_F922_407d_9E61_17E56532FDD8"
name="KnotsPerSecondPerSecond"/>
<element xmi:type="logical:Unit" xmi:id="EAID_59A485AE_23F2_4b2d_87E7_18ECB59553EE"
name="MetersPerSecondPerSecond" description="Unit of measure for the rate of change of velocity in
which the base distance measure traveled is meters."/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_07C807C7_A137_4da8_A9B6_E4317F682AC7"
name="AmountOfConcentration">
<element xmi:type="logical:Unit" xmi:id="EAID_0B528C0C_B50B_4152_89FE_09BA977E13FE"
name="MolesPerCubicMeter" description="Unit of measure for the number of atoms of a substance per
unit volume."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_92823862_B9DB_4795_8B2E_8C0F397E54C3"
name="AmountOfSubstance">
<element xmi:type="logical:Unit" xmi:id="EAID_81285D76_2D91_4edd_B41D_009A1301FB63" name="Moles"
description="Unit of measure to express amounts of a chemical substance, defined as the amount of any
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 447
<element xmi:type="logical:Unit" xmi:id="EAID_BE2795B1_06AD_4261_B7E8_8A4F4D94FC84"
name="KilogramsPerSquareMeter" description="Unit of measure for representing surface density in mass
per unit area."/>
<element xmi:type="logical:Unit" xmi:id="EAID_3B4BB6FB_6B1F_4b41_8EAA_24C1CA377436"
name="WattsPerSquareMeter" description="Unit of measure for representing the rate one watt of heat
energy to flow through one square meter of area normal to the direction of heat flux. Derived SI
Unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_2666FD95_0B38_4c4a_8681_F3A9B32C257E"
name="DerivedUnits">
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_31A71A77_D00A_4a7c_8BC2_24DEA8414740" name="Ratios">
<element xmi:type="logical:Unit" xmi:id="EAID_EB709A75_CD50_4887_8E40_086CE821CBAA"
name="AmpPerMeter" description="Unit of measure for representing a magnetic field strength. Derived
SI unit"/>
<element xmi:type="logical:Unit" xmi:id="EAID_D51FFEB5_1DE1_416b_8794_3EBECB2C3ABC" name="Bels"
description="Unit of measure for representing the comparison of the power levels in electrical
communication or sound."/>
<element xmi:type="logical:Unit" xmi:id="EAID_311835BB_B20D_434d_8CBD_F5E857464151"
name="CubicMetersPerKilogram" description="Unit of measure for representing specific volume of a
substance as the ratio of the substance's volume per mass, the reciprocal of density."/>
<element xmi:type="logical:Unit" xmi:id="EAID_00C18C06_4B39_4c90_97AC_8F3E5B3A70BF" name="Decibels"
description="Unit of measure for representing the intensity of sound."/>
<element xmi:type="logical:Unit" xmi:id="EAID_825A32F7_E47C_467e_8BF1_6A7D8010ABE6"
name="JoulesPerKelvin" description="Unit of measure for representing heat capacity or entropy.
Derived SI unit"/>
<element xmi:type="logical:Unit" xmi:id="EAID_5D20F6EE_0253_4544_87B4_058BA94B36AD"
name="JoulesPerKilogram" description="Unit of measure for representing specific energy per unit
mass. Derived SI Unit."/>
<element xmi:type="logical:Unit" xmi:id="EAID_784D140F_A7CF_48d8_8732_26AD73355194"
name="JoulesPerKilogramKelvin" description="Unit of measure for representing specific heat
capacity, which is the heat capacity per unit mass of a material. Derived SI Unit"/>
<element xmi:type="logical:Unit" xmi:id="EAID_E998A459_D274_4ecc_A138_88BE059E72A3"
name="KilogramsPerCubicMeter" description="Unit of measure for material density. Derived SI Unit"/>
<element xmi:type="logical:Unit" xmi:id="EAID_40659D46_18A7_4bdf_A4E2_B6DB4B5FE62B"
name="LitersPerHour" description="Unit of measure for volume flow rate."/>
<element xmi:type="logical:Unit" xmi:id="EAID_02B18938_8AD8_4ec0_A8C2_B7DFFCC1CE8E"
name="MillimetersPerHour" description="Unit of measure for representing the number of millimeters
traveled in one hour used in speed and velocity metrics."/>
<element xmi:type="logical:Unit" xmi:id="EAID_6FE784C0_3B93_4de4_B23A_0A5E83DCDFBA" name="Nepers"
description="Unit of measure for representing the ratio of two current, voltages, or analogous
quantities. Not an SI unit."/>
<element xmi:type="logical:Unit" xmi:id="EAID_393B5A6F_990A_4186_92E8_F6BA2012123D"
name="NewtonsPerMeter" description="Unit of measure for representing surface tension in force per
unit length. SI Derived unit"/>
<element xmi:type="logical:Unit" xmi:id="EAID_E4A57064_F91E_4cea_8915_E2586756CC3E"
name="RevolutionsPerMinute" description="Unit of measure for representing the frequency of
rotation."/>
<element xmi:type="logical:Unit" xmi:id="EAID_9948928A_E5D5_4399_81B8_D1B7A8D0D017"
name="WattsPerSteradian" description="Unit of measure for representing the radiant intensity of an
object."/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_BC922F67_DA3D_4cf0_8EB2_27B5FCFE7E09" name="DryVolume">
<element xmi:type="logical:Unit" xmi:id="EAID_4E83620B_DF8D_4a73_BCD8_CFCE5F8CE838" name="Bushels"
description="Unit of measure for representing the capacity used for dry goods."/>
<element xmi:type="logical:Unit" xmi:id="EAID_3C7531E9_39D0_4c97_92DF_6EE768E48340" name="DryBarrels"
description="Unit of measure for representing the volume for dry materials."/>
<element xmi:type="logical:Unit" xmi:id="EAID_03EC1A39_CC6B_425c_A594_99607CEC301D" name="Gallons"
description="Unit of measure for representing the capacity of liquid measures."/>
<element xmi:type="logical:Unit" xmi:id="EAID_66072D3A_A38C_4f03_B011_ACBCB092388E" name="Pecks"
description="Unit of measure for representing the capacity used for dry goods, equal to 1/4 of a
bushel."/>
<element xmi:type="logical:Unit" xmi:id="EAID_0B14534E_61DC_4b30_BA8A_1B4CAEE4707B" name="Pints"
description="Unit of measure for representing the capacity of liquid or dry goods, equal to 1/2 of a
quart."/>
<element xmi:type="logical:Unit" xmi:id="EAID_3716B9AA_FCB9_48c8_B7C4_6A14551BE748" name="Quarts"
description="Unit of measure for representing the capacity of liquid or dry goods, equal to 1/4 of a
gallon."/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 449
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_EADEC90A_9D10_4328_9A03_84D925C7EDE4"
name="FluidVolume">
<element xmi:type="logical:Unit" xmi:id="EAID_4DD8AE21_0EB0_492f_8BBF_048D399C924F" name="CupsUS"
description="Unit of measure for representing the customary cup for cooking ingredients and is
defined as 1/2 of a US Pint."/>
<element xmi:type="logical:Unit" xmi:id="EAID_F1B57A45_867B_4808_936F_6C4F1F50EF10" name="FluidDramsUS"
description="Unit of measure for representing the volume or capacity in the apothecary system, equal
to 1/8 of a fluid ounce."/>
<element xmi:type="logical:Unit" xmi:id="EAID_0976132A_E70B_4d8f_B219_B8E01258897D"
name="FluidOuncesUS" description="Unit of measure for representing the volume or capacity in the US
Customary System used liquid measure."/>
<element xmi:type="logical:Unit" xmi:id="EAID_13E19836_0B3F_4546_8FB5_5C2F7170F7F6" name="GallonsUS"
description="Unit of measure for representing the liquid volume or capacity in the US Customary
System equal to 4 quarts."/>
<element xmi:type="logical:Unit" xmi:id="EAID_E48F9A6C_D5FF_4ee5_AD73_429FF52D50D7" name="GillsUS"
description="Unit of measure for representing the liquid volume, defined as 1/2 a cup in the US
Customary System."/>
<element xmi:type="logical:Unit" xmi:id="EAID_A5C59AE1_1DF6_4cf7_8D52_99A1D52461BA"
name="LiquidBarrels" description="Unit of liquid measure for representing 42 gallons or 5.6145833
cubic feet."/>
<element xmi:type="logical:Unit" xmi:id="EAID_253BAAF2_22DF_4e68_B114_3947BF549D8C" name="Liters"
description="Unit of measure for representing the volume of on kilogram of pure water at 4 Degrees
Celsius and standard atmospheric pressure."/>
<element xmi:type="logical:Unit" xmi:id="EAID_DA6FF1E2_BE3B_4d32_B429_82D068FE4855" name="Minims"
description="Unit of measure for representing the smallest unit of liquid measure 1/60 of a fluid
dram, or roughly equivalent to one drop."/>
<element xmi:type="logical:Unit" xmi:id="EAID_11AAA861_4C74_4f26_BA69_9D7BA3EAC5FD" name="OilBarrels"
description="Unit of measure for representing an oil barrels holding 42 US gallons."/>
<element xmi:type="logical:Unit" xmi:id="EAID_896D563A_1CED_48f3_AD92_234DF3ADEE9F" name="PintsUS"
description="Unit of measure for representing volume or capacity in US Customary System, used in
liquid measure and equal to 1/8 gallons."/>
<element xmi:type="logical:Unit" xmi:id="EAID_9448BB79_C145_432f_90B7_2535DAB51CED" name="QuartsUS"
description="Unit of measure for representing volume or capacity in US Customary System, used in
liquid measure and equal to 1/4 of a US gallon."/>
<element xmi:type="logical:Unit" xmi:id="EAID_0BC25F42_D33B_4780_82D8_7508088534AE" name="Tablespoons"
description="Unit of measure for representing 1/2 a fluid ounce or 3 teaspoons typically used as a
measure for cooking."/>
<element xmi:type="logical:Unit" xmi:id="EAID_B5226835_2703_4f5b_9837_13DE5347B9C6" name="Teaspoons"
description="Unit of measure for representing a small spoon used in cooking equivalent 1/6 fluid
ounce."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_4D16D625_6245_4ddc_A597_C7A4FE9AA71B" name="Force">
<element xmi:type="logical:Unit" xmi:id="EAID_F4C79394_2908_4acb_9317_6E30C94B489D" name="Dyns"
description="Unit of measure for representing a unit of force specified in the Centimeter Gram Second
system of units."/>
<element xmi:type="logical:Unit" xmi:id="EAID_3F9CBF28_F842_4896_ABEC_B4498760BD80" name="Newtons"
description="Unit of measure for representing the force that would give a mass of one kilogram an
acceleration of on meter per second per second and is equivalent to 100,000 dynes. An SI unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_A521DBEC_C8C6_4ab0_A723_98FF5C6418B9" name="Frequency">
<element xmi:type="logical:Unit" xmi:id="EAID_F7DB7C83_5B79_4a4b_AEEE_FF7AAB4861E5" name="GigaHertz"
description="Unit of measure for representing frequency used to measure the clock rate of modern
digital logic, equal t one billion hertz."/>
<element xmi:type="logical:Unit" xmi:id="EAID_161469CC_7BFE_4206_BF8E_17E105C1A679" name="Hertz"
description="Unit of measure for representing frequency, equal to one cycle per second . An SI
unit."/>
<element xmi:type="logical:Unit" xmi:id="EAID_2DC04833_07D0_462c_B494_1AAF26BAC3F8" name="KiloHertz"
description="Unit of measure for representing frequency equivalent to 1,000 cycles per second or
1,000 hertz."/>
<element xmi:type="logical:Unit" xmi:id="EAID_B757844F_7DD2_4be1_B0B0_9AAC190AA821" name="MegaHertz"
description="Unit of measure for representing one million hertz, as measure of frequency of radio
transmissions or transmission speeds of electronic devices."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_6A88C4F4_1721_4f53_BB31_F3254300B00D"
name="HeatCapacity"/>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_FBAA40BF_3DE0_4d3f_93DF_689E6D11CE27"
name="Illuminance">
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 451
<element xmi:type="logical:Unit" xmi:id="EAID_25E89165_B7E4_4b86_A7F5_CB20E507EE6F" name="Yards"
description="Unit of measure for representing length in the US Customary and British Imperial Systems
equal to 3 feet."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_C13D2921_9AB4_407a_B3ED_BB3F5CB60DFA" name="Luminance">
<element xmi:type="logical:Unit" xmi:id="EAID_95E8CD97_D12C_43b4_AC04_AEFE6A88D852"
name="CandelasPerSquareMeter" description="Unit of measure for representing light emitted per unit
area, commonly used to specify the brightness of a display device. An SI unit."/>
<element xmi:type="logical:Unit" xmi:id="EAID_C1D5EE04_3949_4231_877F_74D1CE7E8C39" name="Stilbs"
description="Unit of measure for representing luminance in the Centimeter Gram Seconds system for
objects that are not self-luminous, equal to one candela per square centimeter."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_C4AE669F_20BA_483f_A73F_0C3FFDE10B93"
name="LuminousFlux">
<element xmi:type="logical:Unit" xmi:id="EAID_4B042F46_5BE0_4555_BE22_C079264EEC1E" name="Lumens"
description="Unit of measure for representing luminous flux, equal to the amount of light emitted per
second in a unit solid angle of on steradina from a uniform source of one candela. An SI unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_C8A344B6_9D5F_4024_9583_19169181C457"
name="LuminousIntensity">
<element xmi:type="logical:Unit" xmi:id="EAID_846F619C_9BC7_40b2_AAA5_3CD2222F84CF" name="Candelas"
description="Unit of measure for representing luminous intensity emitted by a light source in a
particular direction, weighted by the luminosity function. An SI Unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_A91A24BA_052C_4046_B78B_73C36C479497"
name="MagneticField">
<element xmi:type="logical:Unit" xmi:id="EAID_4D37723D_ACC0_44e7_B1C7_6EB897E4F748" name="Oersteds"
description="Unit of measure for representing magnetic field strength in the Centimeter Gram Second
system."/>
<element xmi:type="logical:Unit" xmi:id="EAID_4733852F_C574_42b8_B6CD_6A665A869BCF" name="Teslas"
description="Unit of measure for representing magnetic flux density equal to a flux of one weber in
an area of one square meter. An SI unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_B6DFB41D_2B7F_44a2_AA9A_EF10F98EC4DA"
name="MagneticFlux">
<element xmi:type="logical:Unit" xmi:id="EAID_1D856CCC_D134_490e_A26B_A55DE73BD59C" name="Maxwells"
description="Unit of measure for representing magnetic flux equal to the flux through one square
centimeter normal to a field of one gauss, in the Centimeter Gram Second system."/>
<element xmi:type="logical:Unit" xmi:id="EAID_FC322DA3_AB79_4c7d_8736_EC76A47812A8" name="Webers"
description="Unit of measure for representing magnetic flux equal to the flux that produces in a
circuit of one turn an electromotive force of one volt, when the flux is uniformly reduced to zero
within one second. An SI unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_162DEF21_C862_442e_B0C3_3A2149F72396"
name="MagneticFluxDensity">
<element xmi:type="logical:Unit" xmi:id="EAID_7F0BDC60_82FF_4291_993B_0247FE33C000" name="Gauss"
description="Unit of measure for representing magnetic flux density equal one Maxwell per square
centimeter, in the Centimeter Gram Second system."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_8145F73A_1151_4a74_A2CB_F0A732321088" name="Mass">
<element xmi:type="logical:Unit" xmi:id="EAID_353F519A_9F65_47ce_A46C_FFA8E2555DEA"
name="Dalton_UnifiedAtomicMassUnits" description="Unit of measure for representing mass on an atomic
or molecular scale defined as one twelfth of the rest mass of an unbound atom of carbon-12 in its
nuclear and electronic ground state."/>
<element xmi:type="logical:Unit" xmi:id="EAID_D7D0A1EB_DF28_4ed9_B090_C877DCDEEDF0" name="ElectronMass"
description="Unit of measure for representing electron rest mass is an atomic fundamental physical
constant is defined as the mass of a stationary electron."/>
<element xmi:type="logical:Unit" xmi:id="EAID_E389C2FD_BCCD_4263_AF43_474D39577BFE" name="Grams"
description="Unit of measure for representing a metric unit of mass equal to one thousandth of a
kilogram."/>
<element xmi:type="logical:Unit" xmi:id="EAID_A21827D1_48AF_4e25_A534_D2CDAE199D76" name="KiloGrams"
description="Unit of measure for representing the mass equal to the International Prototype of the
Kilogram."/>
<element xmi:type="logical:Unit" xmi:id="EAID_5B6C4513_5B50_45de_904F_CC6838B799B7" name="Milligrams"
description="Unit of measure for representing a metric unit of mass equal to one thousandth of a
gram."/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 453
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_20724726_250C_4ff4_B6D2_8A7FA5801793"
name="Permeability">
<element xmi:type="logical:Unit" xmi:id="EAID_88F0F618_A2DD_4536_921F_6D2E6CA1CD0D"
name="HenrysPerMeter" description="Unit of measure for representing the permeability of a material
surrounded by a single turn of a flat sheet conductor including an area of one square meter and
length one meter which gives an inductance of one henry. A Derived SI Unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_53C9FC83_79BD_4e7e_A5D0_420F11424DC8"
name="Permittivity">
<element xmi:type="logical:Unit" xmi:id="EAID_7A1862E4_E85E_46d5_8A59_F50EFBBE9131"
name="FaradsPerMeter" description="Unit of measure for representing the resistance encountered when
forming an electric field in a medium. An SI derived unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_4B7EA033_0489_40cf_B20F_DBA28D250A53" name="Pressure">
<element xmi:type="logical:Unit" xmi:id="EAID_C28AD0FA_5435_4be9_BC05_F718E801C001" name="Bars"
description="Unit of measure for representing pressure equal to a million dynes per square centimeter
used in meteorology to report atmospheric pressure."/>
<element xmi:type="logical:Unit" xmi:id="EAID_B12A36E4_D202_4eca_913A_41313B5C69F0" name="FlightLevel"
description="Unit of measure for representing a surface of constant atmosphere pressure which is
related to a specific pressure datum, 1013.2hPa, and is separated from other such surfaces by
specific pressure intervals."/>
<element xmi:type="logical:Unit" xmi:id="EAID_0A0C5318_D176_4967_8B4E_E436A3715FF3"
name="InchesOfMercury" description="Unit of measure for representing the pressure exerted by a column
of mercury one inch high under standard conditions of temperature and gravity."/>
<element xmi:type="logical:Unit" xmi:id="EAID_C437C35F_4DFB_4200_8133_5DA158EB6085"
name="MillimetersOfMercury" description="Unit of measure for representing the pressure exerted by a
column of mercury one millimeter high under standard conditions of temperature and gravity."/>
<element xmi:type="logical:Unit" xmi:id="EAID_9CDA2125_1689_411c_AC85_04287E8FC3CE" name="Pascals"
description="Unit of measure for representing pressure of one newton per square meter. An SI Unit."/>
<element xmi:type="logical:Unit" xmi:id="EAID_411C9D3A_3AC2_4123_BDAE_7F5C771611E6"
name="PoundsPerSquareInch" description="Unit of measure for representing pressure based o he
avoirdupois units resulting form a force of one pound-force applied to an area of one square inch. A
non-SI Unit."/>
<element xmi:type="logical:Unit" xmi:id="EAID_E55C3C11_FA94_4421_9280_F20C673B8919" name="Torr"
description="Unit of measure for representing pressure with the ratio of 760 to 1 standard
atmosphere, roughly equal to the fluid pressure exerted by a millimeter of mercury used in high-
vacuum physics and engineering. A non SI Unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_99CD3AB8_443B_403a_B846_2D5EB490CD77" name="Radiance">
<element xmi:type="logical:Unit" xmi:id="EAID_449612D3_50F4_4eb2_8187_91A1482ACE83"
name="WattsPerSquareMeterSteradian" description="Unit of measure for representing radiance and is
defined as the power per unit solid angle. An SI unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_C2C0FF0B_B5C6_4057_B8C1_61992C1C5CA0"
name="RadiantIntensity">
<element xmi:type="logical:Unit" xmi:id="EAID_3A685039_DB3F_4044_AAEC_945F46598CC5"
name="WattPerSteradian" description="Unit of measure for representing radiant intensity characterized
as the emission of radiation by an antenna. An SI Unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_57EC71DE_6A7E_4cab_A347_3077716EF57E"
name="Radioactivity">
<element xmi:type="logical:Unit" xmi:id="EAID_CAF4F95D_F642_423c_83A6_6219ED07002D" name="Becquerels"
description="Unit of measure for representing radioactivity, defined as the activity of a quantity of
radioactive material in which one nucleus decays per second. An SI derived unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_BE375988_26A7_4ac0_98F8_C8F0339DF492"
name="SolidAngle">
<element xmi:type="logical:Unit" xmi:id="EAID_02B1EB9C_7717_42b5_A24B_5BB6C5E413B4"
name="SquareDegrees" description="Unit of measure for representing the measure of a solid angle used
to measure parts of a sphere. A non-SI unit."/>
<element xmi:type="logical:Unit" xmi:id="EAID_51821B33_5943_4d6c_9667_151F4D916559" name="Steradians"
description="Unit of measure for representing squared radian is the measure of a solid angle used to
measure parts of a sphere. An SI unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_56EEC7F8_8058_43af_83D2_11480E771BBE" name="Speed">
<element xmi:type="logical:Unit" xmi:id="EAID_D0BB71A9_1DA4_4b42_B20F_1DA918A74312"
name="DegreesPerSecond" description="Unit of measure for representing rotational speed, defined by
the change in orientation of an object, in degrees every second. An SI Unit."/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 455
<element xmi:type="logical:Unit" xmi:id="EAID_610F07F0_80C3_4243_81DD_70AD7BF78660"
name="SayboltUniversalSeconds" description="Obsolete units for kinematic viscosity. Conversion to the
preferred units of centistokes (cSt) is defined in ASTM D 2161"/>
<element xmi:type="logical:Unit" xmi:id="EAID_9B5D0AEF_2419_442d_B413_AD98445E7BC7"
name="SquareMetersPerSecond" description="SI units for kinematic viscosity"/>
<element xmi:type="logical:Unit" xmi:id="EAID_B146CC58_0C97_4511_A034_B1E3D4414251" name="Stokes"
description=" Units for kinematic viscosity, 1 stokes (St) = 0.0001 m^2/sec"/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_9BAF9C2C_5BB2_4e98_994F_5BB8307528B8" name="Voltage">
<element xmi:type="logical:Unit" xmi:id="EAID_D1F6B8CB_00D0_447a_B871_02D5EA97DFED"
name="ElectronVolts" description="Unit of measure representing the amount of kinetic energy gained by
a single unbound electron when it accelerates through an electric potential difference of one volt. A
non-SI unit."/>
<element xmi:type="logical:Unit" xmi:id="EAID_7DAFAFA2_9CA0_4db4_ADB9_A483D5B16E8D" name="Volts"
description="Unit of measure representing the difference in electric potential between two points of
a conducting wire when an electric current of one amp dissipates one watt of power between those
points. An SI derived unit."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_F4FE45A0_0E6E_41d9_B525_A30FB6A008BC" name="Volume">
<element xmi:type="logical:Unit" xmi:id="EAID_6C2D0767_7566_4967_B174_C1F38C5F3DC5"
name="CubicCentimeters" description="Unit of measure representing volume of a cube measuring 1 cm x 1
cm x 1 cm. A SI derived unit."/>
<element xmi:type="logical:Unit" xmi:id="EAID_E959EB0F_095E_4e90_88F4_32E5490BB442" name="CubicFeet"
description="Unit of measure representing volume of a cube measuring the same multiple of a foot unit
in length on all sides."/>
<element xmi:type="logical:Unit" xmi:id="EAID_8EED50A7_7179_44ab_B373_930D69E2476B" name="CubicInches"
description="Unit of measure representing volume of a cube measuring 1 in x 1 in x 1 in."/>
<element xmi:type="logical:Unit" xmi:id="EAID_B6983E55_B326_4925_B8B0_0EF9E75250DD" name="CubicMeters"
description="Unit of measure representing volume of a cube measuring 1 m x 1 m x 1 m. A SI derived
unit."/>
<element xmi:type="logical:Unit" xmi:id="EAID_8BA0E5B0_CB13_490a_9363_6A3C2C2B16B8"
name="CubicMillimeters" description="Unit of measure representing volume of a cube measuring 1 mm x 1
mm x 1 mm. A SI derived unit.m"/>
<element xmi:type="logical:Unit" xmi:id="EAID_3DF7E5B0_A605_4e2b_BB15_B8EC36059B8B" name="CubicYards"
description="Unit of measure representing volume of a cube measuring 1 yds x 1 yds x 1 yds."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_1A440A82_31D5_4a0d_B09E_D7771FF6A41C" name="Work">
<element xmi:type="logical:Unit" xmi:id="EAID_C1B2CBC7_C0DB_4a69_80B2_087D899DC14A" name="Ergs"
description="Unit of measure representing work or energy equal to the work done by a force of one
dyne when its point of application moves through a distance of one centimeter in the direction of the
force, used in the Centimeter Gram Seconds system."/>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_43329893_F8AF_41cd_8872_35C8FFBFEFCA"
name="UnitlessDimensionless">
<element xmi:type="logical:Unit" xmi:id="EAID_1268C4EA_1948_4472_B251_CDD0342B9BC1" name="Percent"
description="A number or rate that is expressed as a certain number of parts of something divided
into 100 parts."/>
<element xmi:type="logical:Unit" xmi:id="EAID_DA342318_2A86_40ad_9B8F_93BD6F02D542" name="Ratio"
description="A unit used to specify the ratio of one value to another having the same units"/>
<element xmi:type="logical:Unit" xmi:id="EAID_0C482F2C_A548_4cf1_B9AD_5086FD62C41B" name="Unitless"
description="A "placeholder" to specify for values that have no engineering units or where
units are not meaningful, but a Unit specification is required"/>
</ldm>
</ldm>
<ldm xmi:type="face:LogicalDataModel" xmi:id="EAID_92A25A5B_0CF9_42d2_89F0_937FCFCF5B76"
name="Enumerations">
<element xmi:type="logical:Enumerated" xmi:id="EAID_5B1EEC9D_680C_432a_9C40_DFD0205F43E6"
name="CardinalOrdinalDirection_TrueNorth" description="Describes the set of cardinal and ordinal
directions with respect to True North." standardReference="">
<label xmi:type="logical:EnumerationLabel" xmi:id="EAID_20459257_A276_4701_8510_50E052392B7D"
name="EAST"/>
<label xmi:type="logical:EnumerationLabel" xmi:id="EAID_894365BA_911E_4f04_BBC8_8140D93DA65D"
name="NORTH"/>
<label xmi:type="logical:EnumerationLabel" xmi:id="EAID_A2C82B44_99C5_4ced_AE90_C18E9B38CB81"
name="NORTHEAST"/>
<label xmi:type="logical:EnumerationLabel" xmi:id="EAID_F7385E06_3643_40bd_9D7C_E9D377FA142D"
name="NORTHWEST"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 457
<characteristic xmi:type="logical:CharacteristicProjection" xmi:id="_AKKowxRAEeSZNohePfXakg"
projectedCharacteristic="_AKEiIBRAEeSZNohePfXakg" rolename="att"
realizes="EAID_53314BC3_ABC7_4bb6_8A78_006A8DFB5EA7" path=".attitude"/>
</element>
<element xmi:type="logical:View" xmi:id="_AKKBsRRAEeSZNohePfXakg" name="Nav_Data" description="Logical
view representing the resolved navigation data." realizes="_AKA3xRRAEeSZNohePfXakg">
<characteristic xmi:type="logical:CharacteristicProjection" xmi:id="_AKKowRRAEeSZNohePfXakg"
projectedCharacteristic="_AKIMgBRAEeSZNohePfXakg" rolename="att" realizes="_AKA3xhRAEeSZNohePfXakg"
path=".attitude"/>
<characteristic xmi:type="logical:CharacteristicProjection" xmi:id="_AKKowBRAEeSZNohePfXakg"
projectedCharacteristic="_AKIMgBRAEeSZNohePfXakg" rolename="pos" realizes="_AKA3xxRAEeSZNohePfXakg"
path=".position"/>
</element>
</ldm>
</ldm>
</ldm>
<pdm xmi:type="face:PlatformDataModel" xmi:id="_ALcbIBRAEeSZNohePfXakg" name="Platform_Model">
<pdm xmi:type="face:PlatformDataModel" xmi:id="EAID_6584F90E_CB01_429f_B147_54186900BE80" name="USM_PDM">
<element xmi:type="platform:Entity" xmi:id="_ALjv4BRAEeSZNohePfXakg" name="EGI1" description="Platform
entity representing a single instance of an EGI." realizes="_AKGXURRAEeSZNohePfXakg">
<composition xmi:type="platform:Composition" xmi:id="_ALjv4RRAEeSZNohePfXakg" rolename="attitude"
type="_ALrEpBRAEeSZNohePfXakg" realizes="_AKGXUhRAEeSZNohePfXakg"/>
<composition xmi:type="platform:Composition" xmi:id="_ALjv4hRAEeSZNohePfXakg" rolename="position"
type="_ALp2gBRAEeSZNohePfXakg" realizes="_AKG-YBRAEeSZNohePfXakg"/>
</element>
<element xmi:type="platform:Entity" xmi:id="EAID_CF6F14E1_DD1D_439b_A993_7B9F0CE0E7A0" name="EGI2"
description="Platform entity representing a single instance of an EGI." realizes="_AKG-
YRRAEeSZNohePfXakg">
<composition xmi:type="platform:Composition" xmi:id="EAID_825D9566_A9EC_4174_86C0_E30AA16F3CD3"
rolename="attitude" type="_ALrEpBRAEeSZNohePfXakg" realizes="_AKG-YhRAEeSZNohePfXakg"/>
<composition xmi:type="platform:Composition" xmi:id="EAID_B7D3D2F9_A5C7_4460_BF95_6D66F262FBBC"
rolename="position" type="_ALp2gBRAEeSZNohePfXakg" realizes="_AKG-YxRAEeSZNohePfXakg"/>
</element>
<element xmi:type="platform:Entity" xmi:id="_ALhToBRAEeSZNohePfXakg" name="InertialMeasurementUnit"
description="Platform entity representing a single instance of an IMU."
realizes="_AKEiIBRAEeSZNohePfXakg">
<composition xmi:type="platform:Composition" xmi:id="_ALjI0BRAEeSZNohePfXakg" rolename="attitude"
type="_ALrEpBRAEeSZNohePfXakg" realizes="_AKGXUBRAEeSZNohePfXakg"/>
</element>
<element xmi:type="platform:Association" xmi:id="_ALkW8BRAEeSZNohePfXakg" name="NavManagementFunction"
description="Platform entity representing the navigation management function."
realizes="_AKIMgBRAEeSZNohePfXakg">
<composition xmi:type="platform:Composition" xmi:id="_ALk-ABRAEeSZNohePfXakg" rolename="attitude"
type="_ALrEpBRAEeSZNohePfXakg" realizes="_AKIMgRRAEeSZNohePfXakg"/>
<composition xmi:type="platform:Composition" xmi:id="_ALk-ARRAEeSZNohePfXakg" rolename="position"
type="_ALp2gBRAEeSZNohePfXakg" realizes="_AKIMghRAEeSZNohePfXakg"/>
<associatedEntity xmi:type="platform:AssociatedEntity" xmi:id="_ALllEBRAEeSZNohePfXakg"
rolename="imuNavSource" upperBound="-1" type="_ALhToBRAEeSZNohePfXakg"
realizes="_AKIzkBRAEeSZNohePfXakg" path=""/>
<associatedEntity xmi:type="platform:AssociatedEntity" xmi:id="_ALllERRAEeSZNohePfXakg"
rolename="egi1NavSource" upperBound="-1" type="_ALjv4BRAEeSZNohePfXakg"
realizes="_AKJaoBRAEeSZNohePfXakg" path=""/>
<associatedEntity xmi:type="platform:AssociatedEntity"
xmi:id="EAID_6D3938D1_2BDB_423d_8131_3E8D7E074E0D" rolename="egi2NavSource" upperBound="-1"
type="EAID_CF6F14E1_DD1D_439b_A993_7B9F0CE0E7A0" realizes="EAID_DCE7CA57_55AC_41b6_A9C4_A51973392FF9"
path=""/>
</element>
<pdm xmi:type="face:PlatformDataModel" xmi:id="_ALmMIBRAEeSZNohePfXakg" name="Physical_Data_Types">
<element xmi:type="platform:Double" xmi:id="_8vWQEBQxEeSHdN934ouJpQ" name="Altitude"
description="Physical data type representing the altitude component of the position measurement."
realizes="_vZiY4Ag5EeSFspy8Kj3F4Q"/>
<element xmi:type="platform:Double" xmi:id="_ALooZhRAEeSZNohePfXakg" name="HeadingDegree"
description="Physical data type representing the heading component of attitude in degrees."
realizes="EAID_C6705DC3_8C55_4de3_A7A6_C7B36A93C5A3"/>
<element xmi:type="platform:Double" xmi:id="_ALpPcRRAEeSZNohePfXakg" name="Latitude"
description="Physical data type representing the latitude component of the position measurement."
realizes="_vZiY4wg5EeSFspy8Kj3F4Q"/>
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 459
<port xmi:type="uop:MessagePort" xmi:id="_AL01oxRAEeSZNohePfXakg" name="EGI2_Data" description="Message
port for EGI 1." messageType="_ALsSwBRAEeSZNohePfXakg" communicationStyle="SingleInstanceMessaging"
messageExchangeType="OutboundMessage" period="0.05" programmingLanguage="Ada"
synchronizationStyle="NonBlocking"/>
<port xmi:type="uop:MessagePort" xmi:id="_AL01ohRAEeSZNohePfXakg" name="IMU_Data"
messageType="_ALuH8RRAEeSZNohePfXakg" communicationStyle="SingleInstanceMessaging"
messageExchangeType="OutboundMessage" period="0.05" programmingLanguage="Ada"
synchronizationStyle="NonBlocking"/>
<port xmi:type="uop:MessagePort" xmi:id="_AL1csBRAEeSZNohePfXakg" name="NavData"
messageType="_ALtg4RRAEeSZNohePfXakg" communicationStyle="SingleInstanceMessaging"
messageExchangeType="OutboundMessage" period="0.05" programmingLanguage="Ada"
synchronizationStyle="NonBlocking"/>
<aliasSet xmi:type="uop:AliasSet" xmi:id="EAID_E361F81B_31AB_3531_AEBE_B145FFED2DF5">
<alias xmi:type="uop:Alias" xmi:id="_AL2DwRRAEeSZNohePfXakg" name="IMU"
aliasedElement="_ALhToBRAEeSZNohePfXakg"/>
</aliasSet>
</element>
</uopModel>
</face:DataModel>
The following acronyms are used within this Guide or included as an aid to understanding.
Acronym Definition
2D/3D 2-Dimensional/3-Dimensional
AC Aircraft
AT Anti-Tamper
BC Bus Controller
BM Bus Monitor
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 461
Acronym Definition
CL Confidentiality Level
CM Configuration Management
CT Critical Technology
DO Document
GE General Electric
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 463
Acronym Definition
GP General-Purpose
I/O Input/Output
IA Information Assurance
ID Identification, Identifier
IP Internet Protocol
IT Information Technology
MUX Multiplex
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 465
Acronym Definition
OE Operating Environment
OS Operating System
PP Protection Profile
QA Quality Assurance
RT Remote Terminal
SA Situational Awareness
ST Security Target
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 467
Acronym Definition
TD Technical Directive
TS Transport Services
US United States
WG Working Group
The following terms and phrases are defined both with respect to present day computer and
software engineering as well as their specific meaning within the FACE Technical Standard.
Aircraft Platform: Represents an airframe that hosts mechanical, computing, and other
resources necessary to perform a particular mission within the aviation domain.
Airworthiness Authority: The agency or entity responsible for flight safety and/or
airworthiness with signatory authority for Flight.
Airworthiness Release: A Release for the DoD aircraft that FACE software components
are integrated into. Disposition of airworthiness is based on engineering cognizance and
documented evidence of qualification, resulting in Airworthiness Certification or Flight
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 469
Computing Platform: The combination of hardware and the software infrastructure that
supports software components; it is the hardware the software is targeted to run on.
Typically refers to a processing hardware within a Weapons Replaceable Assembly
(WRA), or Line Replaceable Unit (LRU).
Configurable Parameter: A named feature of configurable components which may be
used to effect a behavioral modification of the component without modifying its
executable object code. Behavioral modifications to the component are achieved by
assigning or otherwise associating values or objects (e.g., numbers, strings, structures)
with such a feature.
Configuration: The selection of values or features of a component or system such that the
intended operational characteristics are achieved.
Component Configuration File: An XML document containing the desired set of CPIDs
and selection of associated valid value for each. This XML model is to be encoded in a
way that is both native to the component and suitable for consumption at run-time to
achieve run-time configuration.
Conformant: With respect to the FACE Technical Standard, this term applies when
software components and/or a computing architecture, environment, or platform meets all
of the stated requirements.
Data Movement: Refers to the conveyance and/or transfer of data from one component to
another.
Deactivated Code:
1. Source code that compiles conditionally and, when not enabled, generates no binary
executable code in the compiled file.
2. Binary executable portions of a compiled file that may be deselected from operation
based on run-time configuration information fed to the program at start-up or during
execution. This executable code traces to both software requirements and test cases that
verify its implementation. Further, the configuration mechanisms and the software that
controls the optional execution of the deactivated code trace to requirements and test
cases.
Dead Code: Executable binary code that does not trace to software requirements or test
cases. This may include residual code from other applications of a source code module,
extraneous compiler/linker-generated binary, diagnostic or maintenance code used by
developers or field personnel, and any other executable that is not engineered as part of
the system and properly documented.
Distributed Configuration: Distributed Configuration of the initialization parameters is
the responsibility of the individual software components or software configuration items.
Dynamic Personalization: Occurs when the software and hardware setting are adjusted
for a specific user during Run-time.
Execution Time: The time post-initialization where a software program is loaded in
memory and in a running state (i.e., in the run-time state).
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 471
allocation of computing resources such as memory, processes, threads, file descriptors,
etc. is required, and is mandatory in the Safety and Security Profile. The preferred design
approach to control these potential sources of non-determinism is through the use of pre-
allocated resource pools. With modern languages and OSs, it is possible to defer binding
of many system resources until run-time.
Mission-level Capabilities: Software adding high-level discernible value to the user’s
mission. An example is “situational awareness” which adds value to some missions.
However, a bubble-sort is a supporting algorithm and while it may be a component of a
mission capability, it is not the mission capability itself.
Monolithic Code Deliverable: A singular bundle of highly inter-dependent software
components characterized by a lack of modularity or that any single change to the code
has vast ramifications that are reviewed and tested.
Partition: The term “partition” originates from ARINC 653, which discusses the
allocation and isolation of computing platform resources on a partition basis (the POSIX
Standard covers service interfaces only; it does not specify nor prohibit use of
partitioning). A partition is an OS allocation of computing platform and processor
resources, including time. An executable, implementing an application or portion of an
application, is associated with each partition. A partition provides a means to isolate
resources to a particular application, preventing other applications from using or
consuming them. In support of application independence, each partition has its own
virtual address space for resources to be assigned within.
System designers use partitions to host multiple applications on a computing platform. By
assigning separate time, memory, and other resources, applications may execute with
sufficient independence that changes in one application cannot impact the execution of
other applications running on the same computing platform.
Processor time is allocated by dividing a fixed-length period of time (referred to as the
major-frame) into fixed-length time windows. One or more time window is allocated to
each partition. By selecting time windows that are harmonic to the major frame, the
system designer can cause some partitions to execute at a faster rate relative to other
partitions (e.g., 20 Hz, 10 Hz, 5 Hz). When the partition schedule is started, the OS selects
the first time window of the major frame. When this time window has completed, the next
time window is selected. When the last time window of the major frame is complete, the
OS starts the processor-time allocation sequence over with the first time window of the
major frame. This sequence is repeated continuously until the computing platform is
power-downed, halted, or reset.
System designers may define partitions whose memory and other non-time resources are
separately allocated, but whose time allocations are identical. When so designated, all
threads associated with the applications assigned to the partitions will compete on a
priority pre-emptive basis. This capability permits applications to be tightly coupled (e.g.,
client/server) in terms of time response (e.g., sever can respond immediately instead of
waiting for a uniquely allocated time window to execute in). Note that applications
allocated to partitions that share time resources are considered dependent applications
(i.e., change in one application may directly impact the execution and time resources
available to the other time-coupled applications), which prevents their qualification at
different criticality levels).
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 473
Safety-critical: A term applied to a condition, event, operation, process, or item whose
mishap severity consequence is either Catastrophic or Critical (e.g., safety-critical
function, safety-critical path, and safety-critical component).
Safety-related Software: Components for which a safety analysis has determined that a
high level of criticality exists, requiring achievement of qualification tasks and
documentation of development practices consistent with a high level of rigor.
Segment: A logical grouping of applications and/or services within a boundary whereby
elements within are allowed to vary based on system needs and the interface to elements
outside the segment boundary adhere to the FACE Technical Standard.
Service: A software utility providing capability to software applications or other services.
Software Component: A functionally or logically distinct part of a system, distinguished
for the purpose of convenience in designing and specifying a complex system as an
assembly of subordinate elements (ISO/IEC 24765:2010).
Software Configuration Item: A software configuration item is an aggregation of
software designated for Configuration Management and treated as a single entity in the
Configuration Management process (ISO/IEC 24765:2010). This entity satisfies an end
use function and can be uniquely identified at a given reference point (ISO/IEC
12207:2008 §4.7).
Technical Data Package: A consolidation of information used by designers and
manufacturers describing a software product or component. A collection of all the
information needed to integrate and deploy a specific software component or UoP.
Third Party: An entity (business, person, or component) that is beyond the two primary
interacting parties.
Thread: A schedulable execution sequence within an application (ARINC 653 uses the
term “process” when referring to thread behaviors).
Traditional Transport Middleware: A general description for a software component(s)
that is responsible for transferring data between applications and the OS.
Tuple: A finite ordered set of terms. In this context a tuple refers to the ordered set of a
CPID and a selected value for that CPID. Configuration tuples take the form of {<CPID>,
<value>}.
UML: Unified Modeling Language is a standardized general-purpose modeling language
in the field of object-oriented software engineering. The standard was created and is
managed by the OMG. UML includes a set of graphic notation techniques to create visual
models of object-oriented software-intensive systems.
XML: eXtensible Markup Language is a set of rules for encoding documents in a format
that is both human-readable and machine-readable. The design goals of XML emphasize
simplicity, generality, and usability over the Internet. It is widely used for the
representation of arbitrary data structures; for example, in web services. This Standard
was created and is managed by the World Wide Web Consortium (W3C).
Reference Implementation Guide for FACE™ Technical Standard, Edition 2.1 475