OTX-Runtime for DotNet  
Diagnostics over IP (DoIP)

The DiagManager supports the diagnostic communication over Internet Protocol (DoIP), see ISO 13400-2. The following section describes how a DoIP communication can be established.

Basic Sequence

The OTX ComInterface extensions provides all actions and terms to establish a DoIP communication. The following diagram shows the basic sequence.

Note: For DoIP communication the Extended Mode is necessary, see Communication Modes. The DiagManager can switch implicit to the right mode.

Basic sequence to establish a DoIP communication

Pseudo Code Example

The basic proceeding how to establish a DoIP communication is described in the following pseudo code example.

// Pseudo-Code example to establish a DoIP communication
// =====================================================
// Please note that the exact syntax of C++, DotNet and Java is different!
void main()
{
// Sets a valid license key to active the DiagManager Server
OpenTestSystem.Otx.DiagManager.SystemApi.Util.SetLicenseKey(8888, Constants.LICENSE_KEY);
// Creates the OtxDiagApi of the DiagManager client, DiagManager has being started
// Creates the NoneOtxDiagApi of the DiagManager client
// Gets the ComInterface (OTX Extension) from DiagManager
OpenTestSystem.Otx.DiagManager.OtxDiagApi.IComInterface comInterface = otxDiag.ComInterface;
// Gets the DiagCom (OTX Extension) from DiagManager
OpenTestSystem.Otx.DiagManager.OtxDiagApi.IDiagCom diagCom = otxDiag.DiagCom;
// Gets all available ComInterfaces (MCDInterface) as a list of String
List<String> comInterfaceNames = comInterface.GetComInterfaceNameList();
// Gets the ComInterface from the given name, whose Long-Name contains "connectiontype". Assume in this example, otxComInterface.LongName contains "connectiontype"
OpenTestSystem.Otx.DiagManager.OtxDiagApi.DataTypes.IComInterface otxComInterface = comInterface.GetComInterface(comInterfaceNames[0]);
try
{
// Connect to the selected ComInterface
comInterface.ConnectComInterface(otxComInterface);
// Activate the activation line
comInterface.ActivateEthernet(otxComInterface);
// Wait to give the controller time to start. The waiting time depends on machine and environment variables.
// It is also possible to poll until GetComInterfaceNameListFromEthernet gets the DoIP interface
Thread.Sleep(8000);
// Gets all available ComInterfaces (MCDInterface), including the ComInterface from Ethernet, as a list of String
List<String> comInterfaceNamesFromEthernet = comInterface.GetComInterfaceNameListFromEthernet(null, "PDU_IOCTL='PDU_IOCTL_VEHICLE_ID_REQUEST' PreselectionMode='None' PreselectionValue='' CombinationMode='DoIP-Entity' VehicleDiscoveryTime='1000' DestinationAddressCount='1' DA1='255.255.255.255'");
// Gets the ComInterface from the given Name, whose Long-Name contains "doip". Assume in this example, otxComInterfaceFromEthernet.LongName contains "doip"
OpenTestSystem.Otx.DiagManager.OtxDiagApi.DataTypes.IComInterface otxComInterfaceFromEthernet = comInterface.GetComInterface(comInterfaceNamesFromEthernet[1]);
// Connect to the selected ComInterface
comInterface.ConnectComInterface(otxComInterfaceFromEthernet);
// Sets the interface for DoIP in normal mode
noneOtxDiag.SetPreferedInterface(otxComInterfaceFromEthernet.ShortName);
// Gets the ComChannel
OpenTestSystem.Otx.DiagManager.OtxDiagApi.IComChannel comChannel = comInterface.GetComChannel("LL_Gateway", "", true);
// Gets the ComChannel - Alternative for extended mode - NoneOtxDiagApi.SetPreferedInterface is not necessary here
// OpenTestSystem.Otx.DiagManager.OtxDiagApi.IComChannel comChannel = comInterface.GetComChannelFromComInterface(otxComInterface, "LL_Gateway", "", true);
// Creates a DiagService
OpenTestSystem.Otx.DiagManager.OtxDiagApi.IDiagService diagService = diagCom.CreateDiagServiceByName(comChannel, "ReadSparePartNumber");
// Execute the DiagService
diagCom.ExecuteDiagService(diagService);
// Close the ComChannel and release all resources
diagCom.CloseComChannel(comChannel);
}
{
throw e;
}
finally
{
// Release the activation line
comInterface.DeactivateEthernet(otxComInterface);
// Close ComInterface
comInterface.CloseComInterface(otxComInterface);
}
}
Factory class for creating the NoneOtxDiagApi
Definition: NoneOtxDiagFactory.cs:22
static INoneOtxDiag CreateSocketNoneOtxDiag(ushort port)
Creates a INoneOtxDiag instance inside a separate process with inter process communication
Definition: NoneOtxDiagFactory.cs:63
Identical to a datatype in the OTX standard ISO 13209. A detailed specification can be found there.
Definition: DiagRuntimeException.cs:17
Factory class for creating the DiagOtxApi
Definition: OtxDiagFactory.cs:38
static IOtxDiag CreateSocketOtxDiag(ushort port=DefaultPort)
Creates a OtxDiag instance inside a separate process with inter process communication
Definition: OtxDiagFactory.cs:82
Class for general utils
Definition: OpenTestSystem.OtxDiagManager.SystemApi/Util.cs:24
static void SetLicenseKey(ushort port, string licenseKey)
Sets a valid license key to active DiagManagerServer
Definition: OpenTestSystem.OtxDiagManager.SystemApi/Util.cs:99
Contains methods which are not covered by the OTX standard
Definition: INoneOtxDiag.cs:22
Identical to a datatype in the OTX standard ISO 13209. A detailed specification can be found there.
Definition: DataTypes/Interfaces/IComInterface.cs:13
The class is identical to an extension in OTX standard ISO 13209. A detailed specification can be fou...
Definition: IComInterface.cs:16
The class is identical to an extension in OTX standard ISO 13209. A detailed specification can be fou...
Definition: IDiagCom.cs:26
The class is identical to an extension in OTX standard ISO 13209. A detailed specification can be fou...
Definition: IOtxDiag.cs:15
Namespace containing all methods that are not standardized in OTX but are available in a diagnostic r...
Namespace containing all exceptions
Namespace covering all actions and terms of all diagnostic related OTX extension by an identical meth...
Namespace containing all commands that are not standardized in OTX and are generally required,...
Namespace containing all objects for the communication to various, interchangeable diagnostic runtime...
Namespace containing all objects which are standardized according to ISO 13209 (OTX)
Namespace containing all objects related to testing inside automotive industry