diff options
author | Lutz Helwing <lutz_helwing@mentor.com> | 2015-07-15 14:14:19 +0200 |
---|---|---|
committer | Alexander Wenzel <Alexander.AW.Wenzel@bmw.de> | 2015-10-07 10:40:33 +0200 |
commit | 1236195e9b93aeb6bfa625956fa027f96003756d (patch) | |
tree | 07b08c892a486f9f97c1674e0d253099eb3388f3 /src/shared | |
parent | 033a69218af3490f6be409f66f350c1568655f61 (diff) | |
download | DLT-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.c | 2073 | ||||
-rw-r--r-- | src/shared/dlt_common_cfg.h | 2 | ||||
-rw-r--r-- | src/shared/dlt_offline_trace.c | 266 | ||||
-rw-r--r-- | src/shared/dlt_shm.c | 254 | ||||
-rw-r--r-- | src/shared/dlt_user_shared.c | 20 | ||||
-rw-r--r-- | src/shared/dlt_user_shared.h | 68 |
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 |