android13/external/camera_engine_rkaiq/rkaiq_tool_server/logger/log.h

126 lines
6.2 KiB
C++
Executable File

// Copyright 2019 Fuzhou Rockchip Electronics Co., Ltd. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef _RK_LOGGER_H_
#define _RK_LOGGER_H_
#include <errno.h>
#include <chrono>
#ifdef __ANDROID__
#include <log/log.h>
#endif
extern int log_level;
#define LOG_LEVEL_ERROR 0
#define LOG_LEVEL_WARN 1
#define LOG_LEVEL_INFO 2
#define LOG_LEVEL_DEBUG 3
#ifndef LOG_TAG
#define LOG_TAG "aiqtool"
#endif // LOG_TAG
#define __BI_FILENAME__ (__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__)
#ifdef __ANDROID__
#define LOG_INFO(format, ...) \
do { \
if (log_level < LOG_LEVEL_INFO) \
break; \
ALOGI("%s:%d - " format "", __BI_FILENAME__, __LINE__, ##__VA_ARGS__); \
} while (0)
#define LOG_WARN(format, ...) \
do { \
if (log_level < LOG_LEVEL_WARN) \
break; \
ALOGW("%s:%d - " format "", __BI_FILENAME__, __LINE__, ##__VA_ARGS__); \
} while (0)
#define LOG_ERROR(format, ...) \
do { \
if (log_level < LOG_LEVEL_ERROR) \
break; \
ALOGE("%s:%d - " format "", __BI_FILENAME__, __LINE__, ##__VA_ARGS__); \
} while (0)
#define LOG_DEBUG(format, ...) \
do { \
if (log_level < LOG_LEVEL_DEBUG) \
break; \
ALOGD("%s:%d - " format "", __BI_FILENAME__, __LINE__, ##__VA_ARGS__); \
} while (0)
#else
#define LOG_INFO(format, ...) \
do { \
if (log_level < LOG_LEVEL_INFO) \
break; \
fprintf(stderr, "[%s][%s]:" format, LOG_TAG, __FUNCTION__, ##__VA_ARGS__); \
} while (0)
#define LOG_WARN(format, ...) \
do { \
if (log_level < LOG_LEVEL_WARN) \
break; \
fprintf(stderr, "[%s][%s]:" format, LOG_TAG, __FUNCTION__, ##__VA_ARGS__); \
} while (0)
#define LOG_ERROR(format, ...) \
do { \
if (log_level < LOG_LEVEL_ERROR) \
break; \
fprintf(stderr, "[%s][%s]:" format, LOG_TAG, __FUNCTION__, ##__VA_ARGS__); \
} while (0)
#define LOG_DEBUG(format, ...) \
do { \
if (log_level < LOG_LEVEL_DEBUG) \
break; \
fprintf(stderr, "[%s][%s]:" format, LOG_TAG, __FUNCTION__, ##__VA_ARGS__); \
} while (0)
#endif
#define errno_debug(fmt) LOG_ERROR("%s error %d, %s\n", (fmt), errno, strerror(errno))
inline int64_t gettimeofday()
{
std::chrono::microseconds us =
std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch());
return us.count();
}
class AutoDuration
{
public:
AutoDuration()
{
Reset();
}
int64_t Get()
{
return gettimeofday() - start;
}
void Reset()
{
start = gettimeofday();
}
int64_t GetAndReset()
{
int64_t now = gettimeofday();
int64_t pretime = start;
start = now;
return now - pretime;
}
private:
int64_t start;
};
#endif