summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBui Nguyen Quoc Thanh <Thanh.BuiNguyenQuoc@vn.bosch.com>2019-07-17 11:31:37 +0700
committerSaya Sugiura <39760799+ssugiura@users.noreply.github.com>2019-09-13 08:49:36 +0900
commit8f8dc13c86e2c7e839b6ff0a6b2dd29e19b58de6 (patch)
treeebb8b869599be074a6347e4c2df73b35d8cded03
parente1e86da8f6db688a6ffce6370975dfcaad7a62aa (diff)
downloadDLT-daemon-8f8dc13c86e2c7e839b6ff0a6b2dd29e19b58de6.tar.gz
libdlt: calculate resend buffer memory
The fix from commit 376bf6c is considered as a workaround. From now, the resend buffer size is calculated based on (dlt_user.log_buf_len + header_size) - Remove the macro DLT_USER_EXTRA_BUFF_SIZE - Use env_disable_extended_header_for_nonverbose instead of env_nonverbose_extended_header Related commit: 376bf6c Size of Resend buffer less than or equal to DLT_USER_BUF_MAX_SIZE res… (#116) Signed-off-by: Bui Nguyen Quoc Thanh <Thanh.BuiNguyenQuoc@vn.bosch.com>
-rw-r--r--include/dlt/dlt_user.h6
-rw-r--r--src/lib/dlt_user.c48
2 files changed, 32 insertions, 22 deletions
diff --git a/include/dlt/dlt_user.h b/include/dlt/dlt_user.h
index 405d342..85656d9 100644
--- a/include/dlt/dlt_user.h
+++ b/include/dlt/dlt_user.h
@@ -212,7 +212,7 @@ typedef struct
DltReceiver receiver; /**< Receiver for internal user-defined messages from daemon */
int8_t verbose_mode; /**< Verbose mode enabled: 1 enabled, 0 disabled */
- int8_t use_extende_header_for_non_verbose; /**< Use extended header for non verbose: 1 enabled, 0 disabled */
+ int8_t use_extended_header_for_non_verbose; /**< Use extended header for non verbose: 1 enabled, 0 disabled */
int8_t with_session_id; /**< Send always session id: 1 enabled, 0 disabled */
int8_t with_timestamp; /**< Send always timestamp: 1 enabled, 0 disabled */
int8_t with_ecu_id; /**< Send always ecu id: 1 enabled, 0 disabled */
@@ -675,10 +675,10 @@ DltReturnValue dlt_nonverbose_mode(void);
/**
* Use extended header in non verbose mode.
* Enabled by default.
- * @param use_extende_header_for_non_verbose Use extended header for non verbose mode if true
+ * @param use_extended_header_for_non_verbose Use extended header for non verbose mode if true
* @return Value from DltReturnValue enum
*/
-DltReturnValue dlt_use_extended_header_for_non_verbose(int8_t use_extende_header_for_non_verbose);
+DltReturnValue dlt_use_extended_header_for_non_verbose(int8_t use_extended_header_for_non_verbose);
/**
* Send session id configuration.
diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c
index 5a84430..ba62666 100644
--- a/src/lib/dlt_user.c
+++ b/src/lib/dlt_user.c
@@ -103,9 +103,6 @@ enum StringType
UTF8_STRING = 1
};
-/*Max DLT message size is 1390 bytes plus some extra header space to accomidate the resend buffer*/
-#define DLT_USER_EXTRA_BUFF_SIZE 100
-
/* Segmented Network Trace */
#define DLT_MAX_TRACE_SEGMENT_SIZE 1024
#define DLT_MESSAGE_QUEUE_NAME "/dlt_message_queue"
@@ -519,9 +516,10 @@ DltReturnValue dlt_init_common(void)
uint32_t buffer_max = DLT_USER_RINGBUFFER_MAX_SIZE;
char *env_buffer_step;
uint32_t buffer_step = DLT_USER_RINGBUFFER_STEP_SIZE;
- char *env_nonverbose_extended_header;
+ char *env_disable_extended_header_for_nonverbose;
char *env_log_buffer_len;
uint32_t buffer_max_configured = 0;
+ uint32_t header_size = 0;
/* Binary semaphore for threads */
if (sem_init(&dlt_mutex, 0, 1) == -1) {
@@ -543,20 +541,31 @@ DltReturnValue dlt_init_common(void)
/* Verbose mode is enabled by default */
dlt_user.verbose_mode = 1;
+ /* header_size is used for resend buffer
+ * so it won't include DltStorageHeader
+ */
+ header_size = sizeof(DltUserHeader) + sizeof(DltStandardHeader) +
+ sizeof(DltStandardHeaderExtra);
+
/* Use extended header for non verbose is enabled by default */
- dlt_user.use_extende_header_for_non_verbose = DLT_USER_USE_EXTENDED_HEADER_FOR_NONVERBOSE;
+ dlt_user.use_extended_header_for_non_verbose =
+ DLT_USER_USE_EXTENDED_HEADER_FOR_NONVERBOSE;
/* Use extended header for non verbose is modified as per environment variable */
- env_nonverbose_extended_header = getenv(DLT_USER_ENV_DISABLE_EXTENDED_HEADER_FOR_NONVERBOSE);
- if (env_nonverbose_extended_header)
- {
- if (strcmp(env_nonverbose_extended_header, "1") == 0)
- {
- dlt_user.use_extende_header_for_non_verbose = DLT_USER_NO_USE_EXTENDED_HEADER_FOR_NONVERBOSE;
- }
+ env_disable_extended_header_for_nonverbose =
+ getenv(DLT_USER_ENV_DISABLE_EXTENDED_HEADER_FOR_NONVERBOSE);
+
+ if (env_disable_extended_header_for_nonverbose) {
+ if (strcmp(env_disable_extended_header_for_nonverbose, "1") == 0)
+ dlt_user.use_extended_header_for_non_verbose =
+ DLT_USER_NO_USE_EXTENDED_HEADER_FOR_NONVERBOSE;
}
- /* WIth session id is enabled by default */
+ if (dlt_user.use_extended_header_for_non_verbose ==
+ DLT_USER_USE_EXTENDED_HEADER_FOR_NONVERBOSE)
+ header_size += sizeof(DltExtendedHeader);
+
+ /* With session id is enabled by default */
dlt_user.with_session_id = DLT_USER_WITH_SESSION_ID;
/* With timestamp is enabled by default */
@@ -657,7 +666,8 @@ DltReturnValue dlt_init_common(void)
}
if (dlt_user.resend_buffer == NULL) {
- dlt_user.resend_buffer = calloc(sizeof(unsigned char), (dlt_user.log_buf_len + DLT_USER_EXTRA_BUFF_SIZE));
+ dlt_user.resend_buffer = calloc(sizeof(unsigned char),
+ (dlt_user.log_buf_len + header_size));
if (dlt_user.resend_buffer == NULL) {
dlt_user_initialised = false;
@@ -3332,7 +3342,7 @@ DltReturnValue dlt_nonverbose_mode(void)
return DLT_RETURN_OK;
}
-DltReturnValue dlt_use_extended_header_for_non_verbose(int8_t use_extende_header_for_non_verbose)
+DltReturnValue dlt_use_extended_header_for_non_verbose(int8_t use_extended_header_for_non_verbose)
{
if (!dlt_user_initialised) {
if (dlt_init() < DLT_RETURN_OK) {
@@ -3341,8 +3351,8 @@ DltReturnValue dlt_use_extended_header_for_non_verbose(int8_t use_extende_header
}
}
- /* Set use_extende_header_for_non_verbose */
- dlt_user.use_extende_header_for_non_verbose = use_extende_header_for_non_verbose;
+ /* Set use_extended_header_for_non_verbose */
+ dlt_user.use_extended_header_for_non_verbose = use_extended_header_for_non_verbose;
return DLT_RETURN_OK;
}
@@ -3356,7 +3366,7 @@ DltReturnValue dlt_with_session_id(int8_t with_session_id)
}
}
- /* Set use_extende_header_for_non_verbose */
+ /* Set use_extended_header_for_non_verbose */
dlt_user.with_session_id = with_session_id;
return DLT_RETURN_OK;
@@ -3581,7 +3591,7 @@ DltReturnValue dlt_user_log_send_log(DltContextData *log, int mtype)
msg.standardheader->htyp = (msg.standardheader->htyp | DLT_HTYP_UEH);
else
/* In non-verbose, send extended header if desired */
- if (dlt_user.use_extende_header_for_non_verbose)
+ if (dlt_user.use_extended_header_for_non_verbose)
msg.standardheader->htyp = (msg.standardheader->htyp | DLT_HTYP_UEH);
#if (BYTE_ORDER == BIG_ENDIAN)