summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
authorFrederic Berat <fberat@de.adit-jv.com>2015-12-01 11:13:12 +0100
committerGernot Wirschal <gernot.wirschal@bmw.de>2016-04-28 13:17:43 +0200
commita9a43701138c99b3211ded8d388666161f7cde67 (patch)
tree4d63ee965a87395b470c624033a08e2856526522 /src/shared
parent3563d0c799fb24153dfa8ed3f425deb24d56274a (diff)
downloadDLT-daemon-a9a43701138c99b3211ded8d388666161f7cde67.tar.gz
dlt-daemon: receiver rework
The receiver structures have been removed from the dlt-daemon structure, they are now part of the connection. The overall usage of the receiver structrure has also been reviewed in the daemon. Signed-off-by: Frederic Berat <fberat@de.adit-jv.com> Change-Id: I7cf80d79ed73bd6d4f370bb3f278d26ccc9d8d7a
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/dlt_common.c39
-rw-r--r--src/shared/dlt_user_shared_cfg.h1
2 files changed, 40 insertions, 0 deletions
diff --git a/src/shared/dlt_common.c b/src/shared/dlt_common.c
index 2448e70..1eee17d 100644
--- a/src/shared/dlt_common.c
+++ b/src/shared/dlt_common.c
@@ -38,6 +38,7 @@
#include <errno.h>
#include <sys/stat.h> /* for mkdir() */
+#include "dlt_user_shared.h"
#include "dlt_common.h"
#include "dlt_common_cfg.h"
@@ -2266,6 +2267,44 @@ DltReturnValue dlt_receiver_move_to_begin(DltReceiver *receiver)
return DLT_RETURN_OK;
}
+int dlt_receiver_check_and_get(DltReceiver *receiver,
+ void *dest,
+ unsigned int to_get,
+ unsigned int skip_header)
+{
+ unsigned int min_size = to_get;
+ void *src = NULL;
+
+ if (skip_header) {
+ min_size += sizeof(DltUserHeader);
+ }
+
+ if (!receiver ||
+ (receiver->bytesRcvd < (int32_t)min_size) ||
+ !receiver->buf ||
+ !dest) {
+ return -1;
+ }
+
+ src = (void *)receiver->buf;
+
+ if (skip_header) {
+ src += sizeof(DltUserHeader);
+ }
+
+ memset(dest, 0, to_get);
+
+ memcpy(dest, src, to_get);
+
+ if (dlt_receiver_remove(receiver, min_size) == -1)
+ {
+ dlt_log(LOG_WARNING,"Can't remove bytes from receiver\n");
+ return -1;
+ }
+
+ return to_get;
+}
+
DltReturnValue dlt_set_storageheader(DltStorageHeader *storageheader, const char *ecu)
{
diff --git a/src/shared/dlt_user_shared_cfg.h b/src/shared/dlt_user_shared_cfg.h
index dc31e4d..5bfdba7 100644
--- a/src/shared/dlt_user_shared_cfg.h
+++ b/src/shared/dlt_user_shared_cfg.h
@@ -92,6 +92,7 @@
#define DLT_USER_MESSAGE_LOG_MODE 11
#define DLT_USER_MESSAGE_LOG_STATE 12
#define DLT_USER_MESSAGE_MARKER 13
+#define DLT_USER_MESSAGE_NOT_SUPPORTED 16
/* Internal defined values */