166 lines
7.1 KiB
C
Executable File
166 lines
7.1 KiB
C
Executable File
/*
|
|
* Copyright (C) 2014 MediaTek Inc.
|
|
* Modification based on code covered by the mentioned copyright
|
|
* and/or permission notice(s).
|
|
*/
|
|
|
|
#ifndef MTK_AUDIO_LOGGER_H
|
|
#define MTK_AUDIO_LOGGER_H
|
|
|
|
#include <utils/Log.h>
|
|
#include <android/log.h>
|
|
#include <cutils/properties.h>
|
|
#include <stdlib.h> /* atoi */
|
|
|
|
/***
|
|
* Include this file can use MTK log function.
|
|
*
|
|
* Put the InitializeMTKLogLevel() to the constructor(or any initialize function) of your file.
|
|
* You can use "setprop property log_level" to define the log level.
|
|
* ex:
|
|
* "setprop vendor.af.tracks.log 3" // this will enable all MTK_ALOGV in tracks.cpp even in user load
|
|
*
|
|
* After kill AudioServer(or call InitializeMTKLogLevel() again) the log level will work.
|
|
*
|
|
* _log_level: 0 - Disable
|
|
* 1 - user load only
|
|
* 2 - user + userdebug
|
|
* 3 - eng (always print)
|
|
*
|
|
* If your log_level >= _log_level the log will print.
|
|
*
|
|
*
|
|
* You can use specified number for special purpose.
|
|
* ex:
|
|
* MTK_ALOGS(4, "Only enable this log if property >=4");
|
|
*
|
|
***/
|
|
|
|
#define MT_AUDIO_ENG_BUILD_LEVEL 3
|
|
#define MT_AUDIO_USERDEBUG_BUILD_LEVEL 2
|
|
#define MT_AUDIO_DEFAULT_BUILD_LEVEL 1
|
|
|
|
#define MT_VIDEO_ENG_BUILD_LEVEL 3
|
|
#define MT_VIDEO_USERDEBUG_BUILD_LEVEL 2
|
|
#define MT_VIDEO_DEFAULT_BUILD_LEVEL 1
|
|
|
|
#if defined(MTK_AUDIO)
|
|
|
|
#if defined(CONFIG_MT_ENG_BUILD) //eng load
|
|
#define _BUILD_LOG_LEVEL MT_AUDIO_ENG_BUILD_LEVEL
|
|
static int _log_level = MT_AUDIO_ENG_BUILD_LEVEL;
|
|
#elif defined(CONFIG_MT_USERDEBUG_BUILD) // userdebug load
|
|
#define _BUILD_LOG_LEVEL MT_AUDIO_USERDEBUG_BUILD_LEVEL
|
|
static int _log_level = MT_AUDIO_USERDEBUG_BUILD_LEVEL;
|
|
#else // user load
|
|
#define _BUILD_LOG_LEVEL MT_AUDIO_DEFAULT_BUILD_LEVEL
|
|
static int _log_level = MT_AUDIO_DEFAULT_BUILD_LEVEL;
|
|
#endif // CONFIG_MT_ENG_BUILD
|
|
|
|
#define MTK_ALOGV(...) ALOGD_IF(_log_level >= MT_AUDIO_ENG_BUILD_LEVEL, __VA_ARGS__) // eng
|
|
#define MTK_ALOGD(...) ALOGD_IF(_log_level >= MT_AUDIO_USERDEBUG_BUILD_LEVEL, __VA_ARGS__) // userdebug/eng
|
|
#define MTK_ALOGI(...) ALOGD_IF(_log_level >= MT_AUDIO_DEFAULT_BUILD_LEVEL, __VA_ARGS__) // user/userdebug/eng
|
|
#define MTK_ALOGW(...) ALOGW(__VA_ARGS__) // warning will always print
|
|
#define MTK_ALOGE(...) ALOGE(__VA_ARGS__) // error will always print
|
|
#define MTK_ALOGS(level, ...) ALOGD_IF(_log_level >= level, __VA_ARGS__) // specified level
|
|
|
|
#define MTK_ALOGV_IF(...) if (_log_level >= MT_AUDIO_ENG_BUILD_LEVEL) ALOGD_IF(__VA_ARGS__) // eng
|
|
#define MTK_ALOGD_IF(...) if (_log_level >= MT_AUDIO_USERDEBUG_BUILD_LEVEL) ALOGD_IF(__VA_ARGS__) // userdebug/eng
|
|
#define MTK_ALOGI_IF(...) if (_log_level >= MT_AUDIO_DEFAULT_BUILD_LEVEL) ALOGD_IF(__VA_ARGS__) // user/userdebug/eng
|
|
#define MTK_ALOGW_IF(...) ALOGW_IF(__VA_ARGS__) // warning will always print
|
|
#define MTK_ALOGE_IF(...) ALOGE_IF(__VA_ARGS__) // error will always print
|
|
#define MTK_ALOGS_IF(level, ...) if (_log_level >= level) ALOGD_IF(__VA_ARGS__) // specified level
|
|
|
|
// Log with function name and line number
|
|
#define MTK_MALOGV(fmt, arg...) ALOGD_IF(_log_level >= MT_AUDIO_ENG_BUILD_LEVEL, "[%s]line:%d " fmt, __FUNCTION__, __LINE__, ##arg) // eng
|
|
#define MTK_MALOGD(fmt, arg...) ALOGD_IF(_log_level >= MT_AUDIO_USERDEBUG_BUILD_LEVEL, "[%s]line:%d " fmt, __FUNCTION__, __LINE__, ##arg) // userdebug/eng
|
|
#define MTK_MALOGI(fmt, arg...) ALOGD_IF(_log_level >= MT_AUDIO_DEFAULT_BUILD_LEVEL, "[%s]line:%d " fmt, __FUNCTION__, __LINE__, ##arg) // user/userdebug/eng
|
|
#define MTK_MALOGW(fmt, arg...) ALOGW("[%s]line:%d " fmt, __FUNCTION__, __LINE__, ##arg) // warning will always print
|
|
#define MTK_MALOGE(fmt, arg...) ALOGE("[%s]line:%d " fmt, __FUNCTION__, __LINE__, ##arg) // warning will always print
|
|
#define MTK_MALOGS(level, fmt, arg...) ALOGD_IF(_log_level >= level, "[%s]line:%d " fmt, __FUNCTION__, __LINE__, ##arg) // specified level
|
|
|
|
#define MTK_MALOGV_IF(cond, fmt, arg...) if (_log_level >= MT_AUDIO_ENG_BUILD_LEVEL) ALOGD_IF(cond, "[%s]line:%d " fmt, __FUNCTION__, __LINE__, ##arg) // eng
|
|
#define MTK_MALOGD_IF(cond, fmt, arg...) if (_log_level >= MT_AUDIO_USERDEBUG_BUILD_LEVEL) ALOGD_IF(cond, "[%s]line:%d " fmt, __FUNCTION__, __LINE__, ##arg) // userdebug/eng
|
|
#define MTK_MALOGI_IF(cond, fmt, arg...) if (_log_level >= MT_AUDIO_DEFAULT_BUILD_LEVEL) ALOGD_IF(cond, "[%s]line:%d " fmt, __FUNCTION__, __LINE__, ##arg) // user/userdebug/eng
|
|
#define MTK_MALOGW_IF(cond, fmt, arg...) ALOGW_IF(cond, "[%s]line:%d " fmt, __FUNCTION__, __LINE__, ##arg) // warning will always print
|
|
#define MTK_MALOGE_IF(cond, fmt, arg...) ALOGE_IF(cond, "[%s]line:%d " fmt, __FUNCTION__, __LINE__, ##arg) // warning will always print
|
|
#define MTK_MALOGS_IF(level, cond, fmt, arg...) if (_log_level >= level) ALOGD_IF(cond, "[%s]line:%d " fmt, __FUNCTION__, __LINE__, ##arg) // specified level
|
|
|
|
[[maybe_unused]] static void InitializeMTKLogLevel(const char * property) {
|
|
char value[PROPERTY_VALUE_MAX] = {};
|
|
property_get(property, value, "-1");
|
|
_log_level = atoi(value);
|
|
|
|
// If log level is not specified, use build config
|
|
if (_log_level == -1) {
|
|
_log_level = _BUILD_LOG_LEVEL;
|
|
}
|
|
//ALOGD_IF(_log_level >= MT_AUDIO_USERDEBUG_BUILD_LEVEL,"%s: default level[%d]", __FUNCTION__, _log_level); // user/debug/eng
|
|
};
|
|
#else
|
|
|
|
#if defined(MTK_VIDEO_DEBUG)
|
|
#if defined(CONFIG_MT_ENG_BUILD) // eng load
|
|
#define _BUILD_LOG_LEVEL MT_VIDEO_ENG_BUILD_LEVEL
|
|
static int _log_level = MT_VIDEO_ENG_BUILD_LEVEL;
|
|
#elif defined(CONFIG_MT_USERDEBUG_BUILD) // userdebug load
|
|
#define _BUILD_LOG_LEVEL MT_VIDEO_USERDEBUG_BUILD_LEVEL
|
|
static int _log_level = MT_VIDEO_USERDEBUG_BUILD_LEVEL;
|
|
#else // user load
|
|
#define _BUILD_LOG_LEVEL MT_VIDEO_DEFAULT_BUILD_LEVEL
|
|
static int _log_level = MT_VIDEO_DEFAULT_BUILD_LEVEL;
|
|
#endif // CONFIG_MT_ENG_BUILD
|
|
|
|
#if LOG_NDEBUG
|
|
#undef ALOGV
|
|
#define ALOGV(...) ALOGD_IF(_log_level >= MT_VIDEO_ENG_BUILD_LEVEL, __VA_ARGS__) // eng
|
|
#endif
|
|
|
|
[[maybe_unused]] static void InitializeMTKLogLevel(const char * property) {
|
|
char value[PROPERTY_VALUE_MAX] = {};
|
|
property_get(property, value, "-1");
|
|
_log_level = atoi(value);
|
|
|
|
// If log level is not specified, use build config
|
|
if (_log_level == -1) {
|
|
_log_level = _BUILD_LOG_LEVEL;
|
|
}
|
|
};
|
|
|
|
#else
|
|
|
|
#define MTK_ALOGV(...) do { } while(0)
|
|
#define MTK_ALOGD(...) do { } while(0)
|
|
#define MTK_ALOGI(...) do { } while(0)
|
|
#define MTK_ALOGW(...) do { } while(0)
|
|
#define MTK_ALOGE(...) do { } while(0)
|
|
#define MTK_ALOGS(...) do { } while(0)
|
|
|
|
#define MTK_ALOGV_IF(...) do { } while(0)
|
|
#define MTK_ALOGD_IF(...) do { } while(0)
|
|
#define MTK_ALOGI_IF(...) do { } while(0)
|
|
#define MTK_ALOGW_IF(...) do { } while(0)
|
|
#define MTK_ALOGE_IF(...) do { } while(0)
|
|
#define MTK_ALOGS_IF(...) do { } while(0)
|
|
|
|
#define MTK_MALOGV_IF(...) do { } while(0)
|
|
#define MTK_MALOGD_IF(...) do { } while(0)
|
|
#define MTK_MALOGI_IF(...) do { } while(0)
|
|
#define MTK_MALOGW_IF(...) do { } while(0)
|
|
#define MTK_MALOGE_IF(...) do { } while(0)
|
|
#define MTK_MALOGS_IF(...) do { } while(0)
|
|
|
|
#define MTK_MALOGV_IF(...) do { } while(0)
|
|
#define MTK_MALOGD_IF(...) do { } while(0)
|
|
#define MTK_MALOGI_IF(...) do { } while(0)
|
|
#define MTK_MALOGW_IF(...) do { } while(0)
|
|
#define MTK_MALOGE_IF(...) do { } while(0)
|
|
#define MTK_MALOGS_IF(...) do { } while(0)
|
|
|
|
static void InitializeMTKLogLevel(const char * property __unused) {};
|
|
#endif // MTK_VIDEO_DEBUG
|
|
|
|
#endif // MTK_AUDIO
|
|
|
|
#endif // MTK_AUDIO_LOGGER_H
|