fixed build with new compilers
[framework/system/dlog.git] / include / dlog.h
index 9a9f69e..65c3f60 100755 (executable)
@@ -1,11 +1,13 @@
 /*
- * Copyright (C) 2005 The Android Open Source Project
+ * DLOG
+ * Copyright (c) 2005-2008, The Android Open Source Project
+ * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
+ * Licensed under the Apache License, Version 2.0 (the License);
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-/** 
+/**
  * @file       dlog.h
  * @version    0.4
  * @brief      This file is the header file of interface of dlog.
  */
-
-
 /**
  * @addtogroup APPLICATION_FRAMEWORK
  * @{
  * @{
 
  */
-
-
 #ifndef        _DLOG_H_
 #define        _DLOG_H_
 
 #include<stdarg.h>
+#include<string.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -62,6 +59,11 @@ extern "C" {
 #define LOG_TAG NULL
 #endif
 
+#define LOG_ON() _get_logging_on()
+
+#ifndef __MODULE__
+#define __MODULE__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
+#endif
 /*
  * log priority values, in ascending priority order.
  */
@@ -79,399 +81,364 @@ typedef enum {
 
 typedef enum {
     LOG_ID_MAIN = 0,
-    LOG_ID_RADIO,
-    LOG_ID_SYSTEM,
-    LOG_ID_APPS,
-    LOG_ID_MAX
+       LOG_ID_RADIO,
+       LOG_ID_SYSTEM,
+       LOG_ID_APPS,
+       LOG_ID_MAX
 } log_id_t;
 
-#define CONDITION(cond)     (__builtin_expect((cond)!=0, 0))
+#define CONDITION(cond)     (__builtin_expect((cond) != 0, 0))
 
 // ---------------------------------------------------------------------
-
 /**
  * Simplified macro to send a verbose log message using the current LOG_TAG.
  */
 #ifndef LOGV
 #if LOG_NDEBUG
-#define LOGV(...)   ((void)0)
+#define LOGV(...)   (0)
 #else
-#define LOGV(...) ((void)LOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__))
-
+#define LOGV(format, arg...) \
+       (LOG_ON() ? (LOG(LOG_VERBOSE, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
 #endif
-
 /**
  * Simplified macro to send a conditional verbose log message using the current LOG_TAG.
  */
 #ifndef LOGV_IF
 #if LOG_NDEBUG
-#define LOGV_IF(cond, ...)   ((void)0)
+#define LOGV_IF(cond, format, arg...)   (0)
 #else
-#define LOGV_IF(cond, ...) \
-    ( (CONDITION(cond)) \
-    ? ((void)LOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__)) \
-    : (void)0 )
+#define LOGV_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (LOG(LOG_VERBOSE, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
 #endif
-
 /**
  * Simplified macro to send a debug log message using the current LOG_TAG.
  */
 #ifndef LOGD
-#define LOGD(...) ((void)LOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__))
+#define LOGD(format, arg...) \
+       (LOG_ON() ? (LOG(LOG_DEBUG, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
 /**
- * Simplified macro to send a conditional debug log message using the current LOG_TAG.
+ * Simplified macro to send a conditional verbose log message using the current LOG_TAG.
  */
 #ifndef LOGD_IF
-#define LOGD_IF(cond, ...) \
-    ( (CONDITION(cond)) \
-    ? ((void)LOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__)) \
-    : (void)0 )
+#define LOGD_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (LOG(LOG_DEBUG, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
 
 /**
  * Simplified macro to send an info log message using the current LOG_TAG.
  */
 #ifndef LOGI
-#define LOGI(...) ((void)LOG(LOG_INFO, LOG_TAG, __VA_ARGS__))
+#define LOGI(format, arg...) \
+       (LOG_ON() ? (LOG(LOG_INFO, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
 /**
- * Simplified macro to send a conditional info log message using the current LOG_TAG.
+ * Simplified macro to send a conditional verbose log message using the current LOG_TAG.
  */
 #ifndef LOGI_IF
-#define LOGI_IF(cond, ...) \
-    ( (CONDITION(cond)) \
-    ? ((void)LOG(LOG_INFO, LOG_TAG, __VA_ARGS__)) \
-    : (void)0 )
+#define LOGI_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (LOG(LOG_INFO, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
 
 /**
  * Simplified macro to send a warning log message using the current LOG_TAG.
  */
 #ifndef LOGW
-#define LOGW(...) ((void)LOG(LOG_WARN, LOG_TAG, __VA_ARGS__))
+#define LOGW(format, arg...) \
+       (LOG_ON() ? (LOG(LOG_WARN, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
 /**
- * Simplified macro to send a conditional warning log message using the current LOG_TAG.
+ * Simplified macro to send a conditional verbose log message using the current LOG_TAG.
  */
 #ifndef LOGW_IF
-#define LOGW_IF(cond, ...) \
-    ( (CONDITION(cond)) \
-    ? ((void)LOG(LOG_WARN, LOG_TAG, __VA_ARGS__)) \
-    : (void)0 )
+#define LOGW_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (LOG(LOG_WARN, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
 
 /**
  * Simplified macro to send an error log message using the current LOG_TAG.
  */
 #ifndef LOGE
-#define LOGE(...) ((void)LOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
+#define LOGE(format, arg...) \
+       (LOG_ON() ? (LOG(LOG_ERROR, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
 /**
- * Simplified macro to send a conditional error log message using the current LOG_TAG.
+ * Simplified macro to send a conditional verbose log message using the current LOG_TAG.
  */
 #ifndef LOGE_IF
-#define LOGE_IF(cond, ...) \
-    ( (CONDITION(cond)) \
-    ? ((void)LOG(LOG_ERROR, LOG_TAG, __VA_ARGS__)) \
-    : (void)0 )
+#define LOGE_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (LOG(LOG_ERROR, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
+#endif
+/**
+ * Simplified macro to send an error log message using the current LOG_TAG.
+ */
+#ifndef LOGF
+#define LOGF(format, arg...) \
+       (LOG_ON() ? (LOG(LOG_FATAL, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
+#endif
+/**
+ * Simplified macro to send a conditional verbose log message using the current LOG_TAG.
+ */
+#ifndef LOGF_IF
+#define LOGF_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (LOG(LOG_FATAL, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
 
 // ---------------------------------------------------------------------
-
 /**
- * Simplified macro to send a verbose radio log message using the current LOG_TAG.
+ * Simplified radio macro to send a verbose log message using the current LOG_TAG.
  */
 #ifndef RLOGV
 #if LOG_NDEBUG
-#define RLOGV(...)   ((void)0)
+#define RLOGV(...)   (0)
 #else
-#define RLOGV(...) ((void)RLOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__))
+#define RLOGV(format, arg...) \
+       (LOG_ON() ? (RLOG(LOG_VERBOSE, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
 #endif
-       
 /**
- * Simplified macro to send a conditional verbose radio log message using the current LOG_TAG.
- */    
+ * Simplified radio macro to send a conditional verbose log message using the current LOG_TAG.
+ */
 #ifndef RLOGV_IF
 #if LOG_NDEBUG
-#define RLOGV_IF(cond, ...)   ((void)0)
+#define RLOGV_IF(cond, format, arg...)   (0)
 #else
-#define RLOGV_IF(cond, ...) \
-               ( (CONDITION(cond)) \
-               ? ((void)RLOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__)) \
-               : (void)0 )
+#define RLOGV_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (RLOG(LOG_VERBOSE, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
 #endif
-       
+
 /**
- * Simplified macro to send a debug radio log message using the current LOG_TAG.
+ * Simplified radio macro to send a debug log message using the current LOG_TAG.
  */
 #ifndef RLOGD
-#define RLOGD(...) ((void)RLOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__))
+#define RLOGD(format, arg...) \
+       (LOG_ON() ? (RLOG(LOG_DEBUG, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
 /**
- * Simplified macro to send a conditional debug radio log message using the current LOG_TAG.
- */    
+ * Simplified radio macro to send a conditional verbose log message using the current LOG_TAG.
+ */
 #ifndef RLOGD_IF
-#define RLOGD_IF(cond, ...) \
-               ( (CONDITION(cond)) \
-               ? ((void)RLOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__)) \
-               : (void)0 )
+#define RLOGD_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (RLOG(LOG_DEBUG, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-       
+
 /**
- * Simplified macro to send an info radio log message using the current LOG_TAG.
+ * Simplified radio macro to send an info log message using the current LOG_TAG.
  */
 #ifndef RLOGI
-#define RLOGI(...) ((void)RLOG(LOG_INFO, LOG_TAG, __VA_ARGS__))
+#define RLOGI(format, arg...) \
+       (LOG_ON() ? (RLOG(LOG_INFO, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
 /**
- * Simplified macro to send a conditional info radio log message using the current LOG_TAG.
+ * Simplified radio macro to send a conditional verbose log message using the current LOG_TAG.
  */
 #ifndef RLOGI_IF
-#define RLOGI_IF(cond, ...) \
-               ( (CONDITION(cond)) \
-               ? ((void)RLOG(LOG_INFO, LOG_TAG, __VA_ARGS__)) \
-               : (void)0 )
+#define RLOGI_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (RLOG(LOG_INFO, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-       
+
 /**
- * Simplified macro to send a warning radio log message using the current LOG_TAG.
+ * Simplified radio macro to send a warning log message using the current LOG_TAG.
  */
 #ifndef RLOGW
-#define RLOGW(...) ((void)RLOG(LOG_WARN, LOG_TAG, __VA_ARGS__))
+#define RLOGW(format, arg...) \
+       (LOG_ON() ? (RLOG(LOG_WARN, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
 /**
- * Simplified macro to send a conditional warning radio log message using the current LOG_TAG.
+ * Simplified radio macro to send a conditional verbose log message using the current LOG_TAG.
  */
 #ifndef RLOGW_IF
-#define RLOGW_IF(cond, ...) \
-               ( (CONDITION(cond)) \
-               ? ((void)RLOG(LOG_WARN, LOG_TAG, __VA_ARGS__)) \
-               : (void)0 )
+#define RLOGW_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (RLOG(LOG_WARN, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-       
+
 /**
- * Simplified macro to send an error radio log message using the current LOG_TAG.
+ * Simplified radio macro to send an error log message using the current LOG_TAG.
  */
 #ifndef RLOGE
-#define RLOGE(...) ((void)RLOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
+#define RLOGE(format, arg...) \
+       (LOG_ON() ? (RLOG(LOG_ERROR, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
 /**
- * Simplified macro to send a conditional error radio log message using the current LOG_TAG.
- */    
+ * Simplified radio macro to send a conditional verbose log message using the current LOG_TAG.
+ */
 #ifndef RLOGE_IF
-#define RLOGE_IF(cond, ...) \
-               ( (CONDITION(cond)) \
-               ? ((void)RLOG(LOG_ERROR, LOG_TAG, __VA_ARGS__)) \
-               : (void)0 )
+#define RLOGE_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (RLOG(LOG_ERROR, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
+#endif
+/**
+ * Simplified radio macro to send an error log message using the current LOG_TAG.
+ */
+#ifndef RLOGF
+#define RLOGF(format, arg...) \
+       (LOG_ON() ? (RLOG(LOG_FATAL, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
+#endif
+/**
+ * Simplified radio macro to send a conditional verbose log message using the current LOG_TAG.
+ */
+#ifndef RLOGF_IF
+#define RLOGF_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (RLOG(LOG_FATAL, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
 
-// ---------------------------------------------------------------------
 
+// ---------------------------------------------------------------------
 /**
- * Simplified macro to send a verbose system log message using the current LOG_TAG.
+ * Simplified system macro to send a verbose log message using the current LOG_TAG.
  */
 #ifndef SLOGV
 #if LOG_NDEBUG
-#define SLOGV(...)   ((void)0)
+#define SLOGV(...)   (0)
 #else
-#define SLOGV(...) ((void)SLOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__))
+#define SLOGV(format, arg...) \
+       (LOG_ON() ? (SLOG(LOG_VERBOSE, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
 #endif
-
 /**
- * Simplified macro to send a conditional verbose system log message using the current LOG_TAG.
+ * Simplified macro to send a conditional verbose log message using the current LOG_TAG.
  */
 #ifndef SLOGV_IF
 #if LOG_NDEBUG
-#define SLOGV_IF(cond, ...)   ((void)0)
+#define SLOGV_IF(cond, format, arg...)   (0)
 #else
-#define SLOGV_IF(cond, ...) \
-               ( (CONDITION(cond)) \
-               ? ((void)SLOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__)) \
-               : (void)0 )
+#define SLOGV_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (SLOG(LOG_VERBOSE, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
 #endif
-       
+
 /**
- * Simplified macro to send a debug system log message using the current LOG_TAG.
+ * Simplified system macro to send a debug log message using the current LOG_TAG.
  */
 #ifndef SLOGD
-#define SLOGD(...) ((void)SLOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__))
+#define SLOGD(format, arg...) \
+       (LOG_ON() ? (SLOG(LOG_DEBUG, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
 /**
- * Simplified macro to send a conditional debug system log message using the current LOG_TAG.
+ * Simplified system macro to send a conditional verbose log message using the current LOG_TAG.
  */
 #ifndef SLOGD_IF
-#define SLOGD_IF(cond, ...) \
-               ( (CONDITION(cond)) \
-               ? ((void)SLOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__)) \
-               : (void)0 )
+#define SLOGD_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (SLOG(LOG_DEBUG, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-       
+
 /**
- * Simplified macro to send an info system log message using the current LOG_TAG.
+ * Simplified system macro to send an info log message using the current LOG_TAG.
  */
 #ifndef SLOGI
-#define SLOGI(...) ((void)SLOG(LOG_INFO, LOG_TAG, __VA_ARGS__))
+#define SLOGI(format, arg...) \
+       (LOG_ON() ? (SLOG(LOG_INFO, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
 /**
- * Simplified macro to send a conditional info system log message using the current LOG_TAG.
+ * Simplified system macro to send a conditional verbose log message using the current LOG_TAG.
  */
 #ifndef SLOGI_IF
-#define SLOGI_IF(cond, ...) \
-               ( (CONDITION(cond)) \
-               ? ((void)SLOG(LOG_INFO, LOG_TAG, __VA_ARGS__)) \
-               : (void)0 )
+#define SLOGI_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (SLOG(LOG_INFO, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-       
+
 /**
- * Simplified macro to send a warning system log message using the current LOG_TAG.
+ * Simplified system macro to send a warning log message using the current LOG_TAG.
  */
 #ifndef SLOGW
-#define SLOGW(...) ((void)SLOG(LOG_WARN, LOG_TAG, __VA_ARGS__))
+#define SLOGW(format, arg...) \
+       (LOG_ON() ? (SLOG(LOG_WARN, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
 /**
- * Simplified macro to send a conditional warning system log message using the current LOG_TAG.
+ * Simplified system macro to send a conditional verbose log message using the current LOG_TAG.
  */
 #ifndef SLOGW_IF
-#define SLOGW_IF(cond, ...) \
-               ( (CONDITION(cond)) \
-               ? ((void)SLOG(LOG_WARN, LOG_TAG, __VA_ARGS__)) \
-               : (void)0 )
+#define SLOGW_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (SLOG(LOG_WARN, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-       
+
 /**
- * Simplified macro to send an error system log message using the current LOG_TAG.
+ * Simplified system macro to send an error log message using the current LOG_TAG.
  */
 #ifndef SLOGE
-#define SLOGE(...) ((void)SLOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
+#define SLOGE(format, arg...) \
+       (LOG_ON() ? (SLOG(LOG_ERROR, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
 /**
- * Simplified macro to send a conditional error system log message using the current LOG_TAG.
+ * Simplified system macro to send a conditional verbose log message using the current LOG_TAG.
  */
 #ifndef SLOGE_IF
-#define SLOGE_IF(cond, ...) \
-               ( (CONDITION(cond)) \
-               ? ((void)SLOG(LOG_ERROR, LOG_TAG, __VA_ARGS__)) \
-               : (void)0 )
+#define SLOGE_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (SLOG(LOG_ERROR, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
-
-// ---------------------------------------------------------------------
-
 /**
- * Simplified macro to send a verbose log message using the current LOG_TAG.
+ * Simplified system macro to send an error log message using the current LOG_TAG.
  */
-#ifndef ALOGV
-#if LOG_NDEBUG
-#define ALOGV(...)   ((void)0)
-#else
-#define ALOGV(...) ((void)ALOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__))
-
+#ifndef SLOGF
+#define SLOGF(format, arg...) \
+       (LOG_ON() ? (SLOG(LOG_FATAL, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
+/**
+ * Simplified system macro to send a conditional verbose log message using the current LOG_TAG.
+ */
+#ifndef SLOGF_IF
+#define SLOGF_IF(cond, format, arg...) \
+       (((CONDITION(cond)) && (LOG_ON())) ? \
+         (SLOG(LOG_FATAL, LOG_TAG, "%s:%s(%d)>" format, __MODULE__, __func__, __LINE__, ##arg)) : (0))
 #endif
 
+// ---------------------------------------------------------------------
+
 /**
- * Simplified macro to send a conditional verbose log message using the current LOG_TAG.
+ * Simplified macro to send a verbose log message using the current LOG_TAG.
  */
-#ifndef ALOGV_IF
+#ifndef ALOGV
 #if LOG_NDEBUG
-#define ALOGV_IF(cond, ...)   ((void)0)
+#define ALOGV(...)   (0)
 #else
-#define ALOGV_IF(cond, ...) \
-    ( (CONDITION(cond)) \
-    ? ((void)ALOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__)) \
-    : (void)0 )
+#define ALOGV(...) (ALOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__))
 #endif
 #endif
-
 /**
  * Simplified macro to send a debug log message using the current LOG_TAG.
  */
 #ifndef ALOGD
-#define ALOGD(...) ((void)ALOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__))
+#define ALOGD(...) (ALOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__))
 #endif
-
-/**
- * Simplified macro to send a conditional debug log message using the current LOG_TAG.
- */
-#ifndef ALOGD_IF
-#define ALOGD_IF(cond, ...) \
-    ( (CONDITION(cond)) \
-    ? ((void)ALOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__)) \
-    : (void)0 )
-#endif
-
 /**
  * Simplified macro to send an info log message using the current LOG_TAG.
  */
 #ifndef ALOGI
-#define ALOGI(...) ((void)ALOG(LOG_INFO, LOG_TAG, __VA_ARGS__))
-#endif
-
-/**
- * Simplified macro to send a conditional info log message using the current LOG_TAG.
- */
-#ifndef ALOGI_IF
-#define ALOGI_IF(cond, ...) \
-    ( (CONDITION(cond)) \
-    ? ((void)ALOG(LOG_INFO, LOG_TAG, __VA_ARGS__)) \
-    : (void)0 )
+#define ALOGI(...) (ALOG(LOG_INFO, LOG_TAG, __VA_ARGS__))
 #endif
-
 /**
  * Simplified macro to send a warning log message using the current LOG_TAG.
  */
 #ifndef ALOGW
-#define ALOGW(...) ((void)ALOG(LOG_WARN, LOG_TAG, __VA_ARGS__))
-#endif
-
-/**
- * Simplified macro to send a conditional warning log message using the current LOG_TAG.
- */
-#ifndef ALOGW_IF
-#define ALOGW_IF(cond, ...) \
-    ( (CONDITION(cond)) \
-    ? ((void)ALOG(LOG_WARN, LOG_TAG, __VA_ARGS__)) \
-    : (void)0 )
+#define ALOGW(...) (ALOG(LOG_WARN, LOG_TAG, __VA_ARGS__))
 #endif
-
 /**
  * Simplified macro to send an error log message using the current LOG_TAG.
  */
 #ifndef ALOGE
-#define ALOGE(...) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
-#endif
-
-/**
- * Simplified macro to send a conditional error log message using the current LOG_TAG.
- */
-#ifndef ALOGE_IF
-#define ALOGE_IF(cond, ...) \
-    ( (CONDITION(cond)) \
-    ? ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__)) \
-    : (void)0 )
+#define ALOGE(...) (ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
 #endif
-// TODO : support fatal log
 
 // ---------------------------------------------------------------------
-
 /**
  * Basic log message macro that allows you to specify a priority and a tag
  *
@@ -514,7 +481,6 @@ typedef enum {
 #define RLOG(priority, tag, ...) \
        print_radio_log(D##priority, tag, __VA_ARGS__)
 #endif
-
 /**
  * Radio log macro that allows you to pass in a varargs ("args" is a va_list).
  */
@@ -557,7 +523,7 @@ typedef enum {
 
 #define vprint_log(prio, tag, fmt...) \
        __dlog_vprint(LOG_ID_MAIN, prio, tag, fmt)
-       
+
 #define print_radio_log(prio, tag, fmt...)\
        __dlog_print(LOG_ID_RADIO, prio, tag, fmt)
 
@@ -574,7 +540,7 @@ typedef enum {
  * @brief              send log. must specify log_id ,priority, tag and format string.
  * @pre                none
  * @post               none
- * @see                __dlog_vprint
+ * @see                __dlog_print
  * @remarks    you must not use this API directly. use macros instead.
  * @param[in]  log_id  log device id
  * @param[in]  prio    priority
@@ -597,13 +563,13 @@ int __dlog_print(log_id_t log_id, int prio, const char *tag, const char *fmt, ..
  * @brief              send log with va_list. must specify log_id ,priority, tag and format string.
  * @pre                none
  * @post               none
- * @see                __dlog_print 
- * @remarks    you must not use this API directly. use macros instead. 
+ * @see                __dlog_print
+ * @remarks    you must not use this API directly. use macros instead.
  * @param[in]  log_id  log device id
  * @param[in]  prio    priority
  * @param[in]  tag     tag
- * @param[in]  fmt     format string 
- * @param[in]  ap      va_list 
+ * @param[in]  fmt     format string
+ * @param[in]  ap      va_list
  * @return                     Operation result
  * @retval             0>=     Success
  * @retval              -1     Error
@@ -616,6 +582,7 @@ int __dlog_print(log_id_t log_id, int prio, const char *tag, const char *fmt, ..
  * @endcode
   */
 int __dlog_vprint(log_id_t log_id, int prio, const char *tag, const char *fmt, va_list ap);
+int _get_logging_on(void);
 
 #ifdef __cplusplus
 }