The OTX-Runtime API 7.x is a complete new implementation based at C++. It is independent from the former OTX-Runtime API 6.x (DotNet, Java). Applications which based at the OTX-Runtime API 6.x can be migrate to the OTX-Runtime API 7.x. The picture shows the main structure of the OTX-Runtime API 7.x.
The main differences between OTX-Runtime API 6.x and 7.x are listed in the following table.
Feature | 6.x | 7.x | Description |
OTX Runner | Own process | Own process or inside application process | OTX Runner is the process where the OTX logic will be executed |
IPC Between Runner and API | Sockets | Sockets, Pipe or Raw | IPC means inter process communication. Raw do not need IPC. |
Diagnostic Runtime System (MVCI) | Inside Runner | Outside Runner inside OTX-DiagManager API | DiagManager can be run inside its own process and is stand-alone usable |
IPC Between Runner and DiagManager | - | Sockets, Pipe or Raw | IPC means inter process communication. Raw do not need IPC. |
Configuration and start Diagnostic Runtime System | Implicit inside Runner | Explicit with DiagManager | IPC means inter process communication. Raw do not need IPC. |
Implementations for access to external systems | Implicit inside Runner | Explicit outside Runner inside so called Custom Implementations | CustomImplementations can be changed by the user. A default custom implementation with the same functionality like in 6.x will delivered together with the OTX-Runtime API. Some custom implementations, e.g. DefaultCustomScreenImplementation must be set explicitly, see example below. |
API entry point | RuntimeManager | RuntimeManagerFactory and IRuntimeManager | The main structures of the APIs are very similar |
The basic proceeding how the OTX-Runtime API 7.x can be used is described in the following pseudo code example. The example executes the main procedure of a PTX file.
void main()
{
runtimeManager.OnProcedureStarted += ProcedureStartedHandler(ProcedureStarted);
runtimeManager.OnProcedureFinished += ProcedureFinishedHandler(ProcedureFinished);
runtimeManager.OnProcedureStopped += ProcedureStoppedHandler(ProcedureStopped);
runtimeManager.OnProcedureAborted += ProcedureAbortedHandler(ProcedureAborted);
RuntimeConfig.Instance.TraceFolder = "C://");
CustomScreenImplementation customScreenImplementation = new CustomScreenImplementation();
runtimeManager.SetCustomImplementation(customScreenImplementation);
if (procedure != null)
{
if (procedure.Parameters.Size > 0)
{
{
}
}
if (runtimeContext.IsFinished)
{
}
else if (runtimeContext.IsStopped)
{
}
else if (runtimeContext.HasRuntimeException)
{
}
else if (runtimeContext.HasOtxException)
{
}
else
{
}
}
}
private void ProcedureStarted(IRuntimeContext context)
{
}
private void ProcedureFinished(IRuntimeContext context)
{
}
private void ProcedureStopped(IRuntimeContext context)
{
}
private void ProcedureAborted(IRuntimeContext context)
{
}
Contains information of a Runner instance.
Definition: IRuntimeContext.h:30
Main class to load and execute an OTX project
Definition: IRuntimeManager.h:72
Class to manage the OTX-Runtime API licenses
Definition: LicenseManager.h:27
static void SetLicenseKey(const std::string &licenseKey)
Sets a valid license key to release the API.
Represents an OTX Procedure.
Definition: IProcedure.h:15
Represents InParameter of a Procedure. The parameter is identical to a related parameter in OTX stand...
Definition: IProcedureInParameter.h:17
Represents base class for InParameter, OutParameter and InOutParameter of a Procedure....
Definition: IProcedureParameter.h:27
The Project is the root element of the OTX Data Structure. It mainly contains the Packages and the Pr...
Definition: IProject.h:41
Factory class for creating runtime managers, see IRuntimeManager
Definition: RuntimeManagerFactory.h:17
static std::shared_ptr< IRuntimeManager > CreateSocketRuntimeManager(unsigned short otxRunnerPort, unsigned short diagManagerPort)
Creates SocketRuntimeManager with Socket DiagManager.
Namespace containing all objects related to licensing
Definition: LicenseManager.h:22
Namespace for browsing at OTX data structure.
Definition: IRuntimeContext.h:12
Namespace containing main entries: IProject and IPlayerProject.
Definition: IRuntimeManager.h:23
Namespace containing the programming interface for browsing and execution of OTX procedures in own ap...
Definition: ClampState.h:7
Namespace containing all objects for browsing and execution of OTX procedures
Definition: ClampState.h:6
Namespace containing all objects which are standardized according to ISO 13209 (OTX)
Namespace containing all objects related to testing inside automotive industry
OTX file related to the examples above.
<?xml version="1.0" encoding="utf-8"?>
<otx xmlns="http://iso.org/OTX/1.0.0" xmlns:hmi="http://iso.org/OTX/1.0.0/HMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="id_0a4aa7adb9484acd80fd9b8cc0889d1c" name="HelloWorldSampleDocument" package="HelloWorldSample1Package1" version="1.0.0.0" timestamp="2020-04-30T15:12:52.8454075+02:00">
<procedures>
<procedure id="id_9fd318a128cd4945aa7ed8d5cd57c0b8" name="main" visibility="PUBLIC">
<realisation>
<parameters>
<inParam name="Message" id="InParameterDeclaration_9d68143af6864f9b89691051826e9f9a">
<realisation>
<dataType xsi:type="String" />
</realisation>
</inParam>
</parameters>
<flow>
<action name="ConfirmDialog1" id="ConfirmDialog_9f6feabe81034ffab0d6113e65df827f">
<realisation xsi:type="hmi:ConfirmDialog">
<hmi:title xsi:type="StringLiteral" value="Hello World" />
<hmi:message xsi:type="StringValue" valueOf="Message" />
</realisation>
</action>
</flow>
</realisation>
</procedure>
</procedures>
</otx>