ADTF  v2.14.3
ADTF Runtime Layer

uCOM Runtime

All loaded components can be accessed via the central interface IRuntime. This global interface makes the system states accessible and publishes all available Plugins, classes, and concrete object instances via the corresponding access methods. A schematic depiction what we are calling "registries" in this context is shown in the following figure.


The concrete implementation of the ADTF Runtime is a state machine to which access is possible with the methods SetRunLevel() and GetRunLevel().

uCOM Service Definition

The uCOM makes an essential interface available for all applications. The interface IService clarifies the term of a system service. A service is notified by the uCOM Runtime about all changes in the system. These changes can be:

  • Registration/deregistration of a Plugin, a class, or an object
  • Start/stop of a system service
  • State change of the runtime (LevelChange)

ADTF Runtime

The core of ADTF is based on the uCOM Runtime and thus functions according to the same basic rules that also apply for application modules in the framework. System services are realized by—staticallly linked or dynamically loaded—components that provide their public functions using interfaces. Here, uCOM defines that system services (as a genus) exist, ADTF itself makes concrete and unique interfaces available in order to access various system services such as configuration, storage management, kernel, etc.

The central point of reference for the use of system services is the IObject interface of the global runtime object. Concretely, this means that in the framework a basic object (_runtime) always exists, for which the interfaces of the individual system services can be requested via the method GetObject().

IMemoryManager* pMemoryManager;
(tVoid**) &pMemoryManager));
tVoid* pMemBlock = pMemoryManager->Alloc(1024); // allocate 1024 bytes, don't check
pMemoryManager->Free(pMemBlock); // free memory
pMemoryManager->Unref(); // unref memory manager service interface
As system services—identically to all other components—can be loaded as Plugins into the framework, applications should not automatically assume that all functions (interfaces) are available on all platforms. Applications must weigh the sensible target platforms during design and also take this into account during the implementation.

Copyright © Audi Electronics Venture GmbH. All rights reserved. (Generated on Fri Mar 22 2019 by doxygen 1.8.10)