summaryrefslogtreecommitdiff
path: root/src/system/dlt-system.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/system/dlt-system.h')
-rw-r--r--src/system/dlt-system.h178
1 files changed, 109 insertions, 69 deletions
diff --git a/src/system/dlt-system.h b/src/system/dlt-system.h
index 394da34..d603dcf 100644
--- a/src/system/dlt-system.h
+++ b/src/system/dlt-system.h
@@ -13,14 +13,13 @@
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*
- * \author Alexander Wenzel <alexander.aw.wenzel@bmw.de> BMW 2011-2012
+ * \author Lassi Marttala <lassi.lm.marttala@partner.bmw.de> BMW 2012
*
- * \file dlt-system.h
+ * \file dlt-system.c
* For further information see http://www.genivi.org/.
* @licence end@
*/
-
/*******************************************************************************
** **
** SRC-MODULE: dlt-system.h **
@@ -29,7 +28,7 @@
** **
** PROJECT : DLT **
** **
-** AUTHOR : Alexander Wenzel Alexander.AW.Wenzel@bmw.de **
+** AUTHOR : Lassi Marttala <lassi.lm.marttala@partner.bmw.de> **
** **
** PURPOSE : **
** **
@@ -47,80 +46,121 @@
** **
** Initials Name Company **
** -------- ------------------------- ---------------------------------- **
-** aw Alexander Wenzel BMW **
+** lm Lassi Marttala BMW **
*******************************************************************************/
-/*******************************************************************************
-** Revision Control History **
-*******************************************************************************/
+#ifndef DLT_SYSTEM_H_
+#define DLT_SYSTEM_H_
-#ifndef DLT_SYSTEM_H
-#define DLT_SYSTEM_H
+// DLT related includes.
+#include "dlt.h"
+#include "dlt_common.h"
+
+// Constants
+#define DEFAULT_CONF_FILE "/etc/dlt-system.conf"
+#define DLT_SYSTEM_LOG_FILE_MAX 32
+#define DLT_SYSTEM_LOG_DIRS_MAX 32
+#define DLT_SYSTEM_LOG_PROCESSES_MAX 32
#define DLT_SYSTEM_MODE_OFF 0
#define DLT_SYSTEM_MODE_STARTUP 1
#define DLT_SYSTEM_MODE_REGULAR 2
-#define DLT_SYSTEM_LOG_FILE_MAX 32
-#define DLT_SYSTEM_LOG_PROCESSES_MAX 32
+#define MAX_LINE 1024
+
+#define MAX_THREADS 8
+
+/**
+ * Configuration structures.
+ * Please see dlt-system.conf for explanation of all the options.
+ */
+
+// Command line options
+typedef struct {
+ char *ConfigurationFileName;
+ int Daemonize;
+} DltSystemCliOptions;
+
+// Configuration file options
+typedef struct {
+ int Enable;
+ char *ContextId;
+ int Port;
+} SyslogOptions;
typedef struct {
- char ConfigurationFile[256];
- char ApplicationId[256];
- int daemonise;
-
- int SyslogEnable; /*# Enable the Syslog Adapter (Default: 0)*/
- char SyslogContextId[256]; /*# The Context Id of the syslog adapter (Default: SYSL)*/
- int SyslogPort; /*# The UDP port opened by DLT system mamager to receive system logs (Default: 47111)*/
-
- int FiletransferEnable; /*# Enable the Filetransfer (Default: 0)*/
- int FiletransferCompression1; /*# Enable the Filetransfer compression for dir 1 (Default: 1)*/
- int FiletransferCompression2; /*# Enable the Filetransfer compression for dir 2 (Default: 0)*/
- int FiletransferCompressionLevel; /*# Set the compression level between 0-9 (Default: 5)*/
- char FiletransferDirectory1[256]; /*# Directory which contains files to be transfered over DLT (Default: /tmp/filetransfer)# Files are deleted after Filetransfer is finished and after TimeDelay expired*/
- char FiletransferDirectory2[256];
- char FiletransferContextId[256]; /*# The Context Id of the filetransfer (Default: FILE)*/
- int FiletransferTimeStartup; /*# Time after startup of dlt-system when first file is transfered (Default: 30)# Time in seconds*/
- int FiletransferTimeDelay; /*# Time to wait when transfered file is deleted and next file transfer starts (Default: 10)# Time in seconds*/
- int FiletransferTimeoutBetweenLogs;/*# Waits a period of time between two file transfer logs of a single file to DLT to ensure that the FIFO of DLT is not flooded.*/
-
- /*# Log different files
- # Mode: 0 = off, 1 = startup only, 2 = regular
- # TimeDelay: If mode regular is set, time delay is the number of seconds for next sent
- */
- int LogFileEnable; /*# Enable the logging of files (Default: 0)*/
- int LogFileNumber;
- char LogFileFilename[DLT_SYSTEM_LOG_FILE_MAX][256];
- int LogFileMode[DLT_SYSTEM_LOG_FILE_MAX];
- int LogFileTimeDelay[DLT_SYSTEM_LOG_FILE_MAX];
- char LogFileContextId[DLT_SYSTEM_LOG_FILE_MAX][256];
-
- int LogProcessesEnable; /*# Enable the logging of processes (Default: 0)*/
- char LogProcessesContextId[256]; /*# The Context Id of the kernel version (Default: PROC)*/
-
- /*# Log different processes
- # Name: * = all process, X=alternative name (must correspind to /proc/X/cmdline
- # Filename: the filename in the subdirectory /proc/processid/
- # Mode: 0 = off, 1 = startup only, 2 = regular
- # TimeDelay: If mode regular is set, time delay is the number of seconds for next sent
- */
- int LogProcessNumber;
- char LogProcessName[DLT_SYSTEM_LOG_PROCESSES_MAX][256];
- char LogProcessFilename[DLT_SYSTEM_LOG_PROCESSES_MAX][256];
- int LogProcessMode[DLT_SYSTEM_LOG_PROCESSES_MAX];
- int LogProcessTimeDelay[DLT_SYSTEM_LOG_PROCESSES_MAX];
-} DltSystemOptions;
+ int Enable;
+ char *ContextId;
+ int TimeStartup;
+ int TimeDelay;
+ int TimeoutBetweenLogs;
+ char *TempDir;
+
+ // Variable number of file transfer dirs
+ int Count;
+ int Compression[DLT_SYSTEM_LOG_DIRS_MAX];
+ int CompressionLevel[DLT_SYSTEM_LOG_DIRS_MAX];
+ char *Directory[DLT_SYSTEM_LOG_DIRS_MAX];
+} FiletransferOptions;
typedef struct {
- int timeStartup; /* time in seconds since startup of dlt-system */
- int timeFiletransferDelay; /* time in seconds to start next filetransfer */
- char filetransferFile[256];
- long int filetransferFilesize;
- int timeLogFileDelay[DLT_SYSTEM_LOG_FILE_MAX]; /* time in seconds to start next file log */
- int timeLogProcessDelay[DLT_SYSTEM_LOG_PROCESSES_MAX]; /* time in seconds to start next process log */
- int filetransferRunning; /* 0 = stooped, 1 = running */
- int filetransferCountPackages; /* number of packets to be transfered */
- int filetransferLastSentPackage; /* last packet sent starting from 1 */
-} DltSystemRuntime;
-
-#endif /* DLT_SYSTEM_H */
+ int Enable;
+
+ // Variable number of files to transfer
+ int Count;
+ char *ContextId[DLT_SYSTEM_LOG_FILE_MAX];
+ char *Filename[DLT_SYSTEM_LOG_FILE_MAX];
+ int Mode[DLT_SYSTEM_LOG_FILE_MAX];
+ int TimeDelay[DLT_SYSTEM_LOG_FILE_MAX];
+} LogFileOptions;
+
+typedef struct {
+ int Enable;
+ char *ContextId;
+
+ // Variable number of processes
+ int Count;
+ char *Name[DLT_SYSTEM_LOG_PROCESSES_MAX];
+ char *Filename[DLT_SYSTEM_LOG_PROCESSES_MAX];
+ int Mode[DLT_SYSTEM_LOG_PROCESSES_MAX];
+ int TimeDelay[DLT_SYSTEM_LOG_PROCESSES_MAX];
+} LogProcessOptions;
+
+typedef struct {
+ char *ApplicationId;
+ SyslogOptions Syslog;
+ FiletransferOptions Filetransfer;
+ LogFileOptions LogFile;
+ LogProcessOptions LogProcesses;
+} DltSystemConfiguration;
+
+typedef struct {
+ pthread_t threads[MAX_THREADS];
+ int count;
+ int shutdown;
+} DltSystemThreads;
+
+/**
+ * Forward declarations for the whole application
+ */
+
+// In dlt-system-options.c
+int read_command_line(DltSystemCliOptions *options, int argc, char *argv[]);
+int read_configuration_file(DltSystemConfiguration *config, char *file_name);
+
+// In dlt-process-handling.c
+int daemonize();
+void start_threads(DltSystemConfiguration *config);
+void join_threads();
+void dlt_system_signal_handler(int sig);
+void register_with_dlt(DltSystemConfiguration *config);
+
+// Thread initiators:
+void init_shell();
+void start_syslog();
+void start_filetransfer(DltSystemConfiguration *conf);
+void start_logfile(DltSystemConfiguration *conf);
+void start_logprocess(DltSystemConfiguration *conf);
+
+
+#endif /* DLT_SYSTEM_H_ */