summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorChristoph Lipka <clipka@jp.adit-jv.com>2016-05-11 12:13:58 +0900
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2016-09-23 15:37:23 +0200
commit53cd25f1e37c65d465493df6e7e3ebb0270bd651 (patch)
tree855fdb70d6996d96defa7491ae454fccdb2effee /include
parentb2326c879612f35e6fcacdf4c9957e942a1d5741 (diff)
downloadDLT-daemon-53cd25f1e37c65d465493df6e7e3ebb0270bd651.tar.gz
Add dlt_user_is_logLevel_enabled API
This function allows an application developer to check if the DLT LogLevel is enabled before starting any log string creation. It can be used in application specific logging wrapper functions. Signed-off-by: Christoph Lipka <clipka@jp.adit-jv.com> Change-Id: I4c269b12bfdeae29a4e795385cdbc54a579ba621
Diffstat (limited to 'include')
-rw-r--r--include/dlt/dlt_types.h1
-rw-r--r--include/dlt/dlt_user.h23
-rw-r--r--include/dlt/dlt_user_macros.h25
3 files changed, 41 insertions, 8 deletions
diff --git a/include/dlt/dlt_types.h b/include/dlt/dlt_types.h
index cd12e77..03cd036 100644
--- a/include/dlt/dlt_types.h
+++ b/include/dlt/dlt_types.h
@@ -85,6 +85,7 @@ typedef unsigned int speed_t;
*/
typedef enum
{
+ DLT_RETURN_LOGGING_DISABLED = -7,
DLT_RETURN_USER_BUFFER_FULL = -6,
DLT_RETURN_WRONG_PARAMETER = -5,
DLT_RETURN_BUFFER_FULL = -4,
diff --git a/include/dlt/dlt_user.h b/include/dlt/dlt_user.h
index a24117e..792ebbe 100644
--- a/include/dlt/dlt_user.h
+++ b/include/dlt/dlt_user.h
@@ -769,6 +769,29 @@ int dlt_user_atexit_blow_out_user_buffer(void);
*/
DltReturnValue dlt_user_log_resend_buffer(void);
+/**
+ * Checks the log level passed by the log function if enabled for that context or not.
+ * This function can be called by applications before generating their logs.
+ * Also called before writing new log messages.
+ * @param handle pointer to an object containing information about one special logging context
+ * @param loglevel this is the current log level of the log message to be sent
+ * @return Value from DltReturnValue enum, DLT_RETURN_TRUE if log level is enabled
+ */
+static inline DltReturnValue dlt_user_is_logLevel_enabled(DltContext *handle,DltLogLevelType loglevel)
+{
+ if (handle == NULL || handle->log_level_ptr == NULL)
+ {
+ return DLT_RETURN_WRONG_PARAMETER;
+ }
+
+ if (loglevel <= (DltLogLevelType)(*(handle->log_level_ptr)) && loglevel != DLT_LOG_OFF)
+ {
+ return DLT_RETURN_TRUE;
+ }
+
+ return DLT_RETURN_LOGGING_DISABLED;
+}
+
#ifdef DLT_TEST_ENABLE
void dlt_user_test_corrupt_user_header(int enable);
void dlt_user_test_corrupt_message_size(int enable,int16_t size);
diff --git a/include/dlt/dlt_user_macros.h b/include/dlt/dlt_user_macros.h
index 919df7e..e1e9104 100644
--- a/include/dlt/dlt_user_macros.h
+++ b/include/dlt/dlt_user_macros.h
@@ -181,7 +181,7 @@
#else
#define DLT_LOG(CONTEXT,LOGLEVEL,ARGS...) \
do { \
- if((CONTEXT).log_level_ptr && ((LOGLEVEL)<=(int)*((CONTEXT).log_level_ptr) ) && ((LOGLEVEL)!=0)) \
+ if(dlt_user_is_logLevel_enabled(&CONTEXT,LOGLEVEL)==DLT_RETURN_TRUE) \
{ \
DltContextData log_local; \
int dlt_local; \
@@ -213,7 +213,7 @@
#else
#define DLT_LOG_ID(CONTEXT,LOGLEVEL,MSGID,ARGS...) \
do { \
- if((CONTEXT).log_level_ptr && ((LOGLEVEL)<=(int)*((CONTEXT).log_level_ptr) ) && ((LOGLEVEL)!=0)) \
+ if(dlt_user_is_logLevel_enabled(&CONTEXT,LOGLEVEL)==DLT_RETURN_TRUE) \
{ \
DltContextData log_local; \
int dlt_local; \
@@ -398,7 +398,7 @@
*/
#define DLT_LOG_STRING(CONTEXT,LOGLEVEL,TEXT) \
do { \
- if((CONTEXT).log_level_ptr && ((LOGLEVEL)<=(int)*((CONTEXT).log_level_ptr) ) && ((LOGLEVEL)!=0)) \
+ if(dlt_user_is_logLevel_enabled(&CONTEXT,LOGLEVEL)==DLT_RETURN_TRUE) \
{ \
(void)dlt_log_string(&(CONTEXT), LOGLEVEL, TEXT); \
} \
@@ -413,7 +413,7 @@
*/
#define DLT_LOG_STRING_INT(CONTEXT,LOGLEVEL,TEXT,INT_VAR) \
do { \
- if((CONTEXT).log_level_ptr && ((LOGLEVEL)<=(int)*((CONTEXT).log_level_ptr) ) && ((LOGLEVEL)!=0)) \
+ if(dlt_user_is_logLevel_enabled(&CONTEXT,LOGLEVEL)==DLT_RETURN_TRUE) \
{ \
(void)dlt_log_string_int(&(CONTEXT), LOGLEVEL, TEXT, INT_VAR); \
} \
@@ -428,7 +428,7 @@
*/
#define DLT_LOG_STRING_UINT(CONTEXT,LOGLEVEL,TEXT,UINT_VAR) \
do { \
- if((CONTEXT).log_level_ptr && ((LOGLEVEL)<=(int)*((CONTEXT).log_level_ptr) ) && ((LOGLEVEL)!=0)) \
+ if(dlt_user_is_logLevel_enabled(&CONTEXT,LOGLEVEL)==DLT_RETURN_TRUE) \
{ \
(void)dlt_log_string_uint(&(CONTEXT),LOGLEVEL,TEXT,UINT_VAR); \
} \
@@ -442,7 +442,7 @@
*/
#define DLT_LOG_UINT(CONTEXT,LOGLEVEL,UINT_VAR) \
do { \
- if((CONTEXT).log_level_ptr && ((LOGLEVEL)<=(int)*((CONTEXT).log_level_ptr) ) && ((LOGLEVEL)!=0)) \
+ if(dlt_user_is_logLevel_enabled(&CONTEXT,LOGLEVEL)==DLT_RETURN_TRUE) \
{ \
(void)dlt_log_uint(&(CONTEXT),LOGLEVEL,UINT_VAR); \
} \
@@ -456,7 +456,7 @@
*/
#define DLT_LOG_INT(CONTEXT,LOGLEVEL,INT_VAR) \
do { \
- if((CONTEXT).log_level_ptr && ((LOGLEVEL)<=(int)*((CONTEXT).log_level_ptr) ) && ((LOGLEVEL)!=0)) \
+ if(dlt_user_is_logLevel_enabled(&CONTEXT,LOGLEVEL)==DLT_RETURN_TRUE) \
{ \
(void)dlt_log_int(&(CONTEXT),LOGLEVEL,INT_VAR); \
} \
@@ -471,7 +471,7 @@
*/
#define DLT_LOG_RAW(CONTEXT,LOGLEVEL,BUF,LEN) \
do { \
- if((CONTEXT).log_level_ptr && ((LOGLEVEL)<=(int)*((CONTEXT).log_level_ptr) ) && ((LOGLEVEL)!=0)) \
+ if(dlt_user_is_logLevel_enabled(&CONTEXT,LOGLEVEL)==DLT_RETURN_TRUE) \
{ \
(void)dlt_log_raw(&(CONTEXT),LOGLEVEL,BUF,LEN); \
} \
@@ -523,6 +523,15 @@
(void)dlt_disable_local_print();} while(0)
/**
+ * Check if log level is enabled
+ *
+ * @param CONTEXT object containing information about one special logging context
+ * @param LOGLEVEL the log level of the log message
+ */
+#define DLT_IS_LOG_LEVEL_ENABLED(CONTEXT,LOGLEVEL) \
+ (dlt_user_is_logLevel_enabled(&CONTEXT,LOGLEVEL) == DLT_RETURN_TRUE)
+
+/**
\}
*/