summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
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 */