diff options
author | Frederic Berat <fberat@de.adit-jv.com> | 2015-12-01 11:13:12 +0100 |
---|---|---|
committer | Gernot Wirschal <gernot.wirschal@bmw.de> | 2016-04-28 13:17:43 +0200 |
commit | a9a43701138c99b3211ded8d388666161f7cde67 (patch) | |
tree | 4d63ee965a87395b470c624033a08e2856526522 /src/shared/dlt_common.c | |
parent | 3563d0c799fb24153dfa8ed3f425deb24d56274a (diff) | |
download | DLT-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/dlt_common.c')
-rw-r--r-- | src/shared/dlt_common.c | 39 |
1 files changed, 39 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) { |