diff options
author | Christian Muck <christian.muck@bmw.de> | 2011-04-11 15:41:05 +0200 |
---|---|---|
committer | Christian Muck <christian.muck@bmw.de> | 2011-04-11 15:41:05 +0200 |
commit | 760fb8a4daba3e403376099ce38aca8f88d695d3 (patch) | |
tree | 36b6f428cee8ba0af0fd50b3e44a3d4da9083a44 /src/examples | |
parent | 5394c6fa5bf40d9bc8619026cbc4c306211a8499 (diff) | |
download | DLT-daemon-760fb8a4daba3e403376099ce38aca8f88d695d3.tar.gz |
Init of dlt daemon
Diffstat (limited to 'src/examples')
-rwxr-xr-x | src/examples/CMakeLists.txt | 51 | ||||
-rwxr-xr-x | src/examples/dlt-example-non-verbose-1.xml | 499 | ||||
-rwxr-xr-x | src/examples/dlt-example-non-verbose.xml | 425 | ||||
-rwxr-xr-x | src/examples/dlt-example-user-func.c | 339 | ||||
-rwxr-xr-x | src/examples/dlt-example-user.c | 312 | ||||
-rwxr-xr-x | src/examples/wintestclient/ReadMe.txt | 36 | ||||
-rwxr-xr-x | src/examples/wintestclient/stdafx.cpp | 8 | ||||
-rwxr-xr-x | src/examples/wintestclient/stdafx.h | 15 | ||||
-rwxr-xr-x | src/examples/wintestclient/targetver.h | 13 | ||||
-rwxr-xr-x | src/examples/wintestclient/wintestclient.cpp | 65 | ||||
-rwxr-xr-x | src/examples/wintestclient/wintestclient.sln | 29 | ||||
-rwxr-xr-x | src/examples/wintestclient/wintestclient.vcproj | 213 |
12 files changed, 2005 insertions, 0 deletions
diff --git a/src/examples/CMakeLists.txt b/src/examples/CMakeLists.txt new file mode 100755 index 0000000..cb6fbb2 --- /dev/null +++ b/src/examples/CMakeLists.txt @@ -0,0 +1,51 @@ +####### +# Dlt - Diagnostic Log and Trace +# @licence make begin@ + # + # Copyright (C) 2011, BMW AG - Alexander Wenzel <alexander.wenzel@bmw.de> + # + # This program is free software; you can redistribute it and/or modify it under the terms of the + # GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation. + # This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General + # Public License, version 2.1, for more details. + # + # You should have received a copy of the GNU Lesser General Public License, version 2.1, along + # with this program; if not, see <http://www.gnu.org/licenses/lgpl-2.1.html>. + # + # Note that the copyright holders assume that the GNU Lesser General Public License, version 2.1, may + # also be applicable to programs even in cases in which the program is not a library in the technical sense. + # + # Linking DLT statically or dynamically with other modules is making a combined work based on DLT. You may + # license such other modules under the GNU Lesser General Public License, version 2.1. If you do not want to + # license your linked modules under the GNU Lesser General Public License, version 2.1, you + # may use the program under the following exception. + # + # As a special exception, the copyright holders of DLT give you permission to combine DLT + # with software programs or libraries that are released under any license unless such a combination is not + # permitted by the license of such a software program or library. You may copy and distribute such a + # system following the terms of the GNU Lesser General Public License, version 2.1, including this + # special exception, for DLT and the licenses of the other code concerned. + # + # Note that people who make modified versions of DLT are not obligated to grant this special exception + # for their modified versions; it is their choice whether to do so. The GNU Lesser General Public License, + # version 2.1, gives permission to release a modified version without this exception; this exception + # also makes it possible to release a modified version which carries forward this exception. + # + # @licence end@ +######## + +set(dlt_example_user_SRCS dlt-example-user) +add_executable(dlt-example-user ${dlt_example_user_SRCS}) +target_link_libraries(dlt-example-user dlt) +set_target_properties(dlt-example-user PROPERTIES LINKER_LANGUAGE C) + +set(dlt_example_user_func_SRCS dlt-example-user-func) +add_executable(dlt-example-user-func ${dlt_example_user_func_SRCS}) +target_link_libraries(dlt-example-user-func dlt) +set_target_properties(dlt-example-user-func PROPERTIES LINKER_LANGUAGE C) + +install(TARGETS dlt-example-user dlt-example-user-func + RUNTIME DESTINATION bin + COMPONENT base) + diff --git a/src/examples/dlt-example-non-verbose-1.xml b/src/examples/dlt-example-non-verbose-1.xml new file mode 100755 index 0000000..7baae8c --- /dev/null +++ b/src/examples/dlt-example-non-verbose-1.xml @@ -0,0 +1,499 @@ +<?xml version="1.0"?>
+<!-- -->
+<!-- DLT example for DLT non-verbose mode -->
+<!-- -->
+<!-- Author: Jens Levihn, -->
+<!-- PEIKER acustic GmbH & Co. KG, Max-Planck-Str. 32, 61381 Friedrichsdorf -->
+<!-- -->
+<!-- -->
+<fx:FIBEX xmlns:fx="http://www.asam.net/xml/fbx" xmlns:ho="http://www.asam.net/xml" xmlns:can="http://www.asam.net/xml/fbx/can" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.asam.net/xml/fbx xml_schema\fibex.xsd http://www.asam.net/xml/fbx/can xml_schema\fibex4can.xsd" VERSION="3.1.0">
+ <fx:PROJECT ID="projectTCB">
+ <ho:SHORT-NAME>projectTCB</ho:SHORT-NAME>
+ </fx:PROJECT>
+ <fx:ELEMENTS>
+ <!--***************************** ECU ***************************-->
+ <fx:ECUS>
+ <fx:ECU ID="TCB">
+ <ho:SHORT-NAME>TCB</ho:SHORT-NAME>
+ <fx:MANUFACTURER-EXTENSION>
+ <SW_VERSION>001.004.062</SW_VERSION>
+ <APPLICATIONS>
+ <APPLICATION>
+ <APPLICATION_ID>APP1</APPLICATION_ID>
+ <APPLICATION_DESCRIPTION>Application 1</APPLICATION_DESCRIPTION>
+ <CONTEXTS>
+ <CONTEXT>
+ <CONTEXT_ID>CON1</CONTEXT_ID>
+ <CONTEXT_DESCRIPTION>Context 1</CONTEXT_DESCRIPTION>
+ </CONTEXT>
+ </CONTEXTS>
+ </APPLICATION>
+ <APPLICATION>
+ <APPLICATION_ID>TEST</APPLICATION_ID>
+ <APPLICATION_DESCRIPTION>Test Application</APPLICATION_DESCRIPTION>
+ <CONTEXTS>
+ <CONTEXT>
+ <CONTEXT_ID>CON1</CONTEXT_ID>
+ <CONTEXT_DESCRIPTION>Context 1</CONTEXT_DESCRIPTION>
+ </CONTEXT>
+ </CONTEXTS>
+ </APPLICATION>
+ <APPLICATION>
+ <APPLICATION_ID>LAT</APPLICATION_ID>
+ <APPLICATION_DESCRIPTION>Log And Trace</APPLICATION_DESCRIPTION>
+ <CONTEXTS>
+ <CONTEXT>
+ <CONTEXT_ID>NV</CONTEXT_ID>
+ <CONTEXT_DESCRIPTION>NV test</CONTEXT_DESCRIPTION>
+ </CONTEXT>
+ </CONTEXTS>
+ </APPLICATION>
+ </APPLICATIONS>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:ECU>
+ </fx:ECUS>
+ <!--*************************** PDUS ***************************-->
+ <fx:PDUS>
+ <!--=============== Message 10 ==================-->
+ <!--=============== 1. Parameter ==================-->
+ <fx:PDU ID="PDU_10_0">
+ <ho:SHORT-NAME>PDU_10_0</ho:SHORT-NAME>
+ <ho:DESC>DLT non verbose test message.</ho:DESC>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ </fx:PDU>
+ <!--=============== Message 11 ==================-->
+ <!--=============== 1. Parameter ==================-->
+ <fx:PDU ID="PDU_11_0">
+ <ho:SHORT-NAME>PDU_11_0</ho:SHORT-NAME>
+ <ho:DESC>Buffer near limit. Free size:</ho:DESC>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ </fx:PDU>
+ <!--=============== 2. Parameter ==================-->
+ <fx:PDU ID="PDU_11_1">
+ <ho:SHORT-NAME>PDU_11_1</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>2</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ <fx:SIGNAL-INSTANCES>
+ <fx:SIGNAL-INSTANCE ID="S_11_1">
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ <fx:SIGNAL-REF ID-REF="S_UINT16"/>
+ </fx:SIGNAL-INSTANCE>
+ </fx:SIGNAL-INSTANCES>
+ </fx:PDU>
+ <!--=============== Message 12 ==================-->
+ <!--=============== 1. Parameter ==================-->
+ <fx:PDU ID="PDU_12_0">
+ <ho:SHORT-NAME>PDU_12_0</ho:SHORT-NAME>
+ <ho:DESC>Buffer size exceeded.</ho:DESC>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ </fx:PDU>
+ <!--=============== 2. Parameter ==================-->
+ <fx:PDU ID="PDU_12_1">
+ <ho:SHORT-NAME>PDU_12_1</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>4</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ <fx:SIGNAL-INSTANCES>
+ <fx:SIGNAL-INSTANCE ID="S_12_1">
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ <fx:SIGNAL-REF ID-REF="S_UINT32"/>
+ </fx:SIGNAL-INSTANCE>
+ </fx:SIGNAL-INSTANCES>
+ </fx:PDU>
+ <!--=============== 3. Parameter ==================-->
+ <fx:PDU ID="PDU_12_2">
+ <ho:SHORT-NAME>PDU_12_2</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>4</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ <fx:SIGNAL-INSTANCES>
+ <fx:SIGNAL-INSTANCE ID="S_12_2">
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ <fx:SIGNAL-REF ID-REF="S_UINT32"/>
+ </fx:SIGNAL-INSTANCE>
+ </fx:SIGNAL-INSTANCES>
+ </fx:PDU>
+ <!--=============== 4. Parameter ==================-->
+ <fx:PDU ID="PDU_12_3">
+ <ho:SHORT-NAME>PDU_12_3</ho:SHORT-NAME>
+ <ho:DESC>Process terminated.</ho:DESC>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ </fx:PDU>
+ <!--=============== Message 13 ==================-->
+ <!--=============== 1. Parameter ==================-->
+ <fx:PDU ID="PDU_13_0">
+ <ho:SHORT-NAME>PDU_13_0</ho:SHORT-NAME>
+ <ho:DESC>Temperature measurement</ho:DESC>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ </fx:PDU>
+ <!--=============== 2. Parameter ==================-->
+ <fx:PDU ID="PDU_13_1">
+ <ho:SHORT-NAME>PDU_13_1</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>1</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ <fx:SIGNAL-INSTANCES>
+ <fx:SIGNAL-INSTANCE ID="S_13_1">
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ <fx:SIGNAL-REF ID-REF="S_UINT8"/>
+ <fx:MANUFACTURER-EXTENSION>
+ <VARI_NAME>measurement_point</VARI_NAME>
+ <VARI_UNIT></VARI_UNIT>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:SIGNAL-INSTANCE>
+ </fx:SIGNAL-INSTANCES>
+ </fx:PDU>
+ <!--=============== 3. Parameter ==================-->
+ <fx:PDU ID="PDU_13_2">
+ <ho:SHORT-NAME>PDU_13_2</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>4</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ <fx:SIGNAL-INSTANCES>
+ <fx:SIGNAL-INSTANCE ID="S_13_2">
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ <fx:SIGNAL-REF ID-REF="S_FLOA32"/>
+ <fx:MANUFACTURER-EXTENSION>
+ <VARI_NAME>reading</VARI_NAME>
+ <VARI_UNIT>Kelvin</VARI_UNIT>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:SIGNAL-INSTANCE>
+ </fx:SIGNAL-INSTANCES>
+ </fx:PDU>
+ <!--=============== Message 14 ==================-->
+ <!--=============== 1. Parameter ==================-->
+ <fx:PDU ID="PDU_14_0">
+ <ho:SHORT-NAME>PDU_14_0</ho:SHORT-NAME>
+ <ho:DESC>Build ID:</ho:DESC>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ </fx:PDU>
+ <!--=============== 2. Parameter ==================-->
+ <fx:PDU ID="PDU_14_1">
+ <ho:SHORT-NAME>PDU_14_1</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ <fx:SIGNAL-INSTANCES>
+ <fx:SIGNAL-INSTANCE ID="S_14_1">
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ <fx:SIGNAL-REF ID-REF="S_STRG_ASCII"/>
+ </fx:SIGNAL-INSTANCE>
+ </fx:SIGNAL-INSTANCES>
+ </fx:PDU>
+ </fx:PDUS>
+ <!--*************************** FRAMES ***************************-->
+ <fx:FRAMES>
+ <!-- ================== 1. Log and Trace Message ============ -->
+ <fx:FRAME ID="ID_10">
+ <ho:SHORT-NAME>ID_10</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:FRAME-TYPE>OTHER</fx:FRAME-TYPE>
+ <fx:PDU-INSTANCES>
+ <fx:PDU-INSTANCE ID="P_10_0">
+ <fx:PDU-REF ID-REF="PDU_10_0"/>
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ </fx:PDU-INSTANCES>
+ <fx:MANUFACTURER-EXTENSION>
+ <MESSAGE_TYPE>DLT_TYPE_LOG</MESSAGE_TYPE>
+ <MESSAGE_INFO>DLT_LOG_INFO</MESSAGE_INFO>
+ <APPLICATION_ID>TEST</APPLICATION_ID>
+ <CONTEXT_ID>CON1</CONTEXT_ID>
+ <MESSAGE_SOURCE_FILE>dlt_test.c</MESSAGE_SOURCE_FILE>
+ <MESSAGE_LINE_NUMBER>411</MESSAGE_LINE_NUMBER>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:FRAME>
+ <!-- ================== 2. Log and Trace Message ============ -->
+ <fx:FRAME ID="ID_11">
+ <ho:SHORT-NAME>ID_1001</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>2</fx:BYTE-LENGTH>
+ <fx:FRAME-TYPE>OTHER</fx:FRAME-TYPE>
+ <fx:PDU-INSTANCES>
+ <fx:PDU-INSTANCE ID="P_11_0">
+ <fx:PDU-REF ID-REF="PDU_11_0"/>
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_1001_1">
+ <fx:PDU-REF ID-REF="PDU_11_1"/>
+ <fx:SEQUENCE-NUMBER>1</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ </fx:PDU-INSTANCES>
+ <fx:MANUFACTURER-EXTENSION>
+ <MESSAGE_TYPE>DLT_TYPE_LOG</MESSAGE_TYPE>
+ <MESSAGE_INFO>DLT_LOG_WARN</MESSAGE_INFO>
+ <APPLICATION_ID>APP1</APPLICATION_ID>
+ <CONTEXT_ID>CON1</CONTEXT_ID>
+ <MESSAGE_SOURCE_FILE>application_file.c</MESSAGE_SOURCE_FILE>
+ <MESSAGE_LINE_NUMBER>955</MESSAGE_LINE_NUMBER>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:FRAME>
+ <!-- ================== 3. Log and Trace Message ============ -->
+ <fx:FRAME ID="ID_12">
+ <ho:SHORT-NAME>ID_1002</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>2</fx:BYTE-LENGTH>
+ <fx:FRAME-TYPE>OTHER</fx:FRAME-TYPE>
+ <fx:PDU-INSTANCES>
+ <fx:PDU-INSTANCE ID="P_12_0">
+ <fx:PDU-REF ID-REF="PDU_12_0"/>
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_12_1">
+ <fx:PDU-REF ID-REF="PDU_12_1"/>
+ <fx:SEQUENCE-NUMBER>1</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_12_2">
+ <fx:PDU-REF ID-REF="PDU_12_2"/>
+ <fx:SEQUENCE-NUMBER>2</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_12_3">
+ <fx:PDU-REF ID-REF="PDU_12_3"/>
+ <fx:SEQUENCE-NUMBER>3</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ </fx:PDU-INSTANCES>
+ <fx:MANUFACTURER-EXTENSION>
+ <MESSAGE_TYPE>DLT_TYPE_LOG</MESSAGE_TYPE>
+ <MESSAGE_INFO>DLT_LOG_ERROR</MESSAGE_INFO>
+ <APPLICATION_ID>APP1</APPLICATION_ID>
+ <CONTEXT_ID>CON1</CONTEXT_ID>
+ <MESSAGE_SOURCE_FILE>application_file.c</MESSAGE_SOURCE_FILE>
+ <MESSAGE_LINE_NUMBER>1058</MESSAGE_LINE_NUMBER>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:FRAME>
+ <!-- ================== 4. Log and Trace Message ============ -->
+ <fx:FRAME ID="ID_13">
+ <ho:SHORT-NAME>ID_1003</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>5</fx:BYTE-LENGTH>
+ <fx:FRAME-TYPE>OTHER</fx:FRAME-TYPE>
+ <fx:PDU-INSTANCES>
+ <fx:PDU-INSTANCE ID="P_13_0">
+ <fx:PDU-REF ID-REF="PDU_13_0"/>
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_13_1">
+ <fx:PDU-REF ID-REF="PDU_13_1"/>
+ <fx:SEQUENCE-NUMBER>1</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_13_2">
+ <fx:PDU-REF ID-REF="PDU_13_2"/>
+ <fx:SEQUENCE-NUMBER>2</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ </fx:PDU-INSTANCES>
+ <fx:MANUFACTURER-EXTENSION>
+ <MESSAGE_TYPE>DLT_TYPE_LOG</MESSAGE_TYPE>
+ <MESSAGE_INFO>DLT_LOG_INFO</MESSAGE_INFO>
+ <APPLICATION_ID>APP1</APPLICATION_ID>
+ <CONTEXT_ID>CON1</CONTEXT_ID>
+ <MESSAGE_SOURCE_FILE>temp_meas.c</MESSAGE_SOURCE_FILE>
+ <MESSAGE_LINE_NUMBER>42</MESSAGE_LINE_NUMBER>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:FRAME>
+ <!-- ================== 5. Log and Trace Message ============ -->
+ <fx:FRAME ID="ID_14">
+ <ho:SHORT-NAME>ID_14</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:FRAME-TYPE>OTHER</fx:FRAME-TYPE>
+ <fx:PDU-INSTANCES>
+ <fx:PDU-INSTANCE ID="P_14_0">
+ <fx:PDU-REF ID-REF="PDU_14_0"/>
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_14_1">
+ <fx:PDU-REF ID-REF="PDU_14_1"/>
+ <fx:SEQUENCE-NUMBER>1</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ </fx:PDU-INSTANCES>
+ <fx:MANUFACTURER-EXTENSION>
+ <MESSAGE_TYPE>DLT_TYPE_LOG</MESSAGE_TYPE>
+ <MESSAGE_INFO>DLT_LOG_INFO</MESSAGE_INFO>
+ <APPLICATION_ID>LAT</APPLICATION_ID>
+ <CONTEXT_ID>NV</CONTEXT_ID>
+ <MESSAGE_SOURCE_FILE>latsTask.c</MESSAGE_SOURCE_FILE>
+ <MESSAGE_LINE_NUMBER>421</MESSAGE_LINE_NUMBER>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:FRAME>
+ </fx:FRAMES>
+
+ <!--*************************** signals **************************-->
+ <fx:SIGNALS>
+ <!--======================= BOOL =====================-->
+ <fx:SIGNAL ID="S_BOOL">
+ <ho:SHORT-NAME>S_BOOL</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="BOOL"/>
+ </fx:SIGNAL>
+ <!--======================= SINT8 =====================-->
+ <fx:SIGNAL ID="S_SINT8">
+ <ho:SHORT-NAME>S_SINT8</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="SINT8"/>
+ </fx:SIGNAL>
+ <!--======================= UINT8 =====================-->
+ <fx:SIGNAL ID="S_UINT8">
+ <ho:SHORT-NAME>S_UINT8</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="UINT8"/>
+ </fx:SIGNAL>
+ <!--======================= SINT16 =====================-->
+ <fx:SIGNAL ID="S_SINT16">
+ <ho:SHORT-NAME>S_SINT16</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="SINT16"/>
+ </fx:SIGNAL>
+ <!--======================= UINT16 =====================-->
+ <fx:SIGNAL ID="S_UINT16">
+ <ho:SHORT-NAME>S_UINT16</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="UINT16"/>
+ </fx:SIGNAL>
+ <!--======================= SINT32 =====================-->
+ <fx:SIGNAL ID="S_SINT32">
+ <ho:SHORT-NAME>S_SINT32</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="SINT32"/>
+ </fx:SIGNAL>
+ <!--======================= UINT32 =====================-->
+ <fx:SIGNAL ID="S_UINT32">
+ <ho:SHORT-NAME>S_UINT32</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="UINT32"/>
+ </fx:SIGNAL>
+ <!--======================= SINT64 =====================-->
+ <fx:SIGNAL ID="S_SINT64">
+ <ho:SHORT-NAME>S_SINT64</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="SINT64"/>
+ </fx:SIGNAL>
+ <!--======================= UINT64 =====================-->
+ <fx:SIGNAL ID="S_UINT64">
+ <ho:SHORT-NAME>S_UINT64</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="UINT64"/>
+ </fx:SIGNAL>
+ <!--======================= FLOA16 =====================-->
+ <fx:SIGNAL ID="S_FLOA16">
+ <ho:SHORT-NAME>S_FLOA16</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="FLOA16"/>
+ </fx:SIGNAL>
+ <!--======================= FLOA32 =====================-->
+ <fx:SIGNAL ID="S_FLOA32">
+ <ho:SHORT-NAME>S_FLOA32</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="FLOA32"/>
+ </fx:SIGNAL>
+ <!--======================= FLOA64 =====================-->
+ <fx:SIGNAL ID="S_FLOA64">
+ <ho:SHORT-NAME>S_FLOA64</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="FLOA64"/>
+ </fx:SIGNAL>
+ <!--======================= STRG_ASCII =====================-->
+ <fx:SIGNAL ID="S_STRG_ASCII">
+ <ho:SHORT-NAME>S_STRG_ASCII</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="STRG_ASCII"/>
+ </fx:SIGNAL>
+ <!--======================= STRG_UTF8 =====================-->
+ <fx:SIGNAL ID="S_STRG_UTF8">
+ <ho:SHORT-NAME>S_STRG_UTF8</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="STRG_UTF8"/>
+ </fx:SIGNAL>
+ </fx:SIGNALS>
+ </fx:ELEMENTS>
+
+ <!--********************* PROCESSING INFORMATION *********************-->
+
+ <fx:PROCESSING-INFORMATION>
+ <!--*************************** codings ****************************-->
+ <fx:CODINGS>
+ <fx:CODING ID="BOOL">
+ <ho:SHORT-NAME>BOOL</ho:SHORT-NAME>
+ <ho:DESC>Coding for boolean values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_UINT8" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="UNSIGNED">
+ <ho:BIT-LENGTH>8</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="SINT8">
+ <ho:SHORT-NAME>SINT8</ho:SHORT-NAME>
+ <ho:DESC>Coding for signel 8bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_INT8" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="SIGNED">
+ <ho:BIT-LENGTH>8</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="UINT8">
+ <ho:SHORT-NAME>UINT8</ho:SHORT-NAME>
+ <ho:DESC>Coding for unsignel 8bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_UINT8" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="UNSIGNED">
+ <ho:BIT-LENGTH>8</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="SINT16">
+ <ho:SHORT-NAME>SINT16</ho:SHORT-NAME>
+ <ho:DESC>Coding for signel 16bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_INT16" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="SIGNED">
+ <ho:BIT-LENGTH>16</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="UINT16">
+ <ho:SHORT-NAME>UINT16</ho:SHORT-NAME>
+ <ho:DESC>Coding for unsignel 16bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_UINT16" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="UNSIGNED">
+ <ho:BIT-LENGTH>16</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="SINT32">
+ <ho:SHORT-NAME>SINT32</ho:SHORT-NAME>
+ <ho:DESC>Coding for signel 32bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_INT32" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="SIGNED">
+ <ho:BIT-LENGTH>32</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="UINT32">
+ <ho:SHORT-NAME>UINT32</ho:SHORT-NAME>
+ <ho:DESC>Coding for unsignel 32bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_UINT32" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="UNSIGNED">
+ <ho:BIT-LENGTH>32</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="SINT64">
+ <ho:SHORT-NAME>SINT64</ho:SHORT-NAME>
+ <ho:DESC>Coding for signel 64bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_INT64" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="SIGNED">
+ <ho:BIT-LENGTH>64</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="UINT64">
+ <ho:SHORT-NAME>UINT64</ho:SHORT-NAME>
+ <ho:DESC>Coding for unsignel 64bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_UINT64" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="UNSIGNED">
+ <ho:BIT-LENGTH>64</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="FLOA16">
+ <ho:SHORT-NAME>FLOA16</ho:SHORT-NAME>
+ <ho:DESC>Coding for float 16bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_FLOAT32" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="IEEE-FLOATING-TYPE">
+ <ho:BIT-LENGTH>16</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="FLOA32">
+ <ho:SHORT-NAME>FLOA32</ho:SHORT-NAME>
+ <ho:DESC>Coding for float 32bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_FLOAT32" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="IEEE-FLOATING-TYPE">
+ <ho:BIT-LENGTH>32</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="FLOA64">
+ <ho:SHORT-NAME>FLOA64</ho:SHORT-NAME>
+ <ho:DESC>Coding for float 64bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_FLOAT64" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="IEEE-FLOATING-TYPE">
+ <ho:BIT-LENGTH>64</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="STRG_ASCII">
+ <ho:SHORT-NAME>STRG_ASCII</ho:SHORT-NAME>
+ <ho:DESC>Coding for ASCII string.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_ASCIISTRING" CATEGORY="STANDARD-LENGTH-TYPE" TERMINATION="ZERO">
+ <ho:MIN-LENGTH>0</ho:MIN-LENGTH>
+ <ho:MAX-LENGTH>255</ho:MAX-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="STRG_UTF8">
+ <ho:SHORT-NAME>STRG_UTF8</ho:SHORT-NAME>
+ <ho:DESC>Coding for UTF8 string.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_UNICODE2STRING" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="UTF-8" TERMINATION="ZERO">
+ <ho:MIN-LENGTH>0</ho:MIN-LENGTH>
+ <ho:MAX-LENGTH>255</ho:MAX-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ </fx:CODINGS>
+ </fx:PROCESSING-INFORMATION>
+</fx:FIBEX>
diff --git a/src/examples/dlt-example-non-verbose.xml b/src/examples/dlt-example-non-verbose.xml new file mode 100755 index 0000000..3b31ed3 --- /dev/null +++ b/src/examples/dlt-example-non-verbose.xml @@ -0,0 +1,425 @@ +<?xml version="1.0"?>
+<!-- -->
+<!-- DLT example for DLT non-verbose mode -->
+<!-- -->
+<!-- Author: Jens Levihn, -->
+<!-- PEIKER acustic GmbH & Co. KG, Max-Planck-Str. 32, 61381 Friedrichsdorf -->
+<!-- -->
+<!-- -->
+<fx:FIBEX xmlns:fx="http://www.asam.net/xml/fbx" xmlns:ho="http://www.asam.net/xml" xmlns:can="http://www.asam.net/xml/fbx/can" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.asam.net/xml/fbx xml_schema\fibex.xsd http://www.asam.net/xml/fbx/can xml_schema\fibex4can.xsd" VERSION="3.1.0">
+ <fx:PROJECT ID="projectTCB">
+ <ho:SHORT-NAME>projectTCB</ho:SHORT-NAME>
+ </fx:PROJECT>
+ <fx:ELEMENTS>
+ <!--***************************** ECU ***************************-->
+ <fx:ECUS>
+ <fx:ECU ID="TCB">
+ <ho:SHORT-NAME>TCB</ho:SHORT-NAME>
+ <fx:MANUFACTURER-EXTENSION>
+ <SW_VERSION>001.004.062</SW_VERSION>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:ECU>
+ </fx:ECUS>
+ <!--*************************** PDUS ***************************-->
+ <fx:PDUS>
+ <!--=============== Message 10 ==================-->
+ <!--=============== 1. Parameter ==================-->
+ <fx:PDU ID="PDU_10_0">
+ <ho:SHORT-NAME>PDU_10_0</ho:SHORT-NAME>
+ <ho:DESC>DLT non verbose test message.</ho:DESC>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ </fx:PDU>
+ <!--=============== Message 11 ==================-->
+ <!--=============== 1. Parameter ==================-->
+ <fx:PDU ID="PDU_11_0">
+ <ho:SHORT-NAME>PDU_11_0</ho:SHORT-NAME>
+ <ho:DESC>Buffer near limit. Free size:</ho:DESC>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ </fx:PDU>
+ <!--=============== 2. Parameter ==================-->
+ <fx:PDU ID="PDU_11_1">
+ <ho:SHORT-NAME>PDU_11_1</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>2</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ <fx:SIGNAL-INSTANCES>
+ <fx:SIGNAL-INSTANCE ID="S_11_1">
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ <fx:SIGNAL-REF ID-REF="S_UINT16"/>
+ </fx:SIGNAL-INSTANCE>
+ </fx:SIGNAL-INSTANCES>
+ </fx:PDU>
+ <!--=============== Message 12 ==================-->
+ <!--=============== 1. Parameter ==================-->
+ <fx:PDU ID="PDU_12_0">
+ <ho:SHORT-NAME>PDU_12_0</ho:SHORT-NAME>
+ <ho:DESC>Buffer size exceeded.</ho:DESC>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ </fx:PDU>
+ <!--=============== 2. Parameter ==================-->
+ <fx:PDU ID="PDU_12_1">
+ <ho:SHORT-NAME>PDU_12_1</ho:SHORT-NAME>
+ <ho:DESC>Requested size:</ho:DESC>
+ <fx:BYTE-LENGTH>4</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ <fx:SIGNAL-INSTANCES>
+ <fx:SIGNAL-INSTANCE ID="S_12_1">
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ <fx:SIGNAL-REF ID-REF="S_UINT32"/>
+ </fx:SIGNAL-INSTANCE>
+ </fx:SIGNAL-INSTANCES>
+ </fx:PDU>
+ <!--=============== 3. Parameter ==================-->
+ <fx:PDU ID="PDU_12_2">
+ <ho:SHORT-NAME>PDU_12_2</ho:SHORT-NAME>
+ <ho:DESC>Free size:</ho:DESC>
+ <fx:BYTE-LENGTH>4</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ <fx:SIGNAL-INSTANCES>
+ <fx:SIGNAL-INSTANCE ID="S_12_2">
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ <fx:SIGNAL-REF ID-REF="S_UINT32"/>
+ </fx:SIGNAL-INSTANCE>
+ </fx:SIGNAL-INSTANCES>
+ </fx:PDU>
+ <!--=============== 4. Parameter ==================-->
+ <fx:PDU ID="PDU_12_3">
+ <ho:SHORT-NAME>PDU_12_3</ho:SHORT-NAME>
+ <ho:DESC>Process terminated.</ho:DESC>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ </fx:PDU>
+ <!--=============== Message 13 ==================-->
+ <!--=============== 1. Parameter ==================-->
+ <fx:PDU ID="PDU_13_0">
+ <ho:SHORT-NAME>PDU_13_0</ho:SHORT-NAME>
+ <ho:DESC>Temperature measurement</ho:DESC>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ </fx:PDU>
+ <!--=============== 2. Parameter ==================-->
+ <fx:PDU ID="PDU_13_1">
+ <ho:SHORT-NAME>PDU_13_1</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>1</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ <fx:SIGNAL-INSTANCES>
+ <fx:SIGNAL-INSTANCE ID="S_13_1">
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ <fx:SIGNAL-REF ID-REF="S_UINT8"/>
+ <fx:MANUFACTURER-EXTENSION>
+ <VARI_NAME>measurement_point</VARI_NAME>
+ <VARI_UNIT></VARI_UNIT>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:SIGNAL-INSTANCE>
+ </fx:SIGNAL-INSTANCES>
+ </fx:PDU>
+ <!--=============== 3. Parameter ==================-->
+ <fx:PDU ID="PDU_13_2">
+ <ho:SHORT-NAME>PDU_13_2</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>4</fx:BYTE-LENGTH>
+ <fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
+ <fx:SIGNAL-INSTANCES>
+ <fx:SIGNAL-INSTANCE ID="S_13_2">
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ <fx:SIGNAL-REF ID-REF="S_FLOA32"/>
+ <fx:MANUFACTURER-EXTENSION>
+ <VARI_NAME>reading</VARI_NAME>
+ <VARI_UNIT>Kelvin</VARI_UNIT>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:SIGNAL-INSTANCE>
+ </fx:SIGNAL-INSTANCES>
+ </fx:PDU>
+ </fx:PDUS>
+ <!--*************************** FRAMES ***************************-->
+ <fx:FRAMES>
+ <!-- ================== 1. Log and Trace Message ============ -->
+ <fx:FRAME ID="ID_10">
+ <ho:SHORT-NAME>ID_10</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>0</fx:BYTE-LENGTH>
+ <fx:FRAME-TYPE>OTHER</fx:FRAME-TYPE>
+ <fx:PDU-INSTANCES>
+ <fx:PDU-INSTANCE ID="P_10_0">
+ <fx:PDU-REF ID-REF="PDU_10_0"/>
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ </fx:PDU-INSTANCES>
+ <fx:MANUFACTURER-EXTENSION>
+ <MESSAGE_TYPE>DLT_TYPE_LOG</MESSAGE_TYPE>
+ <MESSAGE_INFO>DLT_LOG_INFO</MESSAGE_INFO>
+ <APPLICATION_ID>TEST</APPLICATION_ID>
+ <CONTEXT_ID>CON1</CONTEXT_ID>
+ <MESSAGE_SOURCE_FILE>dlt_test.c</MESSAGE_SOURCE_FILE>
+ <MESSAGE_LINE_NUMBER>411</MESSAGE_LINE_NUMBER>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:FRAME>
+ <!-- ================== 2. Log and Trace Message ============ -->
+ <fx:FRAME ID="ID_11">
+ <ho:SHORT-NAME>ID_11</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>2</fx:BYTE-LENGTH>
+ <fx:FRAME-TYPE>OTHER</fx:FRAME-TYPE>
+ <fx:PDU-INSTANCES>
+ <fx:PDU-INSTANCE ID="P_11_0">
+ <fx:PDU-REF ID-REF="PDU_11_0"/>
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_11_1">
+ <fx:PDU-REF ID-REF="PDU_11_1"/>
+ <fx:SEQUENCE-NUMBER>1</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ </fx:PDU-INSTANCES>
+ <fx:MANUFACTURER-EXTENSION>
+ <MESSAGE_TYPE>DLT_TYPE_LOG</MESSAGE_TYPE>
+ <MESSAGE_INFO>DLT_LOG_WARN</MESSAGE_INFO>
+ <APPLICATION_ID>APP1</APPLICATION_ID>
+ <CONTEXT_ID>CON1</CONTEXT_ID>
+ <MESSAGE_SOURCE_FILE>application_file.c</MESSAGE_SOURCE_FILE>
+ <MESSAGE_LINE_NUMBER>955</MESSAGE_LINE_NUMBER>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:FRAME>
+ <!-- ================== 3. Log and Trace Message ============ -->
+ <fx:FRAME ID="ID_12">
+ <ho:SHORT-NAME>ID_12</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>8</fx:BYTE-LENGTH>
+ <fx:FRAME-TYPE>OTHER</fx:FRAME-TYPE>
+ <fx:PDU-INSTANCES>
+ <fx:PDU-INSTANCE ID="P_12_0">
+ <fx:PDU-REF ID-REF="PDU_12_0"/>
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_12_1">
+ <fx:PDU-REF ID-REF="PDU_12_1"/>
+ <fx:SEQUENCE-NUMBER>1</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_12_2">
+ <fx:PDU-REF ID-REF="PDU_12_2"/>
+ <fx:SEQUENCE-NUMBER>2</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_12_3">
+ <fx:PDU-REF ID-REF="PDU_12_3"/>
+ <fx:SEQUENCE-NUMBER>3</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ </fx:PDU-INSTANCES>
+ <fx:MANUFACTURER-EXTENSION>
+ <MESSAGE_TYPE>DLT_TYPE_LOG</MESSAGE_TYPE>
+ <MESSAGE_INFO>DLT_LOG_ERROR</MESSAGE_INFO>
+ <APPLICATION_ID>APP1</APPLICATION_ID>
+ <CONTEXT_ID>CON1</CONTEXT_ID>
+ <MESSAGE_SOURCE_FILE>application_file.c</MESSAGE_SOURCE_FILE>
+ <MESSAGE_LINE_NUMBER>1058</MESSAGE_LINE_NUMBER>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:FRAME>
+ <!-- ================== 4. Log and Trace Message ============ -->
+ <fx:FRAME ID="ID_13">
+ <ho:SHORT-NAME>ID_13</ho:SHORT-NAME>
+ <fx:BYTE-LENGTH>5</fx:BYTE-LENGTH>
+ <fx:FRAME-TYPE>OTHER</fx:FRAME-TYPE>
+ <fx:PDU-INSTANCES>
+ <fx:PDU-INSTANCE ID="P_13_0">
+ <fx:PDU-REF ID-REF="PDU_13_0"/>
+ <fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_13_1">
+ <fx:PDU-REF ID-REF="PDU_13_1"/>
+ <fx:SEQUENCE-NUMBER>1</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ <fx:PDU-INSTANCE ID="P_13_2">
+ <fx:PDU-REF ID-REF="PDU_13_2"/>
+ <fx:SEQUENCE-NUMBER>2</fx:SEQUENCE-NUMBER>
+ </fx:PDU-INSTANCE>
+ </fx:PDU-INSTANCES>
+ <fx:MANUFACTURER-EXTENSION>
+ <MESSAGE_TYPE>DLT_TYPE_LOG</MESSAGE_TYPE>
+ <MESSAGE_INFO>DLT_LOG_INFO</MESSAGE_INFO>
+ <APPLICATION_ID>APP1</APPLICATION_ID>
+ <CONTEXT_ID>CON1</CONTEXT_ID>
+ <MESSAGE_SOURCE_FILE>temp_meas.c</MESSAGE_SOURCE_FILE>
+ <MESSAGE_LINE_NUMBER>42</MESSAGE_LINE_NUMBER>
+ </fx:MANUFACTURER-EXTENSION>
+ </fx:FRAME>
+ </fx:FRAMES>
+
+ <!--*************************** signals **************************-->
+ <fx:SIGNALS>
+ <!--======================= BOOL =====================-->
+ <fx:SIGNAL ID="S_BOOL">
+ <ho:SHORT-NAME>S_BOOL</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="BOOL"/>
+ </fx:SIGNAL>
+ <!--======================= SINT8 =====================-->
+ <fx:SIGNAL ID="S_SINT8">
+ <ho:SHORT-NAME>S_SINT8</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="SINT8"/>
+ </fx:SIGNAL>
+ <!--======================= UINT8 =====================-->
+ <fx:SIGNAL ID="S_UINT8">
+ <ho:SHORT-NAME>S_UINT8</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="UINT8"/>
+ </fx:SIGNAL>
+ <!--======================= SINT16 =====================-->
+ <fx:SIGNAL ID="S_SINT16">
+ <ho:SHORT-NAME>S_SINT16</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="SINT16"/>
+ </fx:SIGNAL>
+ <!--======================= UINT16 =====================-->
+ <fx:SIGNAL ID="S_UINT16">
+ <ho:SHORT-NAME>S_UINT16</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="UINT16"/>
+ </fx:SIGNAL>
+ <!--======================= SINT32 =====================-->
+ <fx:SIGNAL ID="S_SINT32">
+ <ho:SHORT-NAME>S_SINT32</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="SINT32"/>
+ </fx:SIGNAL>
+ <!--======================= UINT32 =====================-->
+ <fx:SIGNAL ID="S_UINT32">
+ <ho:SHORT-NAME>S_UINT32</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="UINT32"/>
+ </fx:SIGNAL>
+ <!--======================= SINT64 =====================-->
+ <fx:SIGNAL ID="S_SINT64">
+ <ho:SHORT-NAME>S_SINT64</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="SINT64"/>
+ </fx:SIGNAL>
+ <!--======================= UINT64 =====================-->
+ <fx:SIGNAL ID="S_UINT64">
+ <ho:SHORT-NAME>S_UINT64</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="UINT64"/>
+ </fx:SIGNAL>
+ <!--======================= FLOA16 =====================-->
+ <fx:SIGNAL ID="S_FLOA16">
+ <ho:SHORT-NAME>S_FLOA16</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="FLOA16"/>
+ </fx:SIGNAL>
+ <!--======================= FLOA32 =====================-->
+ <fx:SIGNAL ID="S_FLOA32">
+ <ho:SHORT-NAME>S_FLOA32</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="FLOA32"/>
+ </fx:SIGNAL>
+ <!--======================= FLOA64 =====================-->
+ <fx:SIGNAL ID="S_FLOA64">
+ <ho:SHORT-NAME>S_FLOA64</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="FLOA64"/>
+ </fx:SIGNAL>
+ <!--======================= STRG_ASCII =====================-->
+ <fx:SIGNAL ID="S_STRG_ASCII">
+ <ho:SHORT-NAME>S_STRG_ASCII</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="STRG_ASCII"/>
+ </fx:SIGNAL>
+ <!--======================= STRG_UTF8 =====================-->
+ <fx:SIGNAL ID="S_STRG_UTF8">
+ <ho:SHORT-NAME>S_STRG_UTF8</ho:SHORT-NAME>
+ <fx:CODING-REF ID-REF="STRG_UTF8"/>
+ </fx:SIGNAL>
+ </fx:SIGNALS>
+ </fx:ELEMENTS>
+
+ <!--********************* PROCESSING INFORMATION *********************-->
+
+ <fx:PROCESSING-INFORMATION>
+ <!--*************************** codings ****************************-->
+ <fx:CODINGS>
+ <fx:CODING ID="BOOL">
+ <ho:SHORT-NAME>BOOL</ho:SHORT-NAME>
+ <ho:DESC>Coding for boolean values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_UINT8" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="UNSIGNED">
+ <ho:BIT-LENGTH>8</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="SINT8">
+ <ho:SHORT-NAME>SINT8</ho:SHORT-NAME>
+ <ho:DESC>Coding for signel 8bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_INT8" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="SIGNED">
+ <ho:BIT-LENGTH>8</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="UINT8">
+ <ho:SHORT-NAME>UINT8</ho:SHORT-NAME>
+ <ho:DESC>Coding for unsignel 8bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_UINT8" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="UNSIGNED">
+ <ho:BIT-LENGTH>8</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="SINT16">
+ <ho:SHORT-NAME>SINT16</ho:SHORT-NAME>
+ <ho:DESC>Coding for signel 16bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_INT16" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="SIGNED">
+ <ho:BIT-LENGTH>16</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="UINT16">
+ <ho:SHORT-NAME>UINT16</ho:SHORT-NAME>
+ <ho:DESC>Coding for unsignel 16bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_UINT16" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="UNSIGNED">
+ <ho:BIT-LENGTH>16</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="SINT32">
+ <ho:SHORT-NAME>SINT32</ho:SHORT-NAME>
+ <ho:DESC>Coding for signel 32bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_INT32" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="SIGNED">
+ <ho:BIT-LENGTH>32</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="UINT32">
+ <ho:SHORT-NAME>UINT32</ho:SHORT-NAME>
+ <ho:DESC>Coding for unsignel 32bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_UINT32" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="UNSIGNED">
+ <ho:BIT-LENGTH>32</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="SINT64">
+ <ho:SHORT-NAME>SINT64</ho:SHORT-NAME>
+ <ho:DESC>Coding for signel 64bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_INT64" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="SIGNED">
+ <ho:BIT-LENGTH>64</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="UINT64">
+ <ho:SHORT-NAME>UINT64</ho:SHORT-NAME>
+ <ho:DESC>Coding for unsignel 64bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_UINT64" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="UNSIGNED">
+ <ho:BIT-LENGTH>64</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="FLOA16">
+ <ho:SHORT-NAME>FLOA16</ho:SHORT-NAME>
+ <ho:DESC>Coding for float 16bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_FLOAT32" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="IEEE-FLOATING-TYPE">
+ <ho:BIT-LENGTH>16</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="FLOA32">
+ <ho:SHORT-NAME>FLOA32</ho:SHORT-NAME>
+ <ho:DESC>Coding for float 32bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_FLOAT32" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="IEEE-FLOATING-TYPE">
+ <ho:BIT-LENGTH>32</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="FLOA64">
+ <ho:SHORT-NAME>FLOA64</ho:SHORT-NAME>
+ <ho:DESC>Coding for float 64bit values.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_FLOAT64" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="IEEE-FLOATING-TYPE">
+ <ho:BIT-LENGTH>64</ho:BIT-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="STRG_ASCII">
+ <ho:SHORT-NAME>STRG_ASCII</ho:SHORT-NAME>
+ <ho:DESC>Coding for ASCII string.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_ASCIISTRING" CATEGORY="STANDARD-LENGTH-TYPE" TERMINATION="ZERO">
+ <ho:MIN-LENGTH>0</ho:MIN-LENGTH>
+ <ho:MAX-LENGTH>255</ho:MAX-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ <fx:CODING ID="STRG_UTF8">
+ <ho:SHORT-NAME>STRG_UTF8</ho:SHORT-NAME>
+ <ho:DESC>Coding for UTF8 string.</ho:DESC>
+ <ho:CODED-TYPE ho:BASE-DATA-TYPE="A_UNICODE2STRING" CATEGORY="STANDARD-LENGTH-TYPE" ENCODING="UTF-8" TERMINATION="ZERO">
+ <ho:MIN-LENGTH>0</ho:MIN-LENGTH>
+ <ho:MAX-LENGTH>255</ho:MAX-LENGTH>
+ </ho:CODED-TYPE>
+ </fx:CODING>
+ </fx:CODINGS>
+ </fx:PROCESSING-INFORMATION>
+</fx:FIBEX>
diff --git a/src/examples/dlt-example-user-func.c b/src/examples/dlt-example-user-func.c new file mode 100755 index 0000000..2180a6b --- /dev/null +++ b/src/examples/dlt-example-user-func.c @@ -0,0 +1,339 @@ +/* + * Dlt Client console utilities - Diagnostic Log and Trace + * @licence app begin@ + * + * Copyright (C) 2011, BMW AG - Alexander Wenzel <alexander.wenzel@bmw.de> + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation. + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General + * Public License, version 2.1, for more details. + * + * You should have received a copy of the GNU Lesser General Public License, version 2.1, along + * with this program; if not, see <http://www.gnu.org/licenses/lgpl-2.1.html>. + * + * Note that the copyright holders assume that the GNU Lesser General Public License, version 2.1, may + * also be applicable to programs even in cases in which the program is not a library in the technical sense. + * + * Linking DLT statically or dynamically with other modules is making a combined work based on DLT. You may + * license such other modules under the GNU Lesser General Public License, version 2.1. If you do not want to + * license your linked modules under the GNU Lesser General Public License, version 2.1, you + * may use the program under the following exception. + * + * As a special exception, the copyright holders of DLT give you permission to combine DLT + * with software programs or libraries that are released under any license unless such a combination is not + * permitted by the license of such a software program or library. You may copy and distribute such a + * system following the terms of the GNU Lesser General Public License, version 2.1, including this + * special exception, for DLT and the licenses of the other code concerned. + * + * Note that people who make modified versions of DLT are not obligated to grant this special exception + * for their modified versions; it is their choice whether to do so. The GNU Lesser General Public License, + * version 2.1, gives permission to release a modified version without this exception; this exception + * also makes it possible to release a modified version which carries forward this exception. + * + * @licence end@ + */ + + +/******************************************************************************* +** ** +** SRC-MODULE: dlt-example-user-func.cpp ** +** ** +** TARGET : linux ** +** ** +** PROJECT : DLT ** +** ** +** AUTHOR : Alexander Wenzel Alexander.AW.Wenzel@bmw.de ** +** Markus Klein ** +** ** +** PURPOSE : ** +** ** +** REMARKS : ** +** ** +** PLATFORM DEPENDANT [yes/no]: yes ** +** ** +** TO BE CHANGED BY USER [yes/no]: no ** +** ** +*******************************************************************************/ + +/******************************************************************************* +** Author Identity ** +******************************************************************************** +** ** +** Initials Name Company ** +** -------- ------------------------- ---------------------------------- ** +** aw Alexander Wenzel BMW ** +** mk Markus Klein Fraunhofer ESK ** +*******************************************************************************/ + +/******************************************************************************* +** Revision Control History ** +*******************************************************************************/ + +/* + * $LastChangedRevision: 1670 $ + * $LastChangedDate: 2011-04-08 15:12:06 +0200 (Fr, 08. Apr 2011) $ + * $LastChangedBy$ + Initials Date Comment + aw 13.01.2010 initial + */ +#include <netdb.h> +#include <ctype.h> +#include <stdio.h> /* for printf() and fprintf() */ +#include <stdlib.h> /* for atoi() and exit() */ +#include <string.h> /* for memset() */ +#include <unistd.h> /* for close() */ + +#include "dlt.h" +#include "dlt_common.h" /* for dlt_get_version() */ + +int dlt_user_injection_callback(uint32_t service_id, void *data, uint32_t length); + +DltContext mycontext; +DltContextData mycontextdata; + +/** + * Print usage information of tool. + */ +void usage() +{ + char version[255]; + + dlt_get_version(version); + + printf("Usage: dlt-example-user-func [options] message\n"); + printf("Generate DLT messages and store them to file or send them to daemon.\n"); + printf("%s \n", version); + printf("Options:\n"); + printf(" -v Verbose mode\n"); + printf(" -d delay Milliseconds to wait between sending messages (Default: 500)\n"); + printf(" -f filename Use local log file instead of sending to daemon\n"); + printf(" -n count Number of messages to be generated (Default: 10)\n"); + printf(" -g Switch to non-verbose mode (Default: verbose mode)\n"); + printf(" -a Enable local printing of DLT messages (Default: disabled)\n"); +} + +/** + * Main function of tool. + */ +int main(int argc, char* argv[]) +{ + int vflag = 0; + int gflag = 0; + int aflag = 0; + char *dvalue = 0; + char *fvalue = 0; + char *nvalue = 0; + char *message = 0; + + int index; + int c; + char *text; + int num,maxnum; + int delay; + + opterr = 0; + + while ((c = getopt (argc, argv, "vgad:f:n:")) != -1) + { + switch (c) + { + case 'v': + { + vflag = 1; + break; + } + case 'g': + { + gflag = 1; + break; + } + case 'a': + { + aflag = 1; + break; + } + case 'd': + { + dvalue = optarg; + break; + } + case 'f': + { + fvalue = optarg; + break; + } + case 'n': + { + nvalue = optarg; + break; + } + case '?': + { + if (optopt == 'd' || optopt == 'f' || optopt == 'n') + { + fprintf (stderr, "Option -%c requires an argument.\n", optopt); + } + else if (isprint (optopt)) + { + fprintf (stderr, "Unknown option `-%c'.\n", optopt); + } + else + { + fprintf (stderr, "Unknown option character `\\x%x'.\n",optopt); + } + + /* unknown or wrong option used, show usage information and terminate */ + usage(); + return -1; + } + default: + { + abort (); + } + } + } + + for (index = optind; index < argc; index++) + { + message = argv[index]; + } + + if (message == 0) + { + /* no message, show usage and terminate */ + fprintf(stderr,"ERROR: No message selected\n"); + usage(); + return -1; + } + + if (fvalue) + { + /* DLT is intialised automatically, except another output target will be used */ + if (dlt_init_file(fvalue)<0) /* log to file */ + { + return -1; + } + } + + dlt_register_app("LOG","Test Application for Logging"); + + dlt_register_context(&mycontext,"TEST","Test Context for Logging"); + + dlt_register_injection_callback(&mycontext, 0xFFF, dlt_user_injection_callback); + + text = message; + + if (gflag) + { + dlt_nonverbose_mode(); + } + + if (aflag) + { + dlt_enable_local_print(); + } + + if (nvalue) + { + maxnum = atoi(nvalue); + } + else + { + maxnum = 10; + } + + if (dvalue) + { + delay = atoi(dvalue) * 1000; + } + else + { + delay = 500 * 1000; + } + + if (gflag) + { + /* DLT messages to test Fibex non-verbose description: dlt-example-non-verbose.xml */ + if (dlt_user_log_write_start_id(&mycontext,&mycontextdata,DLT_LOG_INFO,10)) + { + dlt_user_log_write_finish(&mycontextdata); + } + if (dlt_user_log_write_start_id(&mycontext,&mycontextdata,DLT_LOG_INFO,11)) + { + dlt_user_log_write_uint16(&mycontextdata,1011); + dlt_user_log_write_finish(&mycontextdata); + } + if (dlt_user_log_write_start_id(&mycontext,&mycontextdata,DLT_LOG_INFO,12)) + { + dlt_user_log_write_uint32(&mycontextdata,1012); + dlt_user_log_write_uint32(&mycontextdata,1013); + dlt_user_log_write_finish(&mycontextdata); + } + if (dlt_user_log_write_start_id(&mycontext,&mycontextdata,DLT_LOG_INFO,13)) + { + dlt_user_log_write_uint8(&mycontextdata,123); + dlt_user_log_write_float32(&mycontextdata,1.12); + dlt_user_log_write_finish(&mycontextdata); + } + if (dlt_user_log_write_start_id(&mycontext,&mycontextdata,DLT_LOG_INFO,14)) + { + dlt_user_log_write_string(&mycontextdata,"DEAD BEEF"); + dlt_user_log_write_finish(&mycontextdata); + } + } + + for (num=0;num<maxnum;num++) + { + printf("Send %d %s\n",num,text); + + if (gflag) + { + /* Non-verbose mode */ + if (dlt_user_log_write_start_id(&mycontext,&mycontextdata,DLT_LOG_WARN,num)) + { + dlt_user_log_write_int(&mycontextdata,num); + dlt_user_log_write_string(&mycontextdata,text); + dlt_user_log_write_finish(&mycontextdata); + } + } + else + { + /* Verbose mode */ + if (dlt_user_log_write_start(&mycontext,&mycontextdata,DLT_LOG_WARN)) + { + dlt_user_log_write_int(&mycontextdata,num); + dlt_user_log_write_string(&mycontextdata,text); + dlt_user_log_write_finish(&mycontextdata); + } + } + + if (delay>0) + { + usleep(delay); + } + } + + dlt_unregister_context(&mycontext); + + dlt_unregister_app(); + + dlt_free(); + + return 0; +} + +int dlt_user_injection_callback(uint32_t service_id, void *data, uint32_t length) +{ + char text[1024]; + + printf("Injection %d, Length=%d \n",service_id,length); + if (length>0) + { + dlt_print_mixed_string(text,1024,data,length,0); + printf("%s \n", text); + } + + return 0; +} diff --git a/src/examples/dlt-example-user.c b/src/examples/dlt-example-user.c new file mode 100755 index 0000000..98d4e3a --- /dev/null +++ b/src/examples/dlt-example-user.c @@ -0,0 +1,312 @@ +/* + * Dlt Client console utilities - Diagnostic Log and Trace + * @licence app begin@ + * + * Copyright (C) 2011, BMW AG - Alexander Wenzel <alexander.wenzel@bmw.de> + * + * This program is free software; you can redistribute it and/or modify it under the terms of the + * GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation. + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General + * Public License, version 2.1, for more details. + * + * You should have received a copy of the GNU Lesser General Public License, version 2.1, along + * with this program; if not, see <http://www.gnu.org/licenses/lgpl-2.1.html>. + * + * Note that the copyright holders assume that the GNU Lesser General Public License, version 2.1, may + * also be applicable to programs even in cases in which the program is not a library in the technical sense. + * + * Linking DLT statically or dynamically with other modules is making a combined work based on DLT. You may + * license such other modules under the GNU Lesser General Public License, version 2.1. If you do not want to + * license your linked modules under the GNU Lesser General Public License, version 2.1, you + * may use the program under the following exception. + * + * As a special exception, the copyright holders of DLT give you permission to combine DLT + * with software programs or libraries that are released under any license unless such a combination is not + * permitted by the license of such a software program or library. You may copy and distribute such a + * system following the terms of the GNU Lesser General Public License, version 2.1, including this + * special exception, for DLT and the licenses of the other code concerned. + * + * Note that people who make modified versions of DLT are not obligated to grant this special exception + * for their modified versions; it is their choice whether to do so. The GNU Lesser General Public License, + * version 2.1, gives permission to release a modified version without this exception; this exception + * also makes it possible to release a modified version which carries forward this exception. + * + * @licence end@ + */ + + +/******************************************************************************* +** ** +** SRC-MODULE: dlt-example-user.c ** +** ** +** TARGET : linux ** +** ** +** PROJECT : DLT ** +** ** +** AUTHOR : Alexander Wenzel Alexander.AW.Wenzel@bmw.de ** +** Markus Klein ** +** ** +** PURPOSE : ** +** ** +** REMARKS : ** +** ** +** PLATFORM DEPENDANT [yes/no]: yes ** +** ** +** TO BE CHANGED BY USER [yes/no]: no ** +** ** +*******************************************************************************/ + +/******************************************************************************* +** Author Identity ** +******************************************************************************** +** ** +** Initials Name Company ** +** -------- ------------------------- ---------------------------------- ** +** aw Alexander Wenzel BMW ** +** mk Markus Klein Fraunhofer ESK ** +*******************************************************************************/ + +/******************************************************************************* +** Revision Control History ** +*******************************************************************************/ + +/* + * $LastChangedRevision: 1670 $ + * $LastChangedDate: 2011-04-08 15:12:06 +0200 (Fr, 08. Apr 2011) $ + * $LastChangedBy$ + Initials Date Comment + aw 13.01.2010 initial + */ +#include <netdb.h> +#include <ctype.h> +#include <stdio.h> /* for printf() and fprintf() */ +#include <stdlib.h> /* for atoi() and exit() */ +#include <string.h> /* for memset() */ +#include <unistd.h> /* for close() */ + +#include "dlt.h" +#include "dlt_common.h" /* for dlt_get_version() */ + +int dlt_user_injection_callback(uint32_t service_id, void *data, uint32_t length); + +DLT_DECLARE_CONTEXT(mycontext); + +/** + * Print usage information of tool. + */ +void usage() +{ + char version[255]; + + dlt_get_version(version); + + printf("Usage: dlt-example-user [options] message\n"); + printf("Generate DLT messages and store them to file or send them to daemon.\n"); + printf("%s \n", version); + printf("Options:\n"); + printf(" -v Verbose mode\n"); + printf(" -d delay Milliseconds to wait between sending messages (Default: 500)\n"); + printf(" -f filename Use local log file instead of sending to daemon\n"); + printf(" -n count Number of messages to be generated (Default: 10)\n"); + printf(" -g Switch to non-verbose mode (Default: verbose mode)\n"); + printf(" -a Enable local printing of DLT messages (Default: disabled)\n"); +} + +/** + * Main function of tool. + */ +int main(int argc, char* argv[]) +{ + int vflag = 0; + int gflag = 0; + int aflag = 0; + char *dvalue = 0; + char *fvalue = 0; + char *nvalue = 0; + char *message = 0; + + int index; + int c; + + char *text; + int num,maxnum; + int delay; + + opterr = 0; + + while ((c = getopt (argc, argv, "vgad:f:n:")) != -1) + { + switch (c) + { + case 'v': + { + vflag = 1; + break; + } + case 'g': + { + gflag = 1; + break; + } + case 'a': + { + aflag = 1; + break; + } + case 'd': + { + dvalue = optarg; + break; + } + case 'f': + { + fvalue = optarg; + break; + } + case 'n': + { + nvalue = optarg; + break; + } + case '?': + { + if (optopt == 'd' || optopt == 'f' || optopt == 'n') + { + fprintf (stderr, "Option -%c requires an argument.\n", optopt); + } + else if (isprint (optopt)) + { + fprintf (stderr, "Unknown option `-%c'.\n", optopt); + } + else + { + fprintf (stderr, "Unknown option character `\\x%x'.\n",optopt); + } + + /* unknown or wrong option used, show usage information and terminate */ + usage(); + return -1; + } + default: + { + abort (); + } + } + } + + for (index = optind; index < argc; index++) + { + message = argv[index]; + } + + if (message == 0) + { + /* no message, show usage and terminate */ + fprintf(stderr,"ERROR: No message selected\n"); + usage(); + return -1; + } + + if (fvalue) + { + /* DLT is intialised automatically, except another output target will be used */ + if (dlt_init_file(fvalue)<0) /* log to file */ + { + return -1; + } + } + + DLT_REGISTER_APP("LOG","Test Application for Logging"); + DLT_REGISTER_CONTEXT(mycontext,"TEST","Test Context for Logging"); + + DLT_REGISTER_INJECTION_CALLBACK(mycontext, 0xFFF, dlt_user_injection_callback); + + text = message; + + if (gflag) + { + DLT_NONVERBOSE_MODE(); + } + + if (aflag) + { + DLT_ENABLE_LOCAL_PRINT(); + } + + if (nvalue) + { + maxnum = atoi(nvalue); + } + else + { + maxnum = 10; + } + + if (dvalue) + { + delay = atoi(dvalue) * 1000; + } + else + { + delay = 500 * 1000; + } + + if (gflag) + { + /* DLT messages to test Fibex non-verbose description: dlt-example-non-verbose.xml */ + DLT_LOG_ID(mycontext,DLT_LOG_INFO,10); + DLT_LOG_ID(mycontext,DLT_LOG_INFO,11,DLT_UINT16(1011)); + DLT_LOG_ID(mycontext,DLT_LOG_INFO,12,DLT_UINT32(1012),DLT_UINT32(1013)); + DLT_LOG_ID(mycontext,DLT_LOG_INFO,13,DLT_UINT8(123),DLT_FLOAT32(1.12)); + DLT_LOG_ID(mycontext,DLT_LOG_INFO,14,DLT_STRING("DEAD BEEF")); + } + + for (num=0;num<maxnum;num++) + { + printf("Send %d %s\n",num,text); + + + if (gflag) + { + /* Non-verbose mode */ + DLT_LOG_ID(mycontext,DLT_LOG_WARN,num,DLT_INT(num),DLT_STRING(text)); + } + else + { + /* Verbose mode */ + DLT_LOG(mycontext,DLT_LOG_WARN,DLT_INT(num),DLT_STRING(text)); + } + + if (delay>0) + { + usleep(delay); + } + } + + sleep(1); + + DLT_UNREGISTER_CONTEXT(mycontext); + + DLT_UNREGISTER_APP(); + + dlt_free(); + + return 0; + +} + +int dlt_user_injection_callback(uint32_t service_id, void *data, uint32_t length) +{ + char text[1024]; + + printf("Injection %d, Length=%d \n",service_id,length); + if (length>0) + { + dlt_print_mixed_string(text,1024,data,length,0); + printf("%s \n", text); + } + + return 0; +} + diff --git a/src/examples/wintestclient/ReadMe.txt b/src/examples/wintestclient/ReadMe.txt new file mode 100755 index 0000000..07566bd --- /dev/null +++ b/src/examples/wintestclient/ReadMe.txt @@ -0,0 +1,36 @@ +========================================================================
+ KONSOLENANWENDUNG: wintestclient-Projektübersicht
+========================================================================
+
+Diese wintestclient-Anwendung wurde vom Anwendungs-Assistenten
+für Sie erstellt.
+
+Die Datei enthält eine Zusammenfassung des Inhalts der Dateien,
+aus denen die wintestclient-Anwendung besteht.
+
+
+wintestclient.vcproj
+ Dies ist die Hauptprojektdatei für VC++-Projekte, die mit dem Anwendungs-
+ Assistenten generiert werden.
+ Sie enthält Informationen zu der Version von Visual C++, mit der die Datei
+ generiert wurde, sowie Informationen zu Plattformen, Konfigurationen und
+ Projektfeatures, die mit dem dem Anwendungs-Assistenten generiert werden.
+
+wintestclient.cpp
+ Dies ist die Hauptquelldatei der Anwendung.
+
+/////////////////////////////////////////////////////////////////////////////
+Andere Standarddateien:
+
+StdAfx.h, StdAfx.cpp
+ Mit diesen Dateien werden eine vorkompilierte Headerdatei (PCH)
+ mit dem Namen wintestclient.pch sowie eine vorkompilierte
+ Typendatei mit dem Namen StdAfx.obj erstellt.
+
+/////////////////////////////////////////////////////////////////////////////
+Weitere Hinweise:
+
+Der Anwendungs-Assistent verwendet "TODO:"-Kommentare, um die Teile des
+Quellcodes anzugeben, die hinzugefügt oder bearbeitet werden müssen.
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/src/examples/wintestclient/stdafx.cpp b/src/examples/wintestclient/stdafx.cpp new file mode 100755 index 0000000..859a62f --- /dev/null +++ b/src/examples/wintestclient/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : Quelldatei, die nur die Standard-Includes einbindet.
+// wintestclient.pch ist der vorkompilierte Header.
+// stdafx.obj enthält die vorkompilierten Typinformationen.
+
+#include "stdafx.h"
+
+// TODO: Auf zusätzliche Header verweisen, die in STDAFX.H
+// und nicht in dieser Datei erforderlich sind.
diff --git a/src/examples/wintestclient/stdafx.h b/src/examples/wintestclient/stdafx.h new file mode 100755 index 0000000..c2580d9 --- /dev/null +++ b/src/examples/wintestclient/stdafx.h @@ -0,0 +1,15 @@ +// stdafx.h : Includedatei für Standardsystem-Includedateien
+// oder häufig verwendete projektspezifische Includedateien,
+// die nur in unregelmäßigen Abständen geändert werden.
+//
+
+#pragma once
+
+#include "targetver.h"
+
+#include <stdio.h>
+#include <tchar.h>
+
+
+
+// TODO: Hier auf zusätzliche Header, die das Programm erfordert, verweisen.
diff --git a/src/examples/wintestclient/targetver.h b/src/examples/wintestclient/targetver.h new file mode 100755 index 0000000..abf0fc6 --- /dev/null +++ b/src/examples/wintestclient/targetver.h @@ -0,0 +1,13 @@ +#pragma once
+
+// Die folgenden Makros definieren die mindestens erforderliche Plattform. Die mindestens erforderliche Plattform
+// ist die früheste Windows-, Internet Explorer-Version usw., die über die erforderlichen Features zur Ausführung
+// Ihrer Anwendung verfügt. Die Makros aktivieren alle Funktionen, die auf den Plattformversionen bis
+// einschließlich der angegebenen Version verfügbar sind.
+
+// Ändern Sie folgende Definitionen für Plattformen, die älter als die unten angegebenen sind.
+// Unter MSDN finden Sie die neuesten Informationen über die entsprechenden Werte für die unterschiedlichen Plattformen.
+#ifndef _WIN32_WINNT // Gibt an, dass Windows Vista die mindestens erforderliche Plattform ist.
+#define _WIN32_WINNT 0x0600 // Ändern Sie den entsprechenden Wert, um auf andere Versionen von Windows abzuzielen.
+#endif
+
diff --git a/src/examples/wintestclient/wintestclient.cpp b/src/examples/wintestclient/wintestclient.cpp new file mode 100755 index 0000000..78225b2 --- /dev/null +++ b/src/examples/wintestclient/wintestclient.cpp @@ -0,0 +1,65 @@ +/******************************************************************************* +** ** +** SRC-MODULE: wintestclient.cpp ** +** ** +** TARGET : Windows ** +** ** +** PROJECT : DLT ** +** ** +** AUTHOR : Alexander Wenzel Alexander.AW.Wenzel@bmw.de ** +** Markus Klein ** +** ** +** PURPOSE : ** +** ** +** REMARKS : ** +** ** +** PLATFORM DEPENDANT [yes/no]: yes ** +** ** +** TO BE CHANGED BY USER [yes/no]: no ** +** ** +*******************************************************************************/ + +/******************************************************************************* +** Author Identity ** +******************************************************************************** +** ** +** Initials Name Company ** +** -------- ------------------------- ---------------------------------- ** +** aw Alexander Wenzel BMW ** +** mk Markus Klein Fraunhofer ESK ** +*******************************************************************************/ +
+#include "stdafx.h"
+#include "winclientlib.h"
+
+#include <string.h>
+
+static int counter=0;
+
+int My_message_Callback(DltMessage *message, void *data)
+{
+ counter++;
+
+ printf("Message received, %d\n", counter);
+ return 0;
+}
+
+int _tmain(int argc, _TCHAR* argv[])
+{
+ char text[] = "Hello from WinTestClient";
+
+ printf("WinTestClient\n");
+
+ Dlt_RegisterMessageCallback(My_message_Callback);
+
+ Dlt_StartClient("192.168.56.101");
+
+ Dlt_InjectCall("LOG","TEST",0xFFF,(uint8_t*)text,strlen(text)+1);
+
+ getchar();
+
+ Dlt_ExitClient();
+
+ return 0;
+}
+
diff --git a/src/examples/wintestclient/wintestclient.sln b/src/examples/wintestclient/wintestclient.sln new file mode 100755 index 0000000..a086994 --- /dev/null +++ b/src/examples/wintestclient/wintestclient.sln @@ -0,0 +1,29 @@ +
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual C++ Express 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wintestclient", "wintestclient.vcproj", "{C9C90C2B-DD7F-4EAD-B240-E35860756736}"
+ ProjectSection(ProjectDependencies) = postProject
+ {F3674DAE-F85A-428C-85FE-3529671DF6ED} = {F3674DAE-F85A-428C-85FE-3529671DF6ED}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winclientlib", "..\..\winclientlib\winclientlib.vcproj", "{F3674DAE-F85A-428C-85FE-3529671DF6ED}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {C9C90C2B-DD7F-4EAD-B240-E35860756736}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C9C90C2B-DD7F-4EAD-B240-E35860756736}.Debug|Win32.Build.0 = Debug|Win32
+ {C9C90C2B-DD7F-4EAD-B240-E35860756736}.Release|Win32.ActiveCfg = Release|Win32
+ {C9C90C2B-DD7F-4EAD-B240-E35860756736}.Release|Win32.Build.0 = Release|Win32
+ {F3674DAE-F85A-428C-85FE-3529671DF6ED}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F3674DAE-F85A-428C-85FE-3529671DF6ED}.Debug|Win32.Build.0 = Debug|Win32
+ {F3674DAE-F85A-428C-85FE-3529671DF6ED}.Release|Win32.ActiveCfg = Release|Win32
+ {F3674DAE-F85A-428C-85FE-3529671DF6ED}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/src/examples/wintestclient/wintestclient.vcproj b/src/examples/wintestclient/wintestclient.vcproj new file mode 100755 index 0000000..c1f3f17 --- /dev/null +++ b/src/examples/wintestclient/wintestclient.vcproj @@ -0,0 +1,213 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="wintestclient"
+ ProjectGUID="{C9C90C2B-DD7F-4EAD-B240-E35860756736}"
+ RootNamespace="wintestclient"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\include\dlt;..\..\include;..\..\winclientlib"
+ PreprocessorDefinitions="WIN32;__WIN32__;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winclientlib.lib"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories=".\Debug"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\include\dlt;..\..\include;..\..\winclientlib"
+ PreprocessorDefinitions="WIN32;__WIN32__;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Quelldateien"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\stdafx.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\wintestclient.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Headerdateien"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath=".\stdafx.h"
+ >
+ </File>
+ <File
+ RelativePath=".\targetver.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Ressourcendateien"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ <File
+ RelativePath=".\ReadMe.txt"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
|