summaryrefslogtreecommitdiff
path: root/src/system/dlt-system-shell.c
diff options
context:
space:
mode:
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);
+}