summaryrefslogtreecommitdiff
path: root/src/system/dlt-system-shell.c
diff options
context:
space:
mode:
authorLassi Marttala <lassi.lm.marttala@partner.bmw.de>2012-05-16 10:10:12 +0200
committerChristian Muck <christian.muck@bmw.de>2012-06-13 23:50:08 +0200
commitf8f80a07afd45d60c2975bfd7e4b859fb8c10a96 (patch)
tree832f4103d0c8c1662c58ec9645fe20f510ace49c /src/system/dlt-system-shell.c
parent9141005cf22f379059c27aa4a82111a13e760883 (diff)
downloadDLT-daemon-f8f80a07afd45d60c2975bfd7e4b859fb8c10a96.tar.gz
[GDLT-67] dlt-system v2.0, check full commit message for rebase details
[GDLT-67] Prepare build system. [GDLT-67] Config parsing, structure for thread handling [GDLT-67] Finalize configuration reading. [GDLT-67] Reimplementation of syslog, logfile, logprocess, shell. [GDLT-67] First complete version of the new dlt-system. [GDLT-67] Fixed header comments. authors, file names. [GDLT-67] Final touches. [GDLT-67] Fixed a problem with thread creation in optimized release binary. [GDLT-67] New configuration file. [GDLT-67] Added dlt debug output Signed-off-by: Christian Muck <christian.muck@bmw.de>
Diffstat (limited to 'src/system/dlt-system-shell.c')
-rw-r--r--src/system/dlt-system-shell.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/system/dlt-system-shell.c b/src/system/dlt-system-shell.c
new file mode 100644
index 0000000..758f5fc
--- /dev/null
+++ b/src/system/dlt-system-shell.c
@@ -0,0 +1,104 @@
+/**
+ * @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 Lassi Marttala <lassi.lm.marttala@partner.bmw.de> BMW 2012
+ *
+ * \file dlt-system-logfile.c
+ * For further information see http://www.genivi.org/.
+ * @licence end@
+ */
+
+/*******************************************************************************
+** **
+** SRC-MODULE: dlt-system-shell.c **
+** **
+** TARGET : linux **
+** **
+** PROJECT : DLT **
+** **
+** AUTHOR : Lassi Marttala <lassi.lm.marttala@partner.bmw.de> **
+** 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 **
+** -------- ------------------------- ---------------------------------- **
+** lm Lassi Marttala BMW **
+*******************************************************************************/
+#include "dlt.h"
+#include "dlt-system.h"
+
+#include <string.h>
+#include <stdlib.h>
+
+DLT_IMPORT_CONTEXT(dltsystem)
+DLT_DECLARE_CONTEXT(shellContext)
+
+int dlt_shell_injection_callback(uint32_t service_id, void *data, uint32_t length)
+{
+ DLT_LOG(dltsystem,DLT_LOG_DEBUG,
+ DLT_STRING("dlt-system-shell, injection callback"));
+ char text[1024];
+ int syserr = 0;
+
+ strncpy(text,data,length);
+
+ DLT_LOG(dltsystem,DLT_LOG_DEBUG,
+ DLT_STRING("dlt-system-shell, injection injection id:"),
+ DLT_UINT32(service_id));
+ DLT_LOG(dltsystem,DLT_LOG_DEBUG,
+ DLT_STRING("dlt-system-shell, injection data:"),
+ DLT_STRING(text));
+
+ switch(service_id)
+ {
+ case 0x1001:
+ if((syserr = system(text)) != 0)
+ {
+ DLT_LOG(dltsystem,DLT_LOG_ERROR,
+ DLT_STRING("dlt-system-shell, abnormal exit status."),
+ DLT_STRING(text),
+ DLT_INT(syserr));
+ }
+ break;
+ default:
+ DLT_LOG(dltsystem,DLT_LOG_ERROR,
+ DLT_STRING("dlt-system-shell, unknown command received."),
+ DLT_UINT32(service_id),
+ DLT_STRING(text));
+ break;
+ }
+ return 0;
+}
+
+void init_shell()
+{
+ DLT_LOG(dltsystem,DLT_LOG_DEBUG,
+ DLT_STRING("dlt-system-shell, register callback"));
+ DLT_REGISTER_CONTEXT(shellContext,"CMD","Execute Shell commands");
+ DLT_REGISTER_INJECTION_CALLBACK(shellContext, 0x1001, dlt_shell_injection_callback);
+}