From 85f494419b43eb54a2ac2b0d69c5f49d669cd1b0 Mon Sep 17 00:00:00 2001 From: Alexander Wenzel Date: Fri, 14 Mar 2014 07:49:23 +0100 Subject: DLT Common API Wrapper. Signed-off-by: Alexander Wenzel --- include/dlt/CMakeLists.txt | 2 +- include/dlt/dlt_common_api.h | 241 ++++++++++++++++++++++++ src/examples/CMakeLists.txt | 7 +- src/examples/dlt-example-user-common-api.c | 291 +++++++++++++++++++++++++++++ 4 files changed, 539 insertions(+), 2 deletions(-) create mode 100644 include/dlt/dlt_common_api.h create mode 100644 src/examples/dlt-example-user-common-api.c diff --git a/include/dlt/CMakeLists.txt b/include/dlt/CMakeLists.txt index 95e764d..76121dd 100644 --- a/include/dlt/CMakeLists.txt +++ b/include/dlt/CMakeLists.txt @@ -14,6 +14,6 @@ # @licence end@ ######## -install(FILES dlt.h dlt_user.h dlt_user_macros.h dlt_client.h dlt_protocol.h dlt_common.h dlt_types.h dlt_version.h dlt_shm.h dlt_offline_trace.h dlt_filetransfer.h +install(FILES dlt.h dlt_user.h dlt_user_macros.h dlt_client.h dlt_protocol.h dlt_common.h dlt_types.h dlt_version.h dlt_shm.h dlt_offline_trace.h dlt_filetransfer.h dlt_common_api.h DESTINATION include/dlt COMPONENT devel) diff --git a/include/dlt/dlt_common_api.h b/include/dlt/dlt_common_api.h new file mode 100644 index 0000000..83acac5 --- /dev/null +++ b/include/dlt/dlt_common_api.h @@ -0,0 +1,241 @@ +/** + * @licence app begin@ + * Copyright (C) 2014 BMW AG + * + * This file is part of GENIVI Project Dlt - Diagnostic Log and Trace console apps. + * + * Contributions are licensed to the GENIVI Alliance under one or more + * Contribution License Agreements. + * + * \copyright + * This Source Code Form is subject to the terms of the + * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with + * this file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * + * \author Alexander Wenzel BMW 2011-2012 + * + * \file dlt_common_api.h + * For further information see http://www.genivi.org/. + * @licence end@ + */ + +/******************************************************************************* +** ** +** SRC-MODULE: dlt_commpn_api.h ** +** ** +** TARGET : linux ** +** ** +** PROJECT : DLT ** +** ** +** AUTHOR : Alexander Wenzel Alexander.AW.Wenzel@bmw.de ** +** ** +** PURPOSE : ** +** ** +** REMARKS : ** +** ** +** PLATFORM DEPENDANT [yes/no]: yes ** +** ** +** TO BE CHANGED BY USER [yes/no]: no ** +** ** +*******************************************************************************/ + +/******************************************************************************* +** Author Identity ** +******************************************************************************** +** ** +** Initials Name Company ** +** -------- ------------------------- ---------------------------------- ** +** aw Alexander Wenzel BMW ** +*******************************************************************************/ + +#ifndef DLT_COMMON_API_H +#define DLT_COMMON_API_H + +#include "dlt.h" + +/** + * Create an object for a new context. + * Common API with DLT Embedded + * This macro has to be called first for every. + * @param CONTEXT object containing information about one special logging context + */ +/* #define DLT_DECLARE_CONTEXT(CONTEXT) */ +/* UNCHANGED */ + +/** + * Use an object of a new context created in another module. + * Common API with DLT Embedded + * This macro has to be called first for every. + * @param CONTEXT object containing information about one special logging context + */ +/* #define DLT_IMPORT_CONTEXT(CONTEXT) */ +/* UNCHANGED */ + +/** + * Register application. + * Common API with DLT Embedded + * @param APPID application id with maximal four characters + * @param DESCRIPTION ASCII string containing description + */ +/* #define DLT_REGISTER_APP(APPID,DESCRIPTION) */ +/* UNCHANGED */ + +/** + * Register context including application (with default log level and default trace status) + * Common API with DLT Embedded + * @param CONTEXT object containing information about one special logging context + * @param CONTEXTID context id with maximal four characters + * @param APPID context id with maximal four characters + * @param DESCRIPTION ASCII string containing description + */ +#define DLT_REGISTER_CONTEXT_APP(CONTEXT,CONTEXTID,APPID,DESCRIPTION) \ + DLT_REGISTER_CONTEXT(CONTEXT,CONTEXTID,DESCRIPTION) + +/** + * Send log message with variable list of messages (intended for verbose mode) + * Common API with DLT Embedded + * @param CONTEXT object containing information about one special logging context + * @param LOGLEVEL the log level of the log message + * @param ARGS variable list of arguments + */ +/*****************************************/ +#define DLT_LOG0(CONTEXT,LOGLEVEL) \ + DLT_LOG(CONTEXT, LOGLEVEL ) +/*****************************************/ +#define DLT_LOG1(CONTEXT,LOGLEVEL, ARGS1) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1) +/*****************************************/ +#define DLT_LOG2(CONTEXT,LOGLEVEL, ARGS1, ARGS2) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2) +/*****************************************/ +#define DLT_LOG3(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3) +/*****************************************/ +#define DLT_LOG4(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4) +/*****************************************/ +#define DLT_LOG5(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5) +/*****************************************/ +#define DLT_LOG6(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6) +/*****************************************/ +#define DLT_LOG7(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7) +/*****************************************/ +#define DLT_LOG8(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8) +/*****************************************/ +#define DLT_LOG9(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9) +/*****************************************/ +#define DLT_LOG10(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10) +/*****************************************/ +#define DLT_LOG11(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11) +/*****************************************/ +#define DLT_LOG12(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12) +/*****************************************/ +#define DLT_LOG13(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13) +/*****************************************/ +#define DLT_LOG14(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13, ARGS14) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13, ARGS14) +/*****************************************/ +#define DLT_LOG15(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13, ARGS14, ARGS15) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13, ARGS14, ARGS15) +/*****************************************/ +#define DLT_LOG16(CONTEXT,LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13, ARGS14, ARGS15, ARGS16) \ + DLT_LOG(CONTEXT, LOGLEVEL, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13, ARGS14, ARGS15, ARGS16) + +/** + * Send log message with variable list of messages (intended for non-verbose mode) + * Common API with DLT Embedded + * @param CONTEXT object containing information about one special logging context + * @param LOGLEVEL the log level of the log message + * @param MSGID the message id of log message + * @param ARGS variable list of arguments: + calls to DLT_STRING(), DLT_BOOL(), DLT_FLOAT32(), DLT_FLOAT64(), + DLT_INT(), DLT_UINT(), DLT_RAW() + */ +/*****************************************/ +#define DLT_LOG_ID0(CONTEXT,LOGLEVEL,MSGID) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID ) +/*****************************************/ +#define DLT_LOG_ID1(CONTEXT,LOGLEVEL,MSGID, ARGS1) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1) +/*****************************************/ +#define DLT_LOG_ID2(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2) +/*****************************************/ +#define DLT_LOG_ID3(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3) +/*****************************************/ +#define DLT_LOG_ID4(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4) +/*****************************************/ +#define DLT_LOG_ID5(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5) +/*****************************************/ +#define DLT_LOG_ID6(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6) +/*****************************************/ +#define DLT_LOG_ID7(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7) +/*****************************************/ +#define DLT_LOG_ID8(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8) +/*****************************************/ +#define DLT_LOG_ID9(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9) +/*****************************************/ +#define DLT_LOG_ID10(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10) +/*****************************************/ +#define DLT_LOG_ID11(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11) +/*****************************************/ +#define DLT_LOG_ID12(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12) +/*****************************************/ +#define DLT_LOG_ID13(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13) +/*****************************************/ +#define DLT_LOG_ID14(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13, ARGS14) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13, ARGS14) +/*****************************************/ +#define DLT_LOG_ID15(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13, ARGS14, ARGS15) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13, ARGS14, ARGS15) +/*****************************************/ +#define DLT_LOG_ID16(CONTEXT,LOGLEVEL,MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13, ARGS14, ARGS15, ARGS16) \ + DLT_LOG_ID(CONTEXT, LOGLEVEL, MSGID, ARGS1, ARGS2, ARGS3, ARGS4, ARGS5, ARGS6, ARGS7, ARGS8, ARGS9, ARGS10, ARGS11, ARGS12, ARGS13, ARGS14, ARGS15, ARGS16) + +/** + * Unregister context. + * Common API with DLT Embedded + * @param CONTEXT object containing information about one special logging context + */ +/* #define DLT_UNREGISTER_CONTEXT(CONTEXT) */ +/* UNCHANGED */ + +/** + * Unregister application. + * Common API with DLT Embedded + */ +/* #define DLT_UNREGISTER_APP() */ +/* UNCHANGED */ + +/** + * Add string parameter to the log messsage. + * Common API with DLT Embedded + * In the future in none verbose mode the string will not be sent via DLT message. + * @param TEXT ASCII string + */ +#define DLT_CSTRING(TEXT) \ + DLT_STRING(TEXT) + +#endif /* DLT_COMMON_API_H */ + diff --git a/src/examples/CMakeLists.txt b/src/examples/CMakeLists.txt index a44bd2e..767afc7 100755 --- a/src/examples/CMakeLists.txt +++ b/src/examples/CMakeLists.txt @@ -19,6 +19,11 @@ 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_common_api_SRCS dlt-example-user-common-api.c) +add_executable(dlt-example-user-common-api ${dlt_example_user_common_api_SRCS}) +target_link_libraries(dlt-example-user-common-api dlt) +set_target_properties(dlt-example-user-common-api PROPERTIES LINKER_LANGUAGE C) + set(dlt_example_user_func_SRCS dlt-example-user-func.c) add_executable(dlt-example-user-func ${dlt_example_user_func_SRCS}) target_link_libraries(dlt-example-user-func dlt) @@ -29,7 +34,7 @@ add_executable( dlt-example-filetransfer ${dlt_example_filetransfer_SRCS}) target_link_libraries(dlt-example-filetransfer dlt ) set_target_properties(dlt-example-filetransfer PROPERTIES LINKER_LANGUAGE C) -install(TARGETS dlt-example-user dlt-example-user-func dlt-example-filetransfer +install(TARGETS dlt-example-user dlt-example-user-func dlt-example-user-common-api dlt-example-filetransfer RUNTIME DESTINATION bin COMPONENT base) diff --git a/src/examples/dlt-example-user-common-api.c b/src/examples/dlt-example-user-common-api.c new file mode 100644 index 0000000..64ebd97 --- /dev/null +++ b/src/examples/dlt-example-user-common-api.c @@ -0,0 +1,291 @@ +/** + * @licence app begin@ + * Copyright (C) 2012 BMW AG + * + * This file is part of GENIVI Project Dlt - Diagnostic Log and Trace console apps. + * + * Contributions are licensed to the GENIVI Alliance under one or more + * Contribution License Agreements. + * + * \copyright + * This Source Code Form is subject to the terms of the + * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with + * this file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * + * \author Alexander Wenzel BMW 2011-2012 + * + * \file dlt-example-user.c + * For further information see http://www.genivi.org/. + * @licence end@ + */ + + +/******************************************************************************* +** ** +** SRC-MODULE: dlt-example-common-api.c ** +** ** +** TARGET : linux ** +** ** +** PROJECT : DLT ** +** ** +** AUTHOR : Alexander Wenzel Alexander.AW.Wenzel@bmw.de ** +** ** +** PURPOSE : ** +** ** +** REMARKS : ** +** ** +** PLATFORM DEPENDANT [yes/no]: yes ** +** ** +** TO BE CHANGED BY USER [yes/no]: no ** +** ** +*******************************************************************************/ + +/******************************************************************************* +** Author Identity ** +******************************************************************************** +** ** +** Initials Name Company ** +** -------- ------------------------- ---------------------------------- ** +** aw Alexander Wenzel BMW ** +*******************************************************************************/ + +#include +#include +#include /* for printf() and fprintf() */ +#include /* for atoi() and exit() */ +#include /* for memset() */ +#include /* for close() */ + +#include "dlt_common_api.h" + +DLT_DECLARE_CONTEXT(mycontext); + +/** + * Print usage information of tool. + */ +void usage() +{ + char version[255]; + + dlt_get_version(version); + + printf("Usage: dlt-example-common-api [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(" -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"); + printf(" -m mode Set log mode 0=off,1=external,2=internal,3=both\n"); +#ifdef DLT_TEST_ENABLE + printf(" -c Corrupt user header\n"); + printf(" -s size Corrupt message size\n"); + printf(" -z size Size of message\n"); +#endif /* DLT_TEST_ENABLE */ +} + +/** + * Main function of tool. + */ +int main(int argc, char* argv[]) +{ +#ifdef DLT_TEST_ENABLE + int cflag = 0; + char *svalue = 0; + char *zvalue = 0; +#endif /* DLT_TEST_ENABLE */ + int gflag = 0; + char *dvalue = 0; + char *nvalue = 0; + char *message = 0; + + int index; + int c; + + char *text; + int num,maxnum; + int delay; + + int state=-1,newstate; + + opterr = 0; +#ifdef DLT_TEST_ENABLE + while ((c = getopt (argc, argv, "vgcd:n:z:s:")) != -1) +#else + while ((c = getopt (argc, argv, "vgd:n:")) != -1) +#endif /* DLT_TEST_ENABLE */ + { + switch (c) + { +#ifdef DLT_TEST_ENABLE + case 'c': + { + cflag = 1; + break; + } + case 's': + { + svalue = optarg; + break; + } + case 'z': + { + zvalue = optarg; + break; + } +#endif /* DLT_TEST_ENABLE */ + case 'g': + { + gflag = 1; + break; + } + case 'd': + { + dvalue = 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 (); + break;//for parasoft + } + } + } + + 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; + } + + DLT_REGISTER_APP("LOG","Test Application for Logging"); + DLT_REGISTER_CONTEXT_APP(mycontext,"TEST","LOG","Test Context for Logging"); + + text = message; + + 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_ID0(mycontext,DLT_LOG_INFO,10); + DLT_LOG_ID1(mycontext,DLT_LOG_INFO,11,DLT_UINT16(1011)); + DLT_LOG_ID2(mycontext,DLT_LOG_INFO,12,DLT_UINT32(1012),DLT_UINT32(1013)); + DLT_LOG_ID2(mycontext,DLT_LOG_INFO,13,DLT_UINT8(123),DLT_FLOAT32(1.12)); + DLT_LOG_ID1(mycontext,DLT_LOG_INFO,14,DLT_STRING("DEAD BEEF")); + } + +#ifdef DLT_TEST_ENABLE + if (cflag) + { + dlt_user_test_corrupt_user_header(1); + } + if (svalue) + { + dlt_user_test_corrupt_message_size(1,atoi(svalue)); + } + if (zvalue) + { + char* buffer = malloc(atoi(zvalue)); + DLT_LOG2(mycontext,DLT_LOG_WARN,DLT_STRING(text),DLT_RAW(buffer,atoi(zvalue))); + free(buffer); + } +#endif /* DLT_TEST_ENABLE */ + + for (num=0;num0) + { + usleep(delay); + } + } + + sleep(1); + + DLT_UNREGISTER_CONTEXT(mycontext); + + DLT_UNREGISTER_APP(); + + return 0; + +} + + -- cgit v1.2.1