summaryrefslogtreecommitdiff
path: root/doc/dlt_cheatsheet.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/dlt_cheatsheet.txt')
-rw-r--r--doc/dlt_cheatsheet.txt283
1 files changed, 0 insertions, 283 deletions
diff --git a/doc/dlt_cheatsheet.txt b/doc/dlt_cheatsheet.txt
deleted file mode 100644
index 8babc2a..0000000
--- a/doc/dlt_cheatsheet.txt
+++ /dev/null
@@ -1,283 +0,0 @@
-////
-# SPDX license identifier: MPL-2.0
-#
-# Copyright (C) 2011-2015, BMW AG
-#
-# This file is part of GENIVI Project DLT - Diagnostic Log and Trace.
-#
-# This Source Code Form is subject to the terms of the
-# Mozilla Public License (MPL), 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/.
-#
-# For further information see http://www.genivi.org/.
-////
-
-DLT Cheatsheet
-==============
-Alexander Wenzel <Alexander.AW.Wenzel@bmw.de>
-0.0.1, 2012/10/11: Initial version
-
-image::images/genivi_chrome_1_transparent.png[width=128]
-
-Overview
---------
-DLT is quiet easy to use. As an application developer you only need to follow some steps as described in this document.
-
-Initialisation:
-
-- Link your application against the DLT library
-- Include the DLT header file
-- Register your application
-- Define all contexts
-- Register all contexts
-
-Now you are ready to write your logs.
-
-Termination:
-
-- Unregister all contexts
-- Unregister application
-
-Link your application to DLT library
-------------------------------------
-If you compile your application with cmake, you have to add the following lines to your CMakeLists.txt
-
-----
-find_package(PkgConfig)
-pkg_check_modules(DLT REQUIRED automotive-dlt)
-----
-
-and use the variables $\{DLT_INCLUDE_DIRS\} and $\{DLT_LIBRARIES\} for the DLT include and library paths.
-
-Include the DLT Header
-----------------------
-To use DLT you have to include the DLT header file in each file you want to use DLT.
-
-----
-#include <dlt.h>
-----
-
-Register your application
--------------------------
-You have to register your application as early as possible during the initialisation of your application.
-You have to call the DLT_REGISTER_APP().
-It is only allowed to call DLT_REGISTER_APP() *once* in your application.
-You have to provide a application id, which size is maximum four charcters long. In this example we use "MAPP".
-And you can provide also a description for your application, here it is "Test Application for Logging".
-
-----
-int main(int argc, const char\* argv\[\])
-{
- DLT_REGISTER_APP("MAPP","Test Application for Logging");
-
-}
-----
-
-.Important notes:
-* DLT may not be used in a forked child until a variant of exec() is called,
- because DLT is using non async-signal-safe functions.
-----
-dlt_user_init();
-----
-* DLT_REGISTER_APP is asynchronous. It may take some milliseconds to establish the IPC channel. Because of this, you might lose messages if you log immediately after registering. Typically this is not a problem, but may arise especially with simple examples.
-
-
-
-Define all contexts
---------------------
-You can create as many contexts as you like.
-You can declare one or more contexts in a C or CPP file.
-Each context is only allowed to be declared once.
-You have to provide a unique variable name for your context.
-
-----
-#include <dlt.h>
-
-DLT_DECLARE_CONTEXT(myContext1);
-DLT_DECLARE_CONTEXT(myContext2);
-DLT_DECLARE_CONTEXT(myContext3);
-----
-
-If you want to use a context in another C or CPP file, you can import the context by calling
-
-----
-#include <dlt.h>
-
-DLT_IMPORT_CONTEXT(myContext1);
-DLT_IMPORT_CONTEXT(myContext2);
-DLT_IMPORT_CONTEXT(myContext3);
-----
-
-Register all contexts
-----------------------
-After you have registered your application you must register your contexts, early during initialisation of your application.
-Do not call DLT_REGISTER_CONTEXT() before DLT_REGISTER_APP().
-During registration of each context, you must provide a context id, which size is maximum four charcters long. In this example we use "TESX".
-And you can provide also a description for your context, here it is "Test Context X for Logging".
-
-----
-int main(int argc, const char\* argv\[\])
-{
- DLT_REGISTER_APP("MAPP","Test Application for Logging");
-
- DLT_REGISTER_CONTEXT(myContext1,"TES1","Test Context 1 for Logging");
- DLT_REGISTER_CONTEXT(myContext2,"TES2","Test Context 2 for Logging");
- DLT_REGISTER_CONTEXT(myContext3,"TES3","Test Context 3 for Logging");
-
-}
-----
-
-Create your logs
-----------------
-Now you can start creating your logs.
-Each log command consist of the context, the log level and a variable number of logging parameters.
-
-Log Level
-~~~~~~~~~
-The log level must be one of the following values:
-
-[options="header"]
-|==================================================================
-| Log level | Description
-| DLT_LOG_FATAL | fatal system error
-| DLT_LOG_ERROR | error with impact to correct functionality
-| DLT_LOG_WARN | warning, correct behaviour could not be ensured
-| DLT_LOG_INFO | informational (default)
-| DLT_LOG_DEBUG | debug
-| DLT_LOG_VERBOSE | highest grade of information
-|==================================================================
-
-DLT_LOG_FATAL, DLT_LOG_ERROR and DLT_LOG_WARN should be used in your application, when something is going wrong.
-DLT_LOG_INFO should be used to send the most important information.
-DLT_LOG_DEBUG and DLT_LOG_VERBOSE should be only used for testing information.
-
-Each context is set by default to DLT_LOG_INFO log level. All log message are send, which use this loglevel or a lower loglevel.
-If you also want to see DLT_LOG_DEBUG and DLT_LOG_VERBOSE log messages, you have to raise the log level with the DLT viewer.
-
-Logging parameters
-~~~~~~~~~~~~~~~~~~
-The following parameter types can be used.
-You can add one or more parameters to a single log message.
-The size of all logging parameters together should not exceed 2kBytes, including the DLT message header.
-
-[options="header"]
-|===============================================================
-| Type | Description
-| DLT_STRING(TEXT) | String
-| DLT_RAW(BUF,LENGTH) | Raw buffer
-| DLT_INT(VAR) | Integer variable, dependent on platform
-| DLT_INT16(VAR) | Integer 16 Bit variable
-| DLT_INT32(VAR) | Integer 32 Bit variable
-| DLT_INT64(VAR) | Integer 64 bit variable
-| DLT_UINT(VAR) | Unsigned integer variable
-| DLT_UINT16(VAR) | Unsigned 16 Bit integer variable
-| DLT_UINT32(VAR) | Unsigned 32 Bit integer variable
-| DLT_UINT64(VAR) | Unsigned 64 bit integer variable
-| DLT_BOOL(VAR) | Boolean variable
-| DLT_FLOAT32(VAR) | Float 32 Bit variable
-| DLT_FLOAT64(VAR) | Float 64 Bitvariable
-|===============================================================
-
-Logging command
-~~~~~~~~~~~~~~~
-Here are some examples for complete log messages.
-The contexts must be registered before.
-
-----
-DLT_LOG(myContext1,DLT_LOG_ERROR,DLT_INT(5),DLT_STRING("This is a error"));
-DLT_LOG(myContext2,DLT_LOG_INFO,DLT_INT(5),DLT_STRING("But this only information"));
-DLT_LOG(myContext3,DLT_LOG_DEBUG,DLT_INT(5),DLT_STRING("But this only information"));
-----
-
-Unregister contexts and applications
-------------------------------------
-Before terminating your application you must unregister all registered contexts and unregister at last your application.
-
-----
-int main(int argc, const char\* argv\[\])
-{
- DLT_REGISTER_APP("MAPP","Test Application for Logging");
-
- DLT_REGISTER_CONTEXT(myContext1,"TES1","Test Context 1 for Logging");
- DLT_REGISTER_CONTEXT(myContext2,"TES2","Test Context 2 for Logging");
- DLT_REGISTER_CONTEXT(myContext3,"TES3","Test Context 3 for Logging");
-
- DLT_UNREGISTER_CONTEXT(myContext1);
- DLT_UNREGISTER_CONTEXT(myContext2);
- DLT_UNREGISTER_CONTEXT(myContext3);
-
- DLT_UNREGISTER_APP();
-
- return 0;
-}
-----
-
-Example
--------
-Finally here is a complete example for using DLT:
-
-.dlt_example.c
-----
-#include <stdio.h>
-#include <dlt.h>
-
-DLT_DECLARE_CONTEXT(myContext1);
-DLT_DECLARE_CONTEXT(myContext2);
-DLT_DECLARE_CONTEXT(myContext3);
-
-int main()
-{
- /* register application */
- DLT_REGISTER_APP("MAPP","Test Application for Logging");
-
- /* register all contexts */
- DLT_REGISTER_CONTEXT(myContext1,"TES1","Test Context 1 for Logging");
- DLT_REGISTER_CONTEXT(myContext2,"TES2","Test Context 2 for Logging");
- DLT_REGISTER_CONTEXT(myContext3,"TES3","Test Context 3 for Logging");
-
- /* Write your logs */
- DLT_LOG(myContext1,DLT_LOG_ERROR,DLT_INT(5),DLT_STRING("This is a error"));
- DLT_LOG(myContext2,DLT_LOG_INFO,DLT_INT(5),DLT_STRING("But this only information"));
- DLT_LOG(myContext3,DLT_LOG_DEBUG,DLT_INT(5),DLT_STRING("But this only information"));
-
- /* Sleep some time to avoid a flaw in dlt-daemon that would eat your messages
- if you deregister while it still processes your registration */
- sleep(3);
-
- /* unregister your contexts */
- DLT_UNREGISTER_CONTEXT(myContext1);
- DLT_UNREGISTER_CONTEXT(myContext2);
- DLT_UNREGISTER_CONTEXT(myContext3);
-
- /* unregister your application */
- DLT_UNREGISTER_APP();
-
- return 0;
-
-}
-----
-
-.CMakeLists.txt
-----
-cmake_minimum_required(VERSION 2.6)
-
-find_package(PkgConfig)
-pkg_check_modules(DLT REQUIRED automotive-dlt)
-
-include_directories("${DLT_INCLUDE_DIRS}")
-
-project(DLTexample)
-add_executable(dlt_example dlt_example.c)
-
-target_link_libraries(dlt_example ${DLT_LIBRARIES})
-----
-
-.Build steps
-----
-mkdir build
-cd build
-cmake ..
-make
-----
-