EasyPDU API User Manual Software Version 1.01
Softing Automotive Electronics GmbH Richard-Reitzner-Allee 6 85540 Haar, Germany Tel: +49 (0) 89 4 56 56 - 420 Fax: +49 (0) 89 4 56 56 - 399
[email protected] www.softing.com
Contents 1
2
3
4
Main Ma inpa page ge
2
1.1
Introd Int roduct uction ion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
System Sys tem Re Requi quirem rement ents s. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.3
What the EasyP EasyPDU DU API prov provides ides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.4
Support Sup ported ed D-P D-PDU DU API APIs s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.5
Supported Suppo rted VCI VCI hardwar hardware e devices devices and protoc protocols ols . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.6
EasyPDU EasyP DU Demo Appl Applicatio ication n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
Protocol/Bustype/Port Protocol/Bu stype/Port combinations for supported VCIs
5
2.1 2. 1
EDIC ED ICbl blue ue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2 2. 2
EDIC ED ICca card rd2 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3 2. 3
EDIC ED ICpc pcii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.4 2. 4
EDIC ED ICus usb b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.5 2. 5
EDIC ED ICwl wlan an . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.6 2. 6
VCI_ VC I_HS HSC C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.7 2. 7
VCI_ VC I_HS HSX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.8
VCI_HS VCI _HS_LI _LIGHT GHT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.9
VCI_HS VCI _HS_PL _PLUS US . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.10 VCI_HS_WLAN VCI_HS_WLAN_HD _HD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
Tut utor oria iall
13
3.1
13
FAQ 4.1
5
6
7
EasyPDU EasyP DU exampl examples es for Micro Microsoft soft Visual Visual Studio Studio 2010 2010 . . . . . . . . . . . . . . . . . . . . . . . . .
13 Questions Quest ions conce concerning rning EasyP EasyPDU DU C++ API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
4.1.1
13
I get an an unhandled unhandled Excep Exception tion error error while while running running EasyP EasyPDUC DUCpp pp . . . . . . . . . . . . . . .
Namesp Nam espace ace Ind Index ex
13
5.1
13
Namesp Nam espace ace Lis Listt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Clas Cl ass s In Inde dex x
14
6.1 6. 1
14
Clas Cl ass s Li List st . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Namespace Names pace Docum Documentat entation ion
14
7.1
EasyPDU EasyP DU Names Namespace pace Ref Referenc erence e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
7.1.1 7.1 .1
Detai De tailed led Des Descrip criptio tion n
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
7.1.2
Enumerati Enum eration on Type Docum Documentat entation ion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
CONTENTS
ii
8
Class Cla ss Doc Docume umenta ntatio tion n
20
8.1
Cop Cla Class ss Ref Refere erence nce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
8.1.1 8.1 .1
Detai De tailed led Des Descrip criptio tion n
21
8.1.2
Member Memb er Funct Function ion Docum Documentat entation ion
8.2
8.3
8.4
8.5
8.6
9
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
EasyPduExc EasyP duException eption Class Ref Referenc erence e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
8.2.1 8.2 .1
Detai De tailed led Des Descrip criptio tion n
22
8.2.2
Member Memb er Funct Function ion Docum Documentat entation ion
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
Link Lin k Cla Class ss Ref Refere erence nce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
8.3.1 8.3 .1
Detai De tailed led Des Descrip criptio tion n
23
8.3.2
Member Memb er Funct Function ion Docum Documentat entation ion
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
Pduapii Clas Pduap Class s Ref Referenc erence e. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
8.4.1 8.4 .1
Detai De tailed led Des Descrip criptio tion n
27
8.4.2
Member Memb er Funct Function ion Docum Documentat entation ion
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
Response Respo nse Class Ref Referenc erence e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
8.5.1 8.5 .1
Detai De tailed led Des Descrip criptio tion n
30
8.5.2
Member Memb er Funct Function ion Docum Documentat entation ion
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
Vci Cla Class ss Ref Refere erence nce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
8.6.1 8.6 .1
Detai De tailed led Des Descrip criptio tion n
32
8.6.2
Member Memb er Funct Function ion Docum Documentat entation ion
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
Example Exam ple Docum Documentat entation ion
34
9.1
ComP Com Para aram.i m.ini ni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
9.2
examp ex ample_ le_1.c 1.cpp pp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
9.3
examp ex ample_ le_1.c 1.cs s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
9.4
examp ex ample_ le_1.p 1.py y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
9.5
examp ex ample_ le_2.c 2.cs s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
Index40 Index 40 CONTENTS
1
1
Main Ma inpa page ge • Introduction • System Requirements • What the EasyPDU API provides • Supported D-PDU APIs • Supported VCI hardware devices and protocols • EasyPDU Demo Application
1.1 Int Intro roduc ductio tion n This document includes getting started information and a function reference for the EasyPDU, an API on top of the D-PDU D-PDU API that allows simple access for the most common common API functions. functions. The D-PDU API, as an internationally internationally standardized programming interface has gained widespread adoption in the industry over the last years. It provides full access to all important vehicle diagnostic protocols and is supported by a variety of diagnostic kernels and user application applications. s. How Howev ever er,, there is one draw-back draw-back to this "one size fits all" approach: The D-PDU API is in no way easy to handle. handle. When a programm programmer er intends to create create a simple simple application, application, based on a diagnostic diagnostic protocol, protocol, and designed only for a very specific and limited purpose, this can be achieved with the D-PDU API - but unfortunately not in an easy way. Literally dozens of calls to D-PDU API functions, several memory allocations (and also memory releases), handling of different types of handles (module handles, ComLogicalLink handles, ComPrimitive handles) are required, in order to send one single diagnostic message to a vehicle interface. This situation creates a strong desire for a simpler, more condensed variant of a D-PDU API, where basic vehicle communication can be achieved with a bare minimum of required calls to the D-PDU API.
Figure 1: EasyPDU architecture diagram
1 Mainpage
2
1.2 Sys System tem Req Requir uireme ements nts In order to use the EasyPDU API for your own application, you need: • a Softing or Samtec Samtec D-PDU API API installed installed on your PC • a supported supported vehicle vehicle communication communication interface interface (VCI) hardware hardware device device connected to your PC and configured configured with your D-PDU API • an integrated development development environment environment (IDE) for for at least one of the supported programming programming languages: C++, Visual Basic, C#, Python • the EasyPDU API API library files for your particular particular programming language
1.3
What the EasyP EasyPDU DU API prov provides ides • support for several several programming programming languages: – C++ – C# – Visual Basic – other dotNET languages – Python • object-oriented access to D-PDU API API functionality: – class Pduapi for Pduapi for simple D-PDU API abstraction – class Vci for Vci for convenient access to your module VCI hardware – class Link as Link as a simplified abstraction of D-PDU APIs ComLogicalLinks – class Cop for Cop for sending and receiving data – class EasyPduException for EasyPduException for receiving user friendly error messages
1.4 Sup Support ported ed D-P D-PDU DU API APIss The EasyPDU supports following D-PDU APIs: • Softing D-PDU API for for VCIs (Softing Automotive Automotive Electronics GmbH) http://automotive.softing.com/de/produkte/d-pdu-api-iso-22900-2.html • samPDU (samtec automotive automotive software software & electronics GmbH) http://www.samtec.de/hauptmenu/produkte/software/sampdu-api
1.5
Supported Suppo rted VCI VCI hardw hardware are device devicess and proto protocols cols
For a complete list of all supported VCI hardware devices and protocols see Protocol/Bustype/Port see Protocol/Bustype/Port combinations for supported VCIs. VCIs. 1.2
System Requirements
3
1.6
EasyPDU EasyPD U Demo Appli Application cation
The EasyPDU_GUI.exe is a graphical demo application that uses the EasyPDU API. Before you start to write your own application it may be useful to check your D-PDU API installation and VCI configuration with this demo GUI:
Figure 2: EasyPDU_GUI.exe screenshot
1. Start EasyPDU_GUI.ex EasyPDU_GUI.exe. e. 2. Select D-PDU API from drop-down drop-down list. If no D-PDU API is available, available, check your D-PDU D-PDU API installation and your RootDescriptionFile. 3. Click Click on "load PDUAPI". PDUAPI". 4. Select VCI hardware device device from drop-down list. If no VCI is available, available, check whether your VCI is connected to your PC an installed correctly using the tools installed with your D-PDU API. Also check whether your VCI is supported. supported. 5. Click Click on "connect "connect VCI". If you use a W-LAN W-LAN device device an get an connection connection error error open the Windows wireless wireless lan connections and see if your VCI is connected. If so, you can try to disconnect an reconnect the VCI. 1.6
EasyPDU Demo Application
4
6. Select protocol, bus-type and port depending on the bus your your VCI hardware is connected to. to. See Protocol/ See Protocol/ ← Bustype/Port combinations for supported VCIs for VCIs for a list of supported Protocol/Bustype/Port combinations for your VCI. 7. Click Click on "open LINK". LINK". 8. Click on "read ComParams ComParams and UniqueRespIdTable UniqueRespIdTable from .ini file" and select a .ini file with your configuration. There is an example example ComParam.ini file, ComParam.ini file, but depending on your bus configuration you have modify it. 9. Click Click on "connect "connect LINK". 10. Type Type your your PDU PDU in comma comma separ separate ated d decima decimall or 0xHEX 0xHEX not notati ation on (for (for examp example: le: "10,92 ,92") ") and click click "send" "send"-bu -butto tton n in order to start a diagnostic session. • If there is a ECU with the default default identifier identifier of your D-PDU API for this protocol, protocol, you will get R Resp RespId Id(1 (1): ): 50 92 92 as a positive response. • If there is no ECU with the default default identifier identifier of your D-PDU API for this protocol, protocol, you will get R Erro Error: r: RX_T RX_TIM IMEO EOUT UT: : P2 time timeou out t as a timeout error. • If you get an other error, there seems to be something wrong wrong with your bus.
2
Protocol/B Prot ocol/Bustyp ustype/P e/Port ort combin combinations ations for supporte supported d VCIs VCIs
This list shows all Protocol/Bus/Port combinations that are possible with the appropriate VCIs. Following VCIs are supported: • EDICblue • EDICcard2 • EDICpci • EDICusb • EDICwlan • VCI_HSC • VCI_HSX • VCI_HS_LIGHT • VCI_HS_PLUS • VCI_HS_WLAN_HD
2.11 2.
EDIC ED ICbl blue ue
PROTOCOL ISO_15765_3_on_ISO_15765_2
BUSTYPE ISO ISO_11898_2_DWCAN
2 Protocol/Bustype/Port combinations for supported VCIs
PORT CAN1
5
ISO_ ISO_1 15765 5765_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_14230_3_on_ISO_15765_2 ISO_ ISO_1 14230 4230_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_11898_RAW ISO_11898_RAW MSP_SFTNG_CAN MSP_SFTNG_CAN ISO_14230_3_on_ISO_14230_2 ISO_14230_3_on_ISO_14230_2 MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP16 MSP_VW2000LP_on_TP16 MSP_KW1281_on_ISO_9141_2 MSP_KW1281_on_ISO_9141_2 ISO_OBD_on_K_Line ISO_OBD_on_K_Line ISO_OBD_on_ISO_15765_4 MSP_SFTNG_ISO_11898_ ← onboard MSP_SFTNG_ISO_11898_ ← onboard MSP_KW1281_on_TP16 MSP_KW1281_on_TP16
2.22 2.
CAN1 CAN CAN1 CAN CA N1 CAN1 CAN1 CAN1 CAN1 KL_LINE K_LINE KL_LINE
ISO_9141_2_UART
K_LINE
ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART ISO_11898_2_DWCAN ISO_11898_2_DWCAN
CAN1 CAN1 CAN1 CAN1 KL_LINE K_LINE KL_LINE K_LINE CAN1 CAN1
ISO_11898_3_DWFTCAN
CAN1
ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN
CAN1 CAN1
BUSTYPE ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN
PORT CAN1 CAN2 CAN2 CAN CA N1 CAN CA N2 CAN CA N2 CAN1 CAN2 CAN2 CAN CA N1 CAN CA N2 CAN CA N2 CAN1 CAN2
EDIC ED ICca card rd22
PROTOCOL ISO_15765_3_on_ISO_15765_2 ISO_15765_3_on_ISO_15765_2 ISO_15765_3_on_ISO_15765_2 ISO_ ISO_1 15765 5765_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_ ISO_1 15765 5765_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_ ISO_1 15765 5765_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_14230_3_on_ISO_15765_2 ISO_14230_3_on_ISO_15765_2 ISO_14230_3_on_ISO_15765_2 ISO_ ISO_1 14230 4230_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_ ISO_1 14230 4230_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_ ISO_1 14230 4230_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_11898_RAW ISO_11898_RAW
2.2
ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO ISO_11898_2_DWCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART
EDICcard2
6
ISO_11898_RAW ISO_11898_RAW ISO_11898_RAW ISO_11898_RAW MSP_SFTNG_CAN MSP_SFTNG_CAN MSP_SFTNG_CAN MSP_SFTNG_CAN MSP_SFTNG_CAN MSP_SFTNG_CAN ISO_14230_3_on_ISO_14230_2 ISO_14230_3_on_ISO_14230_2 MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP16 MSP_VW2000LP_on_TP16 MSP_VW2000LP_on_TP16 MSP_VW2000LP_on_TP16 MSP_VW2000LP_on_TP16 MSP_VW2000LP_on_TP16 MSP_KW1281_on_ISO_9141_2 MSP_KW1281_on_ISO_9141_2 ISO_OBD_on_K_Line ISO_OBD_on_K_Line ISO_OBD_on_ISO_15765_4 ISO_OBD_on_ISO_15765_4 ISO_OBD_on_ISO_15765_4 MSP_SFTNG_ISO_11898_ ← onboard MSP_SFTNG_ISO_11898_ ← onboard MSP_SFTNG_ISO_11898_ ← onboard MSP_SFTNG_ISO_11898_ ← onboard
2.2
EDICcard2
ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_11898_3_DWFTCAN ISO_11898_3_DWFTCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_11898_3_DWFTCAN ISO_11898_3_DWFTCAN ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART
CAN2 CAN1 CAN2 CAN2 CAN1 CAN2 CAN2 CAN1 CAN2 CAN2 KL_LINE K_LINE KL_LINE
ISO_9141_2_UART
K_LINE
ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_11898_3_DWFTCAN ISO_11898_3_DWFTCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_11898_3_DWFTCAN ISO_11898_3_DWFTCAN ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN
CAN1 CAN2 CAN2 CAN1 CAN2 CAN2 CAN1 CAN2 CAN2 CAN1 CAN2 CAN2 KL_LINE K_LINE KL_LINE K_LINE CAN1 CAN2 CAN2 CAN1
ISO_11898_2_DWCAN
CAN2
ISO_11898_2_DWCAN
CAN2
ISO_11898_3_DWFTCAN
CAN1
7
MSP_SFTNG_ISO_11898_ ← onboard MSP_SFTNG_ISO_11898_ ← onboard MSP_KW1281_on_TP16 MSP_KW1281_on_TP16 MSP_KW1281_on_TP16 MSP_KW1281_on_TP16 MSP_KW1281_on_TP16 MSP_KW1281_on_TP16
2.33 2.
CAN2
ISO_11898_3_DWFTCAN
CAN2
ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_11898_3_DWFTCAN ISO_11898_3_DWFTCAN
CAN1 CAN2 CAN2 CAN1 CAN2 CAN2
BUSTYPE ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART
PORT CAN1 CAN2 CAN CA N1 CAN1 CAN2 CAN CA N1 CAN1 CAN2 CAN1 CAN1 CAN2 CAN1 KL_LINE K_LINE KL_LINE
ISO_9141_2_UART
K_LINE
ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART ISO_11898_2_DWCAN ISO_11898_2_DWCAN
CAN1 CAN2 CAN1 CAN1 CAN2 CAN1 KL_LINE K_LINE KL_LINE K_LINE CAN1 CAN2
EDIC ED ICpc pcii
PROTOCOL ISO_15765_3_on_ISO_15765_2 ISO_15765_3_on_ISO_15765_2 ISO_ ISO_1 15765 5765_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_14230_3_on_ISO_15765_2 ISO_14230_3_on_ISO_15765_2 ISO_ ISO_1 14230 4230_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_11898_RAW ISO_11898_RAW ISO_11898_RAW MSP_SFTNG_CAN MSP_SFTNG_CAN MSP_SFTNG_CAN ISO_14230_3_on_ISO_14230_2 ISO_14230_3_on_ISO_14230_2 MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP16 MSP_VW2000LP_on_TP16 MSP_VW2000LP_on_TP16 MSP_KW1281_on_ISO_9141_2 MSP_KW1281_on_ISO_9141_2 ISO_OBD_on_K_Line ISO_OBD_on_K_Line ISO_OBD_on_ISO_15765_4 ISO_OBD_on_ISO_15765_4
2.3
ISO_11898_3_DWFTCAN
EDICpci
8
MSP_SFTNG_ISO_11898_ ← onboard MSP_SFTNG_ISO_11898_ ← onboard MSP_SFTNG_ISO_11898_ ← onboard MSP_KW1281_on_TP16 MSP_KW1281_on_TP16 MSP_KW1281_on_TP16
2.44 2.
CAN1
ISO_11898_2_DWCAN
CAN2
ISO_11898_3_DWFTCAN
CAN1
ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN
CAN1 CAN2 CAN1
BUSTYPE ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART
PORT CAN1 CAN2 CAN CA N1 CAN1 CAN2 CAN CA N1 CAN1 CAN2 CAN1 CAN1 CAN2 CAN1 KL_LINE K_LINE KL_LINE
ISO_9141_2_UART
K_LINE
ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN
CAN1 CAN2 CAN1 CAN1 CAN2 CAN1 KL_LINE K_LINE KL_LINE K_LINE CAN1 CAN2 CAN1
EDIC ED ICus usb b
PROTOCOL ISO_15765_3_on_ISO_15765_2 ISO_15765_3_on_ISO_15765_2 ISO_ ISO_1 15765 5765_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_14230_3_on_ISO_15765_2 ISO_14230_3_on_ISO_15765_2 ISO_ ISO_1 14230 4230_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_11898_RAW ISO_11898_RAW ISO_11898_RAW MSP_SFTNG_CAN MSP_SFTNG_CAN MSP_SFTNG_CAN ISO_14230_3_on_ISO_14230_2 ISO_14230_3_on_ISO_14230_2 MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP16 MSP_VW2000LP_on_TP16 MSP_VW2000LP_on_TP16 MSP_KW1281_on_ISO_9141_2 MSP_KW1281_on_ISO_9141_2 ISO_OBD_on_K_Line ISO_OBD_on_K_Line ISO_OBD_on_ISO_15765_4 ISO_OBD_on_ISO_15765_4 MSP_SFTNG_ISO_11898_ ← onboard
2.4
ISO_11898_2_DWCAN
EDICusb
9
MSP_SFTNG_ISO_11898_ ← onboard MSP_SFTNG_ISO_11898_ ← onboard MSP_KW1281_on_TP16 MSP_KW1281_on_TP16 MSP_KW1281_on_TP16
2.55 2.
CAN2
ISO_11898_3_DWFTCAN
CAN1
ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN
CAN1 CAN2 CAN1
BUSTYPE ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_ ISO_11 1189 898_ 8_3 3_DW _DWFTC FTCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART
PORT CAN1 CAN2 CAN CA N1 CAN1 CAN2 CAN CA N1 CAN1 CAN2 CAN1 KL_LINE K_LINE KL_LINE
ISO_9141_2_UART
K_LINE
ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART ISO_9141_2_UART ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN
CAN1 CAN2 CAN1 CAN1 CAN2 CAN1 KL_LINE K_LINE KL_LINE K_LINE CAN1 CAN2 CAN1
ISO_11898_2_DWCAN
CAN2
ISO_11898_3_DWFTCAN
CAN1
EDIC ED ICwl wlan an
PROTOCOL ISO_15765_3_on_ISO_15765_2 ISO_15765_3_on_ISO_15765_2 ISO_ ISO_1 15765 5765_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_14230_3_on_ISO_15765_2 ISO_14230_3_on_ISO_15765_2 ISO_ ISO_1 14230 4230_3 _3_o _on_ n_IS ISO_ O_15 1576 765_ 5_2 2 ISO_11898_RAW ISO_11898_RAW ISO_11898_RAW ISO_14230_3_on_ISO_14230_2 ISO_14230_3_on_ISO_14230_2 MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP16 MSP_VW2000LP_on_TP16 MSP_VW2000LP_on_TP16 MSP_KW1281_on_ISO_9141_2 MSP_KW1281_on_ISO_9141_2 ISO_OBD_on_K_Line ISO_OBD_on_K_Line ISO_OBD_on_ISO_15765_4 ISO_OBD_on_ISO_15765_4 MSP_SFTNG_ISO_11898_ ← onboard MSP_SFTNG_ISO_11898_ ← onboard MSP_SFTNG_ISO_11898_ ← onboard
2.5
ISO_11898_2_DWCAN
EDICwlan
10
MSP_KW1281_on_TP16 MSP_KW1281_on_TP16 MSP_KW1281_on_TP16
2.66 2.
CAN1 CAN2 CAN1
BUSTYPE ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN SAE_J1939_11_DWCAN
PORT CAN1 CAN1 CAN1 CAN1 CAN1 CAN1 CAN1 CAN1
BUSTYPE ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN SAE_J1939_11_DWCAN
PORT CAN1 CAN1 CAN1 CAN1 CAN1 CAN1 CAN1 CAN1
MOST
MOST_PORT
ISO_14230_1_UART ISO_14230_1_UART ISO_14230_1_UART ISO_14230_1_UART I SO SO_9141_2_UART ISO_14230_1_UART
K_LINE L_LINE K_LINE K_LINE K_LINE K_LINE
ISO_9141_2_UART
KL_LINE
BUSTYPE ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_11898_2_DWCAN
PORT CAN1 CAN1 CAN1 CAN1
VCI_ VC I_HS HSC C
PROTOCOL ISO_14230_3_on_ISO_15765_2 ISO_15765_3_on_ISO_15765_2 ISO_15031_5_on_ISO_15765_4 ISO_OBD_on_ISO_15765_4 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP16 ISO_11898_RAW SAE_J1939_73_on_SAE_J1939← _21
2.77 2.
ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN
VCI_ VC I_HS HSX X
PROTOCOL ISO_14230_3_on_ISO_15765_2 ISO_15765_3_on_ISO_15765_2 ISO_15031_5_on_ISO_15765_4 ISO_OBD_on_ISO_15765_4 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP16 ISO_11898_RAW SAE_J1939_73_on_SAE_J1939← _21 MSP_MOST_14229_on_MOST← _DAP ISO_14230_3_on_ISO_14230_2 ISO_14230_3_on_ISO_14230_2 ISO_15031_5_on_ISO_14230_4 ISO_OBD_on_K_Line ISO_15031_5_on_ISO_9141_2 MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_KW71_UART
2.8 VCI VCI_HS _HS_LI _LIGHT GHT PROTOCOL ISO_14230_3_on_ISO_15765_2 ISO_15765_3_on_ISO_15765_2 ISO_15031_5_on_ISO_15765_4 ISO_OBD_on_ISO_15765_4
2.6
VCI_HSC
11
MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP16 ISO_11898_RAW SAE_J1939_73_on_SAE_J1939← _21 MSP_KW500_3_on_KW500_2 ISO_14230_3_on_ISO_14230_2 ISO_15031_5_on_ISO_14230_4 ISO_15031_5_on_ISO_9141_2 ISO_OBD_on_K_Line MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_KW71_UART
ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN SAE_J1939_11_DWCAN
CAN1 CAN1 CAN1 CAN1
KW500_1_UART ISO_14230_1_UART ISO_14230_1_UART I SO SO_9141_2_UART ISO_14230_1_UART ISO_14230_1_UART
KL_LINE K_LINE K_LINE K_LINE K_LINE K_LINE
ISO_9141_2_UART
KL_LINE
BUSTYPE ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN SAE_J1939_11_DWCAN
PORT CAN1 CAN1 CAN1 CAN1 CAN1 CAN1 CAN1 CAN1
KW500_1_UART ISO_14230_1_UART ISO_14230_1_UART I SO SO_9141_2_UART ISO_14230_1_UART ISO_14230_1_UART
KL_LINE K_LINE K_LINE K_LINE K_LINE K_LINE
ISO_9141_2_UART ISO_14230_1_UART
KL_LINE L_LINE
BUSTYPE ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN ISO_11898_2_DWCAN SAE_J1939_11_DWCAN
PORT CAN1 CAN1 CAN1 CAN1 CAN1 CAN1 CAN1 CAN1
2.9 VCI VCI_HS _HS_PL _PLUS US PROTOCOL ISO_14230_3_on_ISO_15765_2 ISO_15765_3_on_ISO_15765_2 ISO_15031_5_on_ISO_15765_4 ISO_OBD_on_ISO_15765_4 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP16 ISO_11898_RAW SAE_J1939_73_on_SAE_J1939← _21 MSP_KW500_3_on_KW500_2 ISO_14230_3_on_ISO_14230_2 ISO_15031_5_on_ISO_14230_4 ISO_15031_5_on_ISO_9141_2 ISO_OBD_on_K_Line MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_KW71_UART ISO_14230_3_on_ISO_14230_2
2.100 2.1
VCI_HS VCI _HS_WLA _WLAN_HD N_HD
PROTOCOL ISO_14230_3_on_ISO_15765_2 ISO_15765_3_on_ISO_15765_2 ISO_15031_5_on_ISO_15765_4 ISO_OBD_on_ISO_15765_4 MSP_VW2000LP_on_TP20 MSP_VW2000LP_on_TP16 ISO_11898_RAW SAE_J1939_73_on_SAE_J1939← _21
2.9
VCI_HS_PLUS
12
MSP_KW500_3_on_KW500_2 ISO_14230_3_on_ISO_14230_2 ISO_15031_5_on_ISO_14230_4 ISO_15031_5_on_ISO_9141_2 ISO_OBD_on_K_Line MSP_VW2000LP_on_ISO_ ← 14230_2 MSP_KW71_UART
3
KW500_1_UART ISO_14230_1_UART ISO_14230_1_UART I SO SO_9141_2_UART ISO_14230_1_UART ISO_14230_1_UART
KL_LINE K_LINE K_LINE K_LINE K_LINE K_LINE
ISO_9141_2_UART
KL_LINE
Tut utor oria iall
3.1
EasyPDU EasyPD U examples examples for Micros Microsoft oft Visual Visual Studi Studio o 2010
In the examples folder, folder, you can find short code examples examples for every supported programming programming language. language. These examples are well documentated an can be uses as a basis for your own EasyPDU application. For simplification, the example folders for the diffenent programming languages each contain all required dll in order to compile and run the example "out of the box". Nevertheless, you have to do some modifications to the ComParam.ini the ComParam.ini file, file, depending on your particular bus configuration. • for for C++: C++: – example_1.cpp is example_1.cpp is a very basic example for sending/receiving data with a VCI • for for C#: C#: – example_1.cs is example_1.cs is a very basic example for sending/receiving data with a VCI – example_2.cs uses example_2.cs uses different threads for sending and receiving data with the same VCI • for Python: Python: – example_1.cs is example_1.cs is a very basic example for sending/receiving data with a VCI
4
F AQ
4.1
Questions Questi ons concern concerning ing EasyPD EasyPDU U C++ API
4.1.1
I get an unhandled unhandled Except Exception ion error error while running running EasyPDUC EasyPDUCpp pp
• when using Visual Studio, make make sure you have compiled with /MD or /MDd /MDd • make sure that boost_thread-xxxxxxx.dll is in the same folder as EasyPDUCpp.dll EasyPDUCpp.dll • if the exception exception is of type EasyPduExcep EasyPduException tion you can catch it in order to get more information information
5
Name Na mesp spac acee In Inde dexx
5.1 Nam Namesp espace ace Lis Listt Here is a list of all documented namespaces with brief descriptions: 3 Tutorial
13
EasyPDU Namespace for the EasyPDU the EasyPDU C++ C++ API
6 6.11 6.
14
Clas Cl asss In Inde dexx Clas Cl asss Li List st
Here are the classes, structs, unions and interfaces with brief descriptions: Cop Class for convenient communication primitive access.
20
EasyPduException This Exception is thrown whenever something went wrong in an EasyPDU EasyPDU function. function.
22
Link Class for convenient access to a ComLogicalLink.
23
Pduapi Class for convenient D-PDU API access.
27
Response Class for convenient Cop-Response access.
30
Vci Class for convenient VCI hardware device access.
7 7.1
32
Namesp Nam espace ace Doc Docume umenta ntatio tion n EasyPDU EasyPD U Namesp Namespace ace Refere Reference nce
Namespace for the EasyPDU the EasyPDU C++ C++ API
Classes
• class class Cop Cop Class for convenient communication primitive access.
• class class EasyPduException EasyPduException This Exception is thrown whenever something went wrong in an EasyPDU an EasyPDU function. function.
• class class Link Link Class for convenient access to a ComLogicalLink.
• class class Pduapi Pduapi Class for convenient D-PDU API access.
• class class Response Response Class for convenient Cop-Response access.
• class class Vci Vci Class for convenient VCI hardware device access.
6 Class Index
14
Enumerations
• enum enum VCITYPE VCITYPE { { EDICblue,, EDICcard2 EDICblue EDICcard2,, EDICpci EDICpci,, EDICusb EDICusb,, EDICwlan,, VCI_HSC EDICwlan VCI_HSC,, VCI_HSX VCI_HSX,, VCI_HS_LIGHT VCI_HS_LIGHT,, VCI_HS_PLUS,, VCI_HS_WLAN_HD } VCI_HS_PLUS VCI_HS_WLAN_HD } VCI Type
• enum enum PROTOCOL PROTOCOL { { ISO_11898_RAW,, ISO_14230_3_on_ISO_14 ISO_11898_RAW ISO_14230_3_on_ISO_14230_2 230_2,, ISO_14230_3_on_ISO_15765_2 ISO_14230_3_on_ISO_15765_2,, ISO_15031_5_on← _ISO_14230_4,, _ISO_14230_4 ISO_15031_5_on_ISO_15765_4,, ISO_15031_5_on_ISO_9141_2 ISO_15031_5_on_ISO_15765_4 ISO_15031_5_on_ISO_9141_2,, ISO_15765_3_on_ISO_15765_2 ISO_15765_3_on_ISO_15765_2,, ISO← _OBD_on_ISO_15765_4,, _OBD_on_ISO_15765_4 ISO_OBD_on_K_Line,, MSP_KW1281_on_ISO_9141_2 ISO_OBD_on_K_Line MSP_KW1281_on_ISO_9141_2,, MSP_KW1281_on_TP16 MSP_KW1281_on_TP16,, MSP_KW500_3_on_ ← KW500_2,, KW500_2 MSP_KW71_UART , MSP_MOST_14229_on_MOST_DAP, MSP_MOST_14229_on_MOST_DAP, MSP_SFTNG_CAN, MSP_SFTNG_CAN, MSP_SFTNG_ISO_ ← 11898_onboard,, 11898_onboard MSP_VW2000LP_on_ISO_14230_2,, MSP_VW2000LP_on_TP16, MSP_VW2000LP_on_ISO_14230_2 MSP_VW2000LP_on_TP16, MSP_VW2000LP_on_TP20, MSP_VW2000LP_on_TP20, SAE_ ← J1939_73_on_SAE_J1939_21 } J1939_73_on_SAE_J1939_21 } Protocol
• enum enum BUSTYPE BUSTYPE { { ISO_11898_2_DWCAN,, ISO_11898_3_DWFTC ISO_11898_2_DWCAN ISO_11898_3_DWFTCAN AN,, ISO_14230_1_UAR ISO_14230_1_UART T, ISO_9141_2_UART ISO_9141_2_UART,, KW500_1_UART,, MOST KW500_1_UART MOST,, SAE_J1939_11_DW SAE_J1939_11_DWCAN CAN } } Bustype
• enum enum PORT PORT { { CAN1,, CAN2 CAN1 CAN2,, KL_LINE KL_LINE,, K_LINE K_LINE,, L_LINE,, MOST_PORT L_LINE MOST_PORT } } Port on the VCI.
• enum enum COP_TYPE COP_TYPE { { STARTCOMM STARTCOMM,, STOPCOMM STOPCOMM,, SENDRECV SENDRECV,, UPDATEPARAM UPDATEPARAM } } Type of the Cop.
• enum enum T_PDU_ERROR { T_PDU_ERROR { PDU_STATUS_NOERROR = 0x00000000, 0x00000000, PDU_ERR_FCT_FAILED = 0x00000001, 0x00000001, PDU_ERR_RESER ← VED_1 = VED_1 = 0x00000010, PDU_ERR_C PDU_ERR_COMM_PC_TO_VC OMM_PC_TO_VCI_FAILED I_FAILED = = 0x00000011, PDU_ERR_PDUAPI_NOT_CONSTRUCTED = 0x00 0x0000 0000 0020 20,, PDU_ERR_SHARING_VIOLATION = 0x00000021, PDU_ERR_RESOURCE_BUSY = 0x00000030 0x00000030,, PDU_ERR_RESOURCE_TABLE_CHAN ← GED = GED = 0x00000031, PDU_ERR_RESOURCE_ERROR = 0x00000032 0x00000032,, PDU_ERR_CLL_NOT_CONNECTED = 0x00000040 0x00000040,, PDU_ERR_CLL_NOT_STARTED = 0x00000041, 0x00000041, PDU_ERR_INVALID_PARAMETERS = 0x00000050, PDU_ERR_INVALID_HANDLE = 0x00000060 0x00000060,, PDU_ERR_VALUE_NOT_SUPPORTED = 0x00000061 0x00000061,, PDU_ERR_ID_NOT_SUPPORTED = 0x0000 0x0000006 0062, 2, PDU_ERR_COMPARAM_NOT_SUPPORTED = 0x00000063, PDU_ERR_COMPARAM_LOCKED = 0x00000064, 0x00000064, PDU_ERR_TX_QUEUE_FULL = 0x00000070, PDU_ 0x00000070, PDU_ ← ERR_EVENT_QUEUE_EMPTY = 0x00000071, 0x00000071, PDU_ERR_VOLTAGE_NOT_SUPPORTED = 0x00000080, PDU_ERR_MUX_RSC_NOT_SUPPORTED = 0x00000081 0x00000081,, PDU_ERR_CABLE_UNKNOWN = 0x00000082 0x00000082,, PDU_ERR_NO_CABLE_DETECTED = 0x00000083, 0x00000083, PDU_ERR_CLL_CONNECTED = 0x00000084, PDU_ERR_TEMPPARAM_NOT_ALLOWED = 0x00000090 0x00000090,, PDU_ERR_RSC_LOCKED = 0x0000 0x000000 00← A0, PDU_ERR_RSC_LOCKED_BY_OTHER_CLL = 0x000000A1 0x000000A1,, PDU_ERR_RSC_NOT_LOCKED = 0x000000A2, PDU_ERR_MODULE_NOT_CONNECTED = 0x00 0x0000 0000 00A3 A3,, PDU_ERR_API_SW_OUT_OF_DATE = 0x000000A4, PDU_ERR_MODULE_FW_OUT_OF_DATE = 0x000000A 0x000000A5, 5, PDU_ERR_PIN_NOT_CON ← NECTED = NECTED = 0x000000A6 } Original D-PDU API error code.
7.1
EasyPDU Namespace Reference
15
• enum enum T_PDU_ERR_EVT { T_PDU_ERR_EVT { PDU_ERR_EVT_NOERROR = 0x00000000, 0x00000000, PDU_ERR_EVT_FRAME_STRUCT = 0x00000100, PDU_E 0x00000100, PDU_E← RR_EVT_TX_ERROR = 0x00000101, 0x00000101, PDU_ERR_EVT_TESTER_PRESENT_ERROR = 0x00000102, PDU_ERR_EVT_RSC_LOCKED = 0x00000109, 0x00000109, PDU_ERR_EVT_RX_TIMEOUT = 0x00000103, PDU_E 0x00000103, PDU_E← RR_EVT_RX_ERROR = 0x00000104, 0x00000104, PDU_ERR_EVT_PROT_ERR = PDU_ERR_EVT_PROT_ERR = 0x00000105, PDU_ERR_EVT_LOST_COMM_TO_VCI = 0x00000106, 0x00000106, PDU_ERR_EVT_VCI_HARDWARE_FAULT = 0x00000107, 0x00000107, PDU_ERR_EVT_INIT_ERROR = PDU_ERR_EVT_INIT_ERROR = 0x00000108 } Original D-PDU API event error code.
• enum enum T_PDU_STATUS { T_PDU_STATUS { PDU_COPST_IDLE = 0x8010, 0x8010, PDU_COPST_EXECUTING = 0x8011, 0x8011, PDU_COPST_FINISHED = 0x8012, PDU_COPST_CANCELLED = 0x8013, PDU_COPST_WAITING = 0x8014, PDU_CLLST PDU_CLLST_OFFLINE _OFFLINE = = 0x8050, 0x8050, PDU_CLLST_ONLINE = PDU_CLLST_ONLINE = 0x8051, P 0x8051, P ← DU_CLLST_COMM_STARTED = 0x8052, PDU_MODST_READY = 0x8060, PDU_MODST_NOT_READY = 0x8061, PDU_MODST_NOT_AVAIL = 0x8062, 0x8062, PDU_MODST_AVAIL = PDU_MODST_AVAIL = 0x8063 } Original D-PDU API status code. This enum contains status codes for ComPrimitives, ComLogicalLinks and Modules
7.1.1
Detailed Detaile d Descrip Description tion
Namespace for the EasyPDU the EasyPDU C++ C++ API
7.1.2
Enumeration Enume ration Ty Type pe Docume Documentati ntation on
7.1.2 7.1 .2.1 .1
enum en um BUSTYPE
Bustype Enumerator
ISO_11898_2_DWCAN CAN according to ISO ISO 11898 High Speed ISO_11898_3_DWFTCAN CAN according to ISO ISO 11898 Low Speed Speed ISO_14230_1_UART K-Line according to ISO 14230 14230 ISO_9141_2_UART K-Line interface interface as defined in ISO 9141 KW500_1_UART K-Line according to ISO 9141 9141 MOST MOST Bus according to MOST MOST Cooperation SAE_J1939_11_DWCAN Dual-Wire CAN CAN according to J1939
7.1
EasyPDU Namespace Reference
16
7.1.2 7.1 .2.2 .2
enum en um COP_TYPE
Type of the Cop the Cop.. Enumerator
STARTCOMM Start communication. STOPCOMM Stop communication. SENDRECV Send and/or receive data. data. UPDATEPARAM Update comparams and make them active. active.
7.1.2 7.1 .2.3 .3
enum en um PORT
Port on the VCI. Enumerator
CAN1 Can be used for CAN-lowspeed CAN-lowspeed and CAN-highspeed if supported by VCI. If the module has seperated CAN ports for higspeed and lowspeed like the EDICblue use CAN1 for highspeed. CAN2 Can be used for CAN-lowspeed CAN-lowspeed and CAN-highspeed if supported by VCI. If the module has seperated CAN ports for higspeed and lowspeed like the EDICblue use CAN2 for lowspeed. KL_LINE KL-Line port. K_LINE K-Line port. L_LINE L-Line port. MOST_PORT MOST port.
7.1.2 7.1 .2.4 .4
enum en um PROTOCOL
Protocol Enumerator
ISO_11898_RAW CAN RAW protocol protocol ISO_14230_3_on_ISO_14230_2 KWP2000GV ISO_14230_3_on_ISO_14230_2 ISO_14230_3_on_ISO_15765_2 DiagCAN ISO_14230_3_on_ISO_15765_2 ISO_15031_5_on_ISO_14230_4 ISO OBD on KWP2000 K-Line K-Line ISO_15031_5_on_ISO_15765_4 ISO OBD on CAN (ISO15765) (ISO15765) ISO_15031_5_on_ISO_9141_2 ISO OBD on 9141-2 K-Line ISO_15765_3_on_ISO_15765_2 UDSCAN ISO_15765_3_on_ISO_15765_2 ISO_OBD_on_ISO_15765_4 ISO OBD on CAN ISO_OBD_on_K_Line ISO OBD on 9141-2 K-Line K-Line and KWP2000 K-Line K-Line MSP_KW1281_on_ISO_9141_2 KWP1281 on K-Line MSP_KW1281_on_TP16 KWP1281 on TP1.6 MSP_KW500_3_on_KW500_2 Deutz KW500 Diagnostics on K-Line K-Line MSP_KW71_UART KW71 on K Line Line MSP_MOST_14229_on_MOST_DAP UDS on MOST MSP_SFTNG_CAN Softing CAN CAN protocol 7.1
EasyPDU Namespace Reference
17
MSP_SFTNG_ISO_11898_onboard Softing CAN onboard protocol protocol MSP_VW2000LP_on_ISO_14230_2 VW2000LP MSP_VW2000LP_on_ISO_14230_2 MSP_VW2000LP_on_TP16 KWP2000 on VW TP1.6 TP1.6 MSP_VW2000LP_on_TP20 KWP2000 on VW TP2.0 TP2.0 SAE_J1939_73_on_SAE_J1939_21 Truck and Bus on CAN
7.1.2 7.1 .2.5 .5
enum en um T_PDU_ERR_EVT
Original D-PDU API event error code. Enumerator
PDU_ERR_EVT_NOERROR No Error. Error. Event Event type only returned on a PDUGetLastEr PDUGetLastError ror if there were no previous errors for the requested handle PDU_ERR_EVT_FRAME_STRUCT CLL/CoP Error: Error: The structure of the received protocol frame is incorrect (e.g. wrong frame number, missing FC...). PDU_ERR_EVT_TX_ERROR CLL/CoP Error: Error encountered during tramsmit of a ComPrimitive ComPrimitive PDU PDU_ERR_EVT_TESTER_PRESENT_ERROR CLL/C CLL/CoP oP Error: Error Error encountered encountered in transmitti transmitting ng a Tester Present message or in receiving an expected response to a Tester Present message. PDU_ERR_EVT_RSC_LOCKED CLL Error: A physical ComParam ComParam was not set because because of a physical Com← Param lock. PDU_ERR_EVT_RX_TIMEOUT CLL/C CLL/CoP oP Error: Error: Receive Receive timer (e.g. (e.g. P2Max) P2Max) expired expired with no expected expected responses received from the vehicle. PDU_ERR_EVT_RX_ERROR CLL/CoP Error: Error: Error encountered in receiving a mesage from the the vehicle bus (e.g. checksum error ...). PDU_ERR_EVT_PROT_ERR CLL/CoP Error: Protocol error encountered during during handling of a ComPrimitive (e.g. if the protocol cannot handle the length of a ComPrimitive. PDU_ERR_EVT_LOST_COMM_TO_VCI Module Error: Communication to a MVCI MVCI protocol module has has been lost. PDU_ERR_EVT_VCI_HARDWARE_FAULT Module Error: The MVCI protocol module module has detected a hardhardware error. PDU_ERR_EVT_INIT_ERROR CLL/CoP Error: Error: A failure occurred during a protocol initialization sequence. sequence.
7.1.2 7.1 .2.6 .6
enum en um T_PDU_ERROR
Original D-PDU API error code. Enumerator
PDU_STATUS_NOERROR No error for for the function call PDU_ERR_FCT_FAILED Function call failed failed (generic failure) failure) PDU_ERR_RESERVED_1 Reserved by by ISO22900-2 ISO22900-2 PDU_ERR_COMM_PC_TO_VCI_FAILED Communication between between host and MVCI Protocol Module failed PDU_ERR_PDUAPI_NOT_CONSTRUCTED The D-PDU API API has not yet been constructed constructed PDU_ERR_SHARING_VIOLATION A PDUDestruct was not called before before another PDUConstruct PDU_ERR_RESOURCE_BUSY the requested resource resource is already in use. 7.1
EasyPDU Namespace Reference
18
PDU_ERR_RESOURCE_TABLE_CHANGED Not used by by the D-PDU D-PDU API PDU_ERR_RESOURCE_ERROR Not used by the D-PDU D-PDU API PDU_ERR_CLL_NOT_CONNECTED The ComLogicalLink cannot be in the PDU_CLLST_OFFLIN PDU_CLLST_OFFLINE E state to perform the requested operation. PDU_ERR_CLL_NOT_STARTED The ComLogicalL ComLogicalLink ink must be in the PDU PDU_CLLS _CLLST_CO T_COMM_S MM_START TARTE E← D state to perform the requested operation. PDU_ERR_INVALID_PARAMETERS One or more of the parameters parameters supplied in the function are are invalid. PDU_ERR_INVALID_HANDLE One or more of the handles supplied supplied in the function are invalid. invalid. PDU_ERR_VALUE_NOT_SUPPORTED One of the option values in PDUConstruct PDUConstruct is invalid invalid PDU_ERR_ID_NOT_SUPPORTED IOCTL IOCTL command id not supported supported by the implementa implementation tion of the D-PDU D-PDU API PDU_ERR_COMPARAM_NOT_SUPPORTED ComParam ComParam id not supported by the implementat implementation ion of the DPDU API PDU_ERR_COMPARAM_LOCKED Physical ComParam ComParam cannot be changed because it is locked by another ComLogicalLink. PDU_ERR_TX_QUEUE_FULL The ComLogicalLi ComLogicalLink’ nk’s s transmit transmit queue is full; the ComPrimiti ComPrimitive ve could not be queued. PDU_ERR_EVENT_QUEUE_EMPTY No more event event items are avail availabl able e to be read read from from the request requested ed queue. value supplied in the IOCTL call is not supported by PDU_ERR_VOLTAGE_NOT_SUPPORTED The voltage value the MVCI Protocol Module. PDU_ERR_MUX_RSC_NOT_SUPPORTED The specifie specified d pin / resour resource ce are not supporte supported d by the MVC← I Protocol Module for the IOCTL call. PDU_ERR_CABLE_UNKNOWN The cable attached to the MVCI Protocol Module is of an unknown type. PDU_ERR_NO_CABLE_DETECTED No cable is detected by by the MVCI Protocol Module Module PDU_CLLST_ONLINE state. PDU_ERR_CLL_CONNECTED The ComLogicalLink is already in the PDU_CLLST_ONLINE PDU_ERR_TEMPPARAM_NOT_ALLOWED Physi Physical cal Com ComPa Para rams ms cannot cannot be change changed d as a tem tempor porary ary ComParam. locked. PDU_ERR_RSC_LOCKED The resource is already locked. PDU_ERR_RSC_LOCKED_BY_OTHER_CLL ComLogicalLink.
The ComLogicalLink’s ComLogicalLink’s resource is currently locked locked by another
PDU_ERR_RSC_NOT_LOCKED The resource is already in the unlocked state. PDU_ERR_MODULE_NOT_CONNECTED The module is not in the PDU_MODST_REA PDU_MODST_READY DY state. PDU_ERR_API_SW_OUT_OF_DATE The API software is older than the MVCI Protocol Module Software Software PDU_ERR_MODULE_FW_OUT_OF_DATE The MVCI Protocol Protocol Module softwar software e is older than the API software. PDU_ERR_PIN_NOT_CONNECTED The requested Pin is not routed routed by supported cable 7.1.2 7.1 .2.7 .7
enum en um T_PDU_STATUS
Original D-PDU API status code. This enum contains status codes for ComPrimitives, ComLogicalLinks and Modules Enumerator
PDU_COPST_IDLE ComPrimitive is in the CommLogicalLink’s CommLogicalLink’s ComPrimitive ComPrimitive Queue and has not been acted upon. 7.1
EasyPDU Namespace Reference
19
PDU_COPST_EXECUTING ComPrimitive has been pulled from the the CommLogicalLink’s CommLogicalLink’s ComPrimitive Queue and is in an active state. PDU_COPST_FINISHED ComPrimiti ComPrimitive ve is finished. No further event event items will be generated generated for this Com← Primitive. PDU_COPST_CANCELLED ComPrimitive was was cancelled by a PDUCancelComPrimitive PDUCancelComPrimitive request. request. No further event items will be generated for this ComPrimitive. PDU_COPST_WAITING A periodic send ComPrimitive ComPrimitive (NumSendCycles (NumSendCycles > 1) has finished finished its periodic periodic cycle and is waiting for its next cyclic time for transmission. PDU_CLLST_OFFLINE ComLogicalLink is in communication state "offline". "offline". PDU_CLLST_ONLINE ComLogicalLink is in communication state "online". "online". PDU_CLLST_COMM_STARTED ComL ComLogica ogicalLink lLink is in communication communication state "communic "communication ation started". started". A PDU_COP PDU _COPT_ST T_STARTC ARTCOMM OMM ComPrimitive ComPrimitive has been commanded. commanded. The ComLogicalLin ComLogicalLink k is in a transtransmit/receive state. Protocol Module is ready for communicatio communication. n. The MVCI Protocol Protocol Module PDU_MODST_READY The MVCI Protocol has been connected by this D-PDU API Session (See PDUModuleConnect) PDU_MODST_NOT_READY The MVCI Protocol Module Module is not ready for communication. communication. PDU_MODST_NOT_AVAIL The MVCI Protocol Protocol Module Module is unavailable unavailable for for connection. connection. E.g. MVCI Protocol Protocol Module is in use by another D-PDU API connection or communication was lost after previously being in a PDU_MODST_READY PDU_MODST_READY state. PDU_MODST_AVAIL The MVCI Protocol Protocol Module is availabl available e for connection connection (i.e. not yet connected connected by a D-PDU API session.) See PDUModuleConnect and PDUModuleDisconnect)
7.1.2 7.1 .2.8 .8
enum en um VCITYPE
VCI Type Enumerator
EDICblue EDICblue EDICcard2 EDICcard2 EDICpci EDICpci EDICusb EDICusb EDICwlan EDICwlan VCI_HSC samtec HSC HSC VC VCII VCI_HSX Samtec HSX HSX VCI VCI VCI_HS_LIGHT Samtec HSlight HSlight USB VCI VCI_HS_PLUS Samtec HS+ USB/Ethernet VCI VCI VCI_HS_WLAN_HD Samtec HS+ wLAN/HD VCI
8
Class Cla ss Doc Docume umenta ntatio tion n
8.1 Cop Cla Class ss Ref Referen erence ce Class for convenient communication primitive access. 8 Class Documentation
20
Public Member Functions
• void void waitUntilFinished waitUntilFinished () () Wait until Cop Cop has has finished successfully or with error.
• Response getResponse Response getResponse () () Get a single response from this communication primitive.
• void void cancel cancel () () Cancel communication primitive.
• T_PDU_STATUS getStatus T_PDU_STATUS getStatus () () Get original Pduapi Pduapi Cop Cop status. status.
8.1.1
Detailed Detaile d Descrip Description tion
Class for convenient communication primitive access.
Examples: Exam ples:
example_1.cpp.. example_1.cpp
8.1.2
Memberr Functi Membe Function on Docume Documentati ntation on
8.1.2 8.1 .2.1 .1
void vo id ca canc ncel el ( )
Cancel communication primitive. Received responses can still be obtaint via getResponse() via getResponse().. 8.1.2.2 Response get getRes Respon ponse se ( )
Get a single response from this communication primitive. If no response is available and Cop and Cop is is still running, wait for next response. If no response is available and Cop and Cop has has finished, the returned response object evaluates false. Returns Retur ns
Response object. Response object. If it evaluates true, the response is valid. Examples: Exam ples:
example_1.cpp.. example_1.cpp
8.1
Cop Class Reference
21
8.1.2.3 T_PDU_STATUS get getSt Stat atus us ( )
Get original Pduapi original Pduapi Cop Cop status. status. 8.1.2.4 8.1. 2.4 vo void id wait waitUnt UntilFi ilFinis nished hed ( )
Wait until Cop until Cop has has finished successfully or with error.
8.2
EasyPduExcep EasyPd uException tion Class Referen Reference ce
This Exception is thrown whenever something went wrong in an EasyPDU an EasyPDU function. function.
Public Member Functions
• virtual const char ∗ what what () () throw () Get EasyPduException EasyPduException error error string.
• const const T_PDU_ERROR getErrorCode T_PDU_ERROR getErrorCode () () throw () Get original D-PDU API error code.
8.2.1
Detailed Detaile d Descrip Description tion
This Exception is thrown whenever something went wrong in an EasyPDU an EasyPDU function. function. Examples: Exam ples:
example_1.cpp.. example_1.cpp
8.2.2
Memberr Functi Membe Function on Docume Documentati ntation on
8.2.2 8.2 .2.1 .1
cons co nstt T_PDU_ERROR getErr getErrorCode orCode ( ) thro throw w)
Get original D-PDU API error code. Returns
T_PDU_ERROR returned by PDUAPI function
8.2.2.2 virtua virtuall const char∗ w what hat ( ) thr throw ow ) [virtual]
Get EasyPduException Get EasyPduException error error string. Returns
Short user-readable description of the error. Examples: Exam ples:
example_1.cpp.. example_1.cpp 8.2
EasyPduException Class Reference
22
8.3 Lin Linkk Cla Class ss Ref Refere erence nce Class for convenient access to a ComLogicalLink.
Public Member Functions
• void void connect connect () () Connect Link Link .
• void void disconnect disconnect () () Disconnect Link Link .
• bool bool isConnected isConnected () () Determines if the Link Link is is connected.
• Cop startCop (COP_TYPE copType, copType, int sendCounter, int receiveCounter, std::vector< unsigned char dataBytes)
>
Start a Cop Cop for for sending and receiving data.
• Cop Cop startCop startCop ( (COP_TYPE COP_TYPE copType, copType, int sendCounter, int receiveCounter, std::string byteString) Start a Cop Cop for for sending and receiving data.
• int getComParam int getComParam (std::string (std::string name) Get a communication parameter.
• void void setComParam setComParam (std::string (std::string name, int value) Set a communication parameter.
• void void setComParam setComParam (std::string (std::string name, std::string value) Set a communication parameter.
• int int getUniqueRespIdTable (int getUniqueRespIdTable (int uniqueRespIdentifier, std::string name) Get a communication parameter from an UniqueRespIdTable.
• int int getUniqueRespIdTable (std::string getUniqueRespIdTable (std::string uniqueRespIdentifier, std::string name) Get a communication parameter from an UniqueRespIdTable.
• void void setUniqueRespIdTable (int setUniqueRespIdTable (int uniqueRespIdentifier, std::string name, int value) Set a communication parameter from an UniqueRespIdTable.
• void void setUniqueRespIdTable (std::string setUniqueRespIdTable (std::string uniqueRespIdentifier, std::string name, std::string value) Set a communication parameter from an UniqueRespIdTable.
• void void readAndSetParamsFromFile (std::string readAndSetParamsFromFile (std::string filename) Read Comparams and UniqueResponseTable from a text file and set them.
8.3.1
Detailed Detaile d Descrip Description tion
Class for convenient access to a ComLogicalLink.
Examples: Exam ples:
example_1.cpp.. example_1.cpp 8.3
Link Class Reference
23
8.3.2
Memberr Functi Membe Function on Docume Documentati ntation on
8.3.2 8.3 .2.1 .1
void vo id co conn nnec ectt ( )
Connect Link Connect Link.. Connect Link Connect Link after after setComParam() and setComParam() and setUniqueRespIdTable() but setUniqueRespIdTable() but before startCop() before startCop().. Examples: Exam ples:
example_1.cpp.. example_1.cpp 8.3.2.2 8.3. 2.2 vo void id disc disconn onnect ect ( )
Disconnect Link Disconnect Link.. After disconnecting Link disconnecting Link you you cannot startCop() cannot startCop() until until connect() connect() is is called again. 8.3.2.3 int getCom getComPara Param m ( std:: std::string string name name )
Get a communication parameter. Parameters
name
Name of the communication parameter. parameter.
Returns
Current value of this ommunication parameter.
8.3.2.4 int getUniq getUniqueResp ueRespIdT IdTable able ( int uniqueRespIdentifier, int uniqueRespIdentifier, std::string name std::string name )
Get a communication parameter from an UniqueRespIdTable. Parameters
uniqueResp ← Identifier name
UniqueRespIdTable UniqueRespIdTable page identifier. Name of the communication parameter. parameter.
Returns
Current value of this ommunication parameter.
8.3.2.5 int getUniq getUniqueResp ueRespIdT IdTable able ( std:: std::string string uniqueRespIdentifier, uniqueRespIdentifier, std::string name std::string name )
Get a communication parameter from an UniqueRespIdTable. Parameters
uniqueResp ← Identifier
8.3
UniqueRespIdTable UniqueRespIdTable page identifier.
Link Class Reference
24
name
Name of the communication parameter. parameter.
Returns
Current value of this ommunication parameter.
8.3.2.6 8.3. 2.6 boo booll isC isConne onnecte cted d( )
Determines if the Link the Link is is connected. Returns
true = link is connected, connected, false false = link in not connected connected
8.3.2.7 void readAn readAndSetP dSetParams aramsFromF FromFile ile ( std:: std::string string filename filename )
Read Comparams and UniqueResponseTable from a text file and set them. Parameters
filename
Location of the parameter file.
Examples: Exam ples:
example_1.cpp.. example_1.cpp 8.3.2.8 void setCom setComParam Param ( std:: std::strin string g name, int int value value )
Set a communication parameter. Parameters
name value
Name of the communication parameter. parameter. New communication parameter value.
8.3.2.9 void setCom setComParam Param ( std:: std::strin string g name, std::string value std::string value )
Set a communication parameter. If type of ComParam type is BYTEFIELD or LONGFIELD use a space separated string: "123 456 789" If type type of Com ComP Param aram type type is STRUC STRUCTFI TFIELD ELD with with SESSIO SESSION_T N_TIMI IMING NG surrou surround nd every every parame parameter ter set with with parentheses: "(session P2Max_high P2Max_low P2Star_high P2Star_low)(...)" If type type of ComP ComPar aram am type type is STRUC STRUCTFI TFIELD ELD with with ACC ACCES ESS_T S_TIMI IMING NG surrou surround nd every every parame parameter ter set with with parentheses: "(P2Min P2Max P3Min P3Max P4Min TimingSet)(...)" Parameters
name value
Name of the communication parameter. parameter. New communication parameter value.
8.3.2.10 void setUni setUniqueResp queRespIdT IdTable able ( int int uniqueRespIdentifier, uniqueRespIdentifier, std::string name, std::string name, int int value value )
Set a communication parameter from an UniqueRespIdTable.
8.3
Link Class Reference
25
Parameters
uniqueResp ← Identifier name value
UniqueRespIdTable UniqueRespIdTable page identifier. Name of the communication parameter. parameter. New communication parameter value.
8.3.2.11 void setUni setUniqueResp queRespIdT IdTable able ( std:: std::string string uniqueRespIdentifier, uniqueRespIdentifier, std::string name, std::string name, std::string value std::string value )
Set a communication parameter from an UniqueRespIdTable. Parameters
uniqueResp ← Identifier name value
8.3.2.12
UniqueRespIdTable UniqueRespIdTable page identifier. Name of the communication parameter. parameter. New communication parameter value.
int sendCounter, sendCounter, int int receiveCounter, receiveCounter, std::vector< unsigned char > Cop startCop ( COP_TYPE copType, int dataBytes )
Start a Cop a Cop for for sending and receiving data. Parameters
copType sendCounter receiveCounter dataBytes
Type of the Cop the Cop to to be started. Determines how often the Cop the Cop will will be sent. 0 = receive only, -1 = cyclic sending Determines how many many responses we are waiting waiting for. for. 0 = send only, -1 = receive infinite Data bytes to be sent. sent.
Returns Retur ns
Cop object. Cop object. Examples: Exam ples:
example_1.cpp.. example_1.cpp
8.3.2.13
int sendCounter, sendCounter, int int receiveCounter, receiveCounter, std::string byteString std::string byteString ) Cop startCop ( COP_TYPE copType, int
Start a Cop a Cop for for sending and receiving data. Parameters
copType sendCounter receiveCounter byteString
Type of the Cop the Cop to to be started. Determines how often the Cop the Cop will will be sent. 0 = receive only, -1 = cyclic sending Determines how many many responses we are waiting waiting for. for. 0 = send only, -1 = receive infinite String with space seperated data bytes. PDU bytes are always always interpreted as hex. hex.
Returns Retur ns
Cop object. Cop object.
8.3
Link Class Reference
26
8.4 Pdu Pduapi api Cla Class ss Ref Referen erence ce Class for convenient D-PDU API access.
Public Member Functions
• Vci Vci connectVci connectVci () () Open connection to the first Vci first Vci found. found. This is only useful if you have just one Vci one Vci .
• Vci Vci connectVci connectVci ( (VCITYPE VCITYPE vciType) Open connection to a Vci a Vci of of the specified VCITYPE.
• Vci Vci connectVci connectVci (std::string (std::string vciName) Open connection to a Vci a Vci device. device.
• std::vector std::vector< std::string > getVciList getVciList () () Get a list of all VCIs that are currently available.
Static Public Member Functions
• static static Pduapi Pduapi construct construct () () Construct Construct a Pduapi Pduapi object object from the D-PDU API with the highest highest version number found in the Root-XML Root-XML file. Prefers Prefers Softing PK versions.
• static static Pduapi Pduapi construct construct (std::string (std::string pduapiName) Construct a Pduapi Pduapi object object from a installed D-PDU API with the specified name.
• static std::v std::vector ector< std::string > getPduapiList getPduapiList () () Get a list of available D-PDU APIs.
• static std::string std::string getEnumString getEnumString ( (T_PDU_ERROR T_PDU_ERROR value) Get an EasyPDU EasyPDU enum enum value as string.
• static std::string std::string getEnumString getEnumString ( (T_PDU_ERR_EVT T_PDU_ERR_EVT value) Get an EasyPDU EasyPDU enum enum value as string.
• static std::string std::string getEnumString getEnumString ( (T_PDU_STATUS T_PDU_STATUS value) Get an EasyPDU EasyPDU enum enum value as string.
8.4.1
Detailed Detaile d Descrip Description tion
Class for convenient D-PDU API access.
Examples: Exam ples:
example_1.cpp.. example_1.cpp 8.4
Pduapi Class Reference
27
8.4.2
Memberr Functi Membe Function on Docume Documentati ntation on
8.4.2.1
connec nectVc tVcii ( ) Vci con
Open connection to the first Vci first Vci found. found. This is only useful if you have just one Vci one Vci.. Returns Retur ns
Vci object Vci object connected to. Examples: Exam ples:
example_1.cpp.. example_1.cpp
8.4.2.2
Vci connectVci ( VCITYPE vciType )
Open connection to a Vci a Vci of of the specified VCITYPE. Parameters
vciType
Type of the VCI.
Returns Retur ns
Vci object Vci object connected to.
8.4.2.3
std::string vciName ) Vci connectVci ( std::string vciName
Open connection to a Vci a Vci device. device. Parameters
vciName
Name of a VCI obtained from from getVciList() getVciList() or or just the VCI type.
Returns Retur ns
Vci object Vci object connected to.
8.4.2.4 8.4. 2.4 sta static tic Pduapi con constr struct uct ( ) [static]
Construct a Pduapi a Pduapi object object from the D-PDU API with the highest version number found in the Root-XML file. Prefers Softing PK versions. Perfer PK version. Returns Retur ns
Pduapi object. Pduapi object.
8.4.2.5 8.4. 2.5 sta static tic Pduapi construct ( std::string std::string pduapiName pduapiName ) [static]
Construct a Pduapi a Pduapi object object from a installed D-PDU API with the specified name. Examples: EDIC_D_PDU_API_11_22_001 for Softing D-PDU API, D_PDU_API_SAMTEC for samtec PDUAPI.
8.4
Pduapi Class Reference
28
Parameters
pduapiName
Name of the D-PDU API as obtained from getPduapiList() from getPduapiList()..
Returns Retur ns
Pduapi object. Pduapi object.
8.4.2.6 stati staticc std::st std::string ring getEn getEnumStr umString ing ( T_PDU_ERROR value ) [static]
Get an EasyPDU an EasyPDU enum enum value as string. This function can be used for exampel for printing enum error codes. Parameters
value
Enum value to be converted. converted.
Returns
String representation of enum value."
8.4.2.7 stati staticc std::st std::string ring getEn getEnumStr umString ing ( T_PDU_ERR_EVT value ) [static]
Get an EasyPDU an EasyPDU enum enum value as string. This function can be used for exampel for printing enum error codes. Parameters
value
Enum value to be converted. converted.
Returns
String representation of enum value."
8.4.2.8 stati staticc std::st std::string ring getEn getEnumStr umString ing ( T_PDU_STATUS value ) [static]
Get an EasyPDU an EasyPDU enum enum value as string. This function can be used for exampel for printing enum error codes. Parameters
value
Enum value to be converted. converted.
Returns
String representation of enum value."
8.4.2.9 stati staticc std:: std::vector vector
get getPdu PduapiL apiList ist ( ) [static]
Get a list of available D-PDU APIs. Only Softing and Samtec D-PDU APIs are supported. 8.4
Pduapi Class Reference
29
8.4.2.10 8.4. 2.10 std std::v ::vect ector or get getVci VciList List ( )
Get a list of all VCIs that are currently available. Returns
List of VCI names.
8.5 Res Respon ponse se Cla Class ss Ref Refere erence nce Class for convenient Cop-Response access.
Public Member Functions
• std::vector std::vector< unsigned char > getData getData () () Get response data as byte vector.
• std::string std::string getDataAsHe getDataAsHexString xString () () Get response data as hexadecimal string.
• std::string std::string getErrorMessage getErrorMessage () () Get error message if Response Response is is an error-response.
• T_PDU_ERR_EVT getErrorCode T_PDU_ERR_EVT getErrorCode () () Get original D-PDU API event error code.
• int getUniqueRespIdentifier int getUniqueRespIdentifier () () Get the UniqueRespIdentifier the response belongs to.
• bool bool isError isError () () Indicates if this Response Response is is an error-response.
• operator bool () bool () Evaluates true if this is a valid response object.
8.5.1
Detailed Detaile d Descrip Description tion
Class for convenient Cop-Response access.
Examples: Exam ples:
example_1.cpp.. example_1.cpp 8.5
Response Class Reference
30
8.5.2
Memberr Functi Membe Function on Docume Documentati ntation on
8.5.2.1 8.5. 2.1 std std::v ::vect ector or ge getD tDat ataa ( )
Get response data as byte vector. Returns
Byte vector. vector.
8.5.2.2 std:: std::string string getDat getDataAsHex aAsHexString String ( )
Get response data as hexadecimal string. Returns
String of blank seperated hex values.
8.5.2.3 T_PDU_ERR_EVT get getErr ErrorC orCode ode ( )
Get original D-PDU API event error code. Returns
Event error code as enum.
8.5.2.4 8.5. 2.4 std std::s ::stri tring ng get getErr ErrorM orMess essage age ( )
Get error message if Response if Response is is an error-response. Returns
Error message string.
8.5.2.5 8.5. 2.5 int get getUniq UniqueR ueResp espIden Identifi tifier er ( )
Get the UniqueRespIdentifier the response belongs to. Returns
Identifier as defined with with Link.setUniqueRespIdTable(). Link.setUniqueRespIdTable().
8.5.2 8.5 .2.6 .6
bool bo ol is isEr Erro rorr ( )
Indicates if this Response this Response is is an error-response. Returns
true, if error response; false if data response.
8.5.2 8.5 .2.7 .7
oper op erat ator or bo bool ol ( )
Evaluates true if this is a valid response object. 8.5
Response Class Reference
31
8.6 Vci Cla Class ss Ref Refere erence nce Class for convenient VCI hardware device access.
Public Member Functions
• Link openLink Link openLink ( (PROTOCOL PROTOCOL protocol, protocol, BUSTYPE BUSTYPE bustype, bustype, PORT PORT port) port) Open a logical link to a specified vehicle bus.
• Link openLink Link openLink (std::string (std::string protocol, std::string bustype, std::string port) Open a logical link to a specified vehicle bus.
• void void startBustrace startBustrace ( (BUSTYPE BUSTYPE bustype, bustype, PORT PORT port, port, std::string path, std::string filename) Trace all data packages visible on the physical bus to file.
• void void startBustrace startBustrace (std::string (std::string bustype, std::string port, std::string path, std::string filename) Trace all data packages visible on the physical bus to file.
• void void stopBustrace stopBustrace ( (BUSTYPE BUSTYPE bustype, bustype, PORT PORT port) port) Stop bustrace for a specified bus.
• void void stopBustrace stopBustrace (std::string (std::string bustype, std::string port) Stop bustrace for a specified bus.
8.6.1
Detailed Detaile d Descrip Description tion
Class for convenient VCI hardware device access.
Examples: Exam ples:
example_1.cpp.. example_1.cpp
8.6.2
Memberr Functi Membe Function on Docume Documentati ntation on
8.6.2.1 Link openLink ( PROTOCOL protocol, BUSTYPE bustype, PORT port )
Open a logical link to a specified vehicle bus. Parameters
protocol
8.6
Protocol (UDSCAN, (UDSCAN, DiagCAN, KWP2000GV,...) KWP2000GV,...)
Vci Class Reference
32
bustype port
Bustype (ISO_11898_2_DWCAN (ISO_11898_2_DWCAN,, ISO_11898_3_DWFTCAN, ISO_11898_3_DWFTCAN, ISO_9141_2_UART) ISO_9141_2_UART) Port on the VCI (CAN1, CAN2, CAN2, K_LINE, K_LINE, KL_LINE) KL_LINE)
Returns Retur ns
Link object. Link object. Examples: Exam ples:
example_1.cpp.. example_1.cpp
8.6.2.2 Link openLi openLink nk ( std:: std::string string protocol, protocol, std::string bustype, std::string bustype, std::string port std::string port )
Open a logical link to a specified vehicle bus. Parameters
protocol bustype port
Protocol (UDSCAN, (UDSCAN, DiagCAN, KWP2000GV,...) KWP2000GV,...) Bustype (ISO_11898_2_DWCAN (ISO_11898_2_DWCAN,, ISO_11898_3_DWFTCAN, ISO_11898_3_DWFTCAN, ISO_9141_2_UART) ISO_9141_2_UART) Port on the VCI (CAN1, CAN2, CAN2, K_LINE, K_LINE, KL_LINE) KL_LINE)
Returns Retur ns
Link object. Link object.
8.6.2.3 void startB startBustra ustrace ce ( BUSTYPE bustype, PORT port, std::string path, std::string path, std::string filename std::string filename )
Trace all data packages visible on the physical bus to file. This feature is only supported by Softing D-PDU APIs. Parameters
bustype port path filename
Type of bus to be traced. traced. Port to be traced. Trace file path. Use "" for for default default path. Filename for for the trace file. Use "" for default filename.
8.6.2.4 void startB startBustra ustrace ce ( std:: std::string string bustype, bustype, std::string port, std::string port, std::string path, std::string path, std::string filename std::string filename )
Trace all data packages visible on the physical bus to file. This feature is only supported by Softing D-PDU APIs. Parameters
bustype port path filename
Type of bus to be traced. traced. Port to be traced. Trace file path. Use "" for for default default path. Filename for for the trace file. Use "" for default filename.
8.6.2.5 void stopBu stopBustrac stracee ( BUSTYPE bustype, PORT port )
Stop bustrace for a specified bus.
8.6
Vci Class Reference
33
Parameters
bustype port
Type of bus to be traced. traced. Port to be traced.
8.6.2.6 void stopBu stopBustrac stracee ( std:: std::strin string g bustype, std::string port std::string port )
Stop bustrace for a specified bus. Parameters
bustype port
9
Type of bus to be traced. traced. Port to be traced.
Exampl Exa mplee Doc Docume umenta ntatio tion n
9.1 Com ComPa Param ram.in .inii 1 ;he ;here re you can set your ComParam ComParams s 2 ;yo ;you u can set dec decima imal l or hex hexade adecim cimal al val values ues 3 ;fo ;for r hex hexade adecim cimal al val values ues use the prefix prefix 0x 4 ;yo ;you u can add / del delete ete paramete parameters rs dep depend ending ing on the protocol protocol used 5 6 [ISO_15765_3_on_IS [ISO_15765_3_on_ISO_15765_2] O_15765_2] 7 CP_P2Max=100000 8 CP_RequestAddrMode CP_RequestAddrMode=0x2 =0x2 9 CP_CanFuncReqId=0x CP_CanFuncReqId=0x641 641 10 CP_CanFuncReqForm CP_CanFuncReqFormat=0x5 at=0x5 11 12 13 ;here ;here you can set your UniqueRes UniqueRespIdTa pIdTable ble parameters parameters 14 ;th ;the e fir first st val value ue is the page number number 15 ;if no Uni Unique queRes RespId pIdTab Table le is def define ined, d, all res respon ponses ses are rec receiv eived ed 16 ;yo ;you u can add / del delete ete paramete parameters rs dep depend ending ing on the protocol protocol used 17 ;ComParam ;ComParam sections sections for a UniqueRes UniqueRespIdTa pIdTable ble always start start with "URID_" 18 ;af ;after ter the pro protoc tocol ol nam name e you hav have e to ass assign ign the Uni Unique queRes RespId pId 19 20 [URID_ISO_15765_3 [URID_ISO_15765_3_on_ISO_15765_2=1] _on_ISO_15765_2=1] 21 ;CP_CanPhysReqId= ;CP_CanPhysReqId=0x642 0x642 22 ;CP_CanPhysReqFor ;CP_CanPhysReqFormat=0x5 mat=0x5 23 ;CP_CanRespUSDTId ;CP_CanRespUSDTId=0x682 =0x682 24 ;CP_CanRespUSDTFo ;CP_CanRespUSDTFormat=0x5 rmat=0x5
9.2 exa exampl mple_1. e_1.cpp cpp /******************* *************************************** **************************************** ***************************************** ************************************ *************** This is a sim simple ple example example for usi using ng the EasyPDU EasyPDU API with C++ C++. . * This *********************************************************** *************************************** ***************************************** ************************************ *************** Soft ftin ing g AG Rich Ri char ardd-Re Reit itzn zner er-A -All llee ee 6 D-85 D8554 540 0 Ha Haar ar, , Ge Germ rman any y * So EasyPDU http://www.softing.com * Projekt *********************************************************** *************************************** ***************************************** ************************************ *************** * This exa exampl mple e fil file e sho shows ws how to wor work k wit with h the EasyPDUC EasyPDUCpp pp API API. . * This EasyPDUCp PDUCpp.dll p.dll/Easy /EasyPDUCp PDUCpp.lib p.lib to your project. * Make sure, you have added the Easy IntelliSens ense e for easy cod code e com comple pletio tion n mak make e sur sure e tha that t the EasyPDUC EasyPDUCpp. pp.xml xml file is in * If you want to use IntelliS the sam same e fol folder der as the Eas EasyPD yPDUCp UCpp.d p.dll ll fil file. e. * This seq sequen uentia tial l pro progra gram m wil will l try communic communicate ate with an ECU on the CAN bus bus. . * This * IMPORTANT: NT: Dep Depend ending ing on you your r bus str struct ucture ure an ECU you mus must t ada adapt pt the Com ComPar Param am and Uni Unique queRes RespId pIdTab Table le * IMPORTA settings! * steps ps are are: : * The ste - load load the the D-P D-PDU DU API API * - conn connect ect the VCI *
9 Example Documentation
34
* * * * * * * * * * If */
-
open op en a Link Link to to the the CAN CAN bus bus set a few Com set ComPa Para rams ms set the Uniq set UniqueRes ueRespIdTa pIdTable ble update the ComParam ComParams s and UniqueRespId UniqueRespIdTable Table settings settings send a re requ ques est t to the ECU ECU and recei receive ve the answ answer er print the rece print receive ived d data data bytes bytes close all open close open ress ressour ources ces wait for wait for key key to to exit exit
someth som ething ing is goi going ng wro wrong, ng, a det detail ailed ed Exc Except eption ion will be thr thrown own. . It is up to you to han handle dle it.
#include #include #include #include
"EasyPDUCpp.h"
using name namespace space std; using name namespace space EasyPDU; EasyPDU; int main() { try { // con constr struct uct D-P D-PDU DU API Pduapi pduapi = Pduapi::co Pduapi::constru nstruct(); ct(); cout cou t << "Pduapi constructed" << end endl; l; // con connec nect t Vci Vci vci = pdu pduapi api. .connectVci connectVci(); (); cout cou t << "Vci conne connected" cted" << end endl; l; // ope open n Lin Link k Link lin link k = vci. vci.openLink openLink( (ISO_15765_3_on_ISO_15765_2, ISO_11898_2_DWCAN,CAN1 CAN1); ); cout cou t << "Link opene opened" d" << end endl; l; /* // way 1: set Com ComPar Params ams and Uni Unique queRes RespId pId dir direct ectly ly link.setComParam("CP_P2Max", link.setComParam(" CP_P2Max", 100000); link.setComParam("CP_RequestAddrMode", link.setComParam(" CP_RequestAddrMode", 0x1); link.setComParam("CP_CanFuncReqId", link.setComParam(" CP_CanFuncReqId", 0x18DB33F1); link.setComParam("CP_CanFuncReqFormat" link.setComParam(" CP_CanFuncReqFormat", , 0x7); link.setUniqueRespIdTable(1, link.setUniqueResp IdTable(1, "CP_CanPhysReqId", 0x18DA10F1); link.setUniqueRespIdTable(1, link.setUniqueResp IdTable(1, "CP_CanPhysReqForma "CP_CanPhysReqFormat", t", 0x7); link.setUniqueRespIdTable(1, link.setUniqueResp IdTable(1, "CP_CanRespUSDTId", 0x18DAF110); link.setUniqueRespIdTable(1, link.setUniqueResp IdTable(1, "CP_CanRespUSDTForm "CP_CanRespUSDTFormat", at", 0x7); */ // way 2: rea read d Com ComPar Params ams and Uni Unique queRes RespId pIdTab Table le fro from m fil file e link.readAndSetParamsFromFile link.readAndSetParamsFromFile("ComParam.ini" "ComParam.ini"); ); // con connec nect t Lin Link k link.connect link.connect(); (); cout cou t << "Link conne connected" cted" << end endl; l; // sta start rt Cop Cop cop = link link. .startCop startCop( (SENDRECV SENDRECV, , 1 , 2 , "10 92"); 92"); cout cou t << "Cop start started" ed" << endl endl << endl endl; ; // get resp response( onse(s) s) while (Response respons response e = cop cop. .getResponse getResponse()) ()) { if(response.isError()) if (response.isError()) { cout cou t << "R "Res espo pons nse e err error or co code de: : " << Pduapi::getEnumString(response.getErrorCode()) Pduapi::getEnumString(response.getErrorCode()) << endl; cout cou t << "Response "Response error mess message: age: " << response.g response.getErr etErrorMes orMessage sage() () << endl << endl; } else { cout cou t << "Response data: " << response.g response.getDat etDataAsHe aAsHexStr xString() ing() << endl << endl; } } } catch( catch (EasyPduException e) { cout cout << endl endl << "----------------"-------------------------------------------------------------------" -----------" << end endl; l; cout cout << e.what e.what(); (); cout cout << endl endl << "----------------"-------------------------------------------------------------------" -----------" << end endl; l;
9.2
example_1.cpp
35
} // wait for key to exit cout cout << endl endl << << "<<<---PRES "<<<---PRESS S ENTER TO EXITEXIT--->> -->>>" >" << endl; endl; cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); cin.get(); return 0; }
9.3 exa exampl mple_1. e_1.cs cs /******************* *************************************** **************************************** ***************************************** ************************************ *************** This is a sim simple ple example example for usi using ng the EasyPDU EasyPDU API with C#. * This *********************************************************** *************************************** ***************************************** ************************************ *************** Soft ftin ing g AG Rich Ri char ardd-Re Reit itzn zner er-A -All llee ee 6 D-85 D8554 540 0 Ha Haar ar, , Ge Germ rman any y * So EasyPDU http://www.softing.com * Projekt *********************************************************** *************************************** ***************************************** ************************************ *************** * example fil file e sho shows ws how to wor work k wit with h the Eas EasyPD yPDUdo UdotNE tNET T API API. . * This example sure, e, you hav have e add added ed the Eas EasyPD yPDUdo UdotNE tNET.d T.dll ll to you your r pro projec ject. t. * Make sur IntelliSens ense e for easy cod code e com comple pletio tion n mak make e sur sure e tha that t the EasyPDUd EasyPDUdotN otNET. ET.xml xml file is in * If you want to use IntelliS the same fold folder er as the EasyPDUdotNET EasyPDUdotNET.dll .dll file. * This seq sequen uentia tial l pro progra gram m wil will l try communic communicate ate with an ECU on the CAN bus bus. . * This * IMPORTANT: NT: Dep Depend ending ing on you your r bus struct structure ure an ECU you mus must t ada adapt pt the Com ComPar Param am and Uni Unique queRes RespId pIdTab Table le * IMPORTA settings! * steps ps are are: : * The ste - load load the the D-P D-PDU DU API API * - conn connect ect the VCI * - open open a Link Link to to the the CAN CAN bus bus * - set set a few Com ComPa Para rams ms * - set set the Uniq UniqueRes ueRespIdTa pIdTable ble * - update the ComParam ComParams s and UniqueRespId UniqueRespIdTable Table settings settings * - send a re requ ques est t to the ECU ECU and recei receive ve the answ answer er * - print print the rece receive ived d data data bytes bytes * - close close all open open ress ressour ources ces * - wait wait for for key key to to exit exit * * someth ething ing is goi going ng wro wrong, ng, a det detail ailed ed Exc Except eption ion will be thr thrown own. . It is up to you to han handle dle it. * If som */ using System; using EasyPDU; EasyPDU; class EXAMPLE_1 { static void Main(string Main(string[] [] arg args) s) { try { // Loa Load d D-P D-PDU DU API Console.WriteLine("Load D-PDU API.. API..." ."); ); using (Pduapi (Pduapi pduapi pduapi = Pduapi.con Pduapi.construc struct()) t()) { // Con Connec nect t VCI Console.WriteLine("Conn "Connect ect VCI.. VCI..." ."); ); using (Vci vci = pduapi.con pduapi.connectV nectVci()) ci()) { // Ope Open n Lin Link k Console.WriteLine("Ope "Open n Link. Link..." .."); ); using (Link (Link link = vci.openLi vci.openLink( nk(PROTOCOL PROTOCOL.ISO_15765_3_on_ISO_15765_2, .ISO_15765_3_on_ISO_15765_2, BUSTYPE.ISO_11898_2_DWCAN, BUSTYPE .ISO_11898_2_DWCAN, PORT.CAN1)) PORT.CAN1)) { // Set ComPa ComParams rams for physi physical cal addre addressin ssing g Console.WriteLine("Set ComPa ComParams rams for physi physical cal addre addressing ssing..." ..."); link.setComParam("CP_RequestAddrMode", 0x1 0x1); ); // 0x1 = phy physic sical, al, 0x2 = fun functi ctiona onal l // Set Uniqu UniqueResp eRespIdTab IdTable le for physi physical cal addr addressin essing g Console.WriteLine("Set Uniqu UniqueRes eRespIdTa pIdTable ble for phys physical ical addre addressing ssing..." ..."); link.setUniqueRespIdTable(1, "CP_CanPhysReqId", link.setUniqueRespIdTable(1, "CP_CanPhysReqId", 0x641); 0x641); link.setUniqueRespIdTable(1, "CP_CanRespUSDTId", link.setUniqueRespIdTable(1, "CP_CanRespUSDTId", 0x681); 0x681); // Con Connec nect t Lin Link k
9.3
example_1.cs
36
Console.WriteLine("Connect Link..."); Link..."); link.connect(); // Sen Send d dat data a Console.WriteLine("Sen "Send d data. data..." .."); ); using (Cop (Cop cop = link.start link.startCop( Cop(COP_TYPE COP_TYPE.STAR .STARTCOMM TCOMM, , 1, -2, new byte[] byte[] { 0x1 0x10, 0, 0x9 0x92 2 })) { // Pri Print nt rec receiv eived ed dat data a Console.WriteLine("Prin "Print t rece received ived data: data:" "); while (true true) ) { using (Response (Response response response = cop.getRe cop.getRespons sponse()) e()) { if (response (response == null) null) break; break ; if (response.isError()) Console.WriteLine(" Error: " + response.getErrorM response.getErrorMessage()); essage()); else Console.WriteLine(" R es es pI pId (" (" + response.getUniqueRespIdentifier() response.getUniqueRespIdentifier() + "): "): " + response.getDataAsHexString()); } } } } } } } catch (EasyPduException (EasyPduException e) { Console.WriteLine(e.Message); } // Wait for key to exit Console.WriteLine("\n<<> --->>>" >"); Console.ReadKey(); } }
9.4 exa exampl mple_1. e_1.py py 1 ################## ###################################### ######################################## ######################################### ##################################### ################ 2 # Th This is is a si simp mple le ex exam ampl ple e fo for r us usin ing g th the e Ea Easy syPD PDU U AP API I wi with th Py Pyth thon on 2. 2.7 7 32 bi bit. t. 3 # Imp Import ortant ant: : The EasyPDU EasyPDU is cur curren rently tly not wor workin king g wit with h Pyt Python hon 3 or any 64 bit Python. Python. 4 ################## ###################################### ######################################## ######################################### ##################################### ################ 5 # So Soft ftin ing g AG Rich Ri char ardd-Re Reit itzn zner er-A -All llee ee 6 D-85 D8554 540 0 Ha Haar ar, , Ge Germ rman any y 6 # Projekt EasyPDU http://www.softing.com 7 ################## ###################################### ######################################## ######################################### ##################################### ################ 8 9 from EasyPDUPython import * 10 11 print "construct "construct PDUAPI" 12 with Pduapi.co Pduapi.constru nstruct() ct() as pduapi: 13 print "connect "connect VCI" 14 with with pdua pduapi pi.c .con onne nect ctVc Vci( i("EDICusb" "EDICusb") ) as vci: 15 print "open "open logic logical al link" 16 with vci.openLi vci.openLink(PR nk(PROTOCO OTOCOL.ISO L.ISO_1576 _15765_3_o 5_3_on_ISO n_ISO_1576 _15765_2, 5_2, BUSTYPE.IS BUSTYPE.ISO_118 O_11898_2_ 98_2_DWCAN DWCAN, , PORT.CAN1) PORT.CAN1)as as link: 17 print "set comm communica unication tion param parameters eters" " 18 link.setComParam("CP_P2Max" "CP_P2Max", , 100 10000) 00) 19 link.setComParam("CP_RequestAddrMode", 0x2) 0x2) 20 link.setComParam("CP_CanFuncReqId", 0x18DB33F 0x18DB33F1) 1) 21 link.setComParam("CP_CanFuncReqFormat", 0x7) 0x7) 22 print "set "set uniq unique ue respo response nse id table table" " 23 l in in k. k.s et etU ni ni qu qu eR eRe sp spI dT dT ab ab le le( 1, 1, "CP_CanPhysReqId", "CP_CanPhysReqId", 0x18DA10F1 0x18DA10F1) ) 24 l in in k. k.s et etU ni ni qu qu eR eRe sp spI dT dT ab ab le le( 1, 1, "CP_CanPhysReqFormat", "CP_CanPhysReqFormat", 0x7) 0x7) 25 l in in k. k.s et etU ni ni qu qu eR eRe sp spI dT dT ab ab le le( 1, 1, "CP_CanRespUSDTId", "CP_CanRespUSDTId", 0x18DAF110 0x18DAF110) ) 26 l in in k. k.s et etU ni ni qu qu eR eRe sp spI dT dT ab ab le le( 1, 1, "CP_CanRespUSDTFormat", "CP_CanRespUSDTFormat", 0x7) 0x7) 27 print "connect "connect link" 28 link.connect() 29 print "start "start cop" 30 with with link link.s .sta tart rtCo Cop( p(CO COP_ P_TY TYPE PE.S .SEN ENDR DREC ECV, V, 1, -2, -2, [0x1 [0x10, 0, 0x92 0x92]) ]) as cop: 31 print "get cop respo response" nse" 32 while True: True: 33 response = cop.getResponse() 34 if no not t response: break 35 if response.isError():
9.4
example_1.py
37
36 print response.getErrorMessage() 37 else: else: 38 print response.getDataAsHexString() 39 del response 40 41 raw_input raw_input( ("PRE "PRESS SS ENTER TO EXIT. EXIT..." ..")
9.5 exa exampl mple_2. e_2.cs cs /******************* *************************************** **************************************** ***************************************** ************************************ *************** This is a sim simple ple example example for usi using ng the EasyPDU EasyPDU API with C#. * This *********************************************************** *************************************** ***************************************** ************************************ *************** Soft ftin ing g AG Rich Ri char ardd-Re Reit itzn zner er-A -All llee ee 6 D-85 D8554 540 0 Ha Haar ar, , Ge Germ rman any y * So EasyPDU http://www.softing.com * Projekt *********************************************************** *************************************** ***************************************** ************************************ *************** * example fil file e sho shows ws how to wor work k wit with h the Eas EasyPD yPDUdo UdotNE tNET T API API. . * This example sure, e, you hav have e add added ed the Eas EasyPD yPDUdo UdotNE tNET.d T.dll ll to you your r pro projec ject. t. * Make sur IntelliSens ense e for easy cod code e com comple pletio tion n mak make e sur sure e tha that t the EasyPDUd EasyPDUdotN otNET. ET.xml xml file is in * If you want to use IntelliS the same fold folder er as the EasyPDUdotNET EasyPDUdotNET.dll .dll file. * progra gram m wil will l sta start rt two thr thread ead: : * This pro Thread Thr ead 1 will receive receive data data from the CAN_RAW CAN_RAW bus. bus. * Thread Thr ead 2 will will send data data to the CAN_R CAN_RAW AW bus. bus. * * * IMPORTANT NT 1: Dep Depend ending ing on you your r bus str struct ucture ure an ECU you mus must t ada adapt pt the Com ComPar Param am and Uni Unique queRes RespId pIdTab Table le * IMPORTA settings! IMPORTANT NT 2: If the ECU does not res respon ponse, se, the receive receive thr thread ead wil will l wai wait t inf infini inite! te! * IMPORTA * steps ps are are: : * The ste - load load the the D-P D-PDU DU API API * - conn connect ect the VCI * - open open a Link Link to to the the CAN CAN bus bus * - set set the Uniq UniqueRes ueRespIdTa pIdTable ble * - update update UniqueResp UniqueRespIdTab IdTable le settings settings * - star start t Thre Thread1 ad1 * - start Recei ReceiveOn veOnly ly ComPr ComPrimiti imitive ve * - wait wait until Thre Thread2 ad2 has start started ed send sending ing ComPr ComPrimit imitive ive * - rec receiv eived ed 10 res respon ponses ses dat data a * - star start t Thre Thread2 ad2 * - wait wait until Thre Thread1 ad1 has start started ed Rece ReceiveOn iveOnly ly ComPr ComPrimiti imitive ve * - start start 2 ComP ComPrim rimite iteve ve with with sen sendCo dCount unter= er=5 5 (2 * 5 = 1 0 ) * - wait until until Thread1 Thread1 and Thread2 Thread2 have have finished finished * - wait wait for for key key to to exit exit * * someth ething ing is goi going ng wro wrong, ng, a det detail ailed ed Exc Except eption ion will be thr thrown own. . It is up to you to han handle dle it. * If som */ using System; using System.Threading; using EasyPDU; EasyPDU; class EXAMPLE_2 { static void Main(string Main(string[] [] arg args) s) { try { // Loa Load d D-P D-PDU DU API Console.WriteLine("M "Mai ainT nThr hrea ead: d: Load Lo ad DD-PD PDU U A API PI.. ..." ."); using (Pduapi (Pduapi pduapi pduapi = Pduapi.con Pduapi.construc struct()) t()) { // Con Connec nect t VCI Console.WriteLine("M "Mai ainT nThr hrea ead: d: Conn Co nnec ect t VC VCI. I... .." "); using (Vci vci = pduapi.con pduapi.connectV nectVci()) ci()) { // Ope Open n Lin Link k Console.WriteLine("M "Mai ainT nThr hrea ead: d: Open Op en Li Link nk.. ..." ."); using (Link (Link link = vci.openLi vci.openLink( nk(PROTOCOL PROTOCOL.ISO_15765_3_on_ISO_15765_2, .ISO_15765_3_on_ISO_15765_2, BUSTYPE.ISO_11898_2_DWCAN, BUSTYPE .ISO_11898_2_DWCAN, PORT.CAN1)) PORT.CAN1)) { // Read ComParams ComParams and UniqueRespIdTa UniqueRespIdTable ble from file Console.WriteLine("Ma "MainT inThre hread: ad: Read Rea d ComPara ComParams ms and Unique UniqueRes RespId pIdTab Table le from from file... file..." ");
9.5
example_2.cs
38
link.readAndSetParamsFromFile("ComParam.ini" "ComParam.ini"); ); // Con Connec nect t Lin Link k Console.WriteLine("Ma "MainT inThre hread: ad: link.connect();
Connec Con nect t Lin Link.. k..." .");
// Sta Start rt sen send d and rec receiv eive e thr thread ead Console.WriteLine("Ma "MainT inThre hread: ad: Start Sta rt sen send d and and rec receiv eive e thre thread. ad." "); Thread Thread receiveThr receiveThread ead = new Thread(ReceiveThreadFunction); Thread Thread sendThread sendThread = new Thread(SendThreadFunction); receiveThread.Start(link); Thread.Sleep(1000); sendThread.Start(link); // Wai Wait t unt until il thr thread eads s hav have e fin finish ished ed receiveThread.Join(); sendThread.Join(); // Clo Close se all ope open n res resour ources ces Console.WriteLine("Ma "MainT inThre hread: ad:
Close Clo se all ope open n reso resourc urces. es..." ..");
} } } } catch (EasyPduException (EasyPduException e) { Console.WriteLine(e.Message); } // Wait for key to exit Console.WriteLine("\n<<>> -->>>" "); Console.ReadKey(); } public publ ic stati static c void ReceiveThreadFunction(object ReceiveThreadFunction(object link) { // Start recei receiving ving ComPr ComPrimiti imitive... ve... Console.WriteLine("Rece "ReceiveTh iveThread: read: Start rece receiving iving ComP ComPrimit rimitive." ive."); using (Cop receiveCop receiveCop = ((Link)lin ((Link)link).st k).startCo artCop( p(COP_TYPE COP_TYPE.SEND .SENDRECV, RECV, 0, -1, new byte[ byte[] ] { })) { Console.WriteLine("ReceiveThread: Receiving ComPrimitive started."); // Pol Poll l for res respon ponses ses Console.WriteLine("Rece "ReceiveTh iveThread: read: Poll for respo responses. nses..." .."); for (int i = 0 ; i < 1 0 ; i + + ) { using (Response response response = receiveCop receiveCop.getR .getRespon esponse()) se()) { if (response (response == null) break; break ; if (response.isError()) Console.WriteLine("Rec "ReceiveT eiveThread hread: : Error Error: : " + response.getErrorM response.getErrorMessage()); essage()); else Console.WriteLine("ReceiveThread: RespId(" RespId(" + response.getUniqueRespIdentifier() response.getUniqueRespIdentifier() + "): "): " + response.getDataAsHexString()); } } // Stop ComPr ComPrimiti imitive ve Console.WriteLine("Rece "ReceiveTh iveThread: read: Stop recei receiving ving ComPr ComPrimit imitive.. ive..." ."); } } public publ ic stati static c void SendThreadFunction(object SendThreadFunction(object link) { // Start sendi sending ng ComP ComPrimit rimitive.. ive... . Console.WriteLine("Se "SendT ndThre hread: ad: Start Sta rt sen sendin ding g Com ComPri Primit mitive ive." ."); Cop sendCop1 sendCop1 = ((Link)li ((Link)link).s nk).startC tartCop( op(COP_TYPE COP_TYPE.SE .SENDR NDRECV ECV, , 5, 0, new byte[ byte[] ] { 0x1 0x10, 0, 0x9 0x92 2 }); Cop sendCop2 sendCop2 = ((Link)li ((Link)link).s nk).startC tartCop( op(COP_TYPE COP_TYPE.SE .SENDR NDRECV ECV, , 5, 0, new byte[ byte[] ] { 0x10, 0x10, 0x9 0x92 2 }); sendCop1.waitUntilFinished(); sendCop2.waitUntilFinished(); Console.WriteLine("Se "SendT ndThre hread: ad: Sendin Sen ding g ComP ComPrim rimiti itive ve sta starte rted." d."); } }
9.5
example_2.cs
39
Index CAN1 EasyPDU, 17 EasyPDU, 17 CAN2 EasyPDU, 17 EasyPDU, 17 Cop, 20 Cop, 20 EDICblue EasyPDU, 20 EasyPDU, 20 EDICcard2 EasyPDU, 20 EasyPDU, 20 EDICpci EasyPDU, 20 EasyPDU, 20 EDICusb EasyPDU, 20 EasyPDU, 20 EDICwlan EasyPDU, 20 EasyPDU, 20 EasyPDU CAN1, 17 CAN1, 17 CAN2, 17 CAN2, 17 EDICblue, 20 EDICblue, 20 EDICcard2, 20 EDICcard2, 20 EDICpci, 20 EDICpci, 20 EDICusb, 20 EDICusb, 20 EDICwlan, 20 EDICwlan, 20 ISO_11898_2_DWCAN, 16 ISO_11898_2_DWCAN, 16 ISO_11898_3_DWFTCAN, 16 ISO_11898_3_DWFTCAN, 16 ISO_11898_RAW, 17 ISO_11898_RAW, 17 ISO_14230_1_UART, 16 ISO_14230_1_UART, 16 ISO_14230_3_on_ISO_14230_2, 17 ISO_14230_3_on_ISO_14230_2, 17 ISO_14230_3_on_ISO_15765_2, 17 ISO_14230_3_on_ISO_15765_2, 17 ISO_15031_5_on_ISO_14230_4, 17 ISO_15031_5_on_ISO_14230_4, 17 ISO_15031_5_on_ISO_15765_4, 17 ISO_15031_5_on_ISO_15765_4, 17 ISO_15031_5_on_ISO_9141_2, 17 ISO_15031_5_on_ISO_9141_2, 17 ISO_15765_3_on_ISO_15765_2, 17 ISO_15765_3_on_ISO_15765_2, 17 ISO_9141_2_UART, 16 ISO_9141_2_UART, 16 ISO_OBD_on_ISO_15765_4, 17 ISO_OBD_on_ISO_15765_4, 17 ISO_OBD_on_K_Line, 17 ISO_OBD_on_K_Line, 17 K_LINE, 17 K_LINE, 17 KL_LINE, 17 KL_LINE, 17 KW500_1_UART, 16 KW500_1_UART, 16 L_LINE, 17 L_LINE, 17 MOST, 16 MOST, 16 MOST_PORT, 17 MOST_PORT, 17 MSP_KW1281_on_ISO_9141_2, 17 MSP_KW1281_on_ISO_9141_2, 17 MSP_KW1281_on_TP16, 17 MSP_KW1281_on_TP16, 17 MSP_KW500_3_on_KW500_2, 17 MSP_KW500_3_on_KW500_2, 17 MSP_KW71_UART, 17 MSP_MOST_14229_on_MOST_DAP, 17 MSP_MOST_14229_on_MOST_DAP, 17 MSP_SFTNG_CAN, 17 MSP_SFTNG_ISO_11898_onboard, 17 MSP_SFTNG_ISO_11898_onboard, 17
MSP_VW2000LP_on_ISO_14230_2, 18 MSP_VW2000LP_on_ISO_14230_2, 18 MSP_VW2000LP_on_TP16, 18 MSP_VW2000LP_on_TP16, 18 MSP_VW2000LP_on_TP20, 18 MSP_VW2000LP_on_TP20, 18 PDU_CLLST_COMM_STARTED, 20 PDU_CLLST_OFFLINE, 20 PDU_CLLST_ONLINE, 20 PDU_COPST_CANCELLED, 20 PDU_COPST_EXECUTING, 19 PDU_COPST_FINISHED, 20 PDU_COPST_IDLE, 19 PDU_COPST_WAITING, 20 PDU_ERR_API_SW_OUT_OF_DATE, 19 PDU_ERR_CABLE_UNKNOWN, 19 PDU_ERR_CLL_CONNECTED, 19 PDU_ERR_CLL_NOT_CONNECTED, 19 PDU_ERR_CLL_NOT_STARTED, 19 PDU_ERR_COMM_PC_TO_VCI_FAILED, 18 PDU_ERR_COMPARAM_LOCKED, 19 PDU_ERR_COMPARAM_NOT_SUPPORTED, 19 PDU_ERR_EVENT_QUEUE_EMPTY, 19 PDU_ERR_EVT_FRAME_STRUCT, 18 PDU_ERR_EVT_INIT_ERROR, 18 PDU_ERR_EVT_LOST_COMM_TO_VCI, 18 PDU_ERR_EVT_LOST_COMM_TO_VCI, 18 PDU_ERR_EVT_NOERROR, 18 PDU_ERR_EVT_PROT_ERR, 18 PDU_ERR_EVT_RSC_LOCKED, 18 PDU_ERR_EVT_RX_ERROR, 18 PDU_ERR_EVT_RX_TIMEOUT, 18 PDU_ERR_EVT_TESTER_PRESENT_ERROR, 18 PDU_ERR_EVT_TX_ERROR, 18 PDU_ERR_EVT_VCI_HARDWARE_FAULT, 18 PDU_ERR_FCT_FAILED, 18 PDU_ERR_ID_NOT_SUPPORTED, 19 PDU_ERR_INVALID_HANDLE, 19 PDU_ERR_INVALID_PARAMETERS, 19 PDU_ERR_MODULE_FW_OUT_OF_DATE, 19 PDU_ERR_MODULE_NOT_CONNECTED, 19 PDU_ERR_MUX_RSC_NOT_SUPPORTED, 19 PDU_ERR_NO_CABLE_DETECTED, 19 PDU_ERR_PDUAPI_NOT_CONSTRUCTED, 18 PDU_ERR_PIN_NOT_CONNECTED, 19 PDU_ERR_RESERVED_1, 18 PDU_ERR_RESOURCE_BUSY, 18 PDU_ERR_RESOURCE_ERROR, 19 PDU_ERR_RESOURCE_TABLE_CHANGED, 18 PDU_ERR_RSC_LOCKED, 19 PDU_ERR_RSC_LOCKED_BY_OTHER_CLL, 19 PDU_ERR_RSC_NOT_LOCKED, 19 PDU_ERR_SHARING_VIOLATION, 18
PDU_ERR_TEMPPARAM_NOT_ALLOWED, 19 PDU_ERR_TX_QUEUE_FULL, 19 PDU_ERR_VALUE_NOT_SUPPORTED, 19 PDU_ERR_VOLTAGE_NOT_SUPPORTED, 19 PDU_MODST_AVAIL, 20 PDU_MODST_NOT_AVAIL, 20 PDU_MODST_NOT_READY, 20 PDU_MODST_READY, 20 PDU_STATUS_NOERROR, 18 SAE_J1939_11_DWCAN, 16 SAE_J1939_11_DWCAN, 16 SAE_J1939_73_on_SAE_J1939_21, 18 SAE_J1939_73_on_SAE_J1939_21, 18 SENDRECV, 17 STARTCOMM, 17 STOPCOMM, 17 STOPCOMM, 17 UPDATEPARAM, 17 VCI_HS_LIGHT, 20 VCI_HS_LIGHT, 20 VCI_HS_PLUS, 20 VCI_HS_WLAN_HD, 20 VCI_HSC, 20 VCI_HSX, 20 ISO_11898_2_DWCAN EasyPDU, 16 EasyPDU, 16 ISO_11898_3_DWFTCAN EasyPDU, 16 EasyPDU, 16 ISO_11898_RAW EasyPDU, 17 EasyPDU, 17 ISO_14230_1_UART EasyPDU, 16 EasyPDU, 16 ISO_14230_3_on_ISO_14230_2 EasyPDU, 17 EasyPDU, 17 ISO_14230_3_on_ISO_15765_2 EasyPDU, 17 EasyPDU, 17 ISO_15031_5_on_ISO_14230_4 EasyPDU, 17 EasyPDU, 17 ISO_15031_5_on_ISO_15765_4 EasyPDU, 17 EasyPDU, 17 ISO_15031_5_on_ISO_9141_2 EasyPDU, 17 EasyPDU, 17 ISO_15765_3_on_ISO_15765_2 EasyPDU, 17 EasyPDU, 17 ISO_9141_2_UART EasyPDU, 16 EasyPDU, 16 ISO_OBD_on_ISO_15765_4 EasyPDU, 17 EasyPDU, 17 ISO_OBD_on_K_Line EasyPDU, 17 EasyPDU, 17 K_LINE EasyPDU, 17 EasyPDU, 17 KL_LINE EasyPDU, 17 EasyPDU, 17 KW500_1_UART INDEX
EasyPDU, 16 EasyPDU, 16 L_LINE EasyPDU, 17 EasyPDU, 17 Link, 23 Link, 23 MOST EasyPDU, 16 EasyPDU, 16 MOST_PORT EasyPDU, 17 EasyPDU, 17 MSP_KW1281_on_ISO_9141_2 EasyPDU, 17 EasyPDU, 17 MSP_KW1281_on_TP16 EasyPDU, 17 EasyPDU, 17 MSP_KW500_3_on_KW500_2 EasyPDU, 17 EasyPDU, 17 MSP_KW71_UART EasyPDU, 17 EasyPDU, 17 MSP_MOST_14229_on_MOST_DAP EasyPDU, 17 EasyPDU, 17 MSP_SFTNG_CAN EasyPDU, 17 EasyPDU, 17 MSP_SFTNG_ISO_11898_onboard EasyPDU, 17 EasyPDU, 17 MSP_VW2000LP_on_ISO_14230_2 EasyPDU, 18 EasyPDU, 18 MSP_VW2000LP_on_TP16 EasyPDU, 18 EasyPDU, 18 MSP_VW2000LP_on_TP20 EasyPDU, 18 EasyPDU, 18 PDU_CLLST_COMM_STARTED EasyPDU, 20 EasyPDU, 20 PDU_CLLST_OFFLINE EasyPDU, 20 EasyPDU, 20 PDU_CLLST_ONLINE EasyPDU, 20 EasyPDU, 20 PDU_COPST_CANCELLED EasyPDU, 20 EasyPDU, 20 PDU_COPST_EXECUTING EasyPDU, 19 EasyPDU, 19 PDU_COPST_FINISHED EasyPDU, 20 EasyPDU, 20 PDU_COPST_IDLE EasyPDU, 19 EasyPDU, 19 PDU_COPST_WAITING EasyPDU, 20 EasyPDU, 20 PDU_ERR_API_SW_OUT_OF_DATE EasyPDU, 19 EasyPDU, 19 PDU_ERR_CABLE_UNKNOWN EasyPDU, 19 EasyPDU, 19 PDU_ERR_CLL_CONNECTED EasyPDU, 19 EasyPDU, 19 41
PDU_ERR_CLL_NOT_CONNECTED EasyPDU, 19 EasyPDU, 19 PDU_ERR_CLL_NOT_STARTED EasyPDU, 19 EasyPDU, 19 PDU_ERR_COMM_PC_TO_VCI_FAILED EasyPDU, 18 EasyPDU, 18 PDU_ERR_COMPARAM_LOCKED EasyPDU, 19 EasyPDU, 19 PDU_ERR_COMPARAM_NOT_SUPPORTED EasyPDU, 19 EasyPDU, 19 PDU_ERR_EVENT_QUEUE_EMPTY EasyPDU, 19 EasyPDU, 19 PDU_ERR_EVT_FRAME_STRUCT EasyPDU, 18 EasyPDU, 18 PDU_ERR_EVT_INIT_ERROR EasyPDU, 18 EasyPDU, 18 PDU_ERR_EVT_LOST_COMM_TO_VCI EasyPDU, 18 EasyPDU, 18 PDU_ERR_EVT_NOERROR EasyPDU, 18 EasyPDU, 18 PDU_ERR_EVT_PROT_ERR EasyPDU, 18 EasyPDU, 18 PDU_ERR_EVT_RSC_LOCKED EasyPDU, 18 EasyPDU, 18 PDU_ERR_EVT_RX_ERROR EasyPDU, 18 EasyPDU, 18 PDU_ERR_EVT_RX_TIMEOUT EasyPDU, 18 EasyPDU, 18 PDU_ERR_EVT_TESTER_PRESENT_ERROR EasyPDU, 18 EasyPDU, 18 PDU_ERR_EVT_TX_ERROR EasyPDU, 18 EasyPDU, 18 PDU_ERR_EVT_VCI_HARDWARE_FAULT EasyPDU, 18 EasyPDU, 18 PDU_ERR_FCT_FAILED EasyPDU, 18 EasyPDU, 18 PDU_ERR_ID_NOT_SUPPORTED EasyPDU, 19 EasyPDU, 19 PDU_ERR_INVALID_HANDLE EasyPDU, 19 EasyPDU, 19 PDU_ERR_INVALID_PARAMETERS EasyPDU, 19 EasyPDU, 19 PDU_ERR_MODULE_FW_OUT_OF_DATE EasyPDU, 19 EasyPDU, 19 PDU_ERR_MODULE_NOT_CONNECTED EasyPDU, 19 EasyPDU, 19 PDU_ERR_MUX_RSC_NOT_SUPPORTED EasyPDU, 19 EasyPDU, 19 PDU_ERR_NO_CABLE_DETECTED EasyPDU, 19 EasyPDU, 19 PDU_ERR_PDUAPI_NOT_CONSTRUCTED EasyPDU, 18 EasyPDU, 18 PDU_ERR_PIN_NOT_CONNECTED INDEX
EasyPDU, 19 EasyPDU, 19 PDU_ERR_RESERVED_1 EasyPDU, 18 EasyPDU, 18 PDU_ERR_RESOURCE_BUSY EasyPDU, 18 EasyPDU, 18 PDU_ERR_RESOURCE_ERROR EasyPDU, 19 EasyPDU, 19 PDU_ERR_RESOURCE_TABLE_CHANGED EasyPDU, 18 EasyPDU, 18 PDU_ERR_RSC_LOCKED EasyPDU, 19 EasyPDU, 19 PDU_ERR_RSC_LOCKED_BY_OTHER_CLL EasyPDU, 19 EasyPDU, 19 PDU_ERR_RSC_NOT_LOCKED EasyPDU, 19 EasyPDU, 19 PDU_ERR_SHARING_VIOLATION EasyPDU, 18 EasyPDU, 18 PDU_ERR_TEMPPARAM_NOT_ALLOWED EasyPDU, 19 EasyPDU, 19 PDU_ERR_TX_QUEUE_FULL EasyPDU, 19 EasyPDU, 19 PDU_ERR_VALUE_NOT_SUPPORTED EasyPDU, 19 EasyPDU, 19 PDU_ERR_VOLTAGE_NOT_SUPPORTED EasyPDU, 19 EasyPDU, 19 PDU_MODST_AVAIL EasyPDU, 20 EasyPDU, 20 PDU_MODST_NOT_AVAIL EasyPDU, 20 EasyPDU, 20 PDU_MODST_NOT_READY EasyPDU, 20 EasyPDU, 20 PDU_MODST_READY EasyPDU, 20 EasyPDU, 20 PDU_STATUS_NOERROR EasyPDU, 18 EasyPDU, 18 Pduapi, 27 Pduapi, 27 Response, 30 Response, 30 SAE_J1939_11_DWCAN EasyPDU, 16 EasyPDU, 16 SAE_J1939_73_on_SAE_J1939_21 EasyPDU, 18 EasyPDU, 18 SENDRECV EasyPDU, 17 EasyPDU, 17 STARTCOMM EasyPDU, 17 EasyPDU, 17 STOPCOMM EasyPDU, 17 EasyPDU, 17 UPDATEPARAM EasyPDU, 17 EasyPDU, 17 VCI_HS_LIGHT 42
EasyPDU, 20 EasyPDU, 20 VCI_HS_PLUS EasyPDU, 20 EasyPDU, 20 VCI_HS_WLAN_HD EasyPDU, 20 EasyPDU, 20 VCI_HSC EasyPDU, 20 EasyPDU, 20 VCI_HSX EasyPDU, 20 EasyPDU, 20 Vci, 32 Vci, 32
INDEX
43