Autosar Exp Swarchitecture
Autosar Exp Swarchitecture
Architecture
AUTOSAR AP R22-11
Disclaimer
This work (specification and/or software implementation) and the material contained in
it, as released by AUTOSAR, is for the purpose of information only. AUTOSAR and the
companies that have contributed to it shall not be liable for any use of the work.
The material contained in this work is protected by copyright and other types of intel-
lectual property rights. The commercial exploitation of the material contained in this
work requires a license to such intellectual property rights.
This work may be utilized or reproduced without any modification, in any form or by
any means, for informational purposes only. For any other purpose, no part of the work
may be utilized or reproduced, in any form or by any means, without permission in
writing from the publisher.
The work has been developed for automotive applications only. It has neither been
developed, nor tested for non-automotive applications.
The word AUTOSAR and the AUTOSAR logo are registered trademarks.
Contents
1 Introduction 6
1.1 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Document Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Definition of Terms and Acronyms 8
2.1 Acronyms and Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Definition of Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Related Documentation 9
1 Introduction
This explanatory document provides detailed technical description of the software ar-
chitecture of the AUTOSAR Adaptive Platform standard with the main focus on the
architecture model.
1.1 Objectives
This document is an architecture description of the AUTOSAR Adaptive Platform in
accordance to [1, ISO/IEC 42010] and has the following main objectives:
• Identify the stakeholders of the AUTOSAR Adaptive Platform and their con-
cerns.
• Identify the system scope and provide overview information of the AUTOSAR
Adaptive Platform.
• Provide definitions for all used architecture viewpoints and a mapping of all
stakeholder concerns to those viewpoints.
• Provide an architecture view and its architecture models for each architecture
viewpoint used in this architecture description.
• Provide correspondence rules and correspondences among the contents of
this architecture description.
• Provide an architecture rationale (explanation, justification, reasoning for de-
cisions made) on a high level. A more in-depth documentation of decisions is
provided in [2, EXP_SWArchitecturalDecisions].
• Provide a record of known inconsistencies and gaps among the architecture
description.
There is some potential for ambiguity about the term "architecture". Association with
this term is quite different e.g., for a mass production project in contrast with Adap-
tive Platform standardization. For system development of an automotive embedded
computer the software architecture usually defines the details of the structural and the
behavioral architecture views down to module level. In contrast the architecture of AU-
TOSAR Adaptive Platform lacks such details deliberately to provide more degrees of
freedom for stack vendors in their solution design.
Beyond the specification of APIs the term "architecture" for Adaptive Platform refers to
guidelines how to apply the standard to concrete development projects.
This document describes the original architectural design of the AUTOSAR Adaptive
Platform including details how the building blocks should interact with each other. It is
an example how an implementation of the standard should work internally. However, a
stack vendor is free to choose another design as long as it complies with the binding
AUTOSAR Adaptive Platform standard.
1.2 Scope
This explanatory document applies to the AUTOSAR Adaptive Platform. It is recom-
mended to get an overview of the AUTOSAR Adaptive Platform for all members of the
working groups, stack vendors, and application developers.
3 Related Documentation
This document provides a high-level overview of the AUTOSAR Adaptive Platform ar-
chitecture. It is closely related to general requirements for AUTOSAR Adaptive Plat-
form specified in [4, RS_Main] and [5, RS_General], and the architectural decisions
documented in [2, EXP_SWArchitecturalDecisions].
The individual building blocks of the architecture (Functional Clusters) are spec-
ified in separate documents. Each Functional Cluster defines one or more
requirements specification(s) (RS document), one or more software specification(s)
(SWS document) and one or more explanatory document(s) (EXP document). Please
refer to these documents for any details on the AUTOSAR Adaptive Platform standard.
The AUTOSAR Adaptive Platform shall support a flexible (configuration) data and soft-
ware update. Hereby, AUTOSAR Adaptive Platform shall support up- and download of
such update packages [RS_Main_00650] and change of communication and applica-
tion software at runtime [RS_Main_00503].
AUTOSAR shall provide a unified way to describe software systems deployed to
Adaptive and / or Classic platforms [RS_Main_00161]. That kind of description
shall also support the deployment and reallocation of AUTOSAR Application Software
[RS_Main_00150], and shall provide means to describe interfaces of the entire system
[RS_Main_00160].
Security
The AUTOSAR Adaptive Platform shall support the development of secure systems
[RS_Main_00514] with secure access to ECU data and services [RS_Main_00170],
and secure onboard communication [RS_Main_00510].
Safety
The AUTOSAR Adaptive Platform shall support the development of safety related
systems [RS_Main_00010] that are reliable [RS_Main_00011] and highly available
[RS_Main_00012]. The AUTOSAR Adaptive Platform specifications shall be analyz-
able and support methods to demonstrate the achievement of safety related properties
accordingly [RS_Main_00350].
Communication
Diagnostics
The AUTOSAR Adaptive Platform shall provide diagnostics means during runtime for
production and services purposes [RS_Main_00260].
4.3 Stakeholders
This section lists the stakeholders of the AUTOSAR Adaptive Platform architecture and
their main expectations.
Role Expectation
Project Leader Overview of technical risks and technical debt in the AUTOSAR
Adaptive Platform.
Working Group Architecture Concise yet thorough documentation of the goals and driving
forces of the AUTOSAR Adaptive Platform. Documentation of
the original architectural design of the AUTOSAR Adaptive Plat-
form standard. Documentation of identified technical risks and
technical debt in the AUTOSAR Adaptive Platform.
Working Group Consolidated overview of the AUTOSAR Adaptive Platform ar-
chitecture. Realization of use-cases that span multiple Func-
tional Clusters. Usage of interfaces within the AUTOSAR
Adaptive Platform. Guidelines and patterns for Functional
Cluster and interface design.
Stack Developer Consolidated overview of the original architectural design of the
AUTOSAR Adaptive Platform. Realization of use-cases that span
multiple Functional Clusters. Usage of interfaces within the
AUTOSAR Adaptive Platform.
Application Developer Overview of the building blocks of the AUTOSAR Adaptive Plat-
form and their purpose and provided functionality. Explanation of
the concepts used in the AUTOSAR Adaptive Platform.
Integrator Overview and explanation of the original architectural design of
the AUTOSAR Adaptive Platform. Overview of extension points
of the AUTOSAR Adaptive Platform.
5 Architecture Constraints
AUTOSAR is a worldwide development partnership of vehicle manufacturers, suppli-
ers, service providers and companies from the automotive electronics, semiconductor
and software industry. AUTOSAR standardizes the AUTOSAR Adaptive Platform au-
tomotive middleware. The AUTOSAR Adaptive Platform is not a concrete implemen-
tation. The AUTOSAR Adaptive Platform standard leaves a certain degree of freedom
to implementers of the standard, as most standards do. On the one hand, more free-
dom enables competition among the different implementations and a broader choice
of properties for users of the AUTOSAR Adaptive Platform. On the other hand, a more
strict standardization makes the different implementations compatible and exchange-
able (within the standardized scope). Naturally, those attributes are in conflict. It is
usually a choice of the standardization organization to evaluate the attributes and de-
fine the desired level of strictness.
The AUTOSAR Classic Platform is rather strict in that sense by specifying a detailed
layered software architecture imposing many constraints on its implementations. The
AUTOSAR Adaptive Platform launched with a less strict approach. That less strict
approach puts constraints on the AUTOSAR Adaptive Platform architecture as outlined
below.
6 Quality Requirements
Quality requirements define the expectations of AUTOSAR Adaptive Platform stake-
holders for the quality and the attributes of the AUTOSAR Adaptive Platform standard
that indicate whether the quality factors are satisfied or not. Section 6.1 starts by list-
ing the quality attributes that, in the end, are used to assess whether the AUTOSAR
Adaptive Platform and its software architecture satisfies the expected quality factors or
not. Section 6.2 then provides quality scenarios that operationalize quality attributes
and turn them into measurable quantities by describing the reaction of the system to a
stimulus in a certain situation.
• Functional suitability
– The software architecture shall reflect the project objectives (POs) and be
the consistent source for all specifications (here: completeness with respect
to the PO; see also usability below).
– The standard shall not contain elements that are not traceable to POs,
change requests (CRs), or concepts.
– The standard shall contain at least one element derived from each PO, CR,
or concept.
• Performance efficiency
– The specification shall allow for a run-time efficient implementation. Run-
time efficiency refers to all resource consumption, CPU, RAM, ROM.
• Compatibility
– The standard shall retain older versions of its elements in the face of change.
– The standard shall be interoperable with pre-existing standards, especially
the AUTOSAR Classic Platform. Pre-existing standards means network pro-
tocols and the like.
– The standard shall adopt new versions of pre-existing standards only after
an impact analysis.
• Usability
– The use of the standard shall be as easy as possible for suppliers and appli-
cation developers. Easy means: not much material and resources required.
– The holistic approach shall not be broken (avoid different approaches in one
standard).
– The standard shall contain application sample code for all its elements.
– The standard shall contain documentation of the use cases for its elements.
– The standard shall document the semantics of its elements.
– The standard shall document its decisions, consequences, and implemen-
tation restrictions (both for stack & apps) including their rationale.
– The standards elements shall be easy to use and hard to misuse.
– The standard shall stick to pre-existing standards, as far as no functional
requirements are compromised.
– The standard shall be as stable as possible.
– AUTOSAR standards shall not change disruptive but rather evolve evolution-
ary (for example, backward-compatibility can be a help).
– The software architecture shall reflect the PO and be the consistent source
for all specifications (here: consistency; see also functional suitability
above).
• Reliability
– The standard shall classify its elements with respect to safety relevance (that
is, functional clusters shall be marked if they participate in safety critical
operations of the platform).
– The standard shall specify control flow restrictions between its elements in
order to achieve freedom from interference.
– The standard shall contain use case driven argumentation for safety sce-
narios that can be used to build a safety case. (This should help the stack
implementers in getting a certification, if they follow the standard.)
• Security
– The standard shall specify data flow restrictions between its elements, and
between applications.
– The standard shall classify its elements with respect to security sensitivity
(that is, functional clusters shall be marked if they handle sensitive data.)
– The standard shall contain use case driven argumentation for security sce-
narios that can be used to build a security case. (This should help the stack
implementers in getting a certification, if they follow the standard.)
• Maintainability
– It shall be possible in an efficient way to maintain AUTOSAR Adaptive Plat-
form without preventing the introduction of new technologies (efficient in
terms of effort on the modification of the standard).
– The impact set of a change shall be available.
– The standard shall be structured in a way that minimizes change impact.
– It shall be possible to drop/deprecate elements of the standard.
– It shall be easy to add new features/needs without breaking the maintain-
ability or the need to redesign the software architecture. Easy means quick,
with low effort, local changes only and no heavy side effects.
– The maturity of parts of the standard shall be visible.
– The process shall enforce an architectural impact analysis in a very early
stage of the change process.
– The process shall enforce minimizing changes, that is not adding similar
functionality multiple times.
• Portability
– Applications shall be portable between different stack implementations and
different machines.
– It shall be possible to scale the software architecture to the given project
needs.
• Compatibility
– An AUTOSAR Adaptive Platform stack implementation shall be capable to
offer multiple versions of the same service.
– An instance of an AUTOSAR Adaptive Platform stack implementation shall
be able to co-exist with other instances on different machines, within the
same vehicle.
• Usability
– An AUTOSAR Adaptive Platform stack implementation shall explicitly doc-
ument restrictions on the application development that go beyond the stan-
dard.
• Maintainability
– An AUTOSAR Adaptive Platform stack implementation shall be traceable to
the contents of the standard.
– An AUTOSAR Adaptive Platform stack implementation shall support multiple
versions of the same service.
• Portability
– An AUTOSAR Adaptive Platform stack shall be portable to a different custom
hardware.
– An AUTOSAR Adaptive Platform stack shall provide mechanisms to replace
parts.
• Usability
– No Goal: An application developer shall be able to supply custom implemen-
tation for pre-defined platform functionality.
• Maintainability
– An application shall explicitly state which parts of the standard it uses.
• Portability
– An application entirely based on AUTOSAR Adaptive Platform (i.e. with-
out custom extensions) shall be portable to another AUTOSAR Adaptive
Platform stack of the same version without modifications to the application
source code itself (source code compatibility).
«use»
7.2 Dependencies
The Operating System is the main component that AUTOSAR Adaptive Plat-
form uses to provide its services. The Operating System controls processes and
threads, and provides inter-process communication facilities. The Operating Sys-
tem also provides access to network interfaces, protocols like TCP/IP, and access to
non-volatile storage.
7.2.3 Watchdog
«flow» «flow»
Adaptive
Application
«flow»
Figure 7.2: Overview of the AUTOSAR Adaptive Platform and external systems
The AUTOSAR Adaptive Platform supports applications that are operated in heteroge-
neous environments. This section lists the external systems that AUTOSAR Adaptive
Platform is intended to interface.
The AUTOSAR Classic Platform is the main platform for deeply-embedded appli-
cations such as sensor/actor systems. Adaptive Applications may require ac-
cess for example to sensor data provided by an AUTOSAR Classic Platform ECU
and vice versa.
Besides the both platforms (AUTOSAR Adaptive Platform and AUTOSAR Classic
Platform) provided by AUTOSAR, there may be ECUs in a vehicle and other sys-
tems that are built on different platforms that need to communicate with an Adaptive
Application via AUTOSAR Adaptive Platform.
7.3.5 Backend
A Backend system provides Software Packages for download and controls the
update process via Update and Configuration Management.
8 Solution Strategy
The AUTOSAR Adaptive Platform is a standard for an automotive middleware. It is
not a concrete implementation. The AUTOSAR Adaptive Platform standard leaves a
certain degree of freedom to its implementers by defining requirements and software
specifications that need to be fulfilled without specifying how.
Category
1..*
Functional Cluster
1..* 1..*
Interface Component
8.4 Technology
C++ is the programming language of choice for the AUTOSAR Adaptive Platform and
Adaptive Applications. C++ was chosen due to its safer programming model
(compared to C) and availability of certified compilers that produce highly optimized
machine code. Such properties are especially important for safety- and performance-
critical, real-time applications (such as typical Adaptive Applications) where C++
has become more and more popular in the software industry and academics.
The SOLID principles [7] are a central part of the design principles of AUTOSAR. While
these five principles are all valid, only the Single-responsibility Principle, the Interface
Segregation Principle and the Dependency Inversion Principle are relevant on the ab-
straction level of this document. Therefore, they are elaborated in the following.
The single-responsibility principle minimizes the reasons (i.e. a change to the single
responsibility) that require a change to its interface. Thus, it minimizes impact on clients
of such an interface and leads to a more maintainable architecture (or code).
The interface segregation principle (ISP) [7], [8] states that clients should not be forced
to depend on methods that they don’t use. As a consequence of the interface segre-
gation principle, interfaces should be split up to reflect different roles of clients.
Similar to the single-responsibility principle, the segregation of interfaces reduce the
impact of a change to an interface to the clients and suppliers of an segregated inter-
face.
The dependency inversion principle (DIP) [7], [8] states that high-level building blocks
should not depend on low-level building blocks. Both should depend on abstractions
(e.g. interfaces). Furthermore, the dependency inversion principle states that abstrac-
tions (e.g. interfaces) should not depend on details. Details (e.g. a concrete imple-
mentation) should depend on abstractions.
The dependency inversion principle results in a decoupling of the implementations of
building blocks. This is important to scale implementation efforts (cf. Section 5.2) and
to perform proper integration tests.
The acyclic dependencies principle (ADP) [7], [8] states that dependencies between
building blocks should form a directed acyclic graph.
The acyclic dependencies principle helps to identify participating building blocks and
reason about error propagation and freedom from interference. In general, it also re-
duces the extend of building blocks to consider during activities such as test, build and
deployment.
8.6 Deployment
The AUTOSAR Adaptive Platform supports the incremental deployment of applica-
tions, where resources and communications are managed dynamically to reduce the
effort for software development and integration, enabling short iteration cycles. Incre-
mental deployment also supports explorative software development phases. For prod-
uct delivery, the AUTOSAR Adaptive Platform allows the system integrator to carefully
limit dynamic behavior to reduce the risk of unwanted or adverse effects allowing safety
qualification. Dynamic behavior of an application will be limited by constraints stated
in the Execution Manifest (cf. Section 13.8), for example, dynamic allocation of
resources and communication paths are only possible in defined ways, within config-
ured ranges. Implementations of an AUTOSAR Adaptive Platform may further remove
dynamic capabilities from the software configuration for production use. Examples of
reduced behavioral dynamics might be:
• Pre-determination of the service discovery process
• Restriction of dynamic memory allocation to the startup phase only
• Fair scheduling policy in addition to priority-based scheduling
• Fixed allocation of processes to CPU cores
• Access to pre-existing files in the file-system only
• Constraints for AUTOSAR Adaptive Platform API usage by applications
• Execution of authenticated code only
9.1 Overview
Figure 9.1 provides an overview of the different categories of building blocks available
in the AUTOSAR Adaptive Platform. The categories are explained in more detail in the
subsequent sections.
AUTOSAR Adaptive Platform
Diagnostics
Figure 9.1: Overview of the AUTOSAR Adaptive Platform and its building block cate-
gories
The subsection "Provided interfaces" then lists all interfaces provided by the Func-
tionalCluster (i.e. it is fully implemented by the FunctionalCluster) to other
FunctionalClusters.
The last subsection "Required interfaces" lists all interfaces required by the Func-
tionalCluster from other FunctionalClusters and external components like
the operating system.
9.2 Runtime
daemon-based daemon-based
«aapFunctionalCluster»
Operating System Interface
The interfaces of Execution Management are categorized into interfaces for state
reporting (see Section 9.2.1.1.1), interfaces for the deterministic execution (see Section
9.2.1.1.2), and interfaces for State Management (see Section 9.2.1.1.3).
All processes started by Execution Management (i.e. all processes of the AU-
TOSAR Adaptive Platform and all processes of Adaptive Applications) shall report their
execution state back to Execution Management via the ExecutionClient interface
(cf. Figure 9.3).
Adaptive Application
«use»
«aapAPI,aapNativeInterface»
ExecutionClient
+ ReportExecutionState(ExecutionState): Result
«aapFunctionalCluster»
Execution Management
daemon-based
Name: ExecutionClient
Technology: Native interface
Usage: Public API
Description: This interface provides functionality for a Process to report its execution state to Execution
Management.
Operations: ReportExecutionState Report the internal state of a Process to Execution
Management.
The DeterministicClient API (cf. Figure 9.4) provides operations to perform determin-
istic execution of tasks.
Adaptive Application
«use» «use»
«use»
«aapFunctionalCluster»
daemon-based Execution Management
Name: DeterministicClient
Technology: Native interface
Usage: Public API
Description: This interface provides the functionality for an application to run a cyclic deterministic execution.
Each modelled Process which needs support for cyclic deterministic execution has to instantiate
this interface.
Operations: GetActivationTime Get the timestamp of the activation point.
GetNextActivationTime Get the timestamp of the next activation point.
GetRandom Returns a deterministic sequence of random numbers.
RunWorkerPool Runs tasks in a deterministic worker pool.
SetRandomSeed Seed the random number generator used for
redundantly executed deterministic clients.
WaitForActivation Blocks and returns with a process control value when
the next activation is triggered by the runtime.
Name: WorkerRunnable
Technology: Native interface
Usage: Public API
Description: This interface is used to implement worker runnables for the DeterministicClient.
Operations: Run Runs the deterministic client worker runnable.
Name: WorkerThread
Technology: Native interface
Usage: Public API
Description: This interface is used to implement worker threads for the DeterministicClient.
Operations: GetRandom Returns a deterministic pseudo-random number which
is unique for each container element in the worker pool.
The StateClient API (cf. Figure 9.5) provides operations to control FunctionGroups and
their FunctionGroupStates.
«aapFunctionalCluster»
State Management
daemon-based
+ GetExecutionError()
+ GetInitialMachineStateTransitionResult()
+ SetState(FunctionGroupState): Future
+ StateClient(function)
«aapRequiredPort» «aapRequiredPort»
«aapFunctionalCluster»
Execution Management
daemon-based
Name: StateClient
Technology: Native interface
Usage: Public API
Description: This interface provides the functionality to request FunctionGroupState transitions and to perform
error detection and error handling.
Operations: GetExecutionError Returns the execution error which changed the given
FunctionGroup to an undefined FunctionGroupState.
GetInitialMachineStateTransitionResult Retrieve the result of Machine State initial transition
to Startup state.
SetState Request a FunctionGroupState transition for a single
FunctionGroup.
StateClient Constructor of this interface. It requires a callback to be
invoked if a FunctionGroup changes its state
unexpectedly to an undefined FunctionGroupState, i.e.
without previous request by SetState(). The affected
FunctionGroup is provided as an argument to the
callback.
Name: FunctionGroupState
Technology: Port interface
Generated: No
Meta-model ModeDeclaration
interface type:
Usage: Public API
Description: Represents a Function Group State defined in the Manifest.
Name: FunctionGroup
Technology: Port interface
Generated: No
Meta-model ModeDeclarationGroup
interface type:
Usage: Public API
Description: Represents a Function Group defined in the Manifest.
«aapAPI,aapNativeInterface»
ExecutionClient
+ ReportExecutionState(ExecutionState): Result
«aapFunctionalCluster»
Execution Management
daemon-based
«aapFunctionalCluster»
State Management
daemon-based
+ GetExecutionError()
+ GetInitialMachineStateTransitionResult()
+ SetState(FunctionGroupState): Future
+ StateClient(function)
«aapRequiredPort» «aapRequiredPort»
«aapFunctionalCluster»
Execution Management
daemon-based
4
Interface Requiring functional clusters
Update and Configuration Management
Execution Management::FunctionGroup State Management
Execution Management::FunctionGroupState State Management
Execution Management::StateClient State Management
«aapFunctionalCluster»
Execution Management
daemon-based
«use» «use»
«use» «use»
«aapRequiredPort» «aapRequiredPort»
Interface Purpose
Multi-Process System Interface Execution Management shall use this interface to start, configure and
control os-level processes.
Adaptive Intrusion Detection System Manager:: Execution Management shall use this interface to report security
EventReporter events (e.g., verification failure of an executable).
Execution Management::WorkerRunnable Execution Management shall use this interface to execute
WorkerRunnables using its DeterministicClient implementation.
Log and Trace::Logger Execution Management shall use this interface to log standardized
messages.
Persistency::KeyValueStorage Execution Management should use this interface to read/write
persistent data.
Platform Health Management::SupervisedEntity Execution Management shall use this interface to enable supervision
of its process(es) by Platform Health Management.
5
4
Interface Purpose
Registry::ManifestAccessor Execution Management shall use this interface to read the
configuration of its DeterministcClient and information about Function
Groups and Processes from the Manifests.
Time Synchronization::SynchronizedTimeBase The DeterministicClient implementation in Execution Management
Consumer should use this interface to synchronize execution of DeterministicClients.
The interfaces of State Management are categorized into interfaces for triggering
state changes (see Section 9.2.2.1.1), interfaces for diagnostic reset (see Section
9.2.2.1.2), interfaces for requesting a Power Mode (see Section 9.2.2.1.3), and inter-
faces for interaction with Update and Configuration Management (see Section
9.2.2.1.4).
State Management provides several interface blueprints to get and set its internal
state (cf. Figure 9.9).
Adaptive Application
«aapFunctionalCluster»
State Management
daemon-based
Name: TriggerIn_{StateGroup}
Technology: ara::com service interface
Usage: Public API
Description: This interface is to be used by Adaptive Applications to trigger State Management to
change its internal state.
Fields: Trigger A value to be evaluated by State Management in a
project-specific way.
Name: TriggerOut_{StateGroup}
Technology: ara::com service interface
Usage: Public API
Description: This interface is to be used by Adaptive Applications to be informed when State
Management has changed its internal state.
Fields: Notifier To be set by State Management in a project-specific
way to inform Adaptive Applications about
changes within State Management.
Name: TriggerInOut_{StateGroup}
Technology: ara::com service interface
Usage: Public API
Description: This interface is to be used by Adaptive Applications to trigger State Management to
change its internal state and to get information when it is carried out.
Fields: Notifier To be set by State Management in a project-specific
way to inform Adaptive Applications about
changes within State Management.
Trigger A value to be evaluated by State Management in a
project-specific way.
«use» «use»
«aapRequiredPort» «aapRequiredPort»
«aapAPI,aapAraComServiceInterface»
DiagnosticReset
«aapAccessControlled, aapServiceMethod»
+ event(DiagnosticResetRespMsg*)
+ message(DiagnosticResetMsg*)
«aapProvidedPort»
«aapFunctionalCluster»
State Management
daemon-based
Name: DiagnosticReset
Technology: ara::com service interface
Usage: Public API
Description: This interface provides functionality to handle diagnostic reset requests.
Operations: event All Processes which got a diagnostic reset request
shall call this method to provide an answer to State
Management.
message Sends a diagnostic reset message to all affected
Processes.
«use»
«aapRequiredPort»
«aapAPI,aapAraComServiceInterfa...
PowerMode
«aapAccessControlled, aapService...
+ event(PowerModeRespMsg*)
+ message(PowerModeMsg*)
«aapProvidedPort»
«aapFunctionalCluster»
State Management
daemon-based
Name: PowerMode
Technology: ara::com service interface
Usage: Public API
Description: This interface provides functionality to handle Power Mode requests.
Operations: event All Processes which have received a Power Mode
request shall call this method to provide an answer to
State Management.
message Sends a Power Mode request to all running
Processes.
UCM Subordinate
«use»
«aapRequiredPort»
«aapAraComServiceInterface,aapInte...
UpdateRequest
«aapAccessControlled, aapServiceMe...
+ PrepareRollback()
+ PrepareUpdate()
+ RequestUpdateSession()
+ ResetMachine()
+ StopUpdateSession()
+ VerifyUpdate()
«aapProvidedPort»
«aapFunctionalCluster»
State Management
daemon-based
Name: UpdateRequest
Technology: ara::com service interface
Usage: Internal
Description: This interface is intended to be used by Update and Configuration Management to interact
with State Management to perform updates (including installation and removal) of Software
Clusters.
Operations: PrepareRollback Prepares the affected Function Groups for a rollback.
PrepareUpdate Prepares the affected Function Groups for an
update.
RequestUpdateSession Requests an update session. State Management
might decline this request when the Machine is not in a
state to be updated.
ResetMachine Requests an orderly reset of the Machine. Before the
reset is performed all information within the Machine
shall be persisted.
StopUpdateSession Ends an update session.
5
4
VerifyUpdate Verifies the affected Function Groups after an
update.
«aapFunctionalCluster»
State Management
daemon-based
«aapFunctionalCluster»
State Management
daemon-based
«use»
«aapProvidedPort» «aapRequiredPort»
«aapFunctionalCluster» «aapFunctionalCluster» «aapFunctionalClust... «aapFunctionalClust...
Platform Health Management Network Management Diagnostic Management Persistency
daemon-based daemon-based
«aapFunctionalCluster»
State Management
daemon-based
«aapRequiredPort» «aapRequiredPort»
«aapFunctionalCluster»
Execution Management
daemon-based
Interface Purpose
Execution Management::ExecutionClient This interface shall be used to report the state of the State
Management process(es).
Execution Management::FunctionGroup This interface shall be used to request FunctionGroupState transitions
and to check their status.
Execution Management::FunctionGroupState This interface shall be used to request FunctionGroupState transitions
and to check their status.
Execution Management::StateClient This interface shall be used to request FunctionGroupState transitions.
Log and Trace::Logger State Management shall use this interface to log standardized
messages.
Network Management::NetworkState_{Network This interface shall be used to retrieve information about the network
Handle} status of a NetworkHandle.
Persistency::KeyValueStorageOperations This interface should be used to persist information (e.g. update session).
Persistency::KeyValueStorage This interface should be used to persist information (e.g. update session).
Platform Health Management::SupervisedEntity State Management shall use this interface to enable supervision of its
process(es) by Platform Health Management.
The entry point to the Log and Trace framework is the CreateLogger() operation
that constructs a new Logger context. Afterwards, new messages can be constructed
using the LogStream that is returned by the operations in Logger, for example LogInfo
().
Adaptive Application
«aapFunctionalCluster»
Log and Trace
Name: Logger
Technology: Native interface
Usage: Public API
Description: This interface represents a logger context. The logging framework defines contexts which can be
seen as logger instances within one application process or process scope. A context will be
automatically registered against the Logging back-end during creation phase, as well as
automatically de-registered during process shutdown phase.
IsEnabled Check if the provided log level is enabled in the current
Operations:
configured log level.
Log Logs a message modeled in the Manifest.
LogDebug Creates a LogStream object with Debug severity.
LogError Creates a LogStream object with Error severity.
LogFatal Creates a LogStream object with Fatal severity.
LogInfo Creates a LogStream object with Info severity.
LogVerbose Creates a LogStream object with Verbose severity.
LogWarn Creates a LogStream object with Warn severity.
WithLevel Creates a LogStream object with the provided log level.
Name: LogOperations
Technology: Native interface
Usage: Public API
Description: This interface provides access to the logging framework and utility operations to control the format
of value printed to the log output.
Operations: Arg Create a wrapper object. The wrapper object holds a
value and an optional name and unit of the value.
BinFormat Conversion of an integer into a binary value. Negatives
are represented in 2’s complement. The number of
represented digits depends on the overloaded
parameter type length.
CreateLogger Creates a Logger object, holding the context which is
registered in the logging framework.
5
4
HexFormat Conversion of an integer into a hexadecimal value.
Negatives are represented in 2’s complement. The
number of represented digits depends on the
overloaded parameter type length.
remoteClientState Fetches the connection state from the DLT back-end of
a possibly available remote client.
Name: LogStream
Technology: Native interface
Usage: Public API
Description: This interface provides functionality to construct a single log message by appending data using
stream operators.
Operations: Flush Sends out the current log buffer and initiates a new
message stream. Calling this operation is only
necessary if the LogStream is intended to be reused
within the same scope.
WithLocation Add source file location into the message.
operator<< Writes a value into the log message. Several overloads
exist to control the output format.
«aapAPI,aapNativeInterface»
Logger
+ IsEnabled()
+ Log(MsgId, Params)
+ LogDebug(): LogStream
+ LogError(): LogStream
+ LogFatal(): LogStream
+ LogInfo(): LogStream
+ LogVerbose(): LogStream
+ LogWarn(): LogStream
+ WithLevel(): LogStream
Table 9.5: Interfaces provided by Log and Trace to other Functional Clusters
«aapFunctionalCluster»
Log and Trace
+ GetCurrentTime()
+ GetRateDeviation()
+ GetTimeWithStatus(): SynchronizedTimeBaseStatus
+ RegisterStatusChangeNotifier()
+ RegisterSynchronizationStateChangeNotifier()
+ RegisterTimeLeapNotifier()
+ RegisterTimePrecisionMeasurementNotifier()
+ RegisterTimeValidationNotification()
+ UnregisterStatusChangeNotifier()
+ UnregisterSynchronizationStateChangeNotifier()
+ UnregisterTimeLeapNotifier()
+ UnregisterTimePrecisionMeasurementNotifier()
+ UnregisterTimeValidationNotification()
Interface Purpose
Non-volatile Storage Log and Trace should use this interface to write log messages to a
non-volatile storage, e.g., a file in a filesystem.
TCP/IP Stack Log and Trace shall use this interface to write log messages to an
IP-based network stream.
Registry::ManifestAccessor Log and Trace shall use this interface to read information about
modeled messages from the Manifests.
Time Synchronization::SynchronizedTimeBase Log and Trace shall use this interface to determine the timestamps
Consumer that are associated with log messages.
9.2.4 Core
Name: Core
Short Name: core
Category: Runtime
Daemon-based: No
Responsibilities: Core provides functionality for initialization and de-initialization of the AUTOSAR Runtime for
Adaptive Applications as well as termination of Processes.
«aapAPI,aapNativeInterf... «aapAPI,aapNativeInterface»
Core Core
+ Deinitialize() + Abort()
+ Initialize() + SetAbortHandler()
«aapFunctionalCluster»
Core
The AUTOSAR Adaptive Platform for Applications provides an explicit abnormal termi-
nation facility using Abort().
Name: ProcessTermination
Technology: Native interface
Usage: Public API
Description: This interface provides operation for abnormal termination of processes.
Operations: Abort Abort the current process. This function will never return
to its caller.
SetAbortHandler Set a custom global abort handler function and return
the previously installed one.
Adaptive Application
«use»
«aapAPI,aapNativeInterface»
OperatingSystemInterface
«aapFunctionalCluster»
Operating System Interface
Name: OperatingSystemInterface
Technology: Native interface
Usage: Public API
Description: This interface represents the POSIX PSE51 profile API. The API is not detailed in this document.
«aapFunctionalCluster»
Communication Management
«use»
«aapAPI,aapNativeInterface»
OperatingSystemInterface
«aapFunctionalCluster»
Operating System Interface
«aapFunctionalCluster»
Operating System Interface
«use»
«aapInternal»
Single-Process POSIX API
Operating System
Interface Purpose
Single-Process POSIX API Operating System Interface uses this interface to provide the
functionality of the POSIX PSE51 profile, e.g. Threads. Usually the
whole POSIX PSE51 profile API will already be provided by the
underlying operating system. In this case, the Operating System
Interface will not have an implementation in the Adaptive Platform
stack.
Table 9.8: Interfaces required by Operating System Interface
9.3 Communication
daemon-based
4
Responsibilities: Communication Management is responsible for all levels of service-oriented and raw
communication between applications in a distributed real-time embedded environment. That is,
intra-process communication, inter-process communication and inter-machine communication. The
latter is also possible with AUTOSAR Classic Platforms and third-party platforms. Communication
paths can be established at design-, start-up-, and run-time. Communication Management
consists of a generic part that handles brokering and configuration as well as generated skeletons
for service providers and respective proxies for service consumers.
Adaptive Application
«use» «use»
«aapAPI,aapPortInterface» «aapAPI,aapPortInterface»
RawDataStreamClient RawDataStreamServer
+ Connect() + ReadData()
+ ReadData() + Shutdown()
+ Shutdown() + WaitForConnection()
+ WriteData() + WriteData()
«aapProvidedPort» «aapProvidedPort»
«aapFunctionalCluster»
Communication Management
Name: RawDataStreamClient
Technology: Port interface
Generated: No
Meta-model RawDataStreamClientInterface
interface type:
Usage: Public API
Description: This interface provides functionality for a client reading and writing binary data streams over a
network connection.
5
4
Operations: Connect Sets up a socket connection for the raw data stream
defined by the instance, and establish a connection to
the TCP server.
ReadData Requests to read a number of bytes of data from the
socket connection for the raw data stream defined by
the instance.
Shutdown Closes the socket connection for the raw data stream
defined by the instance. Both, the receiving and the
sending part of the socket connection shall be shut
down.
WriteData Requests to write of a number of bytes to the socket
connection for the raw data stream defined by the
instance.
Name: RawDataStreamServer
Technology: Port interface
Generated: No
Meta-model RawDataStreamServerInterface
interface type:
Usage: Public API
Description: This interface provides functionality for a server reading and writing binary data streams over a
network connection.
Operations: ReadData Requests to read a number of bytes of data from the
socket connection for the raw data stream defined by
the instance.
Shutdown Closes the socket connection for the raw data stream
defined by the instance. Both the receiving and the
sending part of the socket connection shall be shut
down.
WaitForConnection Initializes the socket and prepare the
RawDataStreamServer instance for incoming
connections.
WriteData Requests to write of a number of bytes to the socket
connection for the raw data stream defined by the
instance.
Adaptive Application
«aapFunctionalCluster»
Communication Management
Name: VerificationStatus
Technology: ara::com service interface
Usage: Public API
Description: This interface provides an event to informed about the verification status of messages.
Events: VerificationStatus This event is fired for each verification and holds the
verification status.
Name: VerificationStatusConfigurationByDataId
Technology: ara::com service interface
Usage: Public API
Description: This interface provides functionality to control the verification status of messages.
Operations: VerifyStatusOverride This service method provides the ability to force to
accept or to drop a message with or without performing
the verification of authenticator or independent of the
authenticator verification result, and to force a specific
result allowing additional fault handling in the
application.
Name: VerificationStatusConfigurationByFreshnessId
Technology: ara::com service interface
Usage: Public API
Description: This interface provides functionality to control the verification status of messages.
Operations: VerifyStatusOverride This service method provides the ability to force to
accept or to drop a message with or without performing
the verification of authenticator or independent of the
authenticator verification result, and to force a specific
result allowing additional fault handling in the
application.
«aapNativeInterface,aapPlatformExtension»
FVM
+ GetRxFreshness()
+ GetTxFreshness()
+ Initialize()
«use»
«aapFunctionalCluster»
Communication Management
Name: FVM
Technology: Native interface
Usage: Platform extension
5
4
Description: This interface provides functionality for freshness value management.
Operations: GetRxFreshness Obtain the current freshness value for received
messages.
GetTxFreshness Obtain the current freshness value for transmitted
messages.
Initialize Initializes freshness value manager plugin
implementation.
«aapFunctionalCluster»
Communication Management
+ IsEnabled() + CheckAccess()
+ Log(MsgId, Params)
+ LogDebug(): LogStream
+ LogError(): LogStream
+ LogFatal(): LogStream
+ LogInfo(): LogStream
+ LogVerbose(): LogStream
+ LogWarn(): LogStream
+ WithLevel(): LogStream
Interface Purpose
TCP/IP Stack Communication Management shall use this interface to establish and
control TCP/IP-based network connections.
Adaptive Intrusion Detection System Manager:: Communication Management shall use this interface to report security
EventReporter events.
Communication Management::FVM Communication Management shall use this interface to get freshness
values.
Cryptography::CryptoStack Communication Management shall use this interface to establish
encrypted connections and generate / verify checksums (MAC).
Identity and Access Management::Policy Communication Management shall use this interface to check access
DecisionPoint to ara::com service methods, fields, and events.
5
4
Interface Purpose
Log and Trace::Logger Communication Management shall use this interface to log
standardized messages.
Operating System Interface::OperatingSystem Communication Management should use this interface to create and
Interface control Threads used by the implementation.
Registry::ManifestAccessor Communication Management shall use this interface to read service
information from the Manifests.
Table 9.9: Interfaces required by Communication Management
«aapFunctionalCluster»
State Management
daemon-based
«use»
«aapRequiredPort»
«aapAraComServiceInterface,aapAPI»
NetworkState_{NetworkHandle}
«aapAccessControlled, aapServiceField»
+ NetworkCurrentState
+ NetworkRequestedState
«aapProvidedPort»
«aapFunctionalCluster»
Network Management
Name: NetworkState_{NetworkHandle}
Technology: ara::com service interface
Usage: Public API
Description: This interface provides information about network status per NetworkHandle. This interface is
intended to be used by State Management only.
5
4
Fields: NetworkCurrentState Indicates if a PNC / VLAN / Physical Network is
currently active or not.
NetworkRequestedState Request a PNC / VLAN / Physical Network to get active
or to release it.
«aapFunctionalCluster»
State Management
daemon-based
«use»
«aapRequiredPort»
«aapAraComServiceInterface,aapAPI»
NetworkState_{NetworkHandle}
«aapAccessControlled, aapServiceField»
+ NetworkCurrentState
+ NetworkRequestedState
«aapProvidedPort»
«aapFunctionalCluster»
Network Management
«aapFunctionalCluster»
Network Management
«use» «use»
«aapAPI,aapNativeInterface» «aapInternal»
Log and Trace::Logger TCP/IP Stack
+ IsEnabled()
+ Log(MsgId, Params)
+ LogDebug(): LogStream
+ LogError(): LogStream
+ LogFatal(): LogStream
+ LogInfo(): LogStream
+ LogVerbose(): LogStream
+ LogWarn(): LogStream
+ WithLevel(): LogStream
Interface Purpose
TCP/IP Stack Network Management should use this interface to set and to determine
the status of IP-based networks.
Log and Trace::Logger Network Management shall use this interface to log standardized
messages.
Registry::ManifestAccessor Network Management shall use this interface to read information about
NmNetworkHandles from the Manifests.
Table 9.11: Interfaces required by Network Management
The interfaces of Time Synchronization are categorized into interfaces for provid-
ing time information (see Section 9.3.3.1.1) and interfaces for consuming time informa-
tion (see Section 9.3.3.1.2).
«use» «use»
«aapProvidedPort» «aapProvidedPort»
«aapAPI,aapPortInterface» «aapPortInterface,aapAPI»
Time Synchronization:: Time Synchronization::
SynchronizedTimeBaseProvider OffsetTimeBaseProvider
+ GetCurrentTime() + GetCurrentTime()
+ GetRateCorrection() + GetRateCorrection()
+ GetUserData() + GetUserData()
+ RegisterTimeValidationNotification() + RegisterTimeValidationNotification()
+ SetRateCorrection() + SetOffsetTime()
+ SetTime() + SetRateCorrection()
+ SetUserData() + SetUserData()
+ UnregisterTimeValidationNotification() + UnregisterTimeValidationNotification()
+ UpdateTime()
«aapFunctionalCluster»
daemon-based Time Synchronization
Name: SynchronizedTimeBaseProvider
Technology: Port interface
Generated: No
Meta-model SynchronizedTimeBaseProviderInterface
interface type:
Usage: Public API
Description: Provides access to a synchronized time base. It allows to get the current time point, the rate
deviation, the current status and the received user data.
Operations: GetCurrentTime Obtain the current time (regardless of the current sync
status).
GetRateCorrection Obtain the current rate deviation of the clock.
GetUserData Get the user defined data of the time base.
RegisterTimeValidationNotification Used by time provider applications to receive time sync
parameters. A maximum of one notifier can be
registered. Every further registration overwrites the
current registration.
SetRateCorrection Set the rate correction that will be applied to time values.
SetTime Set a new time value for the clock. Setting a new time
also triggers transmission on the bus.
5
4
SetUserData Set the user data of the time base.
UnregisterTimeValidationNotification Used by time provider applications to receive time sync
parameters.
UpdateTime Set a new time value for the clock. The clock value is
only updated locally, transmission on the bus will
happen in the next cycle.
Name: OffsetTimeBaseProvider
Technology: Port interface
Generated: No
Meta-model SynchronizedTimeBaseProviderInterface
interface type:
Usage: Public API
Description: Provides access to the offset time base. It allows to get the current time point, the rate deviation, the
current status and the received user data.
Operations: GetCurrentTime Get the current time (regardless of the current sync
status).
GetRateCorrection Obtain the current rate deviation of the clock.
GetUserData Get the user defined data of the time base.
RegisterTimeValidationNotification Used by time provider applications to receive time sync
parameters. A maximum of one notifier can be
registered. Every further registration overwrites the
current registration.
SetOffsetTime Set a new offset time value for the clock. Setting a new
time also triggers transmission on the bus.
SetRateCorrection Set the rate correction that will be applied to time values.
SetUserData Set the user data of the time base.
UnregisterTimeValidationNotification Un-register the notifier to receive time sync parameters.
Adaptive Application
«use»
«aapRequiredPort» «use»
«aapAPI,aapPortInterface» «aapAPI,aapNativeInterface»
Time Synchronization:: Time Synchronization::
SynchronizedTimeBaseConsumer SynchronizedTimeBaseStatus
+ GetCurrentTime() + GetCreationTime()
+ GetRateDeviation() + GetLeapJump()
+ GetTimeWithStatus(): SynchronizedTimeBaseStatus + GetSynchronizationStatus()
+ RegisterStatusChangeNotifier() + GetUserData()
+ RegisterSynchronizationStateChangeNotifier()
+ RegisterTimeLeapNotifier()
+ RegisterTimePrecisionMeasurementNotifier()
+ RegisterTimeValidationNotification()
+ UnregisterStatusChangeNotifier()
+ UnregisterSynchronizationStateChangeNotifier()
+ UnregisterTimeLeapNotifier()
+ UnregisterTimePrecisionMeasurementNotifier()
+ UnregisterTimeValidationNotification()
«aapFunctionalCluster»
daemon-based Time Synchronization
Name: SynchronizedTimeBaseConsumer
Technology: Port interface
Generated: No
Meta-model SynchronizedTimeBaseConsumerInterface
interface type:
Usage: Public API
Description: Provides access to the synchronized time base. It allows to get the current time point, the rate
deviation, the current status and the received user data.
Operations: GetCurrentTime Obtain the current time (regardless of the current sync
status).
GetRateDeviation Obtain the current rate deviation of the clock.
GetTimeWithStatus Obtain a snapshot of the current state of the clock. This
includes status flags, clock configuration and the actual
time value of the created status object.
RegisterStatusChangeNotifier Register a notifier function which is called if a status flag
is changed (i.e. synchronization state, time leap or
userdata). A maximum of one notifier can be registered.
Every further registration overwrites the current
registration.
RegisterSynchronizationStateChange Register a notifier function which is called if a
Notifier synchronization state is changed. A maximum of one
notifier can be registered. Every further registration
overwrites the current registration.
RegisterTimeLeapNotifier Register a notifier function which is called if a time leap
happened. A maximum of one notifier can be registered.
Every further registration overwrites the current
registration.
RegisterTimePrecisionMeasurement Register a notifier function which is called if a new time
Notifier precision snapshot is available. A maximum of one
notifier can be registered. Every further registration
overwrites the current registration. Time
Synchronization will not do any queuing. If needed
it has to be done within the notifier.
5
4
RegisterTimeValidationNotification Used by time consumer applications to receive time
sync parameters. A maximum of one notifier can be
registered. Every further registration overwrites the
current registration.
UnregisterStatusChangeNotifier Un-register a notifier function which is called if a status
flag is changed (i.e. synchronization state, time leap or
userdata).
UnregisterSynchronizationStateChange Un-register a notifier function which is called if a
Notifier synchronization state is changed.
UnregisterTimeLeapNotifier Un-register a notifier function which is called if a time
leap happened.
UnregisterTimePrecisionMeasurement Un-register a notifier function which is called if a new
Notifier time precision snapshot is available.
UnregisterTimeValidationNotification Un-register a notifier function for receiving time sync
parameters.
Name: SynchronizedTimeBaseStatus
Technology: Native interface
Usage: Public API
Description: Represents a snapshot of a time point including its states.
Operations: GetCreationTime Obtain the creation time of this object.
GetLeapJump Determine the direction of a leap jump. Only the jump
until the previous object creation is included.
GetSynchronizationStatus Returns the synchronization state when the object was
created.
GetUserData Returns the user defined data of the time base.
«aapFunctionalCluster» «aapFunctionalCluster»
Adaptive Intrusion Detection System Update and Configuration
Manager Management
daemon-based daemon-based
«aapAPI,aapPortInterface»
SynchronizedTimeBaseConsumer
+ GetCurrentTime()
+ GetRateDeviation()
+ GetTimeWithStatus(): SynchronizedTimeBaseStatus
+ RegisterStatusChangeNotifier()
+ RegisterSynchronizationStateChangeNotifier()
+ RegisterTimeLeapNotifier()
+ RegisterTimePrecisionMeasurementNotifier()
+ RegisterTimeValidationNotification()
+ UnregisterStatusChangeNotifier()
+ UnregisterSynchronizationStateChangeNotifier()
+ UnregisterTimeLeapNotifier()
+ UnregisterTimePrecisionMeasurementNotifier()
+ UnregisterTimeValidationNotification()
«aapFunctionalCluster»
Time Synchronization
daemon-based
«aapFunctionalCluster»
daemon-based Time Synchronization
+ IsEnabled() + DiscardPendingChanges()
+ Log(MsgId, Params) + GetAllKeys()
+ LogDebug(): LogStream + GetValue()
+ LogError(): LogStream + KeyExists()
+ LogFatal(): LogStream + RecoverKey()
+ LogInfo(): LogStream + RemoveAllKeys()
+ LogVerbose(): LogStream + RemoveKey()
+ LogWarn(): LogStream + ResetKey()
+ WithLevel(): LogStream + SetValue()
+ SyncToStorage()
Interface Purpose
Raw Socket API Time Synchronization should use this interface to send and receive
raw ethernet packets as required by the time synchronization protocol.
Execution Management::ExecutionClient Time Synchronization shall use this interface to report the state of
its daemon process.
Log and Trace::Logger Time Synchronization shall use this interface to log standardized
messages.
Persistency::KeyValueStorageOperations Time Synchronization should use this interface to persist the last
received timestamp to enable a faster startup.
Persistency::KeyValueStorage Time Synchronization should use this interface to persist the last
received timestamp to enable a faster startup.
Platform Health Management::SupervisedEntity Time Synchronization should use this interface to enable
supervision of its daemon process by Platform Health Management
Registry::ManifestAccessor Time Synchronization shall use this interface to read information
about TimeBaseResources as well as their providers and consumers
from the Manifests.
Table 9.13: Interfaces required by Time Synchronization
9.4 Storage
«aapFunctionalCluster»
Persistency
9.4.1 Persistency
Name: Persistency
Short Name: per
Category: Storage
Daemon-based: No
Responsibilities: Persistency provides functionality to store and retrieve information to/from non-volatile storage
of a Machine.
Persistent data is always private to one Process and is persisted across boot and ignition cycles.
There is no mechanism available to share data between different Processes using Persistency
to prevent a second path of data exchange besides Communication Management. However,
Persistency supports concurrent access from multiple threads of the same application running in
the context of the same Process.
Persistency offers integrity of the stored data and provides error detection and correction
schemes. Persistency also offers confidentiality of the stored data using encryption.
Persistency provides statistics, for example, the used storage space.
The interfaces of Persistency are categorized into interfaces for file access (see
Section 9.4.1.1.1), interfaces for a key-value-based data access (see Section 9.4.1.1.2)
and interfaces for general management of persistent data (see Section 9.4.1.1.3).
Persistency provides read and write access to plain files by means of a FileStor-
age (cf. Figure 9.36). A FileStorage has to be opened using OpenFileStorage(). A
FileStorage then provides access to several files using their name.
Adaptive Application
«aapFunctionalCluster»
Persistency
Name: FileStorageOperations
Technology: Native interface
Usage: Public API
Description: This interface provides functions to open and manage FileStorages.
Operations: GetCurrentFileStorageSize Returns the space in bytes currently occupied by a
FileStorage.
OpenFileStorage Opens a FileStorage.
RecoverAllFiles Recovers a FileStorage including all files.
ResetAllFiles Resets a FileStorage including all files.
Name: FileStorage
Technology: Port interface
Generated: No
Meta-model PersistencyFileStorageInterface
interface type:
Usage: Public API
Description: This interface provides functions to open and manage files.
4
RecoverFile Recovers a file of this FileStorage.
ResetFile Resets a file of this FileStorage to its initial content.
Name: ReadAccessor
Technology: Native interface
Usage: Public API
Description: This interface provides functions to read text and binary data from a file.
GetByte Returns the byte at the current position of the file,
Operations:
advancing the current position.
GetChar Returns the character at the current position of the file,
advancing the current position.
GetPosition Returns the current position relative to the beginning of
the file.
GetSize Returns the current size of a file in bytes.
IsEof Checks if the current position is at end of file.
MovePosition Moves the current position in the file relative to the
origin.
PeekByte Returns the byte at the current position of the file.
PeekChar Returns the character at the current position of the file.
ReadBinary Reads all remaining bytes into a Vector of Byte, starting
from the current position.
ReadLine Reads a complete line of characters into a String,
advancing the current position accordingly.
ReadText Reads all remaining characters into a String, starting
from the current position.
SetPosition Sets the current position relative to the beginning of the
file.
Name: ReadWriteAccessor
Technology: Native interface
Usage: Public API
Description: This interface provides functions to read and write text and binary data from / to a file.
Operations: SetFileSize Reduces the size of the file to ’size’, effectively removing
the current content of the file beyond this size.
SyncToFile Triggers flushing of the current file content to the
physical storage.
WriteBinary Writes binary data to the file.
WriteText Writes a string to the file.
operator<< Writes a String to the file.
Persistency provides read and write access to data structured as key-value pairs
by means of the KeyValueStorage API (cf. Figure 9.37). A KeyValueStorage has to be
created by calling OpenKeyValueStorage(). A KeyValueStorage then provides access
to data stored for individual keys using the GetValue() and SetValue() operations.
Adaptive Application
«use» «use»
«aapAPI,aapNativeInterface» «aapAPI,aapPortInterface»
Persistency Persistency::KeyValueStorage
+ GetCurrentKeyValueStorageSize() + DiscardPendingChanges()
+ OpenKeyValueStorage(): KeyValueStorage + GetAllKeys()
+ RecoverKeyValueStorage() + GetValue()
+ ResetKeyValueStorage() + KeyExists()
+ RecoverKey()
+ RemoveAllKeys()
+ RemoveKey()
+ ResetKey()
+ SetValue()
+ SyncToStorage()
«aapFunctionalCluster»
Persistency
Name: KeyValueStorageOperations
Technology: Native interface
Usage: Public API
Description: This interface provides functions to open and manage KeyValueStorages.
Operations: GetCurrentKeyValueStorageSize Returns the space in bytes currently occupied by a
KeyValueStorage.
OpenKeyValueStorage Opens a KeyValueStorage.
RecoverKeyValueStorage Recovers a KeyValueStorage.
ResetKeyValueStorage Resets a KeyValueStorage to the initial state.
Name: KeyValueStorage
Technology: Port interface
Generated: No
Meta-model PersistencyKeyValueStorageInterface
interface type:
Usage: Public API
Description: This interface provides functions to access values associated with keys.
4
RemoveKey Removes a key and the associated value from this
KeyValueStorage.
ResetKey Resets a key of this KeyValueStorage to its initial value.
SetValue Stores a key in this KeyValueStorage.
SyncToStorage Triggers flushing of changed key-value pairs of the
KeyValueStorage to the physical storage.
«use»
«aapAPI,aapNativeInterface»
Persistency
+ RegisterApplicationDataUpdateCallback()
+ RegisterRecoveryReportCallback()
+ ResetPersistency()
+ UpdatePersistency()
«aapFunctionalCluster»
Persistency
Name: PersistencyHandlingOperations
Technology: Native interface
Usage: Public API
Description: This interface provides operations manage persistent data.
Operations: RegisterApplicationDataUpdate Registers an application data update callback with
Callback Persistency.
RegisterRecoveryReportCallback Register a recovery reporting callback with
Persistency.
ResetPersistency Resets all FileStorages and KeyValueStorages by
entirely removing their content.
UpdatePersistency Updates all FileStorages and KeyValueStorages after a
new manifest was installed.
«aapFunctionalClust... «aapFunctionalCluster»
Diagnostic Management Update and Configuration
Management
daemon-based daemon-based
«use» «use»
«aapRequiredPort» «aapRequiredPort»
«aapAPI,aapPortInterface»
Persistency::FileStorage
+ DeleteFile()
+ FileExists()
+ GetAllFileNames()
+ GetCurrentFileSize()
+ GetFileInfo()
+ OpenFileReadOnly(): ReadAccessor
+ OpenFileReadWrite(): ReadWriteAccessor
+ OpenFileWriteOnly(): ReadWriteAccessor
+ RecoverFile()
+ ResetFile()
«aapFunctionalCluster»
Persistency
«aapAPI,aapPortInterface»
Persistency::KeyValueStorage
+ DiscardPendingChanges()
+ GetAllKeys()
+ GetValue()
+ KeyExists()
+ RecoverKey()
+ RemoveAllKeys()
+ RemoveKey()
+ ResetKey()
+ SetValue()
+ SyncToStorage()
«aapFunctionalCluster»
Persistency
4
Interface Requiring functional clusters
Persistency::FileStorage Diagnostic Management
Update and Configuration Management
«aapFunctionalCluster»
Persistency
«use» «use»
«use» «use»
«aapRequiredPort»
+ IsEnabled() + GetCurrentTime()
+ Log(MsgId, Params) + GetRateDeviation()
+ LogDebug(): LogStream + GetTimeWithStatus(): SynchronizedTimeBaseStatus
+ LogError(): LogStream + RegisterStatusChangeNotifier()
+ LogFatal(): LogStream + RegisterSynchronizationStateChangeNotifier()
+ LogInfo(): LogStream + RegisterTimeLeapNotifier()
+ LogVerbose(): LogStream + RegisterTimePrecisionMeasurementNotifier()
+ LogWarn(): LogStream + RegisterTimeValidationNotification()
+ WithLevel(): LogStream + UnregisterStatusChangeNotifier()
+ UnregisterSynchronizationStateChangeNotifier()
+ UnregisterTimeLeapNotifier()
+ UnregisterTimePrecisionMeasurementNotifier()
+ UnregisterTimeValidationNotification()
Interface Purpose
Non-volatile Storage Persistency uses this interface to access the non-volatile storage
provided by the underlying operating system, for example, a file system.
Cryptography::CryptoStack Persistency uses this interface to ensure confidentiality and integrity of
the persisted data.
Log and Trace::Logger Persistency shall use this interface to log standardized messages.
5
4
Interface Purpose
Registry::ManifestAccessor Persistency shall use this interface to read its configuration
information from the Manifests.
Time Synchronization::SynchronizedTimeBase Persistency should use this interface to determine timestamps
Consumer included in the meta-information of files, e.g., modification timestamp.
9.5 Security
9.5.1 Cryptography
Name: Cryptography
Short Name: crypto
Category: Security
Daemon-based: Yes
Responsibilities: Cryptography provides various cryptographic routines to ensure confidentiality of data, to ensure
integrity of data (e.g., using hashes), and auxiliary functions for example key management and
random number generation. Cryptography is designed to support encapsulation of
security-sensitive operations and decisions in a separate component, such as a Hardware Security
Module (HSM). Additional protection of keys and key usage can be provided by constraining keys to
particular usages (e.g., decrypt-only), or limiting the availability of keys to individual applications as
reported by Identity and Access Management.
Depending on application support, Cryptography can also be used to protect session keys and
intermediate secrets when processing cryptographic protocols such as TLS and SecOC.
The main entry point for using the Cryptography API are the factory functions Load-
CryptoProvider() for using cryptographic routines, LoadKeyStorageProvider() for ac-
cess to the key store, and LoadX509Provider() for X.509 certificate handling.
Adaptive Application
«aapFunctionalCluster»
Cryptography
daemon-based
Name: EntryPoint
Technology: Native interface
Usage: Public API
Description: This interface provides the main entry points for using the Cryptography API.
Name: IOInterface
Technology: Native interface
Usage: Public API
Description: Interface for saving and loading of security objects.
4
IsObjectExportable Return the exportable attribute of an object stored to
the container.
IsObjectSession Return the session (or temporary) attribute of an
object as set.
IsValid Get whether the underlying KeySlot is valid.
IsVolatile Return volatility of the underlying buffer.
IsWritable Get whether the underlying KeySlot is writable.
Name: Serializable
Technology: Native interface
Usage: Public API
Description: Serializable object interface.
Operations: ExportPublicly Serialize itself publicly.
Name: VolatileTrustedContainer
Technology: Native interface
Usage: Public API
Description: This interface is used for buffering Cryptography API objects in RAM.
Operations: GetIOInterface Retrieve the IOInterface used for importing/exporting
objects into this container.
Adaptive Application
«use» «use»
«aapAPI,aapNativeInterface» «aapAPI,aapNativeInterface»
CryptoProvider CryptoContext
+ AllocVolatileContainer() + GetCryptoPrimitiveId()
+ ConvertToAlgId() + IsInitialized()
+ ConvertToAlgName() + MyProvider()
+ CreateAuthCipherCtx()
+ CreateDecryptorPrivateCtx()
+ CreateEncryptorPublicCtx()
+ CreateHashDigest()
+ CreateHashFunctionCtx()
+ CreateKeyAgreementPrivateCtx()
+ CreateKeyDecapsulatorPrivateCtx()
+ CreateKeyDerivationFunctionCtx()
+ CreateKeyEncapsulatorPublicCtx()
+ CreateMessageAuthCodeCtx()
+ CreateMsgRecoveryPublicCtx()
+ CreateRandomGeneratorCtx()
+ CreateSigEncodePrivateCtx()
+ CreateSignature()
+ CreateSignerPrivateCtx()
+ CreateStreamCipherCtx()
+ CreateSymmetricBlockCipherCtx()
+ CreateSymmetricKeyWrapperCtx()
+ CreateVerifierPublicCtx()
+ ExportPublicObject()
+ ExportSecuredObject()
+ GeneratePrivateKey()
+ GenerateSeed()
+ GenerateSymmetricKey()
+ GetPayloadStorageSize()
+ GetSerializedSize()
+ ImportPublicObject()
+ ImportSecuredObject()
+ LoadObject()
+ LoadPrivateKey()
+ LoadPublicKey()
+ LoadSecretSeed()
+ LoadSymmetricKey()
«aapFunctionalCluster»
Cryptography
daemon-based
Name: CryptoProvider
Technology: Native interface
Usage: Public API
Description: This is a "factory" interface of all supported crypto primitives and a "trusted environment" for internal
communications between them.
Operations: AllocVolatileContainer Allocate a VolatileTrustedContainer according to directly
specified capacity.
ConvertToAlgId Convert a common name of crypto algorithm to a
correspondent vendor specific binary algorithm ID.
ConvertToAlgName Convert a vendor specific binary algorithm ID to a
correspondent common name of the crypto algorithm.
CreateAuthCipherCtx Create a symmetric authenticated cipher context.
CreateDecryptorPrivateCtx Create a decryption private key context.
CreateEncryptorPublicCtx Create an encryption public key context.
CreateHashDigest Construct signature object from directly provided
components of a hash digest.
CreateHashFunctionCtx Create a hash function context.
5
4
CreateKeyAgreementPrivateCtx Create a key-agreement private key context.
CreateKeyDecapsulatorPrivateCtx Create a key-decapsulator private key context of a key
encapsulation mechanism.
CreateKeyDerivationFunctionCtx Create a key derivation function context.
CreateKeyEncapsulatorPublicCtx Create a key-encapsulator public key context of a key
encapsulation mechanism.
CreateMessageAuthCodeCtx Create a symmetric message authentication code
context.
CreateMsgRecoveryPublicCtx Create a message recovery public key context.
CreateRandomGeneratorCtx Create a random number generator context.
CreateSigEncodePrivateCtx Create a signature encoding private key context.
CreateSignature Construct a signature object from directly provided
components of a digital signature/MAC or authenticated
encryption (AE/AEAD).
CreateSignerPrivateCtx Create a signature private key context.
CreateStreamCipherCtx Create a symmetric stream cipher context.
CreateSymmetricBlockCipherCtx Create a symmetric block cipher context.
CreateSymmetricKeyWrapperCtx Create a symmetric key-wrap algorithm context.
CreateVerifierPublicCtx Create a signature verification public key context.
ExportPublicObject Export publicly an object.
ExportSecuredObject Export a crypto object in a secure manner.
GeneratePrivateKey Allocate a new private key context of correspondent type
and generates the key value randomly.
GenerateSeed Generate a random Secret Seed object of requested
algorithm.
GenerateSymmetricKey Allocate a new symmetric key object and fill it by a new
randomly generated value.
GetPayloadStorageSize Return minimally required capacity of a key slot for
saving of the object’s payload.
GetSerializedSize Return required buffer size for serialization of an object
in specific format.
ImportPublicObject Import publicly serialized object to a storage location.
ImportSecuredObject Import securely serialized object to the persistent or
volatile storage.
LoadObject Load any crypto object from the IOInterface provided.
LoadPrivateKey Load a PrivateKey from the IOInterface provided.
LoadPublicKey Load a PublicKey from the IOInterface provided.
LoadSecretSeed Load a SecretSeed from the IOInterface provided.
LoadSymmetricKey Load a SymmetricKey from the IOInterface provided.
Name: CryptoContext
Technology: Native interface
Usage: Public API
Description: A common interface of a mutable cryptographic context, i.e. that is not bound to a single crypto
object.
Operations: GetCryptoPrimitiveId Returns a CryptoPrimitiveId instance containing
instance identification.
5
4
IsInitialized Check if the crypto context is already initialized and
ready to use.
MyProvider Get a reference to the CryptoProvider of this context.
Adaptive Application
«use» «use»
CryptoContext ExtensionService
«aapAPI,aapNativeInterface» «aapAPI,aapNativeInterface»
StreamCipherCtx BlockService
+ CountBytesInCache() + GetActualIvBitLength()
+ EstimateMaxInputSize() + GetBlockSize()
+ EstimateRequiredCapacity() + GetIvSize()
+ FinishBytes() + IsValidIvSize()
+ GetBlockService()
+ GetTransformation()
+ IsBytewiseMode()
+ IsSeekableMode()
+ ProcessBlocks()
+ ProcessBytes()
+ Reset()
+ Seek()
+ SetKey()
+ Start()
«aapFunctionalCluster»
Cryptography
daemon-based
Name: BlockService
Technology: Native interface
Usage: Public API
Description: Extension meta-information service for block cipher contexts.
Operations: GetActualIvBitLength Get the actual bit-length of an initialization vector loaded
to the context.
GetBlockSize Get the block (or internal buffer) size of the base
algorithm.
GetIvSize Get default expected size of the initialization vector or
nonce.
IsValidIvSize Verify validity of specific initialization vector length.
Name: StreamCipherCtx
Technology: Native interface
Usage: Public API
Description: Generalized stream cipher context interface covering all modes of operation.
5
4
CountBytesInCache Count number of bytes now kept in the context cache.
Operations:
EstimateMaxInputSize Estimate maximal number of input bytes that may be
processed for filling of an output buffer without overflow.
EstimateRequiredCapacity Estimate minimal required capacity of the output buffer,
which is enough for saving a result of input data
processing.
FinishBytes Process the final part of message (that may be not
aligned to the block-size boundary).
GetBlockService Get the BlockService instance.
GetTransformation Get the kind of transformation configured for this
context: Encrypt or Decrypt.
IsBytewiseMode Check the operation mode for the byte-wise property.
IsSeekableMode Check if the seek operation is supported in the current
mode.
ProcessBlocks Process initial parts of message aligned to the
block-size boundary.
ProcessBytes Process a non-final part of message (that is not aligned
to the block-size boundary).
Reset Clear the crypto context.
Seek Set the position of the next byte within the stream of the
encryption/decryption gamma.
SetKey Set (deploy) a key to the stream cihper algorithm
context.
Start Initialize the context for a new data stream processing or
generation (depending from the primitive).
Adaptive Application
«aapFunctionalCluster»
Cryptography
daemon-based
Name: CryptoService
Technology: Native interface
Usage: Public API
Description: Extension meta-information service for cryptographic contexts.
Operations: GetBlockSize Get block (or internal buffer) size of the base algorithm.
5
4
GetMaxInputSize Get maximum expected size of the input data block.
GetMaxOutputSize Get maximum possible size of the output data block.
Name: EncryptorPrivateCtx
Technology: Native interface
Usage: Public API
Description: Asymmetric decryption private key context interface.
Operations: GetCryptoService Get the CryptoService instance.
ProcessBlock Encrypt an input block according to the encryptor
configuration.
Reset Clear the crypto context.
SetKey Set (deploy) a key to the decryptor private algorithm
context.
Name: DecryptorPrivateCtx
Technology: Native interface
Usage: Public API
Description: Asymmetric decryption private key context interface.
Operations: GetCryptoService Get the CryptoService instance.
ProcessBlock Decrypt an input block according to the decryptor
configuration.
Reset Clear the crypto context.
SetKey Set (deploy) a key to the decryptor private algorithm
context.
Name: SymmetricBlockCipherCtx
Technology: Native interface
Usage: Public API
Description: Interface of a symmetric block cipher context with padding.
Adaptive Application
«aapFunctionalCluster»
Cryptography
daemon-based
Name: DigestService
Technology: Native interface
Usage: Public API
Description: Extension meta-information service for digest producing contexts.
Operations: Compare Compare the calculated digest against an expected
value.
GetDigestSize Get the output digest size.
IsFinished Check current status of the stream processing: finished
or not.
IsStarted Check current status of the stream processing: started
or not.
Name: AuthCipherCtx
Technology: Native interface
Usage: Public API
Description: Generalized authenticated cipher context interface.
4
UpdateAssociatedData Update the digest calculation by the specified data.
Name: HashFunctionCtx
Technology: Native interface
Usage: Public API
Description: Hash function interface.
Operations: Finish Finish the digest calculation and optionally produce the
"signature" object.
GetDigest Get requested part of calculated digest.
GetDigestService Get the DigestService instance.
Start Initialize the context for a new data stream processing or
generation (depending on the primitive).
Update Update the digest calculation context by a new part of
the message.
Name: MessageAuthnCodeCtx
Technology: Native interface
Usage: Public API
Description: Keyed message authentication code context interface definition (MAC/HMAC).
Adaptive Application
«aapFunctionalCluster»
Cryptography
daemon-based
Name: ExtensionService
Technology: Native interface
Usage: Public API
Description: Basic meta-information service for all contexts.
Name: KeyEncapsulatorPublicCtx
Technology: Native interface
Usage: Public API
Description: Asymmetric key encapsulation mechanism public key context interface.
4
SetKey Set (deploy) a key to the key encapsulator public
algorithm context.
Name: KeyDecapsulatorPrivateCtx
Technology: Native interface
Usage: Public API
Description: Asymmetric key encapsulation mechanism private key context interface.
Name: SymmetricKeyWrapperCtx
Technology: Native interface
Usage: Public API
Description: Context of a symmetric key wrap algorithm (for AES it should be compatible with RFC3394 or
RFC5649).
CalculateWrappedKeySize Calculate size of the wrapped key in bytes from original
Operations:
key length in bits.
GetExtensionService Get the ExtensionService instance.
GetMaxTargetKeyLength Get maximum length of the target key supported by the
implementation.
GetTargetKeyGranularity Get expected granularity of the target key (block size).
Reset Clear the crypto context.
SetKey Set (deploy) a key to the symmetric key wrapper
algorithm context.
UnwrapConcreteKey Execute the "key unwrap" operation for the provided
BLOB and produce a key object of the expected type.
UnwrapKey Execute the "key unwrap" operation for the provided
BLOB and produce a key object.
UnwrapSeed Execute the "key unwrap" operation for the provided
BLOB and produce a SecretSeed object.
WrapKeyMaterial Execute the "key wrap" operation for the provided key
material.
Name: RandomGeneratorCtx
Technology: Native interface
Usage: Public API
Description: Interface of a random number generator context.
5
4
Operations: AddEntropy Update the internal state of the RNG by mixing it with
the provided additional entropy.
Generate Return an allocated buffer with a generated random
sequence of the requested size.
GetExtensionService Get the ExtensionService instance.
Seed Set the internal state of the RNG using the provided
seed.
SetKey Set the internal state of the RNG using the provided
seed.
Adaptive Application
«aapFunctionalCluster»
Cryptography
daemon-based
Name: KeyDerivationFunctionCtx
Technology: Native interface
Usage: Public API
Description: Key derivation function interface.
AddSalt Add a salt value stored in a non-secret memory region.
Operations:
AddSecretSalt Add a secret salt value stored in a SecretSeed object.
ConfigIterations Configure the number of iterations that will be applied by
default.
DeriveKey Derive a symmetric key from the provided key material
and provided context configuration.
DeriveSeed Derive key material (secret seed) from the provided
"master" key material and the provided context
configuration.
GetExtensionService Get the ExtensionService instance.
GetKeyIdSize Get the fixed size of the target key ID required by
diversification algorithm.
GetTargetAlgId Get the symmetric algorithm ID of target key.
GetTargetAllowedUsage Get allowed key usage of target key.
5
4
GetTargetKeyBitLength Get the bit-length of target (diversified) keys.
Init Initialize this context by setting at least the target key ID.
Reset Clear the crypto context.
SetSourceKeyMaterial Set (deploy) key-material to the key derivation algorithm
context.
Name: KeyAgreementPrivateCtx
Technology: Native interface
Usage: Public API
Description: Key agreement private key context interface (Diffie Hellman or conceptually similar).
Name: MsgRecoveryPublicCtx
Technology: Native interface
Usage: Public API
Description: A public key context for asymmetric recovery of a short message and its signature verification
(RSA-like).
Name: SigEncodePrivateCtx
Technology: Native interface
Usage: Public API
Description: A private key context for asymmetric signature calculation and short message encoding (RSA-like).
Adaptive Application
«aapFunctionalCluster»
Cryptography
daemon-based
Name: SignatureService
Technology: Native interface
Usage: Public API
Description: Extension meta-information service for signature contexts.
Operations: GetRequiredHashAlgId Get an ID of hash algorithm required by current
signature algorithm.
GetRequiredHashSize Get the hash size required by current signature
algorithm.
GetSignatureSize Get size of the signature value produced and required
by the current algorithm.
Name: SignerPrivateCtx
Technology: Native interface
Usage: Public API
Description: Signature private key context interface.
Name: VerifierPublicCtx
Technology: Native interface
Usage: Public API
Description: Signature verification public key context interface.
Operations: GetSignatureService Get the SignatureService instance.
Verify Verify signature BLOB by a directly provided hash or
message value.
5
4
VerifyPrehashed Verify a signature by a digest value stored in the
hash-function context.
Adaptive Application
«aapFunctionalCluster»
Cryptography
daemon-based
«aapAPI,aapNativeInterf... «aapAPI,aapNativeInterface»
CryptoObject Serializable
«aapAPI,aapNativeInterf...
RestrictedUseObject
Name: CryptoObject
Technology: Native interface
Usage: Public API
Description: A common interface for all cryptographic objects recognizable by the CryptoProvider.
4
IsSession Return the session (or temporary) attribute of the
object.
Save Save itself to provided IOInterface
Name: RestrictedUseObject
Technology: Native interface
Usage: Public API
Description: A common interface for all objects supporting the usage restriction.
Operations: GetAllowedUsage Get allowed usages of this object.
Name: CryptoPrimitiveId
Technology: Native interface
Usage: Public API
Description: Common interface for identification of all CryptoPrimitives and their keys and parameters.
Operations: GetPrimitiveId Get vendor specific ID of the primitive.
GetPrimitiveName Get a unified name of the primitive.
Name: SecretSeed
Technology: Native interface
Usage: Public API
Description: Secret seed object contains a raw bit sequence of specific length (without any filtering of allowed/
disallowed values).
Name: SymmetricKey
Technology: Native interface
Usage: Public API
Description: Symmetric Key interface.
Name: PublicKey
Technology: Native interface
Usage: Public API
Description: General asymmetric public key interface.
Operations: CheckKey Check the key for its correctness.
HashPublicKey Calculate hash of the public key value.
Name: PrivateKey
Technology: Native interface
Usage: Public API
Description: Generalized asymmetric private key interface.
Operations: GetPublicKey Get the public key correspondent to this private key.
Name: Signature
Technology: Native interface
Usage: Public API
Description: This interface is applicable for keeping the Digital Signature, Hash Digest, (Hash-based) Message
Authentication Code (MAC/HMAC).
Operations: GetHashAlgId Get an ID of hash algorithm used for this signature
object production.
GetRequiredHashSize Get the hash size required by current signature
algorithm.
Adaptive Application
«use»
«use»
«aapRequiredPort»
«use»
«aapFunctionalCluster»
Cryptography
daemon-based
Name: KeyStorageProvider
Technology: Native interface
Usage: Public API
Description: Key Storage Provider interface.
Name: KeySlot
Technology: Port interface
Generated: No
Meta-model CryptoKeySlot
interface type:
Usage: Public API
Description: Key slot interface enables access to a physical key-slot.
Name: UpdatesObserver
Technology: Native interface
Usage: Public API
Description: Interface for observing updates on key slots.
Operations: OnUpdate This method is called if the content of the specified slots
was changed.
Adaptive Application
«use»
«aapAPI,aapNativeInterface» «aapAPI,aapNativeInterface»
X509Provider X509CustomExtensionsParser
+ BuildDn() + OnBitString()
+ CheckCertStatus() + OnBool()
+ CheckCertStatusOnline() + OnGeneralizedTime()
+ CleanupVolatileStorage() + OnIa5String()
+ CountCertsInChain() + OnInteger()
+ CreateCertSignRequest() + OnNull()
+ CreateEmptyDn() + OnOctetString()
+ CreateEmptyExtensions() + OnOid()
+ CreateOcspRequest() + OnParsingEnd()
+ DecodeDn() + OnPrintableString()
+ FindCertByDn() + OnSequenceEnd()
+ FindCertByKeyIds() + OnSequenceStart()
+ FindCertBySn() + OnSetEnd()
+ Import() + OnSetStart()
+ ImportCrl() + OnUtcTime()
+ LoadCertificate() + OnUtf8String()
+ ParseCert()
+ ParseCertChain()
+ ParseCertSignRequest()
+ ParseCustomCertExtensions()
+ ParseOcspResponse()
+ Remove()
+ SendRequest()
+ SetAsRootOfTrust()
+ SetPendingStatus()
+ UpdateCrlOnline()
+ VerifyCert()
+ VerifyCertChain()
«use»
«aapFunctionalCluster»
Cryptography
daemon-based
Name: X509Provider
Technology: Native interface
Usage: Public API
Description: X.509 Provider interface supporting two internal storage types: volatile (or session) and persistent.
BuildDn Create completed X.500 Distinguished Name structure
Operations:
from the provided string representation.
CheckCertStatus Check certificate status by directly provided OCSP
response.
CheckCertStatusOnline Check certificate status via On-line Certificate Status
Protocol (OCSP).
CleanupVolatileStorage Cleanup the volatile certificates storage.
CountCertsInChain Count number of certificates in a serialized certificate
chain represented by a single BLOB.
CreateCertSignRequest Create certification request for a private key loaded to
the context.
CreateEmptyDn Create an empty X.500 Distinguished Name (DN)
structure.
CreateEmptyExtensions Create an empty X.509 Extensions structure.
CreateOcspRequest Create OCSP request for specified certificate(s).
5
4
DecodeDn Decode X.500 Distinguished Name structure from the
provided serialized format.
FindCertByDn Find a certificate by the subject and issuer Distinguished
Names (DN).
FindCertByKeyIds Find a certificate by its SKID & AKID.
FindCertBySn Find a certificate by its serial number and issue DN.
Import Import the certificate to volatile or persistent storage.
ImportCrl Import Certificate Revocation List (CRL) or Delta CRL
from a memory BLOB.
LoadCertificate Load a certificate from the persistent certificate storage.
ParseCert Parse a serialized representation of the certificate and
create its instance.
ParseCertChain Parse a serialized representation of the certificate chain
and create their instances.
ParseCertSignRequest Parse a certificate signing request (CSR) provided by
the user.
ParseCustomCertExtensions Parse the custom X.509 extensions.
ParseOcspResponse Parse serialized OCSP response and create
correspondent interface instance.
Remove Remove specified certificate from the storage (volatile or
persistent) and destroy it.
SendRequest Send prepared certificate request to CA and save it to
volatile or persistent storage.
SetAsRootOfTrust Set specified CA certificate as a "root of trust".
SetPendingStatus Set the "pending" status associated to the CSR that
means that the CSR already sent to CA.
UpdateCrlOnline Get Certificate Revocation List (CRL) or Delta CRL via
on-line connection.
VerifyCert Verify status of the provided certificate by locally stored
CA certificates and CRLs only.
VerifyCertChain Verify status of the provided certification chain by locally
stored CA certificates and CRLs only.
Name: X509CustomExtensionsParser
Technology: Native interface
Usage: Public API
Description: X.509 custom extensions parser. This callback interface is to be implemented by an application.
OnBitString Called when a bit string is encountered.
Operations:
OnBool Called when a boolean is encountered.
OnGeneralizedTime Called when a generalized time is encountered.
OnIa5String Called when an IA5 string is encountered.
OnInteger Called when an integer is encountered.
OnNull Called when a NULL is encountered.
OnOctetString Called when an octet string is encountered.
OnOid Called when an oid is encountered.
OnParsingEnd Called when the parsing is completed.
OnPrintableString Called when a printable string is encountered.
OnSequenceEnd Called when a sequence ends.
5
4
OnSequenceStart Called when a sequence starts.
OnSetEnd Called when a set ends.
OnSetStart Called when a set starts.
OnUtcTime Called when a UTC time is encountered.
OnUtf8String Called when an UTF8 string is encountered.
Adaptive Application
«aapFunctionalCluster»
Cryptography
daemon-based
«aapAPI,aapNativeInt...
Serializable
«aapAPI,aapNativeInt... «aapAPI,aapNativeInt...
X509Object X509PublicKeyInfo
«aapAPI,aapPortInterf... «aapAPI,aapNativeInt...
Certificate CertSignRequest
Name: OcspRequest
Technology: Native interface
Usage: Public API
Description: On-line Certificate Status Protocol Request.
Operations: Version Get version of the OCSP request format.
Name: OcspResponse
Technology: Native interface
Usage: Public API
Description: On-line Certificate Status Protocol Response.
Operations: Version Get version of the OCSP response format.
Name: Certificate
Technology: Native interface
Usage: Public API
Description: X.509 Certificate interface.
AuthorityKeyId Get the DER encoded AuthorityKeyIdentifier of
Operations:
this certificate.
EndTime Get the NotAfter of the certificate.
GetFingerprint Calculate a fingerprint from the whole certificate.
GetStatus Return last verification status of the certificate.
IsRoot Check whether this certificate belongs to a root CA.
IssuerDn Get the issuer certificate DN.
SerialNumber Get the serial number of this certificate.
StartTime Get the NotBefore of the certificate.
SubjectKeyId Get the DER encoded SubjectKeyIdentifier of
this certificate.
VerifyMe Verify signature of the certificate.
X509Version Get the X.509 version of this certificate object.
Name: CertSignRequest
Technology: Native interface
Usage: Public API
Description: Certificate Signing Request (CSR) object interface.
Operations: ExportASN1CertSignRequest Export this certificate signing request in DER encoded
ASN1 format.
GetSignature Return signature object of the request.
Verify Verifies self-signed signature of the certificate request.
Version Return format version of the certificate request.
Name: X509Extensions
Technology: Native interface
Usage: Public API
5
4
Description: Interface of X.509 Extensions.
Operations: Count Count number of elements in the sequence.
Name: X509DN
Technology: Native interface
Usage: Public API
Description: Interface of X.509 Distinguished Name (DN).
Operations: GetAttribute Get a DN attribute.
GetDnString Get the whole Distinguished Name (DN) as a single
string.
SetAttribute Set a DN attribute.
SetDn Set whole Distinguished Name (DN) from a single string.
Name: X509PublicKeyInfo
Technology: Native interface
Usage: Public API
Description: X.509 Public Key Information interface.
«aapAPI,aapNativeInterface»
CryptoStack
«aapFunctionalCluster»
Cryptography
daemon-based
«aapFunctionalCluster»
Cryptography
daemon-based
«use» «use»
«use»
«aapRequiredPort»
Interface Purpose
Adaptive Intrusion Detection System Manager:: This interface should be used to e.g., report attempts to change root
EventReporter certificates.
Cryptography::UpdatesObserver Cryptography uses this interface to notify when a key has been
updated.
Cryptography::X509CustomExtensionsParser Cryptography uses this interface for propagating parser events.
Identity and Access Management::Policy Cryptography shall use this interface to check access to certificates.
DecisionPoint
Log and Trace::Logger Cryptography shall use this interface to log standardized messages.
Platform Health Management::SupervisedEntity Cryptography should use this interface for supervision of its daemon
process(es).
Registry::ManifestAccessor Cryptography shall use this interface to read its configuration
information from the Manifests.
Table 9.17: Interfaces required by Cryptography
«aapInternal,aapNativeInterface»
PolicyDecisionPoint
+ CheckAccess()
«aapFunctionalCluster»
Identity and Access Management
Name: PolicyDecisionPoint
Technology: Native interface
Usage: Internal
Description: This interface serves Policy Enforcement Points with authorization decisions.
Operations: CheckAccess Evaluates an access request against the authorization
policies (Grant) before issuing an access decision.
«aapInternal,aapNativeInterface»
PolicyDecisionPoint
+ CheckAccess()
«aapFunctionalCluster»
Identity and Access Management
Table 9.18: Interfaces provided by Identity and Access Management to other Functional
Clusters
«aapFunctionalCluster»
Identity and Access Management
«use» «use»
«aapAPI,aapNativeInterfa... «aapInternal,aapNativeInt...
Logger ManifestAccessor
+ IsEnabled()
+ Log(MsgId, Params)
+ LogDebug(): LogStream
+ LogError(): LogStream
+ LogFatal(): LogStream
+ LogInfo(): LogStream
+ LogVerbose(): LogStream
+ LogWarn(): LogStream
+ WithLevel(): LogStream
«aapFunctionalCluster» «aapFunctionalCluster»
Log and Trace Registry
Interface Purpose
Adaptive Intrusion Detection System Manager:: This interface should be used to e.g., report denied access.
EventReporter
Log and Trace::Logger Identity and Access Management shall use this interface to log
standardized messages.
Registry::ManifestAccessor Identity and Access Management should use this interface to
access Grant information modeled in the Manifests.
Table 9.19: Interfaces required by Identity and Access Management
4
Daemon-based: Yes
Responsibilities: Adaptive Intrusion Detection System Manager provides functionality to report security
events.
Adaptive Application
«use» «use»
«aapPortInterface,aapAPI» «aapNativeInterface,aapAPI»
EventReporter
+ RegisterTimestampProvider()
+ ReportEvent()
«aapFunctionalCluster»
Adaptive Intrusion Detection System Manager
daemon-based
Name: EventReporter
Technology: Port interface
Generated: No
Meta-model SecurityEventDefinition
interface type:
Usage: Public API
Description: This interface is used to report security events to the Adaptive Intrusion Detection
System Manager.
Operations: ReportEvent Create a new security event at the Adaptive
Intrusion Detection System Manager.
Name: TimestampProvider
Technology: Native interface
Usage: Public API
Description: Provides functionality to register a timestamp provider with the Adaptive Intrusion
Detection System Manager.
Operations: RegisterTimestampProvider Register a callback for providing timestamps to the
Adaptive Intrusion Detection System
Manager.
«aapFunctionalClust... «aapFunctionalClust...
Identity and Access Execution Management
Management daemon-based
«aapPortInterface,aapAPI»
EventReporter
+ ReportEvent()
«aapFunctionalCluster»
Adaptive Intrusion Detection System Manager
daemon-based
Figure 9.63: Users of the Adaptive Intrusion Detection System Manager interfaces
Table 9.20: Interfaces provided by Adaptive Intrusion Detection System Manager to other
Functional Clusters
«aapFunctionalCluster»
Adaptive Intrusion Detection System Manager
daemon-based
«use» «use»
«aapRequiredPort» «use»
+ GetCurrentTime() + IsEnabled()
+ GetRateDeviation() + Log(MsgId, Params)
+ GetTimeWithStatus(): SynchronizedTimeBaseStatus + LogDebug(): LogStream
+ RegisterStatusChangeNotifier() + LogError(): LogStream
+ RegisterSynchronizationStateChangeNotifier() + LogFatal(): LogStream
+ RegisterTimeLeapNotifier() + LogInfo(): LogStream
+ RegisterTimePrecisionMeasurementNotifier() + LogVerbose(): LogStream
+ RegisterTimeValidationNotification() + LogWarn(): LogStream
+ UnregisterStatusChangeNotifier() + WithLevel(): LogStream
+ UnregisterSynchronizationStateChangeNotifier()
+ UnregisterTimeLeapNotifier()
+ UnregisterTimePrecisionMeasurementNotifier()
+ UnregisterTimeValidationNotification()
Interface Purpose
TCP/IP Stack Adaptive Intrusion Detection System Manager shall use this
interface to propagate qualified security events via the IDS protocol.
Log and Trace::Logger Adaptive Intrusion Detection System Manager shall use this
interface to log standardized messages.
Time Synchronization::SynchronizedTimeBase Adaptive Intrusion Detection System Manager shall use this
Consumer interface to determine timestamps of security events.
9.5.4 Firewall
Name: Firewall
Short Name: fw
Category: Security
Daemon-based: Yes
Responsibilities: The Firewall is responsible for filtering network traffic based on firewall rules to protect the
system from malicious messages. To this end, the Firewall parses the firewall rules from the
Manifest and configures the underlying firewall engine accordingly. The firewall engine can be
realized in different ways (e.g. on the level of the TCP/IP stack or even closer to the hardware),
which is considered to be an implementation detail.
Additionally, the Firewall supports handling of different modes (e.g. driving, parking, diagnostic
session) by enabling/disabling firewall rules based on the active mode. For blocked messages
security events to the Adaptive Intrusion Detection System Manager will be reported to
support the AUTOSAR intrusion detection system.
Adaptive Application
«use»
«aapRequiredPort»
«aapAPI,aapPortInterface»
FirewallStateSwitchInterface
+ SwitchFirewallState()
«aapFunctionalCluster»
Firewall
daemon-based
Name: FirewallStateSwitchInterface
Technology: Port interface
Generated: No
Meta-model FirewallStateSwitchInterface
interface type:
Usage: Public API
Description: Provides functionality to switch the firewall state.
Operations: SwitchFirewallState This method triggers a switch of the firewall state.
«aapFunctionalCluster»
Firewall
daemon-based
«use» «use»
«aapPortInterface,aapAPI» «aapInternal»
EventReporter TCP/IP Stack
+ ReportEvent()
Interface Purpose
TCP/IP Stack The Firewall uses this interface to enable/disable firewall rules.
Adaptive Intrusion Detection System Manager:: The Firewall uses this interface to report security events.
EventReporter
9.6 Safety
«aapFunctionalCluster»
Platform Health Management
daemon-based
Processes that are supervised by Platform Health Management shall report via
the SupervisedEntity interface when they have reached a certain checkpoint in their
control flow (see Figure 9.68). Platform Health Management independently mon-
itors that all checkpoints configured in the Manifest have been reached in time and
in the expected order (depending on the type of supervision).
Adaptive Application
«use»
«aapProvidedPort»
«aapAPI,aapPortInterface»
SupervisedEntity
+ ReportCheckpoint()
«aapFunctionalCluster»
Platform Health Management
daemon-based
Name: SupervisedEntity
Technology: Port interface
Generated: No
Meta-model PhmSupervisedEntityInterface
interface type:
Usage: Public API
Description: This interface provides functions to report checkpoints to Platform Health Management.
Operations: ReportCheckpoint Reports an occurrence of a checkpoint.
«aapFunctionalCluster»
State Management
daemon-based
«aapProvidedPort»
«aapPortInterface,aapAPI»
Platform Health Management::
RecoveryAction
+ GetGlobalSupervisionStatus()
+ Offer()
+ StopOffer()
«aapCallbackMethod»
+ RecoveryHandler()
«use»
«aapFunctionalCluster»
Platform Health Management
daemon-based
Name: RecoveryAction
Technology: Port interface
Generated: No
Meta-model PhmRecoveryActionInterface
interface type:
Usage: Public API
Description: This interface provides functions to control triggering of recovery actions, to determine the status of
the supervision and a callback to perform recovery.
Operations: GetGlobalSupervisionStatus Returns the status of global supervision that the
supervised entity belongs to.
Offer Enables potential invocations of the callback
RecoveryHandler().
RecoveryHandler Callback to be invoked by Platform Health
Management upon a supervision failure. The handler
invocation needs to be enabled before using Offer().
StopOffer Disables potential invocations of the callback
RecoveryHandler().
Watchdog
«aapNativeInterface,aapPlatformExtension»
Platform Health Management::WatchdogInterface
+ AliveNotification()
+ FireWatchdogReaction()
«use»
«aapFunctionalCluster»
Platform Health Management
daemon-based
Name: WatchdogInterface
Technology: Native interface
Usage: Platform extension
Description: This interface provides functions to control the hardware watchdog.
Operations: AliveNotification Called cyclically by Platform Health Management
in configurable cycle time. Note: This time might differ
from the cycle time of triggering the "real" hardware
watchdog. If Platform Health Management does
not report aliveness in configured time,
WatchdogInterface shall initiate watchdog reaction.
FireWatchdogReaction Initiates an error reaction of the hardware watchdog.
«aapAPI,aapPortInterface»
SupervisedEntity
+ ReportCheckpoint()
«aapFunctionalCluster»
Platform Health Management
daemon-based
Table 9.23: Interfaces provided by Platform Health Management to other Functional Clus-
ters
«aapFunctionalCluster»
Platform Health Management
daemon-based
«aapProvidedPort»
Interface Purpose
Execution Management::ExecutionClient Platform Health Management uses this interface to report the state
of its daemon process to Execution Management.
Log and Trace::Logger Platform Health Management shall use this interface to log
standardized messages.
Platform Health Management::RecoveryAction Platform Health Management uses this interface to trigger failure
recovery.
Platform Health Management::Watchdog Platform Health Management uses this interface to control the
Interface hardware watchdog.
Registry::ManifestAccessor Platform Health Management shall use this interface to read
information about SupervisedEntities from the Manifests.
9.7 Configuration
«aapFunctionalCluster» «aapFunctionalCluster»
Update and Configuration Registry
Management
daemon-based
Adaptive Application
Diagnostic Application
«use» «use»
«aapRequiredPort» «aapRequiredPort»
«aapAPI,aapAraComServiceInterface»
PackageManagement
«aapAccessControlled, aapServiceField»
+ CurrentStatus
«aapAccessControlled, aapServiceMethod»
+ Activate()
+ Cancel()
+ DeleteTransfer()
+ Finish()
+ GetHistory()
+ GetId()
+ GetSwClusterChangeInfo()
+ GetSwClusterDescription()
+ GetSwClusterInfo()
+ GetSwPackages()
+ GetSwProcessProgress()
+ ProcessSwPackage()
+ RevertProcessedSwPackages()
+ Rollback()
+ TransferData()
+ TransferExit()
+ TransferStart()
«aapProvidedPort»
«aapFunctionalCluster»
Update and Configuration Management
UCM Subordinate
daemon-based
Name: PackageManagement
Technology: ara::com service interface
Usage: Public API
Description: This interface provides functionality for managing and transferring Software Packages to an UCM
Subordinate.
Operations: Activate Activates the processed components.
Cancel Aborts an ongoing processing of a Software
Package.
DeleteTransfer Delete a transferred Software Package.
Finish Finishes the processing for the current set of processed
Software Packages. It does a cleanup of all data of
the processing including the sources of the Software
Packages.
GetHistory Retrieve all actions that have been performed by UCM
Subordinate.
GetId Get the UCM Subordinate Instance Identifier.
5
4
GetSwClusterChangeInfo Get a list of pending changes to the set of Software
Clusters on the Adaptive Platform. The returned list
includes all Software Clusters that are to be added,
updated or removed. The list of changes is extended in
the course of processing Software Packages.
GetSwClusterDescription Get the general information of the Software
Clusters present in the platform.
GetSwClusterInfo Get a list of Software Clusters that are in state k
Present.
GetSwPackages Get the Software Packages that available in UCM
Subordinate.
GetSwProcessProgress Get the progress of the currently processed Software
Package.
ProcessSwPackage Process a previously transferred Software Package.
RevertProcessedSwPackages Revert the changes done by processing (by calling
ProcessSwPackage()) of one or several Software
Packages.
Rollback Rollback the system to the state before the packages
were processed.
TransferData Block-wise transfer of a Software Package to UCM
Subordinate.
TransferExit Finish the transfer of a Software Package to UCM
Subordinate.
TransferStart Start the transfer of a Software Package.
Fields: CurrentStatus The current status of the UCM Subordinate.
Adaptive Application
«aapFunctionalCluster»
Update and Configuration Management
UCM Master
daemon-based
Name: VehiclePackageManagement
Technology: ara::com service interface
Usage: Public API
Description: This interface provides functionality for managing and transferring Vehicle Packages and
Software Packages to UCM Master.
4
TransferExit Finish the transfer of a Software Package or
Vehicle Package to UCM Master.
TransferStart Start the transfer of a Software Package to UCM
Master.
TransferVehiclePackage Start the transfer of a Vehicle Package to UCM
Master.
Fields: RequestedPackage Software Package to be transferred to UCM Master.
SafetyState Vehicle state computed by the Vehicle State
Manager Adaptive Application.
TransferState The current status of a campaign from an OTA Client
perspective.
Name: VehicleDriverApplication
Technology: ara::com service interface
Usage: Public API
Description: This interface provides functionality to interact with the vehicle driver, for example to approve
updates.
Name: VehicleStateManager
Technology: ara::com service interface
Usage: Public API
Description: This interface provides functionality for a Vehicle State Manager Adaptive Application to inform
UCM Master about the safety state and policy of the vehicle.
Operations: SafetyState Called by the Vehicle State Manager Adaptive
Application when safety state is changed.
Fields: SafetyPolicy Safety policy from the Vehicle Package to be
computed by the Vehicle State Manager Adaptive
Application.
Adaptive Application
Flashing Adapter
«use»
«aapAPI,aapNativeInterface»
D-PDU API
«aapFunctionalCluster»
Update and Configuration
Management
D-PDU API
daemon-based
Figures 9.77 and 9.78 show the interfaces that are required by Update and Con-
figuration Management. These interface are thus required by both UCM Subor-
dinate and UCM Master.
«aapFunctionalCluster»
Update and Configuration Management
daemon-based
«aapFunctionalCluster» «aapFunctionalCluster»
Time Synchronization Persistency
daemon-based
«aapFunctionalCluster»
Update and Configuration Management
daemon-based
«use» «use»
«aapAPI,aapNativeInterface» «aapAPI,aapNativeInterface»
Logger ExecutionClient
«aapFunctionalCluster» «aapFunctionalCluster»
Log and Trace Execution Management
daemon-based
Figure 9.79 shows the interfaces that are only required by UCM Subordinate. Cor-
respondingly, Figure 9.80 shows the interfaces that are only required by UCM Master.
«aapFunctionalCluster»
Update and Configuration Management
UCM Subordinate
daemon-based
«use»
«aapRequiredPort» «use»
«aapAraComServiceInterface,aapIn... «aapAPI,aapNativeInterf...
UpdateRequest CryptoStack
«aapAccessControlled, aapService...
+ PrepareRollback()
+ PrepareUpdate()
+ RequestUpdateSession()
+ ResetMachine()
+ StopUpdateSession()
+ VerifyUpdate()
«aapProvidedPort»
«aapFunctionalCluster» «aapFunctionalClust...
State Management Cryptography
daemon-based daemon-based
«aapFunctionalCluster»
Update and Configuration Management
daemon-based
«use»
«aapRequiredPort»
«aapProvidedPort»
«aapAPI,aapAraComServiceInterface»
PackageManagement
«aapAccessControlled, aapServiceField»
+ CurrentStatus
«aapAccessControlled, aapServiceMeth...
+ Activate()
+ Cancel()
+ DeleteTransfer()
+ Finish()
+ GetHistory()
+ GetId()
+ GetSwClusterChangeInfo()
+ GetSwClusterDescription()
+ GetSwClusterInfo()
+ GetSwPackages()
+ GetSwProcessProgress()
+ ProcessSwPackage()
+ RevertProcessedSwPackages()
+ Rollback()
+ TransferData()
+ TransferExit()
+ TransferStart()
«aapProvidedPort»
Adaptive Application
Flashing Adapter
Interface Purpose
Execution Management::ExecutionClient This interface shall be used by the daemon process(es) inside Update
and Configuration Management to report their execution state to
Execution Management.
Log and Trace::Logger Update and Configuration Management shall use this interface to
log standardized messages.
Persistency::FileStorage This interface should be used to store files, for example downloaded
packages.
Persistency::KeyValueStorage This interface should be used to store internal state of Update and
Configuration Management.
Persistency::ReadAccessor This interface should be used to store files, for example downloaded
packages.
Persistency::ReadWriteAccessor This interface should be used to store files, for example downloaded
packages.
Platform Health Management::SupervisedEntity This interface should be used to supervise the daemon process(es) of
Update and Configuration Management.
Registry::ManifestAccessor Update and Configuration Management shall use this interface to
read information about its configuration from the Manifests.
Time Synchronization::SynchronizedTimeBase Update and Configuration Management shall use this interface to
Consumer get latest timestamp.
9.7.2 Registry
Name: Registry
Short Name: n/a
Category: Configuration
Daemon-based: No
Responsibilities: The Registry is an internal component of the AUTOSAR Adaptive Platform that provides access
the information stored in Manifests. It is not intended to be used by Adaptive Applications
directly.
«aapInternal,aapNativeInterface»
ManifestAccessor
Name: ManifestAccessor
Technology: Native interface
Usage: Internal
Description: This interface provides functionality to read information that was modeled in the Manifest(s). This
interface is not detailed in this document.
«aapInternal,aapNativeInterface»
ManifestAccessor
«aapFunctionalCluster»
Registry
«use»
«aapInternal»
Non-volatile Storage
Operating System
Interface Purpose
Non-volatile Storage Registry shall use this interface to read the information from the
Manifest(s).
9.8 Diagnostics
«aapFunctionalCluster»
Diagnostic Management
daemon-based
Adaptive Application
«use»
«use»
«aapRequiredPort»
«aapNativeInterface,aapAPI» «aapAPI,aapPortInterface»
Conversation DTCInformation
+ GetActivityStatus() + Clear()
+ GetAllConversations() + EnableControlDtc()
+ GetConversation(): Conversation + GetControlDTCStatus()
+ GetConversationIdentifier() + GetCurrentStatus()
+ GetCurrentActiveConversations() + GetEventMemoryOverflow()
+ GetDiagnosticSecurityLevel() + GetNumberOfStoredEntries()
+ GetDiagnosticSecurityLevelShortName() + SetControlDtcStatusNotifier()
+ GetDiagnosticSession() + SetDTCStatusChangedNotifier()
+ GetDiagnosticSessionShortName() + SetEventMemoryOverflowNotifier()
+ ResetToDefaultSession() + SetNumberOfStoredEntriesNotifier()
+ SetActivityNotifier() + SetSnapshotRecordUpdatedNotifier()
+ SetDiagnosticSessionNotifier()
+ SetSecurityLevelNotifier()
«aapFunctionalCluster»
Diagnostic Management
daemon-based
Name: Conversation
Technology: Native interface
Usage: Public API
Description: This interface provides functionality to handle diagnostic conversations.
Operations: GetActivityStatus Represents the status of an active conversation.
GetAllConversations Get all possible conversations.
GetConversation Get one conversation based on given meta information.
5
4
GetConversationIdentifier Getter for the current identification properties of the
active conversation.
GetCurrentActiveConversations Get all currently active conversations.
GetDiagnosticSecurityLevel Represents the current active diagnostic Security
Level of an active conversation.
GetDiagnosticSecurityLevelShortName Converts the given diagnostic SecurityLevel into the
ShortName.
GetDiagnosticSession Represents the current active diagnostic session of an
active conversation.
GetDiagnosticSessionShortName Converts the given diagnostic session into the Short
Name.
ResetToDefaultSession Method to reset the current session to the default
session.
SetActivityNotifier Register a notifier function which is called if the activity
is changed.
SetDiagnosticSessionNotifier Register a notifier function which is called if the Session
is changed.
SetSecurityLevelNotifier Register a notifier function which is called if the
SecurityLevel is changed.
Name: DTCInformation
Technology: Port interface
Generated: No
Meta-model DiagnosticDTCInformationInterface
interface type:
Usage: Public API
Description: This interface provides operations on DTC information per configured DiagnosticMemory
destination.
Clear Method for Clearing a DTC or a group of DTCs.
Operations:
EnableControlDtc Enforce restoring ControlDTCStatus setting to enabled
in case the monitor has some conditions or states
demands to do so.
GetControlDTCStatus Contains the current status of the ControlDTCStatus.
GetCurrentStatus Retrieves the current UDS DTC status byte of the given
DTC identifier.
GetEventMemoryOverflow Contains the current event memory overflow status.
GetNumberOfStoredEntries Contains the number of currently stored fault memory
entries.
SetControlDtcStatusNotifier Registers a notifier function which is called if the control
DTC setting is changed.
SetDTCStatusChangedNotifier Register a notifier function which is called if a UDS DTC
status is changed.
SetEventMemoryOverflowNotifier Register a notifier function which is called if the current
event memory overflow status changed.
SetNumberOfStoredEntriesNotifier Register a notifier function which is called if the number
of currently stored fault memory entries changed.
SetSnapshotRecordUpdatedNotifier Register a notifier function which is called if the
SnapshotRecord is changed.
Adaptive Application
«use» «use»
«aapAPI,aapNativeInterface» «aapAPI,aapNativeInterface»
CancellationHandler MetaInfo
+ IsCanceled() + GetContext()
+ SetNotifier() + GetValue()
«aapFunctionalCluster»
Diagnostic Management
daemon-based
Name: CancellationHandler
Technology: Native interface
Usage: Public API
Description: This interface holds a shared state if the processing should be canceled.
Operations: IsCanceled Returns true in if the diagnostic service execution is
canceled.
SetNotifier Registers a notifier function which is called if the
diagnostic service execution is canceled.
Name: MetaInfo
Technology: Native interface
Usage: Public API
Description: This interface specifies a mechanism to provide meta information, i.e. from transport protocol layer,
to an interested application.
Operations: GetContext Get the context of the invocation.
GetValue Get the metainfo value for a given key.
Adaptive Application
«aapFunctionalCluster»
Diagnostic Management
daemon-based
Name: Condition
Technology: Port interface
Generated: No
Meta-model DiagnosticConditionInterface
interface type:
Usage: Public API
Description: This interface provides functionality for condition management.
Operations: GetCondition Get the current condition.
SetCondition Set the current condition.
Name: OperationCycle
Technology: Port interface
Generated: No
Meta-model DiagnosticOperationCycleInterface
interface type:
Usage: Public API
Description: This interface provides functionality for handling of operation cycles.
Operations: GetOperationCycle Get the current OperationCycle.
SetNotifier Registers a notifier function which is called if the
OperationCycle is changed.
SetOperationCycle Set the current OperationCycle.
Name: Indicator
Technology: Port interface
Generated: No
Meta-model DiagnosticIndicatorInterface
interface type:
Usage: Public API
Description: This interface provides functionality for handling indicators.
Operations: GetIndicator Get current Indicator.
SetNotifier Register a notifier function which is called if the indicator
is updated.
Adaptive Application
«aapPortInterface,aapAPI» «aapPortInterface,aapAPI»
SecurityAccess ServiceValidation
+ CompareKey() + Confirmation()
+ GetSeed() + Offer()
+ Offer() + StopOffer()
+ StopOffer() + Validate()
«use» «use»
«aapRequiredPort» «aapRequiredPort»
«aapFunctionalCluster»
Diagnostic Management
daemon-based
Name: SecurityAccess
Technology: Port interface
Generated: No
Meta-model DiagnosticSecurityLevelInterface
interface type:
Usage: Public API
Description: This interface provides functionality for handling SecurityAccess requests.
Operations: CompareKey This method is called, when a diagnostic request has
been finished, to notify about the outcome.
GetSeed Called for any request message.
Offer Enable forwarding of request messages from
Diagnostic Management.
StopOffer Disable forwarding of request messages from
Diagnostic Management.
Name: ServiceValidation
Technology: Port interface
Generated: No
Meta-model DiagnosticServiceValidationInterface
interface type:
Usage: Public API
Description: This interface provides functionality for handling ServiceValidation requests.
Operations: Confirmation This method is called, when a diagnostic request has
been finished, to notify about the outcome.
Offer Enable forwarding of request messages from
Diagnostic Management.
StopOffer Disable forwarding of request messages from
Diagnostic Management.
Validate Called for any request message.
Adaptive Application
«use» «use»
«aapRequiredPort» «aapRequiredPort»
«aapFunctionalCluster»
daemon-based Diagnostic Management
Name: Monitor
Technology: Port interface
Generated: No
Meta-model DiagnosticMonitorInterface
interface type:
Usage: Public API
Description: This interface provides functionality to report qualified and unqualified test results and to control
debouncing options.
Operations: Offer Enable forwarding of request messages from
Diagnostic Management.
ReportMonitorAction Report the status information being relevant for error
monitoring paths.
StopOffer Disable forwarding of request messages from
Diagnostic Management.
Name: Event
Technology: Port interface
Generated: No
Meta-model DiagnosticEventInterface
interface type:
Usage: Public API
Description: This interface defines functionality for diagnostic events.
Name: GenericDataIdentifier
Technology: Port interface
Generated: No
Meta-model DiagnosticDataIdentifierGenericInterface
interface type:
Usage: Public API
Description: Generic interface to handle ReadDataByIdentifier and WriteDataByIdentifier requests.
Operations: Offer Enable forwarding of request messages from
Diagnostic Management.
Read Called for a ReadDataByIdentifier request for this
DiagnosticDataIdentifier.
StopOffer Disable forwarding of request messages from
Diagnostic Management.
Write Called for a WriteDataByIdentifier request for this
DiagnosticDataIdentifier.
Name: GenericUDSService
Technology: Port interface
Generated: No
Meta-model DiagnosticGenericUdsInterface
interface type:
Usage: Public API
Description: Generic interface to handle UDS messages.
Operations: HandleMessage Handles an UDS request message.
Offer Enable forwarding of request messages from
Diagnostic Management.
StopOffer Disable forwarding of request messages from
Diagnostic Management.
Name: GenericRoutine
Technology: Port interface
Generated: No
Meta-model DiagnosticRoutineGenericInterface
interface type:
Usage: Public API
Description: Generic interface to handle RoutineControl requests.
Adaptive Application
«aapFunctionalCluster»
daemon-based Diagnostic Management
Name: DataIdentifier
Technology: Port interface
Generated: Yes
Meta-model DiagnosticDataIdentifierInterface
interface type:
Usage: Public API
Description: Generated interface to handle ReadDataByIdentifier and WriteDataByIdentifier
requests.
Operations: Offer Enable forwarding of request messages from
Diagnostic Management.
Read Called for a ReadDataByIdentifier request for this
DiagnosticDataIdentifier.
StopOffer Disable forwarding of request messages from
Diagnostic Management.
Write Called for a WriteDataByIdentifier request for this
DiagnosticDataIdentifier.
Name: DataElement
Technology: Port interface
Generated: Yes
Meta-model DiagnosticDataElementInterface
interface type:
Usage: Public API
Description: Generated interface to handle read requests for DataElements.
Operations: Offer Enable forwarding of request messages from
Diagnostic Management.
Read Called for reading a DataElement.
StopOffer Disable forwarding of request messages from
Diagnostic Management.
Name: Routine
Technology: Port interface
Generated: Yes
Meta-model DiagnosticRoutineInterface
interface type:
Usage: Public API
Description: Generated interface to handle RoutineControl requests.
Adaptive Application
Diagnostic Application
«aapProvidedPort» «aapProvidedPort»
«aapPortInterface,aap... «aapPortInterface,aap...
DownloadService UploadService
+ DownloadData() + Offer()
+ Offer() + RequestUpload()
+ RequestDownload() + RequestUploadExit()
+ RequestDownloadExit() + StopOffer()
+ StopOffer() + UploadData()
«use» «use»
«aapFunctionalCluster»
daemon-based Diagnostic Management
Name: UploadService
Technology: Port interface
Generated: No
Meta-model DiagnosticUploadInterface
interface type:
Usage: Public API
Description: Upload service interface.
Name: DownloadService
Technology: Port interface
Generated: No
Meta-model DiagnosticDownloadInterface
interface type:
Usage: Public API
Description: Download service interface.
Operations: DownloadData Called for TransferData following a previous
RequestDownload.
Offer Enable forwarding of request messages from
Diagnostic Management.
RequestDownload Called for RequestDownload.
5
4
RequestDownloadExit Called for RequestTransferExit.
StopOffer Disable forwarding of request messages from
Diagnostic Management.
«aapFunctionalCluster»
State Management
daemon-based
«aapPortInterface,aapAPI» «aapPortInterface,aapAPI»
CommunicationControl EcuResetRequest
+ CommCtrlRequest() + EnableRapidShutdown()
+ Offer() + ExecuteReset()
+ StopOffer() + Offer()
+ RequestReset()
+ StopOffer()
«use» «use»
«aapRequiredPort» «aapRequiredPort»
«aapFunctionalCluster»
Diagnostic Management
daemon-based
Name: CommunicationControl
Technology: Port interface
Generated: No
Meta-model DiagnosticComControl
interface type:
Usage: Public API
Description: This interface provides functionality for CommunicationControl.
Operations: CommCtrlRequest Called for CommunicationControl (0x28) with any
subfunction as subfunction value is part of argument list.
Offer Enable forwarding of request messages from
Diagnostic Management.
StopOffer Disable forwarding of request messages from
Diagnostic Management.
Name: EcuResetRequest
Technology: Port interface
Generated: Yes
Meta-model DiagnosticEcuResetInterface
interface type:
Usage: Public API
Description: This interface provides functionality for EcuReset requests.
Operations: EnableRapidShutdown Called for subfunction En-/DisableRapidShutdown.
ExecuteReset Execute the requested reset.
5
4
Offer Enable forwarding of request messages from
Diagnostic Management.
RequestReset Called for any EcuReset subfunction, except
En-/DisableRapidShutdown.
StopOffer Disable forwarding of request messages from
Diagnostic Management.
«aapNativeInterface,aapPlatformExtens... «aapNativeInterface,aapPlatformExtens...
UdsTransportProtocolHandler UdsTransportProtocolMgr
+ GetHandlerID() + ChannelReestablished()
+ GetPeriodicHandler() + HandleMessage()
+ Initialize() + HandlerStopped()
+ NotifyReestablishment() + IndicateMessage()
+ Start() + NotifyMessageFailure()
+ Stop() + PeriodicTransmitConfirmation()
+ Transmit() + TransmitConfirmation()
«use» «use»
«aapFunctionalCluster»
Diagnostic Management
daemon-based
Name: UdsTransportProtocolHandler
Technology: Native interface
Usage: Platform extension
Description: This interface provides functionality for general Transport Protocol handling.
Name: UdsTransportProtocolMgr
Technology: Native interface
Usage: Platform extension
Description: This interface provides functionality to manage messages and their handling.
Operations: ChannelReestablished Notification call from the given transport channel, that it
has been reestablished since the last (Re)Start from the
UdsTransportProtocolHandler to which this channel
belongs.
HandleMessage Hands over a valid received UDS message (currently
this is only a request type) from transport layer to
session layer.
HandlerStopped Notification from handler, that it has stopped now (e.g.
closed down network connections, freed resources,
etc...)
IndicateMessage Indicates a message start.
NotifyMessageFailure Indicates, that the message indicated via
IndicateMessage() has failure and will not lead to a final
HandleMessage() call.
PeriodicTransmitConfirmation Confirmation of sent messages and number.
TransmitConfirmation Notification about the outcome of a transmit request
called by core Diagnostic Management at the
handler via Transmit()
«aapNativeInterface,aapPlatformExtensi... «aapNativeInterface,aapPlatformExtens...
UdsMessage UdsTransportProtocolPeriodicHandler
+ AddMetaInfo() + GetMaxPayloadLength()
+ GetPayload() + GetNumberOfPeriodicMessages()
+ GetSa() + PeriodicTransmit()
+ GetTa()
+ GetTaType()
«use» «use»
«aapFunctionalCluster»
Diagnostic Management
daemon-based
Name: UdsMessage
Technology: Native interface
Usage: Platform extension
Description: Represents an UDS message exchanged between Diagnostic Management’s generic core (Uds
TransportProtocolMgr) and a specific implementation of UdsTransportProtocolHandler
on diagnostic request reception path or diagnostic response transmission path.
Operations: AddMetaInfo Called by the transport plugin to add channel specific
meta-info.
GetPayload Get the UDS message data starting with the SID (A_
Data as per ISO).
GetSa Get the source address of the UDS message.
5
4
GetTa Get the target address of the UDS message.
GetTaType Get the target address type (phys/func) of the UDS
message.
Name: UdsTransportProtocolPeriodicHandler
Technology: Native interface
Usage: Platform extension
Description: This interface provides functionality for Transport Protocol handling of periodic messages.
Operations: GetMaxPayloadLength Reports the maximum payload length supported for a
single periodic transmission on the channel.
GetNumberOfPeriodicMessages Reports the Transport Protocol implementation and
connection specific number of periodic messages.
PeriodicTransmit Sends all the messages in the list in the given order.
DoIP Extension
«aapPortInterface,aapPlatformExtension» «aapPortInterface,aapPlatformExtension»
DoIPGroupIdentification DoIPActivationLine
+ GetGidStatus() + GetActivationLineState()
+ Offer() + GetNetworkInterfaceId()
+ StopOffer() + Offer()
+ StopOffer()
+ UpdateActivationLineState()
«use» «use»
«aapRequiredPort» «aapRequiredPort»
«aapFunctionalCluster»
Diagnostic Management
daemon-based
Name: DoIPGroupIdentification
Technology: Port interface
Generated: No
Meta-model DiagnosticDoIPGroupIdentificationInterface
interface type:
Usage: Platform extension
Description: This interface provides functionality to get the GID state of the DoIP protocol.
Operations: GetGidStatus Called to get the current GID state for the DoIP protocol.
Offer Enable forwarding of request messages from
Diagnostic Management.
StopOffer Disables forwarding of request messages from
Diagnostic Management.
Name: DoIPActivationLine
Technology: Port interface
Generated: No
Meta-model DiagnosticDoIPActivationLineInterface
interface type:
Usage: Platform extension
Description: This interface provides functionality to control the DoIP activation line.
DoIP Extension
«aapPortInterface,aapPlatformExtension» «aapPortInterface,aapPlatformExtension»
DoIPPowerMode DoIPTriggerVehicleAnnouncement
+ GetDoIPPowerMode() + GetDoIPTriggerVehicleAnnouncement()
+ Offer() + TriggerVehicleAnnouncement()
+ StopOffer()
«use» «use»
«aapRequiredPort» «aapProvidedPort»
«aapFunctionalCluster»
Diagnostic Management
daemon-based
Name: DoIPPowerMode
Technology: Port interface
Generated: No
Meta-model DiagnosticDoIPPowerModeInterface
interface type:
Usage: Platform extension
Description: This interface provides functionality to control the power mode via DoIP.
Operations: GetDoIPPowerMode Called to get the current Power Mode for the DoIP
protocol.
Offer Enable forwarding of request messages from
Diagnostic Management.
StopOffer Disable forwarding of request messages from
Diagnostic Management.
Name: DoIPTriggerVehicleAnnouncement
Technology: Port interface
Generated: No
Meta-model DiagnosticDoIPTriggerVehicleAnnouncementInterface
interface type:
Usage: Platform extension
Description: This interface provides functionality to trigger a vehicle announcement via DoIP.
Operations: GetDoIPTriggerVehicleAnnouncement Get the DoIPTriggerVehicleAnnouncement interface.
TriggerVehicleAnnouncement Send out vehicle announcements on the given network
interface Id.
Diagnostic Management does not provide any interfaces to other Functional Clus-
ters.
«aapFunctionalCluster»
daemon-based Diagnostic Management
«aapFunctionalCluster»
State Management
daemon-based
«aapPortInterface,aapAPI» «aapPortInterface,aapAPI»
CommunicationControl EcuResetRequest
+ CommCtrlRequest() + EnableRapidShutdown()
+ Offer() + ExecuteReset()
+ StopOffer() + Offer()
+ RequestReset()
+ StopOffer()
«use» «use»
«aapRequiredPort» «aapRequiredPort»
«aapFunctionalCluster»
Diagnostic Management
daemon-based
«aapFunctionalClust...
Diagnostic Management
daemon-based
«use»
«aapInternal»
TCP/IP Stack
Operating System
Interface Purpose
TCP/IP Stack This interface is used for DoIP Transport Protocols.
Diagnostic Management::Communication This interface should be used to realize UDS Service 0x28 -
Control CommunicationControl.
Diagnostic Management::DataElement This interface is used to handle read DataElement requests.
Diagnostic Management::DataIdentifier This interface is used to handle ReadDataByIdentifier and Write
DataByIdentifier requests.
Diagnostic Management::DoIPActivationLine This interface is used to control a DoIP Transport Layer implementation.
Diagnostic Management::DoIPGroup This interface is used to control a DoIP Transport Layer implementation.
Identification
Diagnostic Management::DoIPPowerMode This interface is used to control a DoIP Transport Layer implementation.
Diagnostic Management::DoIPTriggerVehicle This interface is used to control a DoIP Transport Layer implementation.
Announcement
Diagnostic Management::DownloadService This interface is used to handle download requests.
Diagnostic Management::EcuResetRequest This interface is used to handle reset requests.
Diagnostic Management::GenericDataIdentifier This interface is used to handle ReadDataByIdentifier and Write
DataByIdentifier requests.
Diagnostic Management::GenericRoutine This interface is used to handle RoutineControl requests.
Diagnostic Management::GenericUDSService This interface is used to handle UDS requests.
Diagnostic Management::Routine This interface is used to handle RoutineControl requests.
Diagnostic Management::SecurityAccess This interface is used to handle SecurityAccess requests.
5
4
Interface Purpose
Diagnostic Management::ServiceValidation This interface is used to handle ServiceValidation requests.
Diagnostic Management::UdsMessage This interface is used to access an UDS Transport Layer implementation.
Diagnostic Management::UdsTransportProtocol This interface is used to access an UDS Transport Layer implementation.
Handler
Diagnostic Management::UdsTransportProtocol This interface is used to access an UDS Transport Layer implementation.
Mgr
Diagnostic Management::UdsTransportProtocol This interface is used to access an UDS Transport Layer implementation.
PeriodicHandler
Diagnostic Management::UploadService This interface is used to handle upload requests.
Execution Management::ExecutionClient This interface is used to report the status of the Diagnostic
Management daemon process(es).
Identity and Access Management::Policy Diagnostic Management shall use this interface to check access from
DecisionPoint Diagnostic Clients.
Log and Trace::Logger Diagnostic Management shall use this interface to log standardized
messages.
Persistency::FileStorageOperations This interface is used to read and write data to files.
Persistency::KeyValueStorageOperations This interface should be used to persist key-value data.
Persistency::PersistencyHandlingOperations This interface is used for general persistency handling.
Persistency::FileStorage This interface is used to read and write data to files.
Persistency::KeyValueStorage This interface should be used to persist key-value data.
Persistency::ReadAccessor This interface is used to read and write data to files.
Persistency::ReadWriteAccessor This interface is used to read and write data to files.
Platform Health Management::SupervisedEntity This interface is used to supervise the Diagnostic Management
daemon process(es).
Registry::ManifestAccessor Diagnostic Management shall use this interface to read its
configuration information from the Manifests.
State Management::DiagnosticReset This interface is used to handle diagnostic reset requests.
10 Use-Case View
This chapter provides an overview of the use cases of the AUTOSAR Adaptive Plat-
form. The use cases are defined on the level of the Functional Clusters in the
AUTOSAR Adaptive Platform. The chapter structure corresponds to the Building Block
View in Section 9.
The use cases in this chapter are specified in a solution-neutral way. As a conse-
quence, include and extend relationships are used sparingly to avoid "programming"
with use cases. Please refer to the individual scenarios in chapter 11 that provide a
detailed insight how the use cases could be implemented and how they refer to each
other.
The use cases are described using tables that are based on the template shown in
Table 10.1. Some rows are optional and will be left out if empty.
10.1 Runtime
Adaptive Platform
Execution Management
«aapUseCase»
«aapFunctionalCluster»
Platform Health Management
«aapTriggers» «include»
«aapTriggers»
«aapParticipates» «aapFunctionalCluster»
State Management
«include»
daemon-based
«aapParticipates» «aapTriggers»
Operating System «aapUseCase»
Shutdown Adaptive
(from
Platform
Actors)
4
Scenarios: Start Platform with This scenario shows the startup of the
Supervision of Adaptive Platform with an supervision of
Applications Adaptive Applications. It therefore
includes the startup of Platform
Health Management that performs
supervision and the startup of an Adaptive
Application that is supervised as part of
the Startup Machine Function Group
State. Additional Functional Clusters and
Application processes may need to be
started in addition depending on the
Adaptive Platform implementation and
project-specific needs.
Table 10.2: Use-Case Start Adaptive Platform
Adaptive Platform
State Management
«aapFunctionalClust...
«aapUseCase»
«aapTriggers» «aapParticipates» Execution Management
Change System State
daemon-based
Adaptive Application
«include»
«aapFunctionalClust...
«aapUseCase»
«aapTriggers» Platform Health
Recover from Management
Supervision Failure
daemon-based
4
Preconditions: • State Management needs to be registered with the
RecoveryAction interface of Platform Health Management.
Invariants: None
Postconditions: No postconditions defined at the moment.
Scenarios: Successful Recovery Default scenario that shows a successful
recovery from a supervision failure by
switching to a new system state.
Table 10.6: Use-Case Recover from Supervision Failure
10.2 Storage
10.2.1 Persistency
The use cases for Persistency are organized into three categories. Section 10.2.1.1
lists the use cases for reading persistent data. Section 10.2.1.2 lists the use cases for
storing persistent data. Section 10.2.1.3 lists the use cases related to monitoring of
persistent storage.
Adaptive Platform
Persistency
«aapUseCase»
Read Persistent Data
Adaptive Application «aapTriggers» with Unique ID
(from «aapUseCase»
Actors)
Read Persistent Data
«aapUseCase»
«aapParticipates» Read Persistent Data
from File
«extend» «extend»
Operating System
«aapFunctionalCluster»
(from «aapUseCase» «aapUseCase»
«aapParticipates» Cryptography
Actors) Detect and Correct Data
Decrypt Persistent Data
Errors
daemon-based
4
Decrypt Persistent Data Decrypt Persistent Data extends
this use case if encryption is configured in
the Manifest (see PersistencyDe-
ploymentToCryptoKeySlotMapping
or PersistencyDeploymentElement-
ToCryptoKeySlotMapping).
Preconditions: • The requested unique ID (key) exists.
Invariants: None
Postconditions: None
Scenarios: Read Data with Unique ID This scenario shows how data is read for
Successfully a unique ID successfully.
Table 10.8: Use-Case Read Persistent Data With Unique ID
Adaptive Platform
Persistency
«aapUseCase»
Store Persistent Data
Adaptive Application with Unique ID
«aapTriggers»
(from «aapUseCase»
Actors)
Store Persistent Data
«aapUseCase»
«aapParticipates» Store Persistent Data in
File
«extend»
Operating System
«aapFunctionalCluster»
(from «aapUseCase»
«aapParticipates» Cryptography
Actors)
Encrypt Persistent Data
daemon-based
10.2.1.3 Monitoring
Adaptive Platform
Persistency
(from «aapUseCase»
Actors)
Get Storage Size
«aapParticipates»
Operating System
(from
Actors)
10.3 Security
10.3.1 Firewall
Adaptive Platform
Firewall
«aapParticipates»
«aapFunctionalCluster»
«aapUseCase»
Adaptive Intrusion Detection System
Report Security Event Manager
«aapTriggers» «aapParticipates»
Operating System daemon-based
(from
Actors)
11 Runtime View
This chapter shows the original design approach of the AUTOSAR Adaptive Platform
for implementing selected use cases. The presented use cases currently cover just
a small part of the functionality of the AUTOSAR Adaptive Platform. More use cases
will be added in future versions of this document. Please note that individual imple-
mentations of the AUTOSAR Adaptive Platform may always choose a different design
internally. Thus, interaction partners, the type of messages, and their order may differ.
11.1 Runtime
enable()
«aapFunctionalClust...
:Execution Management
main()
SetState(Startup)
exec()
«aapFunctionalClust...
:State Management
main()
ReportExecutionState(kRunning): Result
opt
exec()
«aapFunctionalCluster»
:Platform Health Management
main()
AliveNotification()
ReportExecutionState(kRunning): Result
Offer()
performSupervision()
AliveNotification()
opt exec()
:Adaptive Application
main()
Initialize()
ReportExecutionState(kRunning): Result
ReportCheckpoint()
GetInitialMachineStateTransitionResult()
ref
Change Function Group State (Running)
Figure 11.1 shows a scenario of for Start Adaptive Platform with an supervi-
sion of Adaptive Applications. It therefore includes the startup of Platform Health
Management that performs supervision and the startup of an Adaptive Application that
is supervised as part of the Startup Machine Function Group State.
During the preceding startup of the Machine the Operating System performs ini-
tialization steps in an implementation-specific way. These steps include starting any
middleware related to the Operating System, including device-drivers and services
handling low-level middleware. The AUTOSAR Adaptive Platform demands that the
Watchdog is enabled prior to the startup of the AUTOSAR Adaptive Platform, for ex-
ample, the Watchdog could already be enabled by the Bootloader or the Operat-
ing System.
Execution Management is started by the Operating System as the first process
of the AUTOSAR Adaptive Platform. Execution Management then controls the
startup of the AUTOSAR Adaptive Platform by activating the standardized Function
Group State called Startup of the Machine Function Group State. This trig-
gers the start of additional processes that are configured to run in the Startup state. It
is mandatory that State Management is part of the Startup state. Other processes
of the AUTOSAR Adaptive Platform, for example Platform Health Management
and application processes may also be part of the Startup state (see Figure 11.1).
Platform Health Management is responsible to service the Watchdog. Thus, the
time between enabling the Watchdog during the start of the Machine and the start of
Platform Health Management needs to be less than the Watchdog timeout. The
integrator needs to fulfill this constraint.
After the Startup state has been reached, State Management takes over control
to determine the desired Function Group States.
StopOffer()
ref
Change Function Group State (Shutdown)
SIGTERM()
exec()
shutdownApp: Adaptive
Application
main()
shutdown()
SIGTERM()
SIGTERM()
SIGTERM()
Figure 11.2 shows a scenario for Shutdown Adaptive Platform with a super-
vision of Adaptive Applications. It therefore includes the shutdown of Platform
Health Management that performs supervision.
The shutdown is triggered by State Management by requesting the standardized
Machine Function Group State called Shutdown. In general, it is assumed that
the only processes configured to run in the Shutdown state are State Management
and an application that issues a shutdown request towards the Operating System
(shutdownApp in Figure 11.2). Execution Management will therefore perform an
orderly shutdown of the other running application and platform processes (including
Platform Health Management) before starting the application process that issues
a shutdown request towards the Operating System. The Operating System
terminates the remaining processes (i.e. State Management, Execution Man-
agement) of the AUTOSAR Adaptive Platform and shuts down the Machine in an
implementation-specific way.
«aapFunctionalClust... «aapFunctionalClust... :Operating System old: Adaptive Application 0..* «aapFuncti... «aapFunctionalCluster»
:State Management :Execution Management :Core :Platform Health Management
SetState(FunctionGroupState)
startStateTransition(old, new)
determineObsoleteProcesses()
processTerminating(process)
stopSupervision()
SIGTERM() Deinitialize()
determineProcessesToStart()
exec()
new: Adaptive Application
0..*
main()
Initialize()
ReportExecutionState(kRunning)
ReportCheckpoint()
Figure 11.3 shows a scenario for changing a Function Group State. The sce-
nario is triggered by State Management. Execution Management will terminate
all processes that are not part of the requested target Function Group State or
that have a different StateDependentStartupConfig.
Just before terminating a process (with a SIGTERM signal), Execution Manage-
ment notifies Platform Health Management that will stop all supervisions of the
process. Consequently, State Management will not receive any information about
failed supervisions during the shutdown of the process. The shutdown is monitored by
Execution Management by means of StartupConfig.timeout configured in the
Manifest.
Afterwards, Execution Management starts the processes of the target Function
Group State in the order imposed by their StateDependentStartupConfig.
When a processes reports its execution state as kRunning, Execution Manage-
ment notifies Platform Health Management to start Alive Supervision for
«aapFunctionalClust... «aapFunctionalClust...
:State Management :Execution Management
app: Adaptive Application
TriggerIn_{StateGroup}::Set(value)
determineDesiredFGSate(): desiredState
SetState(desiredState)
handleNewFGState()
TriggerOut_{StateGroup}::notify(value)
Figure 11.4 shows the default scenario for changing the system state. An Adaptive
Application changes a field in the TriggerIn_{StateGroup} service interface.
Alternatively, the TriggerInOut_{StateGroup} may be used (not shown). Based
on the new input data, State Management determines a new desired system state,
that is a set of desired Function Group States, and requests these Function
Group States from Execution Management by calling SetState().
After the new system state has been reached, State Management updates the
fields in the TriggerOut_{StateGroup} (and TriggerInOut_{StateGroup},
not shown) interfaces accordingly.
«aapFunctionalClust...
:State Management
app: Adaptive Application
TriggerIn_{StateGroup}::Set(value)
determineDesiredFGState(): desiredState
{desiredState =
currentState}
Offer()
supervisionFailed()
handleFailedSupervision()
RecoveryHandler()
determineDesiredFGState(): desiredState
ref
Change System State
Figure 11.6 shows the scenario for performing successful recovery after a supervision
failure has been detected by Platform Health Management. Platform Health
Management notifies State Management by invoking the call-back method Recov-
eryHandler(). State Management then determines a new desired state (which may
be the same as the current state) and requests corresponding Function Group
State transitions from Execution Management.
11.2 Storage
11.2.1 Persistency
«aapFunctionalCluster» «aapFunctionalCluster»
:Persistency :Cryptography
:Adaptive Application :Operating System
OpenFileStorage(): FileStorage
alt
ref
Detect and Correct Data Errors
alt
[KeySlotMapping exists in Manifest and keySlotUsage = encryption]
ref
Initialize Cipher
loop
[not readAccessor.IsEof()]
line= ReadLine()
loop
read()
alt
Figure 11.7 shows the scenario for successfully reading data from a file successfully.
The Adaptive Application needs to open a FileStorage by calling OpenFileStor-
age(). Afterwards, the Adaptive Application needs to open an individual file by
calling OpenFileReadOnly() or OpenFileReadWrite() depending if the Adaptive Ap-
plication needs to write data to the file as well. Then, the Adaptive Applica-
tion can read data via the methods provided by ReadAccessor either as binary data
or text data.
If enabled in the Manifest, Persistency will detect and try to correct data errors
when reading from a file. If the file or FileStorage is configured to use encryption, the
contents of the file will be transparently decrypted during read.
«aapFunctionalClust... «aapFunctionalClust...
:Persistency :Cryptography
:Adaptive Application :Operating System
OpenKeyValueStorage(): KeyValueStorage
open()
GetValue(key)
read()
alt
[Redundancy enabled in the Manifest]
ref
Detect and Correct Data Errors
alt
ref
Initialize Cipher
ProcessBlock()
Figure 11.8 shows the scenario for successfully reading data by providing a unique
identifier (key). The Adaptive Application needs to open a KeyValueStorage by
calling OpenKeyValueStorage(). Then, the Adaptive Application can read data
associated to a key by calling GetValue().
If enabled in the Manifest, Persistency will detect and try to correct data errors
when reading data. If the individual key or KeyValueStorage is configured to use en-
cryption, data will be transparently decrypted during read.
«aapFunctionalClust... «aapFunctionalClust...
:Persistency :Cryptography
:Adaptive Application :Operating System
OpenFileStorage(): FileStorage
OpenFileWriteOnly(): ReadWriteAccessor
open()
alt
ref
Initialize Cipher
WriteText()
alt
[KeySlotMapping exists in Manifest and keySlotUsage = encryption]
ProcessBlock()
write()
Figure 11.9 shows a scenario for storing data to a file successfully. The Adaptive
Application needs to open a FileStorage by calling OpenFileStorage(). Afterwards,
the Adaptive Application needs to open an individual file for writing by calling
OpenFileWriteOnly() or OpenFileReadWrite() depending if the Adaptive Applica-
tion needs to read data from the file as well. Then, the Adaptive Application
can store data via the methods provided by ReadWriteAccessor either as binary data
or text data.
If enabled in the Manifest, Persistency stores redundant data to detect and cor-
rect errors when reading from a file later. If the file or FileStorage is configured to use
encryption, data will be encrypted before it is written to the underlying storage.
«aapFunctionalClust... «aapFunctionalClust...
:Persistency :Cryptography
:Adaptive Application :Operating System
OpenKeyValueStorage(): KeyValueStorage
SetValue()
SyncToStorage()
open()
alt
ref
Initialize Cipher
ProcessBlock()
write()
Figure 11.10 shows a scenario for storing data associated with a unique identifier (key)
successfully. The Adaptive Application needs to open a KeyValueStorage by
calling OpenKeyValueStorage(). Then, the Adaptive Application can store data
associated to a key by calling SetValue(). The data is updated in memory by calling
SetValue() but not written to persistent storage. The Adaptive Application needs
to call SyncToStorage() to write one or more such changes to persistent storage.
If enabled in the Manifest, Persistency stores redundant data to detect and cor-
rect errors when reading from a KeyValueStorage later. If the key or KeyValueStorage
is configured to use encryption, data will be encrypted before it is written to the under-
lying storage.
«aapFunctionalClust...
:Persistency
:Adaptive Application :Operating System
GetCurrentFileStorageSize()
getSize()
Figure 11.11 shows the scenario for monitoring the storage space of a FileStorage. The
Adaptive Application needs to call GetCurrentFileStorageSize() to determine the
current size.
«aapFunctionalClust...
:Persistency
:Adaptive Application :Operating System
GetCurrentKeyValueStorageSize()
getSize()
Figure 11.12 shows the scenario for monitoring the storage space of a KeyValueStor-
age. The Adaptive Application needs to call GetCurrentKeyValueStorageSize()
to determine the current size.
11.3 Security
11.3.1 Firewall
«aapFunctionalCl...
:Firewall
:Adaptive Application :Operating System
SwitchFirewallState()
loop
[foreach FirewallRule]
applyRule()
Figure 11.13 shows the scenario for successfully switching the state of the Firewall.
The Adaptive Application triggers the state switch by calling SwitchFirewallState
(). The Firewall will then apply the FirewallRules configured for the request state
in an implementation-specific way (e.g., using tools provided with the TCP/IP stack of
the Operating System).
«aapFunctionalCl... «aapFunctionalCluster»
:Firewall :Adaptive Intrusion Detection
:Operating System System Manager
packetBlocked()
handlePacketBlocked()
raiseSecurityEvent()
ReportEvent()
Figure 11.14 shows the scenario for successfully reporting a Security Event to
Adaptive Intrusion Detection System Manager. The Operating System
(or another component that implements the actual firewall) reports that a packet has
been blocked by a specific rule to the Firewall. If a Security Event has been
configured for that rule in the Manifest, the Firewall will create a correspond-
ing Security Event and report it to Adaptive Intrusion Detection System
Manager by calling ReportEvent(). Adaptive Intrusion Detection System
Manager will then handle the Security Event accordingly.
12 Deployment View
This chapter provides an overview of exemplary deployment scenarios for an AU-
TOSAR Adaptive Platform. Since the AUTOSAR Adaptive Platform is highly config-
urable in its deployment, this section rather provides constraints on supported deploy-
ments and a selection of relevant deployment scenarios.
«device»
Vehicle
«device»
gateway: Machine
«executionEnvironment»
:Adaptive Runtime
«manifest»
UCM Subordinate
«device» «device»
ecu1: ECU machine1: Machine
«manifest»
«executionEnviron... «executionEnvironment»
:Classic Platform :Adaptive Runtime
«executa...
Update and
Configuration
Management
«device» Legend
Machine user
platformVendor
«software package» machineVendor
Application Package
tags
Multiplicity = *
SoftwareCluster.category = APPLICATION_LAYER
Platform
«aapFunctionalCluster» «aapFunctionalClust...
«software package» Diagnostic Management Cryptography
Platform Package daemon-based daemon-based
tags
Multiplicity = * «manifest» «manifest»
SoftwareCluster.category = PLATFORM
Bootloader / Hypervisor
13 Cross-cutting Concepts
This section provides an overview of cross-cutting concepts and patterns used in the
AUTOSAR Adaptive Platform.
Software Package Software Cluster 0..* Function Group Function Group State Startup Configuration
2..* +state
- diagnosticConfig [0..1] - options
1 - version 0..* - schedulingPriority
0..*
+/requiredCluster
+executionDependecy
0..*
0..*
Executable Process
1 +executable
+process 1
1..*
«aapFunctionalCluster» Adaptive
Platform Health Management Application
daemon-based
off: Function Group normal: Function off: Function Group normal: Function
State Group State State Group State
degraded: Function
Group State
:Manifest
EM: Process
:Startup
Configuration
off: Function Group normal: Function off: Function Group normal: Function
State Group State State Group State
degraded: Function
Group State
fg1 EM fg2 EM
Configuration Configuration
13.5 Machine
The AUTOSAR Adaptive Platform regards hardware it runs on as a Machine. The ra-
tionale behind that is to achieve a consistent platform view regardless of any virtualiza-
tion technology which might be used. The Machine might be a real physical machine,
a fully-virtualized machine, a para-virtualized OS, an OS-level-virtualized container or
any other virtualized environment.
On hardware, there can be one or more Machine, and only a single instance of AU-
TOSAR Adaptive Platform runs on a machine. It is generally assumed that this hard-
ware includes a single chip, hosting a single or multiple Machines. However, it is also
possible that multiple chips form a single Machine if the AUTOSAR Adaptive Platform
implementation allows it.
13.6 Manifest
A Manifest represents a piece of AUTOSAR model description that is created to
support the configuration of an AUTOSAR Adaptive Platform product and which is up-
loaded to the AUTOSAR Adaptive Platform product, potentially in combination with
other artifacts (like binary files) that contain executable code to which the Manifest
applies. Please note that a typical Adaptive Application will make use of several
distinct but interrelated Manifests. Hereby, the individual Manifests contribute in-
formation to the complete application model. For example, each Software Cluster
may contribute a self-contained set of Manifests to configure its functionality.
The usage of a Manifest is limited to the AUTOSAR Adaptive Platform. This does
not mean, however, that all ARXML produced in a development project that targets
the AUTOSAR Adaptive Platform is automatically considered a Manifest. In fact,
the AUTOSAR Adaptive Platform is usually not exclusively used in a vehicle project.
A typical vehicle will most likely be also equipped with a number of ECUs developed
on the AUTOSAR Classic Platform and the system design for the entire vehicle will,
therefore, have to cover both, ECUs built on top of the AUTOSAR Classic Platform and
Machines created on top of the AUTOSAR Adaptive Platform.
In principle, the term Manifest could be defined such that there is conceptually just
one "Manifest" and every deployment aspect would be handled in this context. This
does not seem appropriate because it became apparent that Manifest-related model-
elements exist that are relevant in entirely different phases of a typical development
project.
This aspect is taken as the main motivation that next to the application design it is
necessary to subdivide the definition of the term Manifest in three different partitions:
Application Design This kind of description specifies all design-related aspects that
apply to the creation of application software for the AUTOSAR Adaptive Platform. It
is not necessarily required to be deployed to the adaptive platform machine, but the
application design aids the definition of the deployment of application software in the
Execution Manifest and Service Instance Manifest. See Section 13.7 for
details.
Execution Manifest This kind of Manifest is used to specify the deployment-related
information of applications running on the AUTOSAR Adaptive Platform. An Execu-
tion Manifest is bundled with the actual executable code to support the integration
of the executable code onto the machine. See Section 13.8 for details.
Service Instance Manifest This kind of Manifest is used to specify how service-
oriented communication is configured in terms of the requirements of the underlying
transport protocols. A Service Instance Manifest is bundled with the actual
executable code that implements the respective usage of service-oriented communi-
cation. See Section 13.9 for details.
Machine Manifest This kind of Manifest is supposed to describe deployment-related
content that applies to the configuration of just the underlying machine (i.e. without any
applications running on the machine) that runs an AUTOSAR Adaptive Platform. A
Machine Manifest is bundled with the software taken to establish an instance of
the AUTOSAR Adaptive Platform. See Section 13.10 for details.
The temporal division between the definition (and usage) of different kinds of Mani-
fest leads to the conclusion that in most cases different physical files will be used to
store the content of the three kinds of Manifest. In addition to the Application Design
and the different kinds of Manifest, the AUTOSAR Methodology supports a Sys-
tem Design with the possibility to describe Software Components of both AUTOSAR
Platforms that will be used in a System in one single model. The Software Compo-
nents of the different AUTOSAR platforms may communicate in a service-oriented way
with each other. But it is also possible to describe a mapping of Signals to Services
to create a bridge between the service-oriented communication and the signal-based
communication.
a single diagnostic address per Software Cluster could be used (see Figure 13.5).
Deployment scenarios in between those extremes are also possible.
Shared diagnostic address 0x1234
app1: Software Cluster app2Root: Software Cluster
- category = APPLICATION_LAYER - category = APPLICATION_LAYER
shared: DiagnosticContributionSet app2Sub1: Software Cluster app2Sub2: Software Cluster
Figure 13.4: Example defining a single diagnostic address for the whole Machine
:DiagnosticContributionSet :DiagnosticContributionSet
Figure 13.5: Example using one diagnostic address for each Software Cluster
14.1 Risks
This document categorizes risks according to their severity. The severity is a function
of the probability and the impact of a risk. The probabilities are categorized as follows:
• very low - probability is less than 1 thousandth
• low - probability is between 1 thousandth and 1 percent
• medium - probability is between 1 percent and 10 percent
• high - probability is between 10 percent and 50 percent
• very high - probability is more than 50 percent
The impact of a risk is categorized as follows:
• very low - at most one quality scenario will take additional significant effort to be
satisfied
• low - more than one quality scenario will take additional significant effort to be
satisfied
• medium - at most one quality scenario is not satisfied with small gaps
• high - at most one quality scenario is not satisfied with big gaps
• very high - more than one quality scenario is not satisfied with big gaps
The final severity of a risk is then calculated according to table 14.1.
Probability
Impact very low low medium high very high
very low low (1) low (2) low (3) medium (4) medium (5)
low low (2) medium (4) medium (6) high (8) high (10)
medium low (3) medium (6) high (9) high (12) high (15)
high medium (4) high (8) high (12) extreme (16) extreme (20)
very high medium (5) high (10) high (15) extreme (20) extreme (25)
References
[1] ISO 42010:2011 – Systems and software engineering – Architecture description
http://www.iso.org
[2] Explanation of Adaptive and Classic Platform Software Architectural Decisions
AUTOSAR_EXP_SWArchitecturalDecisions
[3] Glossary
AUTOSAR_TR_Glossary
[4] Main Requirements
AUTOSAR_RS_Main
[5] General Requirements specific to Adaptive Platform
AUTOSAR_RS_General
[6] ATAMSM : Method for Architecture Evaluation
https://resources.sei.cmu.edu/asset_files/TechnicalReport/2000_005_001
_13706.pdf
[7] Agile Software Development: Principles, Patterns, and Practices
[8] Guide to the Software Engineering Body of Knowledge, Version 3.0
www.swebok.org
[9] Specification of Manifest
AUTOSAR_TPS_ManifestSpecification
[10] Specification of SW-C End-to-End Communication Protection Library
AUTOSAR_SWS_E2ELibrary