summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
authorLutz Helwing <lutz_helwing@mentor.com>2015-07-15 14:14:19 +0200
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2015-10-07 10:40:33 +0200
commit1236195e9b93aeb6bfa625956fa027f96003756d (patch)
tree07b08c892a486f9f97c1674e0d253099eb3388f3 /src/shared
parent033a69218af3490f6be409f66f350c1568655f61 (diff)
downloadDLT-daemon-1236195e9b93aeb6bfa625956fa027f96003756d.tar.gz
DLT daemon improvement - dlt_init()-check
DLT daemon improvement - parameter value range check Adapt unit tests to check for enum return values Changed C version to gnu99 and C++ version to gnu++0c Signed-off-by: Alexander Wenzel <Alexander.AW.Wenzel@bmw.de>
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/dlt_common.c2073
-rw-r--r--src/shared/dlt_common_cfg.h2
-rw-r--r--src/shared/dlt_offline_trace.c266
-rw-r--r--src/shared/dlt_shm.c254
-rw-r--r--src/shared/dlt_user_shared.c20
-rw-r--r--src/shared/dlt_user_shared.h68
6 files changed, 1388 insertions, 1295 deletions
diff --git a/src/shared/dlt_common.c b/src/shared/dlt_common.c
index b0123b6..680e0a4 100644
--- a/src/shared/dlt_common.c
+++ b/src/shared/dlt_common.c
@@ -33,6 +33,7 @@
#include <time.h> /* for localtime(), strftime() */
#include <limits.h> /* for NAME_MAX */
#include <inttypes.h> /* for PRI formatting macro */
+#include <stdarg.h>
#include <errno.h>
#include <sys/stat.h> /* for mkdir() */
@@ -54,7 +55,7 @@
#include <io.h>
#else
#include <unistd.h> /* for read(), close() */
-#include <sys/time.h> /* for gettimeofday() */
+#include <sys/time.h> /* for gettimeofday() */
#endif
#if defined (__MSDOS__) || defined (_MSC_VER)
@@ -73,7 +74,7 @@ char dltFifoBaseDir[PATH_MAX + 1] = "/tmp";
static int logging_mode = DLT_LOG_TO_CONSOLE;
static int logging_level = LOG_INFO;
static char logging_filename[NAME_MAX + 1] = "";
-static FILE *logging_handle = 0;
+static FILE *logging_handle = NULL;
char *message_type[] = {"log","app_trace","nw_trace","control","","","",""};
char *log_info[] = {"","fatal","error","warn","info","debug","verbose","","","","","","","","",""};
@@ -99,7 +100,7 @@ void dlt_print_hex(uint8_t *ptr,int size)
{
int num;
- if (ptr==0)
+ if (ptr == NULL)
{
return;
}
@@ -115,13 +116,13 @@ void dlt_print_hex(uint8_t *ptr,int size)
}
}
-int dlt_print_hex_string(char *text,int textlength,uint8_t *ptr,int size)
+DltReturnValue dlt_print_hex_string(char *text, int textlength, uint8_t *ptr, int size)
{
int num;
- if ((ptr==0) || (text==0) || (textlength<=0) || (size<0))
+ if ((ptr == NULL) || (text == NULL) || (textlength <= 0) || (size < 0))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* Length 3: AB_ , A is first digit of hex number, B is second digit of hex number, _ is space */
@@ -130,10 +131,10 @@ int dlt_print_hex_string(char *text,int textlength,uint8_t *ptr,int size)
char str[255];
snprintf(str, 254, "String does not fit hex data (available=%d, required=%d) !\n", textlength, size*3);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
- for (num=0;num<size;num++)
+ for (num=0; num<size; num++)
{
if (num>0)
{
@@ -145,21 +146,21 @@ int dlt_print_hex_string(char *text,int textlength,uint8_t *ptr,int size)
text+=2; /* 2 chars */
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_print_mixed_string(char *text,int textlength,uint8_t *ptr,int size,int html)
+DltReturnValue dlt_print_mixed_string(char *text, int textlength ,uint8_t *ptr, int size, int html)
{
int required_size = 0;
int lines, rest, i;
- if ((ptr==0) || (text==0) || (textlength<=0) || (size<0))
+ if ((ptr == NULL) || (text == NULL) || (textlength <= 0) || (size < 0))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* Check maximum required size and do a length check */
- if (html==0)
+ if (html == 0)
{
required_size=(DLT_COMMON_HEX_LINELEN+(2*DLT_COMMON_HEX_CHARS+(DLT_COMMON_HEX_CHARS-1))+DLT_COMMON_CHARLEN+DLT_COMMON_HEX_CHARS+DLT_COMMON_CHARLEN) *
((size/DLT_COMMON_HEX_CHARS) + 1);
@@ -178,7 +179,7 @@ int dlt_print_mixed_string(char *text,int textlength,uint8_t *ptr,int size,int h
{
snprintf(str,DLT_COMMON_BUFFER_LENGTH, "String does not fit mixed data (available=%d, required=%d) !\n", textlength, required_size);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
/* print full lines */
@@ -244,32 +245,27 @@ int dlt_print_mixed_string(char *text,int textlength,uint8_t *ptr,int size,int h
dlt_print_char_string(&text,textlength,(uint8_t*)(ptr+ ((size / DLT_COMMON_HEX_CHARS) * DLT_COMMON_HEX_CHARS)),rest);
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_print_char_string(char **text,int textlength,uint8_t *ptr,int size)
+DltReturnValue dlt_print_char_string(char **text, int textlength, uint8_t *ptr, int size)
{
int num;
- if (text==0)
+ if ((text == NULL) || (ptr == NULL) || (*text == NULL) || (textlength <= 0) || (size < 0))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
- if ((ptr==0) || (*text==0) || (textlength<=0) || (size<0))
- {
- return -1;
- }
-
- if (textlength< size)
+ if (textlength < size)
{
char str[255];
snprintf(str, 254, "String does not fit character data (available=%d, required=%d) !\n", textlength, size);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
- for (num=0;num<size;num++)
+ for (num=0; num<size; num++)
{
if ( (((char*)ptr)[num]<DLT_COMMON_ASCII_CHAR_SPACE) || (((char*)ptr)[num]>DLT_COMMON_ASCII_CHAR_TILDE) )
{
@@ -290,21 +286,16 @@ int dlt_print_char_string(char **text,int textlength,uint8_t *ptr,int size)
(*text)++;
}
- return 0;
+ return DLT_RETURN_OK;
}
-void dlt_print_id(char *text,const char *id)
+void dlt_print_id(char *text, const char *id)
{
- int i, len;
-
// check nullpointer
- if(!text || !id)
+ if(text == NULL || id == NULL)
return;
- if (text==0)
- {
- return;
- }
+ int i, len;
/* Initialize text */
for (i=0; i<DLT_ID_SIZE; i++)
@@ -321,10 +312,10 @@ void dlt_print_id(char *text,const char *id)
text[i] = id[i];
}
-void dlt_set_id(char *id,const char *text)
+void dlt_set_id(char *id, const char *text)
{
// check nullpointer
- if(!id || !text)
+ if(id == NULL || text == NULL)
return;
id[0] = 0;
@@ -332,11 +323,6 @@ void dlt_set_id(char *id,const char *text)
id[2] = 0;
id[3] = 0;
- if (text==0)
- {
- return;
- }
-
if (text[0]!=0)
{
id[0] = text[0];
@@ -374,11 +360,11 @@ void dlt_set_id(char *id,const char *text)
}
}
-void dlt_clean_string(char *text,int length)
+void dlt_clean_string(char *text, int length)
{
int num;
- if (text==0)
+ if (text == NULL)
{
return;
}
@@ -392,51 +378,51 @@ void dlt_clean_string(char *text,int length)
}
}
-int dlt_filter_init(DltFilter *filter,int verbose)
+DltReturnValue dlt_filter_init(DltFilter *filter, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (filter==0)
+ if (filter == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
filter->counter = 0;
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_filter_free(DltFilter *filter,int verbose)
+DltReturnValue dlt_filter_free(DltFilter *filter, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (filter==0)
+ if (filter == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_filter_load(DltFilter *filter,const char *filename,int verbose)
+DltReturnValue dlt_filter_load(DltFilter *filter, const char *filename, int verbose)
{
+ if (filter == NULL || filename == NULL)
+ {
+ return DLT_RETURN_WRONG_PARAMETER;
+ }
+
FILE *handle;
char str1[DLT_COMMON_BUFFER_LENGTH];
char apid[DLT_ID_SIZE],ctid[DLT_ID_SIZE];
PRINT_FUNCTION_VERBOSE(verbose);
- if (filter==0)
- {
- return -1;
- }
-
handle = fopen(filename,"r");
- if (handle == 0)
+ if (handle == NULL)
{
- snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Filter file %s cannot be opened!\n",filename);
+ snprintf(str, DLT_COMMON_BUFFER_LENGTH, "Filter file %s cannot be opened!\n", filename);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
/* Reset filters */
@@ -490,34 +476,34 @@ int dlt_filter_load(DltFilter *filter,const char *filename,int verbose)
{
snprintf(str,DLT_COMMON_BUFFER_LENGTH, "Maximum number (%d) of allowed filters reached, ignoring rest of filters!\n", DLT_FILTER_MAX);
dlt_log(LOG_WARNING, str);
- return 0;
+ return DLT_RETURN_OK;
}
}
fclose(handle);
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_filter_save(DltFilter *filter,const char *filename,int verbose)
+DltReturnValue dlt_filter_save(DltFilter *filter, const char *filename, int verbose)
{
+ if (filter == NULL || filename == NULL)
+ {
+ return DLT_RETURN_WRONG_PARAMETER;
+ }
+
FILE *handle;
int num;
char buf[DLT_COMMON_BUFFER_LENGTH];
PRINT_FUNCTION_VERBOSE(verbose);
- if (filter==0)
- {
- return -1;
- }
-
handle = fopen(filename,"w");
- if (handle == 0)
+ if (handle == NULL)
{
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Filter file %s cannot be opened!\n",filename);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
for (num=0;num<filter->counter;num++)
@@ -544,16 +530,16 @@ int dlt_filter_save(DltFilter *filter,const char *filename,int verbose)
fclose(handle);
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_filter_find(DltFilter *filter,const char *apid,const char *ctid, int verbose)
+int dlt_filter_find(DltFilter *filter, const char *apid, const char *ctid, int verbose)
{
int num;
PRINT_FUNCTION_VERBOSE(verbose);
- if ((filter==0) || (apid==0))
+ if ((filter == NULL) || (apid == NULL))
{
return -1;
}
@@ -563,7 +549,7 @@ int dlt_filter_find(DltFilter *filter,const char *apid,const char *ctid, int ver
if (memcmp(filter->apid[num],apid,DLT_ID_SIZE)==0)
{
/* apid matches, now check for ctid */
- if (ctid==0)
+ if (ctid == NULL)
{
/* check if empty ctid matches */
//if (memcmp(filter->ctid[num],"",DLT_ID_SIZE)==0)//coverity complains here about Out-of-bounds access.
@@ -586,20 +572,20 @@ int dlt_filter_find(DltFilter *filter,const char *apid,const char *ctid, int ver
return -1; /* Not found */
}
-int dlt_filter_add(DltFilter *filter,const char *apid,const char *ctid, int verbose)
+DltReturnValue dlt_filter_add(DltFilter *filter,const char *apid, const char *ctid, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if ((filter==0) || (apid==0))
+ if ((filter == NULL) || (apid == NULL))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
if (filter->counter >= DLT_FILTER_MAX)
{
sprintf(str, "Maximum number (%d) of allowed filters reached, ignoring filter!\n", DLT_FILTER_MAX);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
/* add each filter (apid, ctid) only once to filter array */
@@ -613,23 +599,23 @@ int dlt_filter_add(DltFilter *filter,const char *apid,const char *ctid, int verb
filter->counter++;
- return 0;
+ return DLT_RETURN_OK;
}
}
- return -1;
+ return DLT_RETURN_ERROR;
}
-int dlt_filter_delete(DltFilter *filter,const char *apid,const char *ctid, int verbose)
+DltReturnValue dlt_filter_delete(DltFilter *filter,const char *apid,const char *ctid, int verbose)
{
int j,k;
int found=0;
PRINT_FUNCTION_VERBOSE(verbose);
- if ((filter==0) || (apid==0))
+ if ((filter == NULL) || (apid == NULL) || (ctid == NULL))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
if (filter->counter>0)
@@ -662,77 +648,77 @@ int dlt_filter_delete(DltFilter *filter,const char *apid,const char *ctid, int v
}
filter->counter--;
- return 0;
+ return DLT_RETURN_OK;
}
}
- return -1;
+ return DLT_RETURN_ERROR;
}
-int dlt_message_init(DltMessage *msg,int verbose)
+DltReturnValue dlt_message_init(DltMessage *msg, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (msg==0)
+ if (msg == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* initalise structure parameters */
msg->headersize = 0;
msg->datasize = 0;
- msg->databuffer = 0;
+ msg->databuffer = NULL;
msg->databuffersize = 0;
- msg->storageheader = 0;
- msg->standardheader = 0;
- msg->extendedheader = 0;
+ msg->storageheader = NULL;
+ msg->standardheader = NULL;
+ msg->extendedheader = NULL;
msg->found_serialheader = 0;
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_message_free(DltMessage *msg,int verbose)
+DltReturnValue dlt_message_free(DltMessage *msg, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (msg==0)
+ if (msg == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* delete databuffer if exists */
if (msg->databuffer)
{
free(msg->databuffer);
- msg->databuffer = 0;
+ msg->databuffer = NULL;
msg->databuffersize = 0;
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_message_header(DltMessage *msg,char *text,int textlength,int verbose)
+DltReturnValue dlt_message_header(DltMessage *msg, char *text, int textlength, int verbose)
{
- return dlt_message_header_flags(msg,text,textlength,DLT_HEADER_SHOW_ALL,verbose);
+ return dlt_message_header_flags(msg, text, textlength, DLT_HEADER_SHOW_ALL, verbose);
}
-int dlt_message_header_flags(DltMessage *msg,char *text,int textlength,int flags, int verbose)
+DltReturnValue dlt_message_header_flags(DltMessage *msg, char *text, int textlength, int flags, int verbose)
{
struct tm * timeinfo;
char buffer [DLT_COMMON_BUFFER_LENGTH];
PRINT_FUNCTION_VERBOSE(verbose);
- if ((msg==0) || (text==0) || (textlength<=0))
+ if ((msg == NULL) || (text == NULL) || (textlength <= 0))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
if ((flags<DLT_HEADER_SHOW_NONE) || (flags>DLT_HEADER_SHOW_ALL))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
text[0] = 0;
@@ -740,10 +726,10 @@ int dlt_message_header_flags(DltMessage *msg,char *text,int textlength,int flags
if ((flags & DLT_HEADER_SHOW_TIME) == DLT_HEADER_SHOW_TIME)
{
/* print received time */
- time_t tt = msg->storageheader->seconds;
+ time_t tt = msg->storageheader->seconds;
timeinfo = localtime (&tt);
- if (timeinfo!=0)
+ if (timeinfo != NULL)
{
strftime (buffer,sizeof(buffer),"%Y/%m/%d %H:%M:%S",timeinfo);
snprintf(text,textlength,"%s.%.6d ",buffer,msg->storageheader->microseconds);
@@ -891,12 +877,12 @@ int dlt_message_header_flags(DltMessage *msg,char *text,int textlength,int flags
}
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_message_payload(DltMessage *msg,char *text,int textlength,int type,int verbose)
+DltReturnValue dlt_message_payload(DltMessage *msg, char *text, int textlength, int type, int verbose)
{
- uint32_t id=0,id_tmp=0;
+ uint32_t id=0, id_tmp=0;
uint8_t retval=0;
uint8_t *ptr;
@@ -913,15 +899,15 @@ int dlt_message_payload(DltMessage *msg,char *text,int textlength,int type,int v
PRINT_FUNCTION_VERBOSE(verbose);
- if ((msg==0) || (text==0))
+ if ((msg == NULL) || (text == NULL))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
- if (textlength<=0)
+ if (textlength <= 0)
{
dlt_log(LOG_WARNING, "String does not fit binary data!\n");
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* start with empty string */
@@ -930,18 +916,18 @@ int dlt_message_payload(DltMessage *msg,char *text,int textlength,int type,int v
/* print payload only as hex */
if (type==DLT_OUTPUT_HEX)
{
- return dlt_print_hex_string(text,textlength,msg->databuffer,msg->datasize);
+ return dlt_print_hex_string(text, textlength, msg->databuffer, msg->datasize);
}
/* print payload as mixed */
if (type==DLT_OUTPUT_MIXED_FOR_PLAIN)
{
- return dlt_print_mixed_string(text,textlength,msg->databuffer,msg->datasize,0);
+ return dlt_print_mixed_string(text, textlength, msg->databuffer, msg->datasize,0);
}
if (type==DLT_OUTPUT_MIXED_FOR_HTML)
{
- return dlt_print_mixed_string(text,textlength,msg->databuffer,msg->datasize,1);
+ return dlt_print_mixed_string(text, textlength, msg->databuffer, msg->datasize,1);
}
ptr = msg->databuffer;
@@ -965,7 +951,7 @@ int dlt_message_payload(DltMessage *msg,char *text,int textlength,int type,int v
char str[255];
snprintf(str, 254, "String does not fit binary data (available=%d, required=%d) !\n", textlength, (datalength*3)+20);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
/* process message id / service id */
@@ -1051,42 +1037,42 @@ int dlt_message_payload(DltMessage *msg,char *text,int textlength,int type,int v
type_info=DLT_ENDIAN_GET_32(msg->standardheader->htyp, type_info_tmp);
/* print out argument */
- if (dlt_message_argument_print(msg, type_info, pptr, pdatalength, text, textlength, -1, 0)==-1)
+ if (dlt_message_argument_print(msg, type_info, pptr, pdatalength, text, textlength, -1, 0) == DLT_RETURN_ERROR)
{
- return -1;
+ return DLT_RETURN_ERROR;
}
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_message_filter_check(DltMessage *msg,DltFilter *filter,int verbose)
+DltReturnValue dlt_message_filter_check(DltMessage *msg, DltFilter *filter, int verbose)
{
/* check the filters if message is used */
int num;
- int found = 0;
+ DltReturnValue found = DLT_RETURN_OK;
PRINT_FUNCTION_VERBOSE(verbose);
- if ((msg==0) || (filter==0))
+ if ((msg == NULL) || (filter == NULL))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
if ((filter->counter==0) || (!(DLT_IS_HTYP_UEH(msg->standardheader->htyp))))
{
/* no filter is set, or no extended header is available, so do as filter is matching */
- return 1;
+ return DLT_RETURN_TRUE;
}
- for (num=0;num<filter->counter;num++)
+ for (num=0 ;num<filter->counter; num++)
{
/* check each filter if it matches */
if ((DLT_IS_HTYP_UEH(msg->standardheader->htyp)) &&
(filter->apid[num][0]==0 || memcmp(filter->apid[num],msg->extendedheader->apid,DLT_ID_SIZE)==0) &&
(filter->ctid[num][0]==0 || memcmp(filter->ctid[num],msg->extendedheader->ctid,DLT_ID_SIZE)==0) )
{
- found = 1;
+ found = DLT_RETURN_TRUE;
break;
}
}
@@ -1094,13 +1080,13 @@ int dlt_message_filter_check(DltMessage *msg,DltFilter *filter,int verbose)
return found;
}
-int dlt_message_read(DltMessage *msg,uint8_t *buffer,unsigned int length,int resync, int verbose)
+int dlt_message_read(DltMessage *msg, uint8_t *buffer, unsigned int length, int resync, int verbose)
{
int extra_size = 0;
PRINT_FUNCTION_VERBOSE(verbose);
- if ((msg==0) || (buffer==0) || (length<=0))
+ if ((msg == NULL) || (buffer == NULL) || (length <= 0))
{
return DLT_MESSAGE_ERROR_UNKNOWN;
}
@@ -1115,7 +1101,7 @@ int dlt_message_read(DltMessage *msg,uint8_t *buffer,unsigned int length,int res
return DLT_MESSAGE_ERROR_SIZE;
}
- if (memcmp(buffer,dltSerialHeader,sizeof(dltSerialHeader)) == 0)
+ if (memcmp(buffer, dltSerialHeader, sizeof(dltSerialHeader)) == 0)
{
/* serial header found */
msg->found_serialheader = 1;
@@ -1133,7 +1119,7 @@ int dlt_message_read(DltMessage *msg,uint8_t *buffer,unsigned int length,int res
do
{
- if (memcmp(buffer+msg->resync_offset,dltSerialHeader,sizeof(dltSerialHeader)) == 0)
+ if (memcmp(buffer+msg->resync_offset, dltSerialHeader, sizeof(dltSerialHeader)) == 0)
{
/* serial header found */
msg->found_serialheader = 1;
@@ -1162,7 +1148,7 @@ int dlt_message_read(DltMessage *msg,uint8_t *buffer,unsigned int length,int res
/* dlt_log(LOG_ERR, "Length smaller than standard header!\n"); */
return DLT_MESSAGE_ERROR_SIZE;
}
- memcpy(msg->headerbuffer+sizeof(DltStorageHeader),buffer,sizeof(DltStandardHeader));
+ memcpy(msg->headerbuffer+sizeof(DltStorageHeader), buffer, sizeof(DltStandardHeader));
/* set ptrs to structures */
msg->storageheader = (DltStorageHeader*) msg->headerbuffer;
@@ -1175,14 +1161,14 @@ int dlt_message_read(DltMessage *msg,uint8_t *buffer,unsigned int length,int res
if (verbose)
{
- snprintf(str,DLT_COMMON_BUFFER_LENGTH,"BufferLength=%d, HeaderSize=%d, DataSize=%d\n",length, msg->headersize, msg->datasize);
+ snprintf(str,DLT_COMMON_BUFFER_LENGTH, "BufferLength=%d, HeaderSize=%d, DataSize=%d\n", length, msg->headersize, msg->datasize);
dlt_log(LOG_DEBUG, str);
}
/* check data size */
if (msg->datasize < 0)
{
- snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Plausibility check failed. Complete message size too short (%d)!\n",msg->datasize);
+ snprintf(str,DLT_COMMON_BUFFER_LENGTH, "Plausibility check failed. Complete message size too short (%d)!\n",msg->datasize);
dlt_log(LOG_WARNING, str);
return DLT_MESSAGE_ERROR_CONTENT;
}
@@ -1205,7 +1191,7 @@ int dlt_message_read(DltMessage *msg,uint8_t *buffer,unsigned int length,int res
}
else
{
- msg->extendedheader = 0;
+ msg->extendedheader = NULL;
}
dlt_message_get_extraparameters(msg,verbose);
@@ -1221,17 +1207,17 @@ int dlt_message_read(DltMessage *msg,uint8_t *buffer,unsigned int length,int res
/* free last used memory for buffer */
if (msg->databuffer)
{
- if (msg->datasize>msg->databuffersize){
- free(msg->databuffer);
- msg->databuffer=(uint8_t *)malloc(msg->datasize);
- msg->databuffersize = msg->datasize;
- }
+ if (msg->datasize>msg->databuffersize){
+ free(msg->databuffer);
+ msg->databuffer=(uint8_t *)malloc(msg->datasize);
+ msg->databuffersize = msg->datasize;
+ }
}else{
- /* get new memory for buffer */
- msg->databuffer = (uint8_t *)malloc(msg->datasize);
- msg->databuffersize = msg->datasize;
+ /* get new memory for buffer */
+ msg->databuffer = (uint8_t *)malloc(msg->datasize);
+ msg->databuffersize = msg->datasize;
}
- if (msg->databuffer == 0)
+ if (msg->databuffer == NULL)
{
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Cannot allocate memory for payload buffer of size %d!\n",msg->datasize);
dlt_log(LOG_WARNING, str);
@@ -1244,13 +1230,13 @@ int dlt_message_read(DltMessage *msg,uint8_t *buffer,unsigned int length,int res
return DLT_MESSAGE_ERROR_OK;
}
-int dlt_message_get_extraparameters(DltMessage *msg,int verbose)
+DltReturnValue dlt_message_get_extraparameters(DltMessage *msg, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (msg==0)
+ if (msg == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
if (DLT_IS_HTYP_WEID(msg->standardheader->htyp))
@@ -1273,16 +1259,16 @@ int dlt_message_get_extraparameters(DltMessage *msg,int verbose)
msg->headerextra.tmsp = DLT_BETOH_32(msg->headerextra.tmsp);
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_message_set_extraparameters(DltMessage *msg,int verbose)
+DltReturnValue dlt_message_set_extraparameters(DltMessage *msg, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (msg==0)
+ if (msg == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
if (DLT_IS_HTYP_WEID(msg->standardheader->htyp))
@@ -1305,25 +1291,25 @@ int dlt_message_set_extraparameters(DltMessage *msg,int verbose)
+ (DLT_IS_HTYP_WSID(msg->standardheader->htyp) ? DLT_SIZE_WSID : 0), &(msg->headerextra.tmsp),DLT_SIZE_WTMS);
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_file_init(DltFile *file,int verbose)
+DltReturnValue dlt_file_init(DltFile *file, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (file==0)
+ if (file == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* initalise structure parameters */
- file->handle = 0;
+ file->handle = NULL;
file->counter = 0;
file->counter_total = 0;
- file->index = 0;
+ file->index = NULL;
- file->filter = 0;
+ file->filter = NULL;
file->filter_counter = 0;
file->file_position = 0;
@@ -1334,38 +1320,38 @@ int dlt_file_init(DltFile *file,int verbose)
return dlt_message_init(&(file->msg),verbose);
}
-int dlt_file_set_filter(DltFile *file,DltFilter *filter,int verbose)
+DltReturnValue dlt_file_set_filter(DltFile *file, DltFilter *filter, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (file==0)
+ if (file == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* set filter */
file->filter = filter;
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_file_read_header(DltFile *file,int verbose)
+DltReturnValue dlt_file_read_header(DltFile *file, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (file==0)
+ if (file == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* load header from file */
- if (fread(file->msg.headerbuffer,sizeof(DltStorageHeader)+sizeof(DltStandardHeader),1,file->handle)!=1)
+ if (fread(file->msg.headerbuffer, sizeof(DltStorageHeader)+sizeof(DltStandardHeader), 1, file->handle)!=1)
{
if (!feof(file->handle))
{
dlt_log(LOG_WARNING, "Cannot read header from file!\n");
}
- return -1;
+ return DLT_RETURN_ERROR;
}
/* set ptrs to structures */
@@ -1373,10 +1359,10 @@ int dlt_file_read_header(DltFile *file,int verbose)
file->msg.standardheader = (DltStandardHeader*) (file->msg.headerbuffer + sizeof(DltStorageHeader));
/* check id of storage header */
- if (dlt_check_storageheader(file->msg.storageheader)==0)
+ if (dlt_check_storageheader(file->msg.storageheader) != DLT_RETURN_TRUE)
{
dlt_log(LOG_WARNING, "DLT storage header pattern not found!\n");
- return -1;
+ return DLT_RETURN_ERROR;
}
/* calculate complete size of headers */
@@ -1394,21 +1380,21 @@ int dlt_file_read_header(DltFile *file,int verbose)
{
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Plausibility check failed. Complete message size too short! (%d)\n", file->msg.datasize);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_file_read_header_raw(DltFile *file,int resync,int verbose)
+DltReturnValue dlt_file_read_header_raw(DltFile *file, int resync, int verbose)
{
char dltSerialHeaderBuffer[DLT_ID_SIZE];
PRINT_FUNCTION_VERBOSE(verbose);
- if (file==0)
+ if (file == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* check if serial header exists, ignore if found */
@@ -1419,7 +1405,7 @@ int dlt_file_read_header_raw(DltFile *file,int resync,int verbose)
{
dlt_log(LOG_WARNING, "Cannot read header from file!\n");
}
- return -1;
+ return DLT_RETURN_ERROR;
}
if (memcmp(dltSerialHeaderBuffer,dltSerialHeader,sizeof(dltSerialHeader)) == 0)
{
@@ -1442,7 +1428,7 @@ int dlt_file_read_header_raw(DltFile *file,int resync,int verbose)
if (fread(dltSerialHeaderBuffer+3,1,1,file->handle)!=1)
{
/* cannot read any data, perhaps end of file reached */
- return -1;
+ return DLT_RETURN_ERROR;
}
if (memcmp(dltSerialHeaderBuffer,dltSerialHeader,sizeof(dltSerialHeader)) == 0)
{
@@ -1455,7 +1441,7 @@ int dlt_file_read_header_raw(DltFile *file,int resync,int verbose)
{
/* go back to last file position */
if (0 != fseek(file->handle,file->file_position,SEEK_SET))
- return -1;
+ return DLT_RETURN_ERROR;
}
}
@@ -1466,7 +1452,7 @@ int dlt_file_read_header_raw(DltFile *file,int resync,int verbose)
{
dlt_log(LOG_WARNING, "Cannot read header from file!\n");
}
- return -1;
+ return DLT_RETURN_ERROR;
}
/* set ptrs to structures */
@@ -1474,7 +1460,7 @@ int dlt_file_read_header_raw(DltFile *file,int resync,int verbose)
file->msg.standardheader = (DltStandardHeader*) (file->msg.headerbuffer + sizeof(DltStorageHeader));
/* Skip storage header field, fill this field with '0' */
- memset(file->msg.storageheader,0,sizeof(DltStorageHeader));
+ memset(file->msg.storageheader, 0, sizeof(DltStorageHeader));
/* Set storage header */
dlt_set_storageheader(file->msg.storageheader,DLT_COMMON_DUMMY_ECUID);
@@ -1496,19 +1482,19 @@ int dlt_file_read_header_raw(DltFile *file,int resync,int verbose)
{
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Plausibility check failed. Complete message size too short! (%d)\n", file->msg.datasize);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_file_read_header_extended(DltFile *file, int verbose)
+DltReturnValue dlt_file_read_header_extended(DltFile *file, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (file==0)
+ if (file == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* load standard header extra parameters if used */
@@ -1519,7 +1505,7 @@ int dlt_file_read_header_extended(DltFile *file, int verbose)
1,file->handle)!=1)
{
dlt_log(LOG_WARNING, "Cannot read standard header extra parameters from file!\n");
- return -1;
+ return DLT_RETURN_ERROR;
}
dlt_message_get_extraparameters(&(file->msg),verbose);
@@ -1529,7 +1515,7 @@ int dlt_file_read_header_extended(DltFile *file, int verbose)
if (DLT_IS_HTYP_UEH(file->msg.standardheader->htyp)==0)
{
/* there is nothing to be loaded */
- return 0;
+ return DLT_RETURN_OK;
}
if (fread(file->msg.headerbuffer+sizeof(DltStorageHeader)+sizeof(DltStandardHeader)+DLT_STANDARD_HEADER_EXTRA_SIZE(file->msg.standardheader->htyp),
@@ -1537,7 +1523,7 @@ int dlt_file_read_header_extended(DltFile *file, int verbose)
1,file->handle)!=1)
{
dlt_log(LOG_WARNING, "Cannot read extended header from file!\n");
- return -1;
+ return DLT_RETURN_ERROR;
}
/* set extended header ptr */
@@ -1548,39 +1534,39 @@ int dlt_file_read_header_extended(DltFile *file, int verbose)
}
else
{
- file->msg.extendedheader = 0;
+ file->msg.extendedheader = NULL;
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_file_read_data(DltFile *file, int verbose)
+DltReturnValue dlt_file_read_data(DltFile *file, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (file==0)
+ if (file == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* free last used memory for buffer */
if (file->msg.databuffer && (file->msg.databuffersize < file->msg.datasize))
{
free(file->msg.databuffer);
- file->msg.databuffer=0;
+ file->msg.databuffer = NULL;
}
- if (file->msg.databuffer == 0){
- /* get new memory for buffer */
- file->msg.databuffer = (uint8_t *)malloc(file->msg.datasize);
- file->msg.databuffersize = file->msg.datasize;
+ if (file->msg.databuffer == NULL){
+ /* get new memory for buffer */
+ file->msg.databuffer = (uint8_t *)malloc(file->msg.datasize);
+ file->msg.databuffersize = file->msg.datasize;
}
- if (file->msg.databuffer == 0)
+ if (file->msg.databuffer == NULL)
{
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Cannot allocate memory for payload buffer of size %d!\n",file->msg.datasize);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
/* load payload data from file */
@@ -1590,19 +1576,19 @@ int dlt_file_read_data(DltFile *file, int verbose)
{
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Cannot read payload data from file of size %d!\n",file->msg.datasize);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_file_open(DltFile *file,const char *filename,int verbose)
+DltReturnValue dlt_file_open(DltFile *file,const char *filename,int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if(!file || !filename)
- return -1;
+ if(file == NULL || filename == NULL)
+ return DLT_RETURN_WRONG_PARAMETER;
/* reset counters */
file->counter = 0;
@@ -1619,18 +1605,18 @@ int dlt_file_open(DltFile *file,const char *filename,int verbose)
/* open dlt file */
file->handle = fopen(filename,"rb");
- if (file->handle == 0)
+ if (file->handle == NULL)
{
- snprintf(str, DLT_COMMON_BUFFER_LENGTH - 1 ,"File %s cannot be opened!\n",filename);
+ snprintf(str, DLT_COMMON_BUFFER_LENGTH - 1 ,"File %s cannot be opened!\n", filename);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
- if (0 != fseek(file->handle,0,SEEK_END))
+ if (0 != fseek(file->handle, 0, SEEK_END))
{
- snprintf(str,DLT_COMMON_BUFFER_LENGTH,"dlt_file_open: Seek failed to 0,SEEK_END");
+ snprintf(str, DLT_COMMON_BUFFER_LENGTH, "dlt_file_open: Seek failed to 0,SEEK_END");
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
file->file_length = ftell(file->handle);
@@ -1638,7 +1624,7 @@ int dlt_file_open(DltFile *file,const char *filename,int verbose)
{
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"dlt_file_open: Seek failed to 0,SEEK_SET");
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
if (verbose)
@@ -1647,13 +1633,13 @@ int dlt_file_open(DltFile *file,const char *filename,int verbose)
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"File is %lu bytes long\n",file->file_length);
dlt_log(LOG_DEBUG, str);
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_file_read(DltFile *file,int verbose)
+DltReturnValue dlt_file_read(DltFile *file,int verbose)
{
long *ptr;
- int found = 0;
+ int found = DLT_RETURN_OK;
if (verbose)
{
@@ -1661,9 +1647,9 @@ int dlt_file_read(DltFile *file,int verbose)
dlt_log(LOG_DEBUG, str);
}
- if (file==0)
+ if (file == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* allocate new memory for index if number of messages exceeds a multiple of DLT_COMMON_INDEX_ALLOC (e.g.: 1000) */
@@ -1671,9 +1657,9 @@ int dlt_file_read(DltFile *file,int verbose)
{
ptr = (long *) malloc(((file->counter/DLT_COMMON_INDEX_ALLOC) + 1) * DLT_COMMON_INDEX_ALLOC * sizeof(long));
- if (ptr==0)
+ if (ptr == NULL)
{
- return -1;
+ return DLT_RETURN_ERROR;
}
if (file->index)
@@ -1689,7 +1675,7 @@ int dlt_file_read(DltFile *file,int verbose)
{
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Seek failed to file_position %ld \n",file->file_position);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
/* get file position at start of DLT message */
@@ -1700,17 +1686,17 @@ int dlt_file_read(DltFile *file,int verbose)
}
/* read header */
- if (dlt_file_read_header(file,verbose)<0)
+ if (dlt_file_read_header(file,verbose) < DLT_RETURN_OK)
{
/* go back to last position in file */
fseek(file->handle,file->file_position,SEEK_SET);
- return -1;
+ return DLT_RETURN_ERROR;
}
if (file->filter)
{
/* read the extended header if filter is enabled and extended header exists */
- if (dlt_file_read_header_extended(file, verbose)<0)
+ if (dlt_file_read_header_extended(file, verbose) < DLT_RETURN_OK)
{
/* go back to last position in file */
if (0 != fseek(file->handle,file->file_position,SEEK_SET))
@@ -1718,11 +1704,11 @@ int dlt_file_read(DltFile *file,int verbose)
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Seek to last file pos failed!\n");
dlt_log(LOG_WARNING, str);
}
- return-1;
+ return DLT_RETURN_ERROR;
}
/* check the filters if message is used */
- if (dlt_message_filter_check(&(file->msg),file->filter,verbose) == 1)
+ if (dlt_message_filter_check(&(file->msg),file->filter,verbose) == DLT_RETURN_TRUE)
{
/* filter matched, consequently store current message */
/* store index pointer to message position in DLT file */
@@ -1730,7 +1716,7 @@ int dlt_file_read(DltFile *file,int verbose)
file->counter++;
file->position = file->counter - 1;
- found = 1;
+ found = DLT_RETURN_TRUE;
}
/* skip payload data */
@@ -1746,7 +1732,7 @@ int dlt_file_read(DltFile *file,int verbose)
dlt_log(LOG_WARNING, str);
}
- return -1;
+ return DLT_RETURN_ERROR;
}
}
else
@@ -1765,7 +1751,7 @@ int dlt_file_read(DltFile *file,int verbose)
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Seek back also failed!\n");
dlt_log(LOG_WARNING, str);
}
- return -1;
+ return DLT_RETURN_ERROR;
}
/* store index pointer to message position in DLT file */
@@ -1773,7 +1759,7 @@ int dlt_file_read(DltFile *file,int verbose)
file->counter++;
file->position = file->counter - 1;
- found = 1;
+ found = DLT_RETURN_TRUE;
}
/* increase total message counter */
@@ -1785,28 +1771,28 @@ int dlt_file_read(DltFile *file,int verbose)
return found;
}
-int dlt_file_read_raw(DltFile *file,int resync, int verbose)
+DltReturnValue dlt_file_read_raw(DltFile *file, int resync, int verbose)
{
- int found = 0;
+ int found = DLT_RETURN_OK;
long *ptr;
if (verbose)
{
- snprintf(str,DLT_COMMON_BUFFER_LENGTH,"%s: Message %d:\n",__func__, file->counter_total);
+ snprintf(str, DLT_COMMON_BUFFER_LENGTH, "%s: Message %d:\n", __func__, file->counter_total);
dlt_log(LOG_DEBUG, str);
}
- if (file==0)
- return -1;
+ if (file == NULL)
+ return DLT_RETURN_WRONG_PARAMETER;
/* allocate new memory for index if number of messages exceeds a multiple of DLT_COMMON_INDEX_ALLOC (e.g.: 1000) */
if (file->counter % DLT_COMMON_INDEX_ALLOC == 0)
{
ptr = (long *) malloc(((file->counter/DLT_COMMON_INDEX_ALLOC) + 1) * DLT_COMMON_INDEX_ALLOC * sizeof(long));
- if (ptr==0)
+ if (ptr == NULL)
{
- return -1;
+ return DLT_RETURN_ERROR;
}
if (file->index)
@@ -1819,7 +1805,7 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose)
/* set to end of last successful read message, because of conflicting calls to dlt_file_read and dlt_file_message */
if (0 != fseek(file->handle,file->file_position,SEEK_SET))
- return -1;
+ return DLT_RETURN_ERROR;
/* get file position at start of DLT message */
if (verbose)
@@ -1829,7 +1815,7 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose)
}
/* read header */
- if (dlt_file_read_header_raw(file,resync,verbose)<0)
+ if (dlt_file_read_header_raw(file,resync,verbose) < DLT_RETURN_OK)
{
/* go back to last position in file */
if (0!= fseek(file->handle,file->file_position,SEEK_SET))
@@ -1837,11 +1823,11 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose)
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"dlt_file_read_raw, fseek failed 1\n");
dlt_log(LOG_WARNING, str);
}
- return -1;
+ return DLT_RETURN_ERROR;
}
/* read the extended header if filter is enabled and extended header exists */
- if (dlt_file_read_header_extended(file, verbose)<0)
+ if (dlt_file_read_header_extended(file, verbose) < DLT_RETURN_OK)
{
/* go back to last position in file */
if (0 != fseek(file->handle,file->file_position,SEEK_SET))
@@ -1849,10 +1835,10 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose)
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"dlt_file_read_raw, fseek failed 2\n");
dlt_log(LOG_WARNING, str);
}
- return-1;
+ return DLT_RETURN_ERROR;
}
- if (dlt_file_read_data(file,verbose)<0)
+ if (dlt_file_read_data(file,verbose) < DLT_RETURN_OK)
{
/* go back to last position in file */
if (0 != fseek(file->handle,file->file_position,SEEK_SET))
@@ -1860,7 +1846,7 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose)
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"dlt_file_read_raw, fseek failed 3\n");
dlt_log(LOG_WARNING, str);
}
- return-1;
+ return DLT_RETURN_ERROR;
}
/* store index pointer to message position in DLT file */
@@ -1868,7 +1854,7 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose)
file->counter++;
file->position = file->counter - 1;
- found = 1;
+ found = DLT_RETURN_TRUE;
/* increase total message counter */
file->counter_total++;
@@ -1879,13 +1865,13 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose)
return found;
}
-int dlt_file_close(DltFile *file,int verbose)
+DltReturnValue dlt_file_close(DltFile *file, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (file==0)
+ if (file == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
if (file->handle)
@@ -1893,26 +1879,26 @@ int dlt_file_close(DltFile *file,int verbose)
fclose(file->handle);
}
- file->handle = 0;
+ file->handle = NULL;
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_file_message(DltFile *file,int index,int verbose)
+DltReturnValue dlt_file_message(DltFile *file, int index, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (file==0)
+ if (file == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* check if message is in range */
if (index >= file->counter)
{
- snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Message %d out of range!\r\n",index);
+ snprintf(str,DLT_COMMON_BUFFER_LENGTH, "Message %d out of range!\r\n", index);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* seek to position in file */
@@ -1920,38 +1906,38 @@ int dlt_file_message(DltFile *file,int index,int verbose)
{
snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Seek to message %d to position %ld failed!\r\n",index,file->index[index]);
dlt_log(LOG_WARNING, str);
- return -1;
+ return DLT_RETURN_ERROR;
}
/* read all header and payload */
- if (dlt_file_read_header(file,verbose)<0)
+ if (dlt_file_read_header(file,verbose) < DLT_RETURN_OK)
{
- return -1;
+ return DLT_RETURN_ERROR;
}
- if (dlt_file_read_header_extended(file,verbose)<0)
+ if (dlt_file_read_header_extended(file,verbose) < DLT_RETURN_OK)
{
- return -1;
+ return DLT_RETURN_ERROR;
}
- if (dlt_file_read_data(file,verbose)<0)
+ if (dlt_file_read_data(file,verbose) < DLT_RETURN_OK)
{
- return -1;
+ return DLT_RETURN_ERROR;
}
/* set current position in file */
file->position = index;
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_file_free(DltFile *file,int verbose)
+DltReturnValue dlt_file_free(DltFile *file, int verbose)
{
PRINT_FUNCTION_VERBOSE(verbose);
- if (file==0)
+ if (file == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* delete index lost if exists */
@@ -1959,32 +1945,42 @@ int dlt_file_free(DltFile *file,int verbose)
{
free(file->index);
}
- file->index = 0;
+ file->index = NULL;
/* close file */
if (file->handle)
{
fclose(file->handle);
}
- file->handle = 0;
+ file->handle = NULL;
return dlt_message_free(&(file->msg),verbose);
}
void dlt_log_set_level(int level)
{
- logging_level = level;
+ if(level < 0 || level > LOG_DEBUG)
+ {
+ if(logging_level < LOG_WARNING)
+ logging_level = LOG_WARNING;
+
+ dlt_vlog(LOG_WARNING, "Wrong parameter for level: %d\n", level);
+ }
+ else
+ logging_level = level;
}
void dlt_log_set_filename(const char *filename)
{
// check nullpointer
- if(!filename)
+ if(filename == NULL)
+ {
+ dlt_log(LOG_WARNING, "Wrong parameter: filename is NULL\n");
return;
+ }
- strncpy(logging_filename,filename,NAME_MAX);
+ strncpy(logging_filename, filename, NAME_MAX);
logging_filename[NAME_MAX]=0;
-
}
void dlt_log_set_fifo_basedir(const char * env_pipe_dir)
@@ -1995,81 +1991,135 @@ void dlt_log_set_fifo_basedir(const char * env_pipe_dir)
void dlt_log_init(int mode)
{
+ if(mode < DLT_LOG_TO_CONSOLE || mode > DLT_LOG_DROPPED)
+ {
+ dlt_vlog(LOG_WARNING, "Wrong parameter for mode: %d\n", mode);
+ return;
+ }
+
logging_mode = mode;
- if(logging_mode == DLT_LOG_TO_FILE)
- {
- /* internal logging to file */
- logging_handle = fopen(logging_filename,"w");
- if (logging_handle == 0)
- {
- printf("Internal log file %s cannot be opened!\n",logging_filename);
- return;
- }
- }
+ if(logging_mode == DLT_LOG_TO_FILE)
+ {
+ /* internal logging to file */
+ logging_handle = fopen(logging_filename,"w");
+ if (logging_handle == NULL)
+ {
+ printf("Internal log file %s cannot be opened!\n", logging_filename);
+ return;
+ }
+ }
}
void dlt_log_free(void)
{
- if(logging_mode == DLT_LOG_TO_FILE) {
- fclose(logging_handle);
- }
+ if(logging_mode == DLT_LOG_TO_FILE) {
+ fclose(logging_handle);
+ }
}
-int dlt_log(int prio, char *s)
+DltReturnValue dlt_log(int prio, char *s)
{
static const char asSeverity[LOG_DEBUG+2][11] = {"EMERGENCY", "ALERT ", "CRITICAL ", "ERROR ", "WARNING ", "NOTICE ", "INFO ", "DEBUG ", " "};
static const char sFormatString[] = "[%5d.%06d]~DLT~%5d~%s~%s";
struct timespec sTimeSpec;
- if (s==0)
+ if (s == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
+ }
+ if(logging_level<prio)
+ {
+ return DLT_RETURN_OK;
}
- if(logging_level<prio)
- {
- return 0;
- }
if ((prio < 0) || (prio > LOG_DEBUG))
{
prio = LOG_DEBUG + 1;
}
clock_gettime(CLOCK_MONOTONIC, &sTimeSpec);
- switch(logging_mode)
- {
- case DLT_LOG_TO_CONSOLE:
- /* log to stdout */
- printf(sFormatString, (unsigned int)sTimeSpec.tv_sec, (unsigned int)(sTimeSpec.tv_nsec/1000), getpid(), asSeverity[prio], s);
- break;
- case DLT_LOG_TO_SYSLOG:
- /* log to syslog */
+ switch(logging_mode)
+ {
+ case DLT_LOG_TO_CONSOLE:
+ /* log to stdout */
+ printf(sFormatString, (unsigned int)sTimeSpec.tv_sec, (unsigned int)(sTimeSpec.tv_nsec/1000), getpid(), asSeverity[prio], s);
+ break;
+ case DLT_LOG_TO_SYSLOG:
+ /* log to syslog */
#if !defined (__WIN32__) && !defined(_MSC_VER)
- openlog("DLT",LOG_PID,LOG_DAEMON);
- syslog(prio, sFormatString, (unsigned int)sTimeSpec.tv_sec, (unsigned int)(sTimeSpec.tv_nsec/1000), getpid(), asSeverity[prio], s);
- closelog();
+ openlog("DLT",LOG_PID,LOG_DAEMON);
+ syslog(prio, sFormatString, (unsigned int)sTimeSpec.tv_sec, (unsigned int)(sTimeSpec.tv_nsec/1000), getpid(), asSeverity[prio], s);
+ closelog();
#endif
- break;
- case DLT_LOG_TO_FILE:
- /* log to file */
- if(logging_handle) {
- fprintf(logging_handle,sFormatString, (unsigned int)sTimeSpec.tv_sec, (unsigned int)(sTimeSpec.tv_nsec/1000), getpid(), asSeverity[prio], s);
- fflush(logging_handle);
- }
- break;
- case DLT_LOG_DROPPED:
- default:
- break;
- }
+ break;
+ case DLT_LOG_TO_FILE:
+ /* log to file */
+ if(logging_handle) {
+ fprintf(logging_handle,sFormatString, (unsigned int)sTimeSpec.tv_sec, (unsigned int)(sTimeSpec.tv_nsec/1000), getpid(), asSeverity[prio], s);
+ fflush(logging_handle);
+ }
+ break;
+ case DLT_LOG_DROPPED:
+ default:
+ break;
+ }
- return 0;
+ return DLT_RETURN_OK;
+}
+
+DltReturnValue dlt_vlog(int prio, const char *format, ...)
+{
+ char outputString[2048] = { 0 }; /* TODO: what is a reasonable string length here? */
+
+ va_list args;
+
+ if (format == NULL)
+ return DLT_RETURN_WRONG_PARAMETER;
+
+ if (logging_level < prio)
+ return DLT_RETURN_OK;
+
+ va_start(args, format);
+ vsnprintf(outputString, 2047, format, args);
+ va_end(args);
+
+ dlt_log(prio, outputString);
+
+ return DLT_RETURN_OK;
+}
+
+DltReturnValue dlt_vnlog(int prio, size_t size, const char *format, ...)
+{
+ char *outputString = NULL;
+
+ va_list args;
+
+ if (format == NULL)
+ return DLT_RETURN_WRONG_PARAMETER;
+
+ if (logging_level < prio || size == 0)
+ return DLT_RETURN_OK;
+
+ if ( (outputString = (char*) calloc(size + 1, sizeof(char))) == NULL )
+ return DLT_RETURN_ERROR;
+
+ va_start(args, format);
+ vsnprintf(outputString, size, format, args);
+ va_end(args);
+
+ dlt_log(prio, outputString);
+
+ free(outputString);
+ outputString = NULL;
+
+ return DLT_RETURN_OK;
}
-int dlt_receiver_init(DltReceiver *receiver,int fd, int buffersize)
+DltReturnValue dlt_receiver_init(DltReceiver *receiver, int fd, int buffersize)
{
- if (receiver==0)
+ if (receiver == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
receiver->lastBytesRcvd = 0;
@@ -2079,25 +2129,25 @@ int dlt_receiver_init(DltReceiver *receiver,int fd, int buffersize)
receiver->fd = fd;
receiver->buffer = (char*)malloc(receiver->buffersize);
- if (receiver->buffer == 0)
+ if (receiver->buffer == NULL)
{
- receiver->buf = 0;
- return -1;
+ receiver->buf = NULL;
+ return DLT_RETURN_ERROR;
}
else
{
receiver->buf = receiver->buffer;
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_receiver_free(DltReceiver *receiver)
+DltReturnValue dlt_receiver_free(DltReceiver *receiver)
{
- if (receiver==0)
+ if (receiver == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
if (receiver->buffer)
@@ -2105,21 +2155,21 @@ int dlt_receiver_free(DltReceiver *receiver)
free(receiver->buffer);
}
- receiver->buffer = 0;
- receiver->buf = 0;
+ receiver->buffer = NULL;
+ receiver->buf = NULL;
- return 0;
+ return DLT_RETURN_OK;
}
#ifndef QT_VIEWER
int dlt_receiver_receive_socket(DltReceiver *receiver)
{
- if (receiver==0)
+ if (receiver == NULL)
{
return -1;
}
- if (receiver->buffer==0)
+ if (receiver->buffer == NULL)
{
return -1;
}
@@ -2144,12 +2194,12 @@ int dlt_receiver_receive_socket(DltReceiver *receiver)
int dlt_receiver_receive_fd(DltReceiver *receiver)
{
- if (receiver==0)
+ if (receiver == NULL)
{
return -1;
}
- if (receiver->buffer==0)
+ if (receiver->buffer == NULL)
{
return -1;
}
@@ -2171,41 +2221,41 @@ int dlt_receiver_receive_fd(DltReceiver *receiver)
return receiver->bytesRcvd;
}
-int dlt_receiver_remove(DltReceiver *receiver,int size)
+DltReturnValue dlt_receiver_remove(DltReceiver *receiver, int size)
{
- if (receiver==0)
+ if (receiver == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
- if (receiver->buf==0)
+ if (receiver->buf == NULL)
{
- return -1;
+ return DLT_RETURN_ERROR;
}
if (size > receiver->bytesRcvd || size <= 0)
{
- receiver->buf = receiver->buf + receiver->bytesRcvd;
- receiver->bytesRcvd=0;
- return -1;
+ receiver->buf = receiver->buf + receiver->bytesRcvd;
+ receiver->bytesRcvd = 0;
+ return DLT_RETURN_WRONG_PARAMETER;
}
receiver->bytesRcvd = receiver->bytesRcvd - size;
receiver->buf = receiver->buf + size;
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_receiver_move_to_begin(DltReceiver *receiver)
+DltReturnValue dlt_receiver_move_to_begin(DltReceiver *receiver)
{
- if (receiver==0)
+ if (receiver == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
- if ((receiver->buffer==0) || (receiver->buf==0))
+ if ((receiver->buffer == NULL) || (receiver->buf == NULL))
{
- return -1;
+ return DLT_RETURN_ERROR;
}
if ((receiver->buffer!=receiver->buf) && (receiver->bytesRcvd!=0))
@@ -2213,19 +2263,19 @@ int dlt_receiver_move_to_begin(DltReceiver *receiver)
memmove(receiver->buffer,receiver->buf,receiver->bytesRcvd);
}
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_set_storageheader(DltStorageHeader *storageheader, const char *ecu)
+DltReturnValue dlt_set_storageheader(DltStorageHeader *storageheader, const char *ecu)
{
#if !defined(_MSC_VER)
struct timeval tv;
#endif
- if (storageheader==0)
+ if (storageheader == NULL || ecu == NULL)
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
/* get time of day */
@@ -2251,20 +2301,19 @@ int dlt_set_storageheader(DltStorageHeader *storageheader, const char *ecu)
storageheader->microseconds = (int32_t)tv.tv_usec; /* value is long */
#endif
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_check_storageheader(DltStorageHeader *storageheader)
+DltReturnValue dlt_check_storageheader(DltStorageHeader *storageheader)
{
- if (storageheader==0)
- {
- return -1;
- }
+ if (storageheader == NULL)
+ return DLT_RETURN_WRONG_PARAMETER;
return ((storageheader->pattern[0] == 'D') &&
(storageheader->pattern[1] == 'L') &&
(storageheader->pattern[2] == 'T') &&
- (storageheader->pattern[3] == 1));
+ (storageheader->pattern[3] == 1))
+ ? DLT_RETURN_TRUE : DLT_RETURN_OK;
}
@@ -2278,131 +2327,147 @@ int dlt_check_storageheader(DltStorageHeader *storageheader)
-int dlt_buffer_init_static_server(DltBuffer *buf, const unsigned char *ptr, uint32_t size)
+DltReturnValue dlt_buffer_init_static_server(DltBuffer *buf, const unsigned char *ptr, uint32_t size)
{
- char str[256];
- DltBufferHead *head;
+ if(buf == NULL || ptr == NULL)
+ return DLT_RETURN_WRONG_PARAMETER;
- // Init parameters
- buf->shm = (unsigned char *)ptr;
- buf->min_size = size;
- buf->max_size = size;
- buf->step_size = 0;
+ char str[256];
+ DltBufferHead *head;
- // Init pointers
- head = (DltBufferHead*)buf->shm;
- head->read = 0;
- head->write = 0;
- head->count = 0;
+ // Init parameters
+ buf->shm = (unsigned char *)ptr;
+ buf->min_size = size;
+ buf->max_size = size;
+ buf->step_size = 0;
+
+ // Init pointers
+ head = (DltBufferHead*)buf->shm;
+ head->read = 0;
+ head->write = 0;
+ head->count = 0;
buf->mem = (unsigned char *)(buf->shm + sizeof(DltBufferHead));
- buf->size = buf->min_size - sizeof(DltBufferHead);
+ buf->size = buf->min_size - sizeof(DltBufferHead);
- // clear memory
- memset(buf->mem,0,buf->size);
+ // clear memory
+ memset(buf->mem, 0, buf->size);
- snprintf(str,sizeof(str),"Buffer: Size %d\n",buf->size);
- dlt_log(LOG_DEBUG, str);
+ snprintf(str,sizeof(str),"Buffer: Size %d\n",buf->size);
+ dlt_log(LOG_DEBUG, str);
- return 0; /* OK */
+ return DLT_RETURN_OK; /* OK */
}
-int dlt_buffer_init_static_client(DltBuffer *buf, const unsigned char *ptr, uint32_t size)
+DltReturnValue dlt_buffer_init_static_client(DltBuffer *buf, const unsigned char *ptr, uint32_t size)
{
- char str[256];
+ if(buf == NULL || ptr == NULL)
+ return DLT_RETURN_WRONG_PARAMETER;
+
+ char str[256];
- // Init parameters
- buf->shm = (unsigned char *)ptr;
- buf->min_size = size;
- buf->max_size = size;
- buf->step_size = 0;
+ // Init parameters
+ buf->shm = (unsigned char *)ptr;
+ buf->min_size = size;
+ buf->max_size = size;
+ buf->step_size = 0;
- // Init pointers
+ // Init pointers
buf->mem = (unsigned char *)(buf->shm + sizeof(DltBufferHead));
buf->size = buf->min_size - sizeof(DltBufferHead);
- snprintf(str,sizeof(str),"Buffer: Size %d\n",buf->size);
- dlt_log(LOG_DEBUG, str);
+ snprintf(str,sizeof(str),"Buffer: Size %d\n",buf->size);
+ dlt_log(LOG_DEBUG, str);
- return 0; /* OK */
+ return DLT_RETURN_OK; /* OK */
}
-int dlt_buffer_init_dynamic(DltBuffer *buf, uint32_t min_size, uint32_t max_size,uint32_t step_size)
+DltReturnValue dlt_buffer_init_dynamic(DltBuffer *buf, uint32_t min_size, uint32_t max_size,uint32_t step_size)
{
//Do not DLT_SEM_LOCK inside here!
- char str[256];
- DltBufferHead *head;
+ char str[256];
+ DltBufferHead *head;
// catch null pointer
- if(!buf)
- return -1;
+ if(buf == NULL)
+ return DLT_RETURN_WRONG_PARAMETER;
// catch 0 logical errors
if(min_size == 0 || max_size == 0 || step_size == 0)
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
- // Init parameters
- buf->min_size = min_size;
- buf->max_size = max_size;
- buf->step_size = step_size;
-
- // allocat memory
- buf->shm = malloc(buf->min_size);
- if(buf->shm == NULL) {
- snprintf(str,sizeof(str),"Buffer: Cannot allocate %d bytes\n",buf->min_size);
- dlt_log(LOG_EMERG, str);
- return -1;
- }
+ if(min_size > max_size)
+ return DLT_RETURN_WRONG_PARAMETER;
+
+ if(step_size > max_size)
+ return DLT_RETURN_WRONG_PARAMETER;
+
+ // Init parameters
+ buf->min_size = min_size;
+ buf->max_size = max_size;
+ buf->step_size = step_size;
+
+ // allocat memory
+ buf->shm = malloc(buf->min_size);
+ if(buf->shm == NULL) {
+ snprintf(str,sizeof(str),"Buffer: Cannot allocate %d bytes\n",buf->min_size);
+ dlt_log(LOG_EMERG, str);
+ return DLT_RETURN_ERROR;
+ }
- // Init pointers
- head = (DltBufferHead*)buf->shm;
- head->read = 0;
- head->write = 0;
- head->count = 0;
+ // Init pointers
+ head = (DltBufferHead*)buf->shm;
+ head->read = 0;
+ head->write = 0;
+ head->count = 0;
buf->mem = (unsigned char *)(buf->shm + sizeof(DltBufferHead));
buf->size = buf->min_size - sizeof(DltBufferHead);
- // clear memory
- memset(buf->mem,0,buf->size);
+ // clear memory
+ memset(buf->mem,0,buf->size);
- //snprintf(str,sizeof(str),"Buffer: Size %d bytes\n",buf->size);
- //dlt_log(LOG_INFO, str);
+ //snprintf(str,sizeof(str),"Buffer: Size %d bytes\n",buf->size);
+ //dlt_log(LOG_INFO, str);
- return 0; /* OK */
+ return DLT_RETURN_OK; /* OK */
}
-int dlt_buffer_free_static(DltBuffer *buf)
+DltReturnValue dlt_buffer_free_static(DltBuffer *buf)
{
- if(!buf->mem) {
- // buffer not initialised
- dlt_log(LOG_WARNING,"Buffer: Buffer not initialised\n");
- return -1; /* ERROR */
- }
+ // catch null pointer
+ if(buf == NULL)
+ return DLT_RETURN_WRONG_PARAMETER;
- return 0;
+ if(buf->mem == NULL) {
+ // buffer not initialized
+ dlt_log(LOG_WARNING,"Buffer: Buffer not initialized\n");
+ return DLT_RETURN_ERROR; /* ERROR */
+ }
+
+ return DLT_RETURN_OK;
}
-int dlt_buffer_free_dynamic(DltBuffer *buf)
+DltReturnValue dlt_buffer_free_dynamic(DltBuffer *buf)
{
// catch null pointer
- if(!buf)
- return -1;
+ if(buf == NULL)
+ return DLT_RETURN_WRONG_PARAMETER;
- if(!buf->shm) {
- // buffer not initialised
- dlt_log(LOG_WARNING,"Buffer: Buffer not initialised\n");
- return -1; /* ERROR */
- }
+ if(buf->shm == NULL) {
+ // buffer not initialized
+ dlt_log(LOG_WARNING,"Buffer: Buffer not initialized\n");
+ return DLT_RETURN_ERROR; /* ERROR */
+ }
free(buf->shm);
- buf->shm = 0;
- buf->mem = 0;
-
- return 0;
+ buf->shm = NULL;
+ buf->mem = NULL;
+
+ return DLT_RETURN_OK;
}
-void dlt_buffer_write_block(DltBuffer *buf,int *write, const unsigned char *data,unsigned int size)
+void dlt_buffer_write_block(DltBuffer *buf, int *write, const unsigned char *data, unsigned int size)
{
// catch null pointer
- if(buf && write && data) {
+ if(buf != NULL && write != NULL && data != NULL) {
if((int)(*write+size) <= buf->size) {
// write one block
memcpy(buf->mem+*write,data,size);
@@ -2415,12 +2480,16 @@ void dlt_buffer_write_block(DltBuffer *buf,int *write, const unsigned char *data
*write += size-buf->size;
}
}
+ else
+ {
+ dlt_log(LOG_WARNING, "Wrong parameter: Null pointer\n");
+ }
}
-void dlt_buffer_read_block(DltBuffer *buf,int *read,unsigned char *data,unsigned int size)
+void dlt_buffer_read_block(DltBuffer *buf, int *read, unsigned char *data, unsigned int size)
{
// catch nullpointer
- if(buf && read && data) {
+ if(buf != NULL && read != NULL && data != NULL) {
if((int)(*read+size) <= buf->size) {
// read one block
memcpy(data,buf->mem+*read,size);
@@ -2433,420 +2502,440 @@ void dlt_buffer_read_block(DltBuffer *buf,int *read,unsigned char *data,unsigned
*read += size-buf->size;
}
}
+ else
+ {
+ dlt_log(LOG_WARNING, "Wrong parameter: Null pointer\n");
+ }
}
int dlt_buffer_increase_size(DltBuffer *buf)
{
// catch null pointer
- if(!buf)
+ if(buf == NULL) {
return -1;
+ }
- DltBufferHead *head,*new_head;
- unsigned char *new_ptr;
+ DltBufferHead *head,*new_head;
+ unsigned char *new_ptr;
- /* check size */
- if(buf->step_size==0) {
- /* cannot increase size */
- return -1;
- }
+ /* check size */
+ if(buf->step_size==0) {
+ /* cannot increase size */
+ return -1;
+ }
- /* check size */
- if((buf->size + sizeof(DltBufferHead) + buf->step_size) > buf->max_size) {
- /* max size reached, do not increase */
- return -1;
- }
+ /* check size */
+ if((buf->size + sizeof(DltBufferHead) + buf->step_size) > buf->max_size) {
+ /* max size reached, do not increase */
+ return -1;
+ }
- /* allocate new buffer */
- new_ptr = malloc(buf->size + sizeof(DltBufferHead) + buf->step_size);
- if(new_ptr == NULL) {
- snprintf(str,sizeof(str),"Buffer: Cannot increase size because allocate %d bytes failed\n",buf->min_size);
- dlt_log(LOG_WARNING, str);
- return -1;
- }
-
- /* copy data */
- head = (DltBufferHead*)buf->shm;
- new_head = (DltBufferHead*)new_ptr;
- if(head->read < head->write) {
- memcpy(new_ptr+sizeof(DltBufferHead) , buf->mem+head->read , head->write-head->read);
- new_head->read = 0;
- new_head->write = head->write-head->read;
- new_head->count = head->count;
- }
- else {
- memcpy(new_ptr+sizeof(DltBufferHead) , buf->mem+head->read , buf->size-head->read);
- memcpy(new_ptr+sizeof(DltBufferHead)+buf->size-head->read , buf->mem , head->write);
- new_head->read = 0;
- new_head->write = buf->size-head->read+head->write;
- new_head->count = head->count;
- }
-
- /* free old data */
- free(buf->shm);
-
- /* update data */
- buf->shm = new_ptr;
- buf->mem = new_ptr+sizeof(DltBufferHead);
- buf->size += buf->step_size;
-
- snprintf(str,sizeof(str),"Buffer: Size increased to %d bytes\n",buf->size+(int32_t)sizeof(DltBufferHead));
- dlt_log(LOG_DEBUG, str);
+ /* allocate new buffer */
+ new_ptr = malloc(buf->size + sizeof(DltBufferHead) + buf->step_size);
+ if(new_ptr == NULL) {
+ snprintf(str,sizeof(str),"Buffer: Cannot increase size because allocate %d bytes failed\n",buf->min_size);
+ dlt_log(LOG_WARNING, str);
+ return -1;
+ }
+
+ /* copy data */
+ head = (DltBufferHead*)buf->shm;
+ new_head = (DltBufferHead*)new_ptr;
+ if(head->read < head->write) {
+ memcpy(new_ptr+sizeof(DltBufferHead) , buf->mem+head->read , head->write-head->read);
+ new_head->read = 0;
+ new_head->write = head->write-head->read;
+ new_head->count = head->count;
+ }
+ else {
+ memcpy(new_ptr+sizeof(DltBufferHead) , buf->mem+head->read , buf->size-head->read);
+ memcpy(new_ptr+sizeof(DltBufferHead)+buf->size-head->read , buf->mem , head->write);
+ new_head->read = 0;
+ new_head->write = buf->size-head->read+head->write;
+ new_head->count = head->count;
+ }
+
+ /* free old data */
+ free(buf->shm);
- return 0; // OK
+ /* update data */
+ buf->shm = new_ptr;
+ buf->mem = new_ptr+sizeof(DltBufferHead);
+ buf->size += buf->step_size;
+
+ snprintf(str,sizeof(str), "Buffer: Size increased to %d bytes\n", buf->size+(int32_t)sizeof(DltBufferHead));
+ dlt_log(LOG_DEBUG, str);
+
+ return 0; // OK
}
int dlt_buffer_minimize_size(DltBuffer *buf)
{
- unsigned char *new_ptr;
+ unsigned char *new_ptr;
// catch null pointer
- if(!buf)
+ if(buf == NULL)
+ {
+ dlt_log(LOG_WARNING, "Wrong parameter: Null pointer\n");
return -1;
+ }
- if((buf->size + sizeof(DltBufferHead)) == buf->min_size)
- {
- /* already minimized */
- return 0;
- }
+ if((buf->size + sizeof(DltBufferHead)) == buf->min_size)
+ {
+ /* already minimized */
+ return 0;
+ }
- /* allocate new buffer */
- new_ptr = malloc(buf->min_size);
- if(new_ptr == NULL) {
- snprintf(str,sizeof(str),"Buffer: Cannot set to min size of %d bytes\n",buf->min_size);
- dlt_log(LOG_WARNING, str);
- return -1;
- }
+ /* allocate new buffer */
+ new_ptr = malloc(buf->min_size);
+ if(new_ptr == NULL) {
+ snprintf(str,sizeof(str),"Buffer: Cannot set to min size of %d bytes\n",buf->min_size);
+ dlt_log(LOG_WARNING, str);
+ return -1;
+ }
- /* free old data */
- free(buf->shm);
+ /* free old data */
+ free(buf->shm);
- /* update data */
- buf->shm = new_ptr;
- buf->mem = new_ptr+sizeof(DltBufferHead);
- buf->size = buf->min_size - sizeof(DltBufferHead);
+ /* update data */
+ buf->shm = new_ptr;
+ buf->mem = new_ptr+sizeof(DltBufferHead);
+ buf->size = buf->min_size - sizeof(DltBufferHead);
- /* reset pointers and counters */
- ((int*)(buf->shm))[0] = 0; // pointer to write memory
- ((int*)(buf->shm))[1] = 0; // pointer to read memory
- ((int*)(buf->shm))[2] = 0; // number of packets
+ /* reset pointers and counters */
+ ((int*)(buf->shm))[0] = 0; // pointer to write memory
+ ((int*)(buf->shm))[1] = 0; // pointer to read memory
+ ((int*)(buf->shm))[2] = 0; // number of packets
- // clear memory
- memset(buf->mem,0,buf->size);
+ // clear memory
+ memset(buf->mem, 0, buf->size);
- dlt_log(LOG_DEBUG,"Buffer: Buffer minimized.\n");
+ dlt_log(LOG_DEBUG,"Buffer: Buffer minimized.\n");
- return 0; /* OK */
+ return 0; /* OK */
}
int dlt_buffer_reset(DltBuffer *buf)
{
// catch null pointer
- if(!buf)
+ if(buf == NULL)
+ {
+ dlt_log(LOG_WARNING, "Wrong parameter: Null pointer\n");
return -1;
+ }
- dlt_log(LOG_WARNING,"Buffer: Buffer reset triggered.\n");
+ dlt_log(LOG_WARNING, "Buffer: Buffer reset triggered.\n");
- /* reset pointers and counters */
- ((int*)(buf->shm))[0] = 0; // pointer to write memory
- ((int*)(buf->shm))[1] = 0; // pointer to read memory
- ((int*)(buf->shm))[2] = 0; // number of packets
+ /* reset pointers and counters */
+ ((int*)(buf->shm))[0] = 0; // pointer to write memory
+ ((int*)(buf->shm))[1] = 0; // pointer to read memory
+ ((int*)(buf->shm))[2] = 0; // number of packets
- // clear memory
+ // clear memory
memset(buf->mem,0,buf->size);
- return 0; /* OK */
+ return 0; /* OK */
}
-int dlt_buffer_push(DltBuffer *buf,const unsigned char *data,unsigned int size)
+DltReturnValue dlt_buffer_push(DltBuffer *buf,const unsigned char *data,unsigned int size)
{
- return dlt_buffer_push3(buf,data,size,0,0,0,0);
+ return dlt_buffer_push3(buf, data, size, 0, 0, 0, 0);
}
-int dlt_buffer_push3(DltBuffer *buf,const unsigned char *data1,unsigned int size1,const unsigned char *data2,unsigned int size2,const unsigned char *data3,unsigned int size3)
+int dlt_buffer_push3(DltBuffer *buf, const unsigned char *data1, unsigned int size1, const unsigned char *data2, unsigned int size2, const unsigned char *data3, unsigned int size3)
{
- int free_size;
- int write, read, count;
- DltBufferBlockHead head;
+ int free_size;
+ int write, read, count;
+ DltBufferBlockHead head;
// catch null pointer
- if(!buf)
- return -1;
-
- if(!buf->shm) {
- // buffer not initialised
- dlt_log(LOG_ERR,"Buffer: Buffer not initialised\n");
- return -1; /* ERROR */
- }
+ if (buf == NULL)
+ return DLT_RETURN_ERROR;
- // get current write pointer
- write = ((int*)(buf->shm))[0];
- read = ((int*)(buf->shm))[1];
- count = ((int*)(buf->shm))[2];
+ if (buf->shm == NULL)
+ {
+ // buffer not initialised
+ dlt_log(LOG_ERR, "Buffer: Buffer not initialised\n");
+ return DLT_RETURN_ERROR; /* ERROR */
+ }
- // check pointers
- if((read>buf->size) || (write>buf->size))
- {
- dlt_log(LOG_ERR,"Buffer: Pointer out of range\n");
- dlt_buffer_reset(buf);
- return -1; // ERROR
- }
+ // get current write pointer
+ write = ((int*) (buf->shm))[0];
+ read = ((int*) (buf->shm))[1];
+ count = ((int*) (buf->shm))[2];
- // calculate free size
- if(read>write)
- free_size = read - write;
- else if(count && (write == read))
- free_size = 0;
- else
- free_size = buf->size - write + read;
-
- // check size
- if(free_size < (int)(sizeof(DltBufferBlockHead)+size1+size2+size3)) {
- // try to increase size if possible
- if(dlt_buffer_increase_size(buf)) {
- /* increase size is not possible */
- //dlt_log(LOG_ERR,"Buffer: Buffer is full\n");
- return -1; // ERROR
- }
- // update pointers
- write = ((int*)(buf->shm))[0];
- read = ((int*)(buf->shm))[1];
- }
+ // check pointers
+ if ((read > buf->size) || (write > buf->size))
+ {
+ dlt_log(LOG_ERR, "Buffer: Pointer out of range\n");
+ dlt_buffer_reset(buf);
+ return DLT_RETURN_ERROR; // ERROR
+ }
- // set header
- strncpy(head.head,DLT_BUFFER_HEAD,3);
- head.head[3]=0;
- head.status = 2;
- head.size = size1+size2+size3;
+ // calculate free size
+ if (read > write)
+ free_size = read - write;
+ else if (count && (write == read))
+ free_size = 0;
+ else
+ free_size = buf->size - write + read;
- // write data
- dlt_buffer_write_block(buf,&write,(unsigned char*)&head,sizeof(DltBufferBlockHead));
- if(size1) dlt_buffer_write_block(buf,&write,data1,size1);
- if(size2) dlt_buffer_write_block(buf,&write,data2,size2);
- if(size3) dlt_buffer_write_block(buf,&write,data3,size3);
+ // check size
+ if (free_size < (int) (sizeof(DltBufferBlockHead) + size1 + size2 + size3))
+ {
+ // try to increase size if possible
+ if (dlt_buffer_increase_size(buf))
+ {
+ /* increase size is not possible */
+ //dlt_log(LOG_ERR,"Buffer: Buffer is full\n");
+ return DLT_RETURN_ERROR; // ERROR
+ }
+
+ // update pointers
+ write = ((int*) (buf->shm))[0];
+ read = ((int*) (buf->shm))[1];
+ }
- // update global shm pointers
- ((int*)(buf->shm))[0] = write; // set new write pointer
- ((int*)(buf->shm))[2] += 1; // increase counter
+ // set header
+ strncpy(head.head, DLT_BUFFER_HEAD, 3);
+ head.head[3] = 0;
+ head.status = 2;
+ head.size = size1 + size2 + size3;
+
+ // write data
+ dlt_buffer_write_block(buf, &write, (unsigned char*) &head, sizeof(DltBufferBlockHead));
+ if (size1)
+ dlt_buffer_write_block(buf, &write, data1, size1);
+ if (size2)
+ dlt_buffer_write_block(buf, &write, data2, size2);
+ if (size3)
+ dlt_buffer_write_block(buf, &write, data3, size3);
+
+ // update global shm pointers
+ ((int*) (buf->shm))[0] = write; // set new write pointer
+ ((int*) (buf->shm))[2] += 1; // increase counter
+
+ return DLT_RETURN_OK; // OK
- return 0; // OK
-
}
-int dlt_buffer_get(DltBuffer *buf,unsigned char *data, int max_size,int delete)
+int dlt_buffer_get(DltBuffer *buf, unsigned char *data, int max_size, int delete)
{
- int used_size;
- int write, read, count;
- char head_compare[] = DLT_BUFFER_HEAD;
- DltBufferBlockHead head;
+ int used_size;
+ int write, read, count;
+ char head_compare[] = DLT_BUFFER_HEAD;
+ DltBufferBlockHead head;
// catch null pointer
- if(!buf)
+ if(buf == NULL)
return -1;
-
- if(!buf->shm) {
- // shm not initialised
- dlt_log(LOG_ERR,"Buffer: SHM not initialised\n");
- return -1; /* ERROR */
- }
- // get current write pointer
- write = ((int*)(buf->shm))[0];
- read = ((int*)(buf->shm))[1];
- count = ((int*)(buf->shm))[2];
+ if(buf->shm == NULL) {
+ // shm not initialised
+ dlt_log(LOG_ERR,"Buffer: SHM not initialised\n");
+ return -1; /* ERROR */
+ }
- // check pointers
- if((read>buf->size) || (write>buf->size) || (count<0))
- {
- dlt_log(LOG_ERR,"Buffer: Pointer out of range\n");
- dlt_buffer_reset(buf);
- return -1; // ERROR
- }
+ // get current write pointer
+ write = ((int*)(buf->shm))[0];
+ read = ((int*)(buf->shm))[1];
+ count = ((int*)(buf->shm))[2];
- // check if data is in there
- if(count==0) {
- if(write!=read)
- {
- dlt_log(LOG_ERR,"Buffer: SHM should be empty, but is not\n");
- dlt_buffer_reset(buf);
- }
- return -1; // ERROR
- }
+ // check pointers
+ if((read>buf->size) || (write>buf->size) || (count<0))
+ {
+ dlt_log(LOG_ERR,"Buffer: Pointer out of range\n");
+ dlt_buffer_reset(buf);
+ return -1; // ERROR
+ }
- // calculate used size
- if(write>read)
- used_size = write - read;
- else
- used_size = buf->size - read + write;
-
- // first check size
- if(used_size < (int)(sizeof(DltBufferBlockHead))) {
- dlt_log(LOG_ERR,"Buffer: Size check 1 failed\n");
- dlt_buffer_reset(buf);
- return -1; // ERROR
- }
+ // check if data is in there
+ if(count==0) {
+ if(write!=read)
+ {
+ dlt_log(LOG_ERR,"Buffer: SHM should be empty, but is not\n");
+ dlt_buffer_reset(buf);
+ }
+ return -1; // ERROR
+ }
- // read header
- dlt_buffer_read_block(buf,&read,(unsigned char*)&head,sizeof(DltBufferBlockHead));
+ // calculate used size
+ if(write>read)
+ used_size = write - read;
+ else
+ used_size = buf->size - read + write;
- // check header
- if(memcmp((unsigned char*)(head.head),head_compare,sizeof(head_compare))!=0)
- {
- dlt_log(LOG_ERR,"Buffer: Header head check failed\n");
- dlt_buffer_reset(buf);
- return -1; // ERROR
- }
- if(head.status != 2)
- {
- dlt_log(LOG_ERR,"Buffer: Header status check failed\n");
- dlt_buffer_reset(buf);
- return -1; // ERROR
- }
+ // first check size
+ if(used_size < (int)(sizeof(DltBufferBlockHead))) {
+ dlt_log(LOG_ERR,"Buffer: Size check 1 failed\n");
+ dlt_buffer_reset(buf);
+ return -1; // ERROR
+ }
- // second check size
- if(used_size < (int)(sizeof(DltBufferBlockHead)+head.size)) {
- dlt_log(LOG_ERR,"Buffer: Size check 2 failed\n");
- dlt_buffer_reset(buf);
- return -1; // ERROR
- }
+ // read header
+ dlt_buffer_read_block(buf,&read,(unsigned char*)&head,sizeof(DltBufferBlockHead));
- // third check size
- if(max_size && (head.size > max_size)) {
- dlt_log(LOG_ERR,"Buffer: Size check 3 failed\n");
- // nothing to do but data does not fit provided buffer
- }
+ // check header
+ if(memcmp((unsigned char*)(head.head),head_compare,sizeof(head_compare))!=0)
+ {
+ dlt_log(LOG_ERR,"Buffer: Header head check failed\n");
+ dlt_buffer_reset(buf);
+ return -1; // ERROR
+ }
+ if(head.status != 2)
+ {
+ dlt_log(LOG_ERR,"Buffer: Header status check failed\n");
+ dlt_buffer_reset(buf);
+ return -1; // ERROR
+ }
- if(data && max_size)
- {
- // read data
- dlt_buffer_read_block(buf,&read,data,head.size);
+ // second check size
+ if(used_size < (int)(sizeof(DltBufferBlockHead)+head.size)) {
+ dlt_log(LOG_ERR,"Buffer: Size check 2 failed\n");
+ dlt_buffer_reset(buf);
+ return -1; // ERROR
+ }
- if(delete)
- {
- // update buffer pointers
- ((int*)(buf->shm))[1] = read; // set new read pointer
- }
- }
- else
- {
- if(delete) {
- if( (read+head.size) <= buf->size)
- ((int*)(buf->shm))[1] = read+head.size; // set new read pointer
- else
- ((int*)(buf->shm))[1] = read+head.size-buf->size; // set new read pointer
- }
- }
- if(delete) {
- ((int*)(buf->shm))[2] -= 1; // decrease counter
+ // third check size
+ if(max_size && (head.size > max_size)) {
+ dlt_log(LOG_ERR,"Buffer: Size check 3 failed\n");
+ // nothing to do but data does not fit provided buffer
+ }
- if(((int*)(buf->shm))[2] == 0)
- {
- // try to minimize size
- dlt_buffer_minimize_size(buf);
- }
- }
+ if(data != NULL && max_size)
+ {
+ // read data
+ dlt_buffer_read_block(buf,&read,data,head.size);
+
+ if(delete)
+ {
+ // update buffer pointers
+ ((int*)(buf->shm))[1] = read; // set new read pointer
+ }
+ }
+ else
+ {
+ if(delete) {
+ if( (read+head.size) <= buf->size)
+ ((int*)(buf->shm))[1] = read+head.size; // set new read pointer
+ else
+ ((int*)(buf->shm))[1] = read+head.size-buf->size; // set new read pointer
+ }
+ }
+ if(delete) {
+ ((int*)(buf->shm))[2] -= 1; // decrease counter
- return head.size; // OK
+ if(((int*)(buf->shm))[2] == 0)
+ {
+ // try to minimize size
+ dlt_buffer_minimize_size(buf);
+ }
+ }
+
+ return head.size; // OK
}
int dlt_buffer_pull(DltBuffer *buf,unsigned char *data, int max_size)
{
- return dlt_buffer_get(buf,data,max_size,1);
+ return dlt_buffer_get(buf,data,max_size,1);
}
int dlt_buffer_copy(DltBuffer *buf,unsigned char *data, int max_size)
{
- return dlt_buffer_get(buf,data,max_size,0);
+ return dlt_buffer_get(buf,data,max_size,0);
}
int dlt_buffer_remove(DltBuffer *buf)
{
- return dlt_buffer_get(buf,0,0,1);
+ return dlt_buffer_get(buf,0,0,1);
}
void dlt_buffer_info(DltBuffer *buf)
{
// check nullpointer
- if(!buf)
+ if(buf == NULL)
return;
- char str[256];
+ char str[256];
- snprintf(str,sizeof(str),"Buffer: Available size: %d\n",buf->size);
- dlt_log(LOG_DEBUG, str);
- snprintf(str,sizeof(str),"Buffer: Buffer full start address: %lX\n",(unsigned long)buf->shm);
- dlt_log(LOG_DEBUG, str);
- snprintf(str,sizeof(str),"Buffer: Buffer start address: %lX\n",(unsigned long)buf->mem);
- dlt_log(LOG_DEBUG, str);
+ snprintf(str,sizeof(str),"Buffer: Available size: %d\n",buf->size);
+ dlt_log(LOG_DEBUG, str);
+ snprintf(str,sizeof(str),"Buffer: Buffer full start address: %lX\n",(unsigned long)buf->shm);
+ dlt_log(LOG_DEBUG, str);
+ snprintf(str,sizeof(str),"Buffer: Buffer start address: %lX\n",(unsigned long)buf->mem);
+ dlt_log(LOG_DEBUG, str);
}
void dlt_buffer_status(DltBuffer *buf)
{
- int write, read, count;
- char str[256];
+ int write, read, count;
+ char str[256];
// check nullpointer
- if(!buf)
+ if(buf == NULL) {
+ dlt_log(LOG_WARNING, "Wrong parameter: Null pointer\n");
return;
+ }
/* check if buffer available */
- if(!buf->shm)
+ if(buf->shm == NULL)
return;
- write = ((int*)(buf->shm))[0];
- read = ((int*)(buf->shm))[1];
- count = ((int*)(buf->shm))[2];
+ write = ((int*)(buf->shm))[0];
+ read = ((int*)(buf->shm))[1];
+ count = ((int*)(buf->shm))[2];
- snprintf(str,sizeof(str),"Buffer: Write: %d\n",write);
- dlt_log(LOG_DEBUG, str);
- snprintf(str,sizeof(str),"Buffer: Read: %d\n",read);
- dlt_log(LOG_DEBUG, str);
- snprintf(str,sizeof(str),"Buffer: Count: %d\n",count);
- dlt_log(LOG_DEBUG, str);
+ snprintf(str,sizeof(str),"Buffer: Write: %d\n",write);
+ dlt_log(LOG_DEBUG, str);
+ snprintf(str,sizeof(str),"Buffer: Read: %d\n",read);
+ dlt_log(LOG_DEBUG, str);
+ snprintf(str,sizeof(str),"Buffer: Count: %d\n",count);
+ dlt_log(LOG_DEBUG, str);
}
-int dlt_buffer_get_total_size(DltBuffer *buf)
+uint32_t dlt_buffer_get_total_size(DltBuffer *buf)
{
// catch null pointer
- if(!buf)
+ if(buf == NULL)
return -1;
- return buf->max_size;
+ return buf->max_size;
}
int dlt_buffer_get_used_size(DltBuffer *buf)
{
- int write, read, count;
+ int write, read, count;
// catch null pointer
- if(!buf)
+ if(buf == NULL)
return -1;
/* check if buffer available */
- if(!buf->shm)
+ if(buf->shm == NULL)
return 0;
- write = ((int*)(buf->shm))[0];
- read = ((int*)(buf->shm))[1];
- count = ((int*)(buf->shm))[2];
+ write = ((int*)(buf->shm))[0];
+ read = ((int*)(buf->shm))[1];
+ count = ((int*)(buf->shm))[2];
- if(count == 0)
- return 0;
+ if(count == 0)
+ return 0;
- if(write>read)
- return (write - read);
+ if(write>read)
+ return (write - read);
- return (buf->size - read + write);
+ return (buf->size - read + write);
}
int dlt_buffer_get_message_count(DltBuffer *buf)
{
// catch null pointer
- if(!buf)
+ if(buf == NULL)
return -1;
/* check if buffer available */
- if(!buf->shm)
+ if(buf->shm == NULL)
return 0;
return ((int*)(buf->shm))[2];
@@ -2854,19 +2943,19 @@ int dlt_buffer_get_message_count(DltBuffer *buf)
#if !defined (__WIN32__)
-int dlt_setup_serial(int fd, speed_t speed)
+DltReturnValue dlt_setup_serial(int fd, speed_t speed)
{
#if !defined (__WIN32__) && !defined(_MSC_VER)
struct termios config;
if (isatty(fd)==0)
{
- return -1;
+ return DLT_RETURN_ERROR;
}
if (tcgetattr(fd, &config) < 0)
{
- return -1;
+ return DLT_RETURN_ERROR;
}
/* Input flags - Turn off input processing
@@ -2913,19 +3002,19 @@ int dlt_setup_serial(int fd, speed_t speed)
*/
if (cfsetispeed(&config, speed) < 0 || cfsetospeed(&config, speed) < 0)
{
- return -1;
+ return DLT_RETURN_ERROR;
}
/* Finally, apply the configuration
*/
if (tcsetattr(fd, TCSAFLUSH, &config) < 0)
{
- return -1;
+ return DLT_RETURN_ERROR;
}
- return 0;
+ return DLT_RETURN_OK;
#else
- return -1;
+ return DLT_RETURN_ERROR;
#endif
}
@@ -3103,18 +3192,36 @@ speed_t dlt_convert_serial_speed(int baudrate)
void dlt_get_version(char *buf, size_t size)
{
+ if(buf == NULL && size > 0)
+ {
+ dlt_log(LOG_WARNING, "Wrong parameter: Null pointer\n");
+ return;
+ }
+
snprintf(buf,size,"DLT Package Version: %s %s, Package Revision: %s, build on %s %s\n%s %s %s %s\n",
_DLT_PACKAGE_VERSION, _DLT_PACKAGE_VERSION_STATE, _DLT_PACKAGE_REVISION, __DATE__ , __TIME__,_DLT_SYSTEMD_ENABLE,_DLT_SYSTEMD_WATCHDOG_ENABLE,_DLT_TEST_ENABLE,_DLT_SHM_ENABLE );
}
void dlt_get_major_version(char *buf, size_t size)
{
- snprintf(buf,size,"%s",_DLT_PACKAGE_MAJOR_VERSION);
+ if (buf == NULL && size > 0)
+ {
+ dlt_log(LOG_WARNING, "Wrong parameter: Null pointer\n");
+ return;
+ }
+
+ snprintf(buf, size, "%s", _DLT_PACKAGE_MAJOR_VERSION);
}
void dlt_get_minor_version(char *buf, size_t size)
{
- snprintf(buf,size,"%s",_DLT_PACKAGE_MINOR_VERSION);
+ if (buf == NULL && size > 0)
+ {
+ dlt_log(LOG_WARNING, "Wrong parameter: Null pointer\n");
+ return;
+ }
+
+ snprintf(buf, size, "%s", _DLT_PACKAGE_MINOR_VERSION);
}
@@ -3141,24 +3248,24 @@ uint32_t dlt_uptime(void)
}
-int dlt_message_print_header(DltMessage *message, char *text, uint32_t size, int verbose)
+DltReturnValue dlt_message_print_header(DltMessage *message, char *text, uint32_t size, int verbose)
{
- if ((message==0) || (text==0))
+ if ((message == NULL) || (text == NULL))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
- dlt_message_header(message,text,size,verbose);
+ dlt_message_header(message, text, size, verbose);
printf("%s\n",text);
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_message_print_hex(DltMessage *message, char *text, uint32_t size, int verbose)
+DltReturnValue dlt_message_print_hex(DltMessage *message, char *text, uint32_t size, int verbose)
{
- if ((message==0) || (text==0))
+ if ((message == NULL) || (text == NULL))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
dlt_message_header(message,text,size,verbose);
@@ -3166,14 +3273,14 @@ int dlt_message_print_hex(DltMessage *message, char *text, uint32_t size, int ve
dlt_message_payload(message,text,size,DLT_OUTPUT_HEX,verbose);
printf("[%s]\n",text);
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_message_print_ascii(DltMessage *message, char *text, uint32_t size, int verbose)
+DltReturnValue dlt_message_print_ascii(DltMessage *message, char *text, uint32_t size, int verbose)
{
- if ((message==0) || (text==0))
+ if ((message == NULL) || (text == NULL))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
dlt_message_header(message,text,size,verbose);
@@ -3181,14 +3288,14 @@ int dlt_message_print_ascii(DltMessage *message, char *text, uint32_t size, int
dlt_message_payload(message,text,size,DLT_OUTPUT_ASCII,verbose);
printf("[%s]\n",text);
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_message_print_mixed_plain(DltMessage *message, char *text, uint32_t size, int verbose)
+DltReturnValue dlt_message_print_mixed_plain(DltMessage *message, char *text, uint32_t size, int verbose)
{
- if ((message==0) || (text==0))
+ if ((message == NULL) || (text == NULL))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
dlt_message_header(message,text,size,verbose);
@@ -3196,14 +3303,14 @@ int dlt_message_print_mixed_plain(DltMessage *message, char *text, uint32_t size
dlt_message_payload(message,text,size,DLT_OUTPUT_MIXED_FOR_PLAIN,verbose);
printf("[%s]\n",text);
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_message_print_mixed_html(DltMessage *message, char *text, uint32_t size, int verbose)
+DltReturnValue dlt_message_print_mixed_html(DltMessage *message, char *text, uint32_t size, int verbose)
{
- if ((message==0) || (text==0))
+ if ((message == NULL) || (text == NULL))
{
- return -1;
+ return DLT_RETURN_WRONG_PARAMETER;
}
dlt_message_header(message,text,size,verbose);
@@ -3211,11 +3318,15 @@ int dlt_message_print_mixed_html(DltMessage *message, char *text, uint32_t size,
dlt_message_payload(message,text,size,DLT_OUTPUT_MIXED_FOR_HTML,verbose);
printf("[%s]\n",text);
- return 0;
+ return DLT_RETURN_OK;
}
-int dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,int32_t *datalength,char *text,int textlength,int byteLength,int __attribute__((unused)) verbose)
+DltReturnValue dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,int32_t *datalength,char *text,int textlength,int byteLength,int __attribute__((unused)) verbose)
{
+ // check null pointers
+ if(msg == NULL || ptr == NULL || datalength == NULL || text == NULL)
+ return DLT_RETURN_WRONG_PARAMETER;
+
int16_t length=0,length_tmp=0; /* the macro can set this variable to -1 */
uint16_t length2=0,length2_tmp=0,length3=0,length3_tmp=0;
@@ -3237,13 +3348,12 @@ int dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,
uint32_t quantisation_tmp = 0;
if ( (type_info & DLT_TYPE_INFO_STRG) && (((type_info & DLT_TYPE_INFO_SCOD) == DLT_SCOD_ASCII) || ((type_info & DLT_TYPE_INFO_SCOD) == DLT_SCOD_UTF8)) )
{
-
/* string type or utf8-encoded string type */
if (byteLength<0)
{
DLT_MSG_READ_VALUE(length_tmp,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
length=DLT_ENDIAN_GET_16(msg->standardheader->htyp, length_tmp);
}
else
@@ -3255,17 +3365,17 @@ int dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,
{
DLT_MSG_READ_VALUE(length2_tmp,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
length2=DLT_ENDIAN_GET_16(msg->standardheader->htyp, length2_tmp);
if((*datalength)<length2)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += length2;
*datalength-=length2;
}
DLT_MSG_READ_STRING((text+strlen(text)),*ptr,*datalength,length);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
}
else if (type_info & DLT_TYPE_INFO_BOOL)
@@ -3275,17 +3385,17 @@ int dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,
{
DLT_MSG_READ_VALUE(length2_tmp,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
length2=DLT_ENDIAN_GET_16(msg->standardheader->htyp, length2_tmp);
if((*datalength)<length2)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += length2;
*datalength-=length2;
}
value8u=0;
DLT_MSG_READ_VALUE(value8u,*ptr,*datalength,uint8_t); /* No endian conversion necessary */
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
snprintf(text+strlen(text),textlength-strlen(text),"%d",value8u);
}
else if ((type_info & DLT_TYPE_INFO_UINT) && (DLT_SCOD_BIN == (type_info & DLT_TYPE_INFO_SCOD)))
@@ -3294,7 +3404,7 @@ int dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,
{
DLT_MSG_READ_VALUE(value8u,*ptr,*datalength,uint8_t); /* No endian conversion necessary */
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
char binary[10] = {'\0'}; // e.g.: "0b1100 0010"
int i;
for (i = (1 << 7); i > 0; i >>= 1)
@@ -3310,7 +3420,7 @@ int dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,
{
DLT_MSG_READ_VALUE(value16u,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
char binary[20] = {'\0'}; // e.g.: "0b1100 0010 0011 0110"
int i;
for (i = (1 << 15); i > 0; i >>= 1)
@@ -3329,21 +3439,21 @@ int dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,
{
DLT_MSG_READ_VALUE(value8u,*ptr,*datalength,uint8_t); /* No endian conversion necessary */
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
snprintf(text+strlen(text),textlength-strlen(text),"0x%02x",value8u);
}
if (DLT_TYLE_16BIT == (type_info & DLT_TYPE_INFO_TYLE))
{
DLT_MSG_READ_VALUE(value16u,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
snprintf(text+strlen(text),textlength-strlen(text),"0x%04x",value16u);
}
if (DLT_TYLE_32BIT == (type_info & DLT_TYPE_INFO_TYLE))
{
DLT_MSG_READ_VALUE(value32u,*ptr,*datalength,uint32_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
snprintf(text+strlen(text),textlength-strlen(text),"0x%08x",value32u);
}
if (DLT_TYLE_64BIT == (type_info & DLT_TYPE_INFO_TYLE))
@@ -3351,12 +3461,12 @@ int dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,
*ptr += 4;
DLT_MSG_READ_VALUE(value32u,*ptr,*datalength,uint32_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
snprintf(text+strlen(text),textlength-strlen(text),"0x%08x",value32u);
*ptr -= 8;
DLT_MSG_READ_VALUE(value32u,*ptr,*datalength,uint32_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
snprintf(text+strlen(text),textlength-strlen(text),"%08x",value32u);
*ptr += 4;
}
@@ -3368,178 +3478,179 @@ int dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,
{
DLT_MSG_READ_VALUE(length2_tmp,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
length2=DLT_ENDIAN_GET_16(msg->standardheader->htyp, length2_tmp);
DLT_MSG_READ_VALUE(length3_tmp,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
length3=DLT_ENDIAN_GET_16(msg->standardheader->htyp, length3_tmp);
if((*datalength)<length2)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += length2;
*datalength-=length2;
if((*datalength)<length3)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += length3;
*datalength-=length3;
}
if (type_info & DLT_TYPE_INFO_FIXP)
{
- quantisation_tmp=quantisation_tmp; // prevent compiler warning
- DLT_MSG_READ_VALUE(quantisation_tmp,*ptr,*datalength,uint32_t);
+ quantisation_tmp=quantisation_tmp; // prevent compiler warning
+ DLT_MSG_READ_VALUE(quantisation_tmp, *ptr, *datalength, uint32_t);
if((*datalength)<0)
- return -1;
- switch ( type_info & DLT_TYPE_INFO_TYLE)
+ return DLT_RETURN_ERROR;
+
+ switch ( type_info & DLT_TYPE_INFO_TYLE)
{
- case DLT_TYLE_8BIT:
- case DLT_TYLE_16BIT:
- case DLT_TYLE_32BIT:
- {
+ case DLT_TYLE_8BIT:
+ case DLT_TYLE_16BIT:
+ case DLT_TYLE_32BIT:
+ {
if((*datalength)<4)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += 4;
- *datalength-=4;
- break;
- }
- case DLT_TYLE_64BIT:
- {
+ *datalength-=4;
+ break;
+ }
+ case DLT_TYLE_64BIT:
+ {
if((*datalength)<8)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += 8;
- *datalength-=8;
- break;
- }
- case DLT_TYLE_128BIT:
- {
+ *datalength-=8;
+ break;
+ }
+ case DLT_TYLE_128BIT:
+ {
if((*datalength)<16)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += 16;
- *datalength-=16;
- break;
- }
- default:
- {
- return -1;
- }
+ *datalength-=16;
+ break;
+ }
+ default:
+ {
+ return DLT_RETURN_ERROR;
+ }
}
}
- switch ( type_info & DLT_TYPE_INFO_TYLE)
+ switch (type_info & DLT_TYPE_INFO_TYLE)
{
- case DLT_TYLE_8BIT:
- {
- if (type_info & DLT_TYPE_INFO_SINT)
- {
- value8i=0;
- DLT_MSG_READ_VALUE(value8i,*ptr,*datalength,int8_t); /* No endian conversion necessary */
+ case DLT_TYLE_8BIT:
+ {
+ if (type_info & DLT_TYPE_INFO_SINT)
+ {
+ value8i=0;
+ DLT_MSG_READ_VALUE(value8i,*ptr,*datalength,int8_t); /* No endian conversion necessary */
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
snprintf(text+strlen(text),textlength-strlen(text),"%d",value8i);
- }
- else
- {
- value8u=0;
- DLT_MSG_READ_VALUE(value8u,*ptr,*datalength,uint8_t); /* No endian conversion necessary */
+ }
+ else
+ {
+ value8u=0;
+ DLT_MSG_READ_VALUE(value8u,*ptr,*datalength,uint8_t); /* No endian conversion necessary */
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
snprintf(text+strlen(text),textlength-strlen(text),"%d",value8u);
- }
- break;
- }
- case DLT_TYLE_16BIT:
- {
- if (type_info & DLT_TYPE_INFO_SINT)
- {
- value16i=0;
- value16i_tmp=0;
- DLT_MSG_READ_VALUE(value16i_tmp,*ptr,*datalength,int16_t);
+ }
+ break;
+ }
+ case DLT_TYLE_16BIT:
+ {
+ if (type_info & DLT_TYPE_INFO_SINT)
+ {
+ value16i=0;
+ value16i_tmp=0;
+ DLT_MSG_READ_VALUE(value16i_tmp,*ptr,*datalength,int16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
value16i=DLT_ENDIAN_GET_16(msg->standardheader->htyp, value16i_tmp);
- snprintf(text+strlen(text),textlength-strlen(text),"%hd",value16i);
- }
- else
- {
- value16u=0;
- value16u_tmp=0;
- DLT_MSG_READ_VALUE(value16u_tmp,*ptr,*datalength,uint16_t);
+ snprintf(text+strlen(text),textlength-strlen(text),"%hd",value16i);
+ }
+ else
+ {
+ value16u=0;
+ value16u_tmp=0;
+ DLT_MSG_READ_VALUE(value16u_tmp,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
value16u=DLT_ENDIAN_GET_16(msg->standardheader->htyp, value16u_tmp);
- snprintf(text+strlen(text),textlength-strlen(text),"%hu",value16u);
- }
- break;
- }
- case DLT_TYLE_32BIT:
- {
- if (type_info & DLT_TYPE_INFO_SINT)
- {
- value32i=0;
- value32i_tmp=0;
- DLT_MSG_READ_VALUE(value32i_tmp,*ptr,*datalength,int32_t);
+ snprintf(text+strlen(text),textlength-strlen(text),"%hu",value16u);
+ }
+ break;
+ }
+ case DLT_TYLE_32BIT:
+ {
+ if (type_info & DLT_TYPE_INFO_SINT)
+ {
+ value32i=0;
+ value32i_tmp=0;
+ DLT_MSG_READ_VALUE(value32i_tmp,*ptr,*datalength,int32_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
value32i=DLT_ENDIAN_GET_32(msg->standardheader->htyp, (uint32_t)value32i_tmp);
- snprintf(text+strlen(text),textlength-strlen(text),"%d",value32i);
- }
- else
- {
- value32u=0;
- value32u_tmp=0;
- DLT_MSG_READ_VALUE(value32u_tmp,*ptr,*datalength,uint32_t);
+ snprintf(text+strlen(text),textlength-strlen(text),"%d",value32i);
+ }
+ else
+ {
+ value32u=0;
+ value32u_tmp=0;
+ DLT_MSG_READ_VALUE(value32u_tmp,*ptr,*datalength,uint32_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
value32u=DLT_ENDIAN_GET_32(msg->standardheader->htyp, value32u_tmp);
- snprintf(text+strlen(text),textlength-strlen(text),"%u",value32u);
- }
- break;
- }
- case DLT_TYLE_64BIT:
- {
- if (type_info & DLT_TYPE_INFO_SINT)
- {
- value64i=0;
- value64i_tmp=0;
- DLT_MSG_READ_VALUE(value64i_tmp,*ptr,*datalength,int64_t);
+ snprintf(text+strlen(text),textlength-strlen(text),"%u",value32u);
+ }
+ break;
+ }
+ case DLT_TYLE_64BIT:
+ {
+ if (type_info & DLT_TYPE_INFO_SINT)
+ {
+ value64i=0;
+ value64i_tmp=0;
+ DLT_MSG_READ_VALUE(value64i_tmp,*ptr,*datalength,int64_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
value64i=DLT_ENDIAN_GET_64(msg->standardheader->htyp, (uint64_t)value64i_tmp);
- #if defined (__WIN32__) && !defined(_MSC_VER)
- snprintf(text+strlen(text),textlength-strlen(text),"%I64d",value64i);
- #else
- snprintf(text+strlen(text),textlength-strlen(text),"%"PRId64, value64i);
- #endif
- }
- else
- {
- value64u=0;
- value64u_tmp=0;
- DLT_MSG_READ_VALUE(value64u_tmp,*ptr,*datalength,uint64_t);
+ #if defined (__WIN32__) && !defined(_MSC_VER)
+ snprintf(text+strlen(text),textlength-strlen(text),"%I64d",value64i);
+ #else
+ snprintf(text+strlen(text),textlength-strlen(text),"%"PRId64, value64i);
+ #endif
+ }
+ else
+ {
+ value64u=0;
+ value64u_tmp=0;
+ DLT_MSG_READ_VALUE(value64u_tmp,*ptr,*datalength,uint64_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
value64u=DLT_ENDIAN_GET_64(msg->standardheader->htyp, value64u_tmp);
- #if defined (__WIN32__) && !defined(_MSC_VER)
- snprintf(text+strlen(text),textlength-strlen(text),"%I64u",value64u);
- #else
- snprintf(text+strlen(text),textlength-strlen(text),"%"PRId64,value64u);
- #endif
- }
- break;
- }
- case DLT_TYLE_128BIT:
- {
- if (*datalength>=16)
- dlt_print_hex_string(text+strlen(text),textlength,*ptr,16);
+ #if defined (__WIN32__) && !defined(_MSC_VER)
+ snprintf(text+strlen(text),textlength-strlen(text),"%I64u",value64u);
+ #else
+ snprintf(text+strlen(text),textlength-strlen(text),"%"PRId64,value64u);
+ #endif
+ }
+ break;
+ }
+ case DLT_TYLE_128BIT:
+ {
+ if (*datalength>=16)
+ dlt_print_hex_string(text+strlen(text),textlength,*ptr,16);
if((*datalength)<16)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += 16;
- *datalength-=16;
- break;
- }
- default:
- {
- return -1;
- }
+ *datalength-=16;
+ break;
+ }
+ default:
+ {
+ return DLT_RETURN_ERROR;
+ }
}
}
else if (type_info & DLT_TYPE_INFO_FLOA)
@@ -3549,107 +3660,107 @@ int dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,
{
DLT_MSG_READ_VALUE(length2_tmp,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
length2=DLT_ENDIAN_GET_16(msg->standardheader->htyp, length2_tmp);
DLT_MSG_READ_VALUE(length3_tmp,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
length3=DLT_ENDIAN_GET_16(msg->standardheader->htyp, length3_tmp);
if((*datalength)<length2)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += length2;
*datalength-=length2;
if((*datalength)<length3)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += length3;
*datalength-=length3;
}
- switch ( type_info & DLT_TYPE_INFO_TYLE)
+ switch ( type_info & DLT_TYPE_INFO_TYLE)
{
- case DLT_TYLE_8BIT:
- {
- if (*datalength>=1)
- dlt_print_hex_string(text+strlen(text),textlength,*ptr,1);
+ case DLT_TYLE_8BIT:
+ {
+ if (*datalength>=1)
+ dlt_print_hex_string(text+strlen(text),textlength,*ptr,1);
if((*datalength)<1)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += 1;
- *datalength-=1;
- break;
- }
- case DLT_TYLE_16BIT:
- {
- if (*datalength>=2)
- dlt_print_hex_string(text+strlen(text),textlength,*ptr,2);
+ *datalength-=1;
+ break;
+ }
+ case DLT_TYLE_16BIT:
+ {
+ if (*datalength>=2)
+ dlt_print_hex_string(text+strlen(text),textlength,*ptr,2);
if((*datalength)<2)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += 2;
- *datalength-=2;
- break;
- }
- case DLT_TYLE_32BIT:
- {
- if (sizeof(float32_t)==4)
- {
- value32f=0;
- value32f_tmp=0;
- value32f_tmp_int32i=0;
- value32f_tmp_int32i_swaped=0;
- DLT_MSG_READ_VALUE(value32f_tmp,*ptr,*datalength,float32_t);
+ *datalength-=2;
+ break;
+ }
+ case DLT_TYLE_32BIT:
+ {
+ if (sizeof(float32_t)==4)
+ {
+ value32f=0;
+ value32f_tmp=0;
+ value32f_tmp_int32i=0;
+ value32f_tmp_int32i_swaped=0;
+ DLT_MSG_READ_VALUE(value32f_tmp,*ptr,*datalength,float32_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
memcpy(&value32f_tmp_int32i,&value32f_tmp,sizeof(float32_t));
- value32f_tmp_int32i_swaped=DLT_ENDIAN_GET_32(msg->standardheader->htyp, (uint32_t)value32f_tmp_int32i);
- memcpy(&value32f,&value32f_tmp_int32i_swaped,sizeof(float32_t));
- snprintf(text+strlen(text),textlength-strlen(text),"%g",value32f);
- }
- else
- {
- dlt_log(LOG_ERR, "Invalid size of float32_t\n");
- return -1;
- }
- break;
- }
- case DLT_TYLE_64BIT:
- {
- if (sizeof(float64_t)==8)
- {
- value64f=0;
- value64f_tmp=0;
- value64f_tmp_int64i=0;
- value64f_tmp_int64i_swaped=0;
- DLT_MSG_READ_VALUE(value64f_tmp,*ptr,*datalength,float64_t);
+ value32f_tmp_int32i_swaped=DLT_ENDIAN_GET_32(msg->standardheader->htyp, (uint32_t)value32f_tmp_int32i);
+ memcpy(&value32f,&value32f_tmp_int32i_swaped,sizeof(float32_t));
+ snprintf(text+strlen(text),textlength-strlen(text),"%g",value32f);
+ }
+ else
+ {
+ dlt_log(LOG_ERR, "Invalid size of float32_t\n");
+ return DLT_RETURN_ERROR;
+ }
+ break;
+ }
+ case DLT_TYLE_64BIT:
+ {
+ if (sizeof(float64_t)==8)
+ {
+ value64f=0;
+ value64f_tmp=0;
+ value64f_tmp_int64i=0;
+ value64f_tmp_int64i_swaped=0;
+ DLT_MSG_READ_VALUE(value64f_tmp,*ptr,*datalength,float64_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
memcpy(&value64f_tmp_int64i,&value64f_tmp,sizeof(float64_t));
- value64f_tmp_int64i_swaped=DLT_ENDIAN_GET_64(msg->standardheader->htyp, (uint64_t)value64f_tmp_int64i);
- memcpy(&value64f,&value64f_tmp_int64i_swaped,sizeof(float64_t));
+ value64f_tmp_int64i_swaped=DLT_ENDIAN_GET_64(msg->standardheader->htyp, (uint64_t)value64f_tmp_int64i);
+ memcpy(&value64f,&value64f_tmp_int64i_swaped,sizeof(float64_t));
#ifdef __arm__
- snprintf(text+strlen(text),textlength-strlen(text),"ILLEGAL");
+ snprintf(text+strlen(text),textlength-strlen(text),"ILLEGAL");
#else
- snprintf(text+strlen(text),textlength-strlen(text),"%g",value64f);
+ snprintf(text+strlen(text),textlength-strlen(text),"%g",value64f);
#endif
- }
- else
- {
- dlt_log(LOG_ERR, "Invalid size of float64_t\n");
- return -1;
- }
- break;
- }
- case DLT_TYLE_128BIT:
- {
- if (*datalength>=16)
- dlt_print_hex_string(text+strlen(text),textlength,*ptr,16);
+ }
+ else
+ {
+ dlt_log(LOG_ERR, "Invalid size of float64_t\n");
+ return DLT_RETURN_ERROR;
+ }
+ break;
+ }
+ case DLT_TYLE_128BIT:
+ {
+ if (*datalength>=16)
+ dlt_print_hex_string(text+strlen(text),textlength,*ptr,16);
if((*datalength)<16)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += 16;
- *datalength-=16;
- break;
- }
- default:
- {
- return -1;
- }
+ *datalength-=16;
+ break;
+ }
+ default:
+ {
+ return DLT_RETURN_ERROR;
+ }
}
}
@@ -3658,21 +3769,21 @@ int dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,
/* raw data argument */
DLT_MSG_READ_VALUE(length_tmp,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
length=DLT_ENDIAN_GET_16(msg->standardheader->htyp, length_tmp);
if (type_info & DLT_TYPE_INFO_VARI)
{
DLT_MSG_READ_VALUE(length2_tmp,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
length2=DLT_ENDIAN_GET_16(msg->standardheader->htyp, length2_tmp);
if((*datalength)<length2)
- return -1;
+ return DLT_RETURN_ERROR;
*ptr += length2;
*datalength-=length2;
}
if((*datalength)<length)
- return -1;
+ return DLT_RETURN_ERROR;
dlt_print_hex_string(text+strlen(text),textlength,*ptr,length);
*ptr+=length;
*datalength-=length;
@@ -3682,24 +3793,24 @@ int dlt_message_argument_print(DltMessage *msg,uint32_t type_info,uint8_t **ptr,
/* trace info argument */
DLT_MSG_READ_VALUE(length_tmp,*ptr,*datalength,uint16_t);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
length=DLT_ENDIAN_GET_16(msg->standardheader->htyp, length_tmp);
DLT_MSG_READ_STRING((text+strlen(text)),*ptr,*datalength,length);
if((*datalength)<0)
- return -1;
+ return DLT_RETURN_ERROR;
}
else
{
- return -1;
+ return DLT_RETURN_ERROR;
}
if (*datalength<0)
{
dlt_log(LOG_ERR, "Payload of DLT message corrupted\n");
- return -1;
+ return DLT_RETURN_ERROR;
}
- return 0;
+ return DLT_RETURN_OK;
}
void dlt_check_envvar()
diff --git a/src/shared/dlt_common_cfg.h b/src/shared/dlt_common_cfg.h
index 2278049..454f885 100644
--- a/src/shared/dlt_common_cfg.h
+++ b/src/shared/dlt_common_cfg.h
@@ -86,7 +86,7 @@
#define DLT_COMMON_CHARLEN 1
/* Number of indices to be allocated at one, if no more indeces are left */
-#define DLT_COMMON_INDEX_ALLOC 1000
+#define DLT_COMMON_INDEX_ALLOC 1000
/* If limited output is called,
this is the maximum number of characters to be printed out */
diff --git a/src/shared/dlt_offline_trace.c b/src/shared/dlt_offline_trace.c
index 9925a7a..c4d3f6b 100644
--- a/src/shared/dlt_offline_trace.c
+++ b/src/shared/dlt_offline_trace.c
@@ -65,43 +65,43 @@
#include <dlt_offline_trace.h>
-int dlt_offline_trace_create_new_file(DltOfflineTrace *trace) {
+DltReturnValue dlt_offline_trace_create_new_file(DltOfflineTrace *trace) {
time_t t;
struct tm *tmp;
char outstr[200];
- /* set filename */
+ /* set filename */
t = time(NULL);
tmp = localtime(&t);
if (NULL == tmp) {
printf("dlt_offline_trace_create_new_file: pointer to tmp is NULL!");
- return -1;
+ return DLT_RETURN_ERROR;
}
if (strftime(outstr, sizeof(outstr),"%Y%m%d_%H%M%S", tmp) == 0) {
}
- snprintf(trace->filename,NAME_MAX + 1,"%s/dlt_offlinetrace_%s.dlt",trace->directory,outstr);
+ snprintf(trace->filename,NAME_MAX + 1,"%s/dlt_offlinetrace_%s.dlt",trace->directory,outstr);
/* open DLT output file */
- trace->ohandle = open(trace->filename,O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); /* mode: wb */
- if (trace->ohandle == -1)
- {
- /* trace file cannot be opened */
- printf("Offline trace file %s cannot be created\n",trace->filename);
- return -1;
- } /* if */
-
- return 0; /* OK */
+ trace->ohandle = open(trace->filename,O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); /* mode: wb */
+ if (trace->ohandle == -1)
+ {
+ /* trace file cannot be opened */
+ printf("Offline trace file %s cannot be created\n",trace->filename);
+ return DLT_RETURN_ERROR;
+ } /* if */
+
+ return DLT_RETURN_OK; /* OK */
}
unsigned long dlt_offline_trace_get_total_size(DltOfflineTrace *trace) {
- struct dirent *dp;
- char filename[256];
- unsigned long size = 0;
- struct stat status;
-
- /* go through all dlt files in directory */
- DIR *dir = opendir(trace->directory);
- while ((dp=readdir(dir)) != NULL) {
+ struct dirent *dp;
+ char filename[256];
+ unsigned long size = 0;
+ struct stat status;
+
+ /* go through all dlt files in directory */
+ DIR *dir = opendir(trace->directory);
+ while ((dp=readdir(dir)) != NULL) {
if(strstr(dp->d_name,".dlt"))
{
int res = snprintf(filename, sizeof(filename), "%s/%s",trace->directory,dp->d_name);
@@ -110,12 +110,12 @@ unsigned long dlt_offline_trace_get_total_size(DltOfflineTrace *trace) {
// if an output error is encountered, a negative value is returned.
if( (unsigned int)res<sizeof(filename) && res>0 )
{
- if(0 == stat(filename,&status))
- {
- size += status.st_size;
- }
- else
- printf("Offline trace file %s cannot be stat-ed",filename);
+ if(0 == stat(filename,&status))
+ {
+ size += status.st_size;
+ }
+ else
+ printf("Offline trace file %s cannot be stat-ed",filename);
}
//else
//{
@@ -124,142 +124,142 @@ unsigned long dlt_offline_trace_get_total_size(DltOfflineTrace *trace) {
}
}
- closedir(dir);
+ closedir(dir);
- /* return size */
- return size;
+ /* return size */
+ return size;
}
int dlt_offline_trace_delete_oldest_file(DltOfflineTrace *trace) {
- struct dirent *dp;
- char filename[PATH_MAX+1];
- char filename_oldest[PATH_MAX+1];
- unsigned long size_oldest = 0;
- struct stat status;
- time_t time_oldest = 0;
-
- filename[0] = 0;
- filename_oldest[0] = 0;
-
- /* go through all dlt files in directory */
- DIR *dir = opendir(trace->directory);
- while ((dp=readdir(dir)) != NULL) {
- if(strstr(dp->d_name,".dlt")) {
- int res = snprintf(filename, sizeof(filename), "%s/%s",trace->directory,dp->d_name);
- // if the total length of the string is greater than the buffer, silently forget it.
- // snprintf: a return value of size or more means that the output was truncated
- // if an output error is encountered, a negative value is returned.
- if( (unsigned int)res<sizeof(filename) && res>0 )
- {
- if(0 == stat(filename,&status))
- {
- if(time_oldest == 0 || status.st_mtime < time_oldest) {
- time_oldest = status.st_mtime;
- size_oldest = status.st_size;
- strncpy(filename_oldest,filename,PATH_MAX);
- filename_oldest[PATH_MAX]=0;
- }
- }
- else
- printf("Old offline trace file %s cannot be stat-ed",filename);
- }
- }
- }
- closedir(dir);
-
- /* delete file */
- if(filename_oldest[0]) {
- if(remove(filename_oldest)) {
- printf("Remove file %s failed!\n",filename_oldest);
- return -1; /* ERROR */
- }
- }
- else {
- printf("No file to be removed!\n");
- return -1; /* ERROR */
- }
-
- /* return size of deleted file*/
- return size_oldest;
+ struct dirent *dp;
+ char filename[PATH_MAX+1];
+ char filename_oldest[PATH_MAX+1];
+ unsigned long size_oldest = 0;
+ struct stat status;
+ time_t time_oldest = 0;
+
+ filename[0] = 0;
+ filename_oldest[0] = 0;
+
+ /* go through all dlt files in directory */
+ DIR *dir = opendir(trace->directory);
+ while ((dp=readdir(dir)) != NULL) {
+ if(strstr(dp->d_name,".dlt")) {
+ int res = snprintf(filename, sizeof(filename), "%s/%s",trace->directory,dp->d_name);
+ // if the total length of the string is greater than the buffer, silently forget it.
+ // snprintf: a return value of size or more means that the output was truncated
+ // if an output error is encountered, a negative value is returned.
+ if( (unsigned int)res<sizeof(filename) && res>0 )
+ {
+ if(0 == stat(filename,&status))
+ {
+ if(time_oldest == 0 || status.st_mtime < time_oldest) {
+ time_oldest = status.st_mtime;
+ size_oldest = status.st_size;
+ strncpy(filename_oldest,filename,PATH_MAX);
+ filename_oldest[PATH_MAX]=0;
+ }
+ }
+ else
+ printf("Old offline trace file %s cannot be stat-ed",filename);
+ }
+ }
+ }
+ closedir(dir);
+
+ /* delete file */
+ if(filename_oldest[0]) {
+ if(remove(filename_oldest)) {
+ printf("Remove file %s failed!\n",filename_oldest);
+ return -1; /* ERROR */
+ }
+ }
+ else {
+ printf("No file to be removed!\n");
+ return -1; /* ERROR */
+ }
+
+ /* return size of deleted file*/
+ return size_oldest;
}
-int dlt_offline_trace_check_size(DltOfflineTrace *trace) {
+DltReturnValue dlt_offline_trace_check_size(DltOfflineTrace *trace) {
- /* check size of complete offline trace */
- while((int)dlt_offline_trace_get_total_size(trace) > (trace->maxSize-trace->fileSize))
- {
- /* remove oldest files as long as new file will not fit in completely into complete offline trace */
- if(dlt_offline_trace_delete_oldest_file(trace)<0) {
- return -1;
- }
- }
+ /* check size of complete offline trace */
+ while((int)dlt_offline_trace_get_total_size(trace) > (trace->maxSize-trace->fileSize))
+ {
+ /* remove oldest files as long as new file will not fit in completely into complete offline trace */
+ if(dlt_offline_trace_delete_oldest_file(trace) < 0) {
+ return DLT_RETURN_ERROR;
+ }
+ }
- return 0; /* OK */
+ return DLT_RETURN_OK; /* OK */
}
-int dlt_offline_trace_init(DltOfflineTrace *trace,const char *directory,int fileSize,int maxSize) {
+DltReturnValue dlt_offline_trace_init(DltOfflineTrace *trace,const char *directory,int fileSize,int maxSize) {
- /* init parameters */
+ /* init parameters */
strncpy(trace->directory,directory,NAME_MAX);
trace->directory[NAME_MAX]=0;
- trace->fileSize = fileSize;
- trace->maxSize = maxSize;
+ trace->fileSize = fileSize;
+ trace->maxSize = maxSize;
- /* check complete offlien trace size, remove old logs if needed */
- dlt_offline_trace_check_size(trace);
+ /* check complete offlien trace size, remove old logs if needed */
+ dlt_offline_trace_check_size(trace);
- return dlt_offline_trace_create_new_file(trace);
+ return dlt_offline_trace_create_new_file(trace);
}
-int dlt_offline_trace_write(DltOfflineTrace *trace,unsigned char *data1,int size1,unsigned char *data2,int size2,unsigned char *data3,int size3) {
+DltReturnValue dlt_offline_trace_write(DltOfflineTrace *trace,unsigned char *data1,int size1,unsigned char *data2,int size2,unsigned char *data3,int size3) {
- if(trace->ohandle <= 0)
- return -1;
+ if(trace->ohandle <= 0)
+ return DLT_RETURN_ERROR;
- /* check file size here */
- if((lseek(trace->ohandle,0,SEEK_CUR)+size1+size2+size3)>=trace->fileSize)
- {
- /* close old file */
- close(trace->ohandle);
+ /* check file size here */
+ if((lseek(trace->ohandle,0,SEEK_CUR)+size1+size2+size3)>=trace->fileSize)
+ {
+ /* close old file */
+ close(trace->ohandle);
trace->ohandle = -1;
- /* check complete offline trace size, remove old logs if needed */
- dlt_offline_trace_check_size(trace);
+ /* check complete offline trace size, remove old logs if needed */
+ dlt_offline_trace_check_size(trace);
- /* create new file */
- dlt_offline_trace_create_new_file(trace);
- }
+ /* create new file */
+ dlt_offline_trace_create_new_file(trace);
+ }
- /* write data into log file */
+ /* write data into log file */
if(data1 && (trace->ohandle >= 0)) {
- if(write(trace->ohandle,data1,size1)!=size1) {
- printf("Offline trace write failed!\n");
- return -1;
- }
- }
+ if(write(trace->ohandle,data1,size1)!=size1) {
+ printf("Offline trace write failed!\n");
+ return DLT_RETURN_ERROR;
+ }
+ }
if(data2 && (trace->ohandle >= 0)) {
- if(write(trace->ohandle,data2,size2)!=size2) {
- printf("Offline trace write failed!\n");
- return -1;
- }
- }
+ if(write(trace->ohandle,data2,size2)!=size2) {
+ printf("Offline trace write failed!\n");
+ return DLT_RETURN_ERROR;
+ }
+ }
if(data3 && (trace->ohandle >= 0)) {
- if(write(trace->ohandle,data3,size3)!=size3) {
- printf("Offline trace write failed!\n");
- return -1;
- }
- }
+ if(write(trace->ohandle,data3,size3)!=size3) {
+ printf("Offline trace write failed!\n");
+ return DLT_RETURN_ERROR;
+ }
+ }
- return 0; /* OK */
+ return DLT_RETURN_OK; /* OK */
}
-int dlt_offline_trace_free(DltOfflineTrace *trace) {
+DltReturnValue dlt_offline_trace_free(DltOfflineTrace *trace) {
- if(trace->ohandle <= 0)
- return -1;
+ if(trace->ohandle <= 0)
+ return DLT_RETURN_ERROR;
- /* close last used log file */
- close(trace->ohandle);
+ /* close last used log file */
+ close(trace->ohandle);
- return 0; /* OK */
+ return DLT_RETURN_OK; /* OK */
}
diff --git a/src/shared/dlt_shm.c b/src/shared/dlt_shm.c
index d188e2d..78e5951 100644
--- a/src/shared/dlt_shm.c
+++ b/src/shared/dlt_shm.c
@@ -76,240 +76,240 @@ void dlt_shm_print_hex(char *ptr,int size)
for (num=0;num<size;num++)
{
- if((num%16)==15)
- printf("%.2x\n",((unsigned char*)ptr)[num]);
- else
- printf("%.2x ",((unsigned char*)ptr)[num]);
+ if((num%16)==15)
+ printf("%.2x\n",((unsigned char*)ptr)[num]);
+ else
+ printf("%.2x ",((unsigned char*)ptr)[num]);
}
printf("\n");
}
void dlt_shm_pv(int id,int operation)
{
- static struct sembuf semaphor;
+ static struct sembuf semaphor;
- semaphor.sem_op = operation;
- semaphor.sem_flg = SEM_UNDO;
+ semaphor.sem_op = operation;
+ semaphor.sem_flg = SEM_UNDO;
- if(semop(id, &semaphor,1) == -1) {
- dlt_log(LOG_WARNING,"SHM: semop() failed");
- }
+ if(semop(id, &semaphor,1) == -1) {
+ dlt_log(LOG_WARNING,"SHM: semop() failed");
+ }
}
int dlt_shm_init_server(DltShm *buf,int key,int size) {
- struct shmid_ds shm_buf;
- unsigned char *ptr;
+ struct shmid_ds shm_buf;
+ unsigned char *ptr;
- // Init parameters
- buf->shmid = 0;
- buf->semid = 0;
+ // Init parameters
+ buf->shmid = 0;
+ buf->semid = 0;
// Create the segment.
if ((buf->shmid = shmget(key, size, IPC_CREAT | 0666)) < 0) {
dlt_log(LOG_WARNING,"SHM: shmget() failed");
- return -1; /* ERROR */
+ return DLT_RETURN_ERROR; /* ERROR */
}
- // get the size of shm
- if (shmctl(buf->shmid, IPC_STAT, &shm_buf))
- {
- dlt_log(LOG_WARNING,"SHM: shmctl() failed");
- return -1; /* ERROR */
- }
+ // get the size of shm
+ if (shmctl(buf->shmid, IPC_STAT, &shm_buf))
+ {
+ dlt_log(LOG_WARNING,"SHM: shmctl() failed");
+ return DLT_RETURN_ERROR; /* ERROR */
+ }
// Now we attach the segment to our data space.
if ((ptr = shmat(buf->shmid, NULL, 0)) == (unsigned char *) -1) {
dlt_log(LOG_WARNING,"SHM: shmat() failed");
- return -1; /* ERROR */
+ return DLT_RETURN_ERROR; /* ERROR */
}
- // Init semaphore
- if( (buf->semid = semget(DLT_SHM_SEM,1,S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT|IPC_EXCL)) == -1 ) {
- if( (buf->semid = semget(DLT_SHM_SEM,1,S_IRWXU|S_IRWXG|S_IRWXO|IPC_EXCL)) == -1 ) {
- dlt_log(LOG_WARNING,"SHM: semget() failed");
- return -1; /* ERROR */
- }
- }
- if( semctl(buf->semid,0,SETVAL,(int)1) == -1 ) {
+ // Init semaphore
+ if( (buf->semid = semget(DLT_SHM_SEM,1,S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT|IPC_EXCL)) == -1 ) {
+ if( (buf->semid = semget(DLT_SHM_SEM,1,S_IRWXU|S_IRWXG|S_IRWXO|IPC_EXCL)) == -1 ) {
+ dlt_log(LOG_WARNING,"SHM: semget() failed");
+ return DLT_RETURN_ERROR; /* ERROR */
+ }
+ }
+ if( semctl(buf->semid,0,SETVAL,(int)1) == -1 ) {
dlt_log(LOG_WARNING,"SHM: semctl() failed");
- return -1; /* ERROR */
- }
+ return DLT_RETURN_ERROR; /* ERROR */
+ }
- // init buffer
- dlt_buffer_init_static_server(&(buf->buffer),ptr,shm_buf.shm_segsz);
+ // init buffer
+ dlt_buffer_init_static_server(&(buf->buffer),ptr,shm_buf.shm_segsz);
- return 0; /* OK */
+ return DLT_RETURN_OK; /* OK */
}
-int dlt_shm_init_client(DltShm *buf,int key) {
- struct shmid_ds shm_buf;
- unsigned char *ptr;
+DltReturnValue dlt_shm_init_client(DltShm *buf,int key) {
+ struct shmid_ds shm_buf;
+ unsigned char *ptr;
- // init parameters
- buf->shmid = 0;
- buf->semid = 0;
+ // init parameters
+ buf->shmid = 0;
+ buf->semid = 0;
// Create the segment.
if ((buf->shmid = shmget(key, 0, 0666)) < 0) {
dlt_log(LOG_WARNING,"SHM: shmget() failed");
- return -1; /* ERROR */
+ return DLT_RETURN_ERROR; /* ERROR */
+ }
+
+ // get the size of shm
+ if (shmctl(buf->shmid, IPC_STAT, &shm_buf))
+ {
+ dlt_log(LOG_WARNING,"SHM: shmctl() failed");
+ return DLT_RETURN_ERROR; /* ERROR */
+ }
+
+ // Now we attach the segment to our data space.
+ if ((ptr = shmat(buf->shmid, NULL, 0)) == (unsigned char *) -1) {
+ dlt_log(LOG_WARNING,"shmat() failed");
+ return DLT_RETURN_ERROR; /* ERROR */
}
- // get the size of shm
- if (shmctl(buf->shmid, IPC_STAT, &shm_buf))
- {
- dlt_log(LOG_WARNING,"SHM: shmctl() failed");
- return -1; /* ERROR */
- }
-
- // Now we attach the segment to our data space.
- if ((ptr = shmat(buf->shmid, NULL, 0)) == (unsigned char *) -1) {
- dlt_log(LOG_WARNING,"shmat() failed");
- return -1; /* ERROR */
- }
-
- // Init semaphore
- if( (buf->semid = semget(DLT_SHM_SEM,0,0)) == -1 ) {
+ // Init semaphore
+ if( (buf->semid = semget(DLT_SHM_SEM,0,0)) == -1 ) {
dlt_log(LOG_WARNING,"SHM: semget() failed");
- return -1; /* ERROR */
- }
+ return DLT_RETURN_ERROR; /* ERROR */
+ }
- // init buffer
- dlt_buffer_init_static_client(&(buf->buffer),ptr,shm_buf.shm_segsz);
+ // init buffer
+ dlt_buffer_init_static_client(&(buf->buffer),ptr,shm_buf.shm_segsz);
- return 0; /* OK */
+ return DLT_RETURN_OK; /* OK */
}
void dlt_shm_info(DltShm *buf)
{
- dlt_buffer_info(&(buf->buffer));
+ dlt_buffer_info(&(buf->buffer));
}
void dlt_shm_status(DltShm *buf)
{
- dlt_buffer_status(&(buf->buffer));
+ dlt_buffer_status(&(buf->buffer));
}
int dlt_shm_get_total_size(DltShm *buf)
{
- return dlt_buffer_get_total_size(&(buf->buffer));
+ return dlt_buffer_get_total_size(&(buf->buffer));
}
int dlt_shm_get_used_size(DltShm *buf)
{
- int ret;
+ int ret;
- /* check if buffer available */
- if(!buf->buffer.mem)
- return -1;
+ /* check if buffer available */
+ if(!buf->buffer.mem)
+ return -1;
- DLT_SHM_SEM_GET(buf->semid);
- ret = dlt_buffer_get_used_size(&(buf->buffer));
- DLT_SHM_SEM_FREE(buf->semid);
+ DLT_SHM_SEM_GET(buf->semid);
+ ret = dlt_buffer_get_used_size(&(buf->buffer));
+ DLT_SHM_SEM_FREE(buf->semid);
- return ret;
+ return ret;
}
int dlt_shm_get_message_count(DltShm *buf)
{
- return dlt_buffer_get_message_count(&(buf->buffer));
+ return dlt_buffer_get_message_count(&(buf->buffer));
}
int dlt_shm_push(DltShm *buf,const unsigned char *data1,unsigned int size1,const unsigned char *data2,unsigned int size2,const unsigned char *data3,unsigned int size3)
{
- int ret;
+ int ret;
- /* check if buffer available */
- if(!buf->buffer.mem)
- return -1;
+ /* check if buffer available */
+ if(!buf->buffer.mem)
+ return -1;
- DLT_SHM_SEM_GET(buf->semid);
- ret = dlt_buffer_push3(&(buf->buffer),data1,size1,data2,size2,data3,size3);
- DLT_SHM_SEM_FREE(buf->semid);
+ DLT_SHM_SEM_GET(buf->semid);
+ ret = dlt_buffer_push3(&(buf->buffer),data1,size1,data2,size2,data3,size3);
+ DLT_SHM_SEM_FREE(buf->semid);
- return ret;
+ return ret;
}
int dlt_shm_pull(DltShm *buf,unsigned char *data, int max_size)
{
- int ret;
+ int ret;
- /* check if buffer available */
- if(!buf->buffer.mem)
- return -1;
+ /* check if buffer available */
+ if(!buf->buffer.mem)
+ return -1;
- DLT_SHM_SEM_GET(buf->semid);
- ret = dlt_buffer_pull(&(buf->buffer),data,max_size);
- DLT_SHM_SEM_FREE(buf->semid);
+ DLT_SHM_SEM_GET(buf->semid);
+ ret = dlt_buffer_pull(&(buf->buffer),data,max_size);
+ DLT_SHM_SEM_FREE(buf->semid);
- return ret;
+ return ret;
}
int dlt_shm_copy(DltShm *buf,unsigned char *data, int max_size)
{
- int ret;
+ int ret;
- /* check if buffer available */
- if(!buf->buffer.mem)
- return -1;
+ /* check if buffer available */
+ if(!buf->buffer.mem)
+ return -1;
- DLT_SHM_SEM_GET(buf->semid);
- ret = dlt_buffer_copy(&(buf->buffer),data,max_size);
- DLT_SHM_SEM_FREE(buf->semid);
+ DLT_SHM_SEM_GET(buf->semid);
+ ret = dlt_buffer_copy(&(buf->buffer),data,max_size);
+ DLT_SHM_SEM_FREE(buf->semid);
- return ret;
+ return ret;
}
int dlt_shm_remove(DltShm *buf)
{
- int ret;
+ int ret;
- /* check if buffer available */
- if(!buf->buffer.mem)
- return -1;
+ /* check if buffer available */
+ if(!buf->buffer.mem)
+ return -1;
- DLT_SHM_SEM_GET(buf->semid);
- ret = dlt_buffer_remove(&(buf->buffer));
- DLT_SHM_SEM_FREE(buf->semid);
+ DLT_SHM_SEM_GET(buf->semid);
+ ret = dlt_buffer_remove(&(buf->buffer));
+ DLT_SHM_SEM_FREE(buf->semid);
- return ret;
+ return ret;
}
-int dlt_shm_free_server(DltShm *buf) {
+DltReturnValue dlt_shm_free_server(DltShm *buf) {
- if(shmdt(buf->buffer.shm)) {
+ if(shmdt(buf->buffer.shm)) {
dlt_log(LOG_WARNING,"SHM: shmdt() failed");
- return -1; /* ERROR */
+ return DLT_RETURN_ERROR; /* ERROR */
}
- if(shmctl(buf->shmid,IPC_RMID,NULL) == -1) {
+ if(shmctl(buf->shmid,IPC_RMID,NULL) == -1) {
dlt_log(LOG_WARNING,"SHM: shmdt() failed");
- return -1; /* ERROR */
- }
+ return DLT_RETURN_ERROR; /* ERROR */
+ }
- if(semctl(buf->semid,0,IPC_RMID,(int)0) == -1) {
+ if(semctl(buf->semid,0,IPC_RMID,(int)0) == -1) {
dlt_log(LOG_WARNING,"SHM: shmdt() failed");
- return -1; /* ERROR */
- }
+ return DLT_RETURN_ERROR; /* ERROR */
+ }
- // Reset parameters
- buf->shmid = 0;
- buf->semid = 0;
+ // Reset parameters
+ buf->shmid = 0;
+ buf->semid = 0;
- return dlt_buffer_free_static(&(buf->buffer));
+ return dlt_buffer_free_static(&(buf->buffer));
}
-int dlt_shm_free_client(DltShm *buf) {
+DltReturnValue dlt_shm_free_client(DltShm *buf) {
- if(shmdt(buf->buffer.shm)) {
+ if(shmdt(buf->buffer.shm)) {
dlt_log(LOG_WARNING,"SHM: shmdt() failed");
- return -1; /* ERROR */
+ return DLT_RETURN_ERROR; /* ERROR */
}
- // Reset parameters
- buf->shmid = 0;
- buf->semid = 0;
+ // Reset parameters
+ buf->shmid = 0;
+ buf->semid = 0;
- return dlt_buffer_free_static(&(buf->buffer));
+ return dlt_buffer_free_static(&(buf->buffer));
}
diff --git a/src/shared/dlt_user_shared.c b/src/shared/dlt_user_shared.c
index 0113a3f..60418b4 100644
--- a/src/shared/dlt_user_shared.c
+++ b/src/shared/dlt_user_shared.c
@@ -77,17 +77,13 @@
#include "dlt_user_shared.h"
#include "dlt_user_shared_cfg.h"
-int dlt_user_set_userheader(DltUserHeader *userheader, uint32_t mtype)
+DltReturnValue dlt_user_set_userheader(DltUserHeader *userheader, uint32_t mtype)
{
- if (userheader==0)
- {
- return -1;
- }
+ if (userheader == 0)
+ return DLT_RETURN_ERROR;
- if (mtype<=0)
- {
- return -1;
- }
+ if (mtype <= 0)
+ return DLT_RETURN_ERROR;
userheader->pattern[0] = 'D';
userheader->pattern[1] = 'U';
@@ -95,15 +91,15 @@ int dlt_user_set_userheader(DltUserHeader *userheader, uint32_t mtype)
userheader->pattern[3] = 1;
userheader->message = mtype;
- return 0;
+ return DLT_RETURN_OK;
}
int dlt_user_check_userheader(DltUserHeader *userheader)
{
if (userheader==0)
- {
+ {
return -1;
- }
+ }
return ((userheader->pattern[0] == 'D') &&
(userheader->pattern[1] == 'U') &&
diff --git a/src/shared/dlt_user_shared.h b/src/shared/dlt_user_shared.h
index a0d563b..795928e 100644
--- a/src/shared/dlt_user_shared.h
+++ b/src/shared/dlt_user_shared.h
@@ -76,24 +76,12 @@
#include <sys/types.h>
/**
- * This are the return values for the functions dlt_user_log_out2() and dlt_user_log_out3()
- */
-typedef enum
-{
- DLT_RETURN_BUFFER_FULL = -4,
- DLT_RETURN_PIPE_FULL = -3,
- DLT_RETURN_PIPE_ERROR = -2,
- DLT_RETURN_ERROR = -1,
- DLT_RETURN_OK = 0
-} DltReturnValue;
-
-/**
* This is the header of each message to be exchanged between application and daemon.
*/
typedef struct
{
- char pattern[DLT_ID_SIZE]; /**< This pattern should be DUH0x01 */
- uint32_t message; /**< messsage info */
+ char pattern[DLT_ID_SIZE]; /**< This pattern should be DUH0x01 */
+ uint32_t message; /**< messsage info */
} PACKED DltUserHeader;
/**
@@ -101,8 +89,8 @@ typedef struct
*/
typedef struct
{
- char apid[DLT_ID_SIZE]; /**< application id */
- pid_t pid; /**< process id of user application */
+ char apid[DLT_ID_SIZE]; /**< application id */
+ pid_t pid; /**< process id of user application */
uint32_t description_length; /**< length of description */
} PACKED DltUserControlMsgRegisterApplication;
@@ -111,7 +99,7 @@ typedef struct
*/
typedef struct
{
- char apid[DLT_ID_SIZE]; /**< application id */
+ char apid[DLT_ID_SIZE]; /**< application id */
pid_t pid; /**< process id of user application */
} PACKED DltUserControlMsgUnregisterApplication;
@@ -120,12 +108,12 @@ typedef struct
*/
typedef struct
{
- char apid[DLT_ID_SIZE]; /**< application id */
- char ctid[DLT_ID_SIZE]; /**< context id */
- int32_t log_level_pos; /**< offset in management structure on user-application side */
- int8_t log_level; /**< log level */
- int8_t trace_status; /**< trace status */
- pid_t pid; /**< process id of user application */
+ char apid[DLT_ID_SIZE]; /**< application id */
+ char ctid[DLT_ID_SIZE]; /**< context id */
+ int32_t log_level_pos; /**< offset in management structure on user-application side */
+ int8_t log_level; /**< log level */
+ int8_t trace_status; /**< trace status */
+ pid_t pid; /**< process id of user application */
uint32_t description_length; /**< length of description */
} PACKED DltUserControlMsgRegisterContext;
@@ -134,9 +122,9 @@ typedef struct
*/
typedef struct
{
- char apid[DLT_ID_SIZE]; /**< application id */
- char ctid[DLT_ID_SIZE]; /**< context id */
- pid_t pid; /**< process id of user application */
+ char apid[DLT_ID_SIZE]; /**< application id */
+ char ctid[DLT_ID_SIZE]; /**< context id */
+ pid_t pid; /**< process id of user application */
} PACKED DltUserControlMsgUnregisterContext;
/**
@@ -144,9 +132,9 @@ typedef struct
*/
typedef struct
{
- uint8_t log_level; /**< log level */
- uint8_t trace_status; /**< trace status */
- int32_t log_level_pos; /**< offset in management structure on user-application side */
+ uint8_t log_level; /**< log level */
+ uint8_t trace_status; /**< trace status */
+ int32_t log_level_pos; /**< offset in management structure on user-application side */
} PACKED DltUserControlMsgLogLevel;
/**
@@ -154,8 +142,8 @@ typedef struct
*/
typedef struct
{
- int32_t log_level_pos; /**< offset in management structure on user-application side */
- uint32_t service_id; /**< service id of injection */
+ int32_t log_level_pos; /**< offset in management structure on user-application side */
+ uint32_t service_id; /**< service id of injection */
uint32_t data_length_inject; /**< length of injection message data field */
} PACKED DltUserControlMsgInjection;
@@ -166,8 +154,8 @@ typedef struct
typedef struct
{
char apid[DLT_ID_SIZE]; /**< application id */
- uint8_t log_level; /**< log level */
- uint8_t trace_status; /**< trace status */
+ uint8_t log_level; /**< log level */
+ uint8_t trace_status; /**< trace status */
} PACKED DltUserControlMsgAppLogLevelTraceStatus;
/**
@@ -175,7 +163,7 @@ typedef struct
*/
typedef struct
{
- int8_t log_mode; /**< the mode to be used for logging: off, external, internal, both */
+ int8_t log_mode; /**< the mode to be used for logging: off, external, internal, both */
} PACKED DltUserControlMsgLogMode;
/**
@@ -183,7 +171,7 @@ typedef struct
*/
typedef struct
{
- int8_t log_state; /**< the state to be used for logging state: 0 = off, 1 = external client connected */
+ int8_t log_state; /**< the state to be used for logging state: 0 = off, 1 = external client connected */
} PACKED DltUserControlMsgLogState;
/**
@@ -191,8 +179,8 @@ typedef struct
*/
typedef struct
{
- uint32_t overflow_counter; /**< counts the number of lost messages */
- char apid[4]; /**< application which lost messages */
+ uint32_t overflow_counter; /**< counts the number of lost messages */
+ char apid[4]; /**< application which lost messages */
} PACKED DltUserControlMsgBufferOverflow;
/**************************************************************************************************
@@ -203,11 +191,9 @@ typedef struct
* Set user header marker and store message type in user header
* @param userheader pointer to the userheader
* @param mtype user message type of internal message
- * @return negative value if there was an error {
- return -1;
- }
+ * @return Value from DltReturnValue enum
*/
-int dlt_user_set_userheader(DltUserHeader *userheader, uint32_t mtype);
+DltReturnValue dlt_user_set_userheader(DltUserHeader *userheader, uint32_t mtype);
/**
* Check if user header contains its marker