#ifndef DRIVER_LOG_H
#define DRIVER_LOG_H
#include <stdarg.h>
#include "softbus_adapter_bt_loghook.h"
#include "softbus_adapter_wifi_loghook.h"
#define LOG_BUFFER_SIZE 1024
#ifndef LOG_TAG
#define LOG_TAG NULL
#endif
#ifdef WIFI_LOG
void WifiHookLog(SoftBusLogLevel level, const char *tag, char *buffer, int length, const char *format, ...);
#define LOGD(fmt, ...) do { \
char buffer[LOG_BUFFER_SIZE]; \
memset(buffer, 0, sizeof(buffer)); \
int bufferlen = snprintf(buffer, LOG_BUFFER_SIZE - 1, "[%s:%u] %s# ", strrchr(__FILE__, '/') + 1, __LINE__, __FUNCTION__); \
WifiHookLog(SOFTBUS_LOG_LEVEL_DEBUG, LOG_TAG, buffer, bufferlen, fmt, ##__VA_ARGS__); \
} while(0)
#define LOGI(fmt, ...) do { \
char buffer[LOG_BUFFER_SIZE]; \
memset(buffer, 0, sizeof(buffer)); \
int bufferlen = snprintf(buffer, LOG_BUFFER_SIZE - 1, "[%s:%u] %s# ", strrchr(__FILE__, '/') + 1, __LINE__, __FUNCTION__); \
WifiHookLog(SOFTBUS_LOG_LEVEL_INFO, LOG_TAG, buffer, bufferlen, fmt, ##__VA_ARGS__); \
} while(0)
#define LOGW(fmt, ...) do { \
char buffer[LOG_BUFFER_SIZE]; \
memset(buffer, 0, sizeof(buffer)); \
int bufferlen = snprintf(buffer, LOG_BUFFER_SIZE - 1, "[%s:%u] %s# ", strrchr(__FILE__, '/') + 1, __LINE__, __FUNCTION__); \
WifiHookLog(SOFTBUS_LOG_LEVEL_WARN, LOG_TAG, buffer, bufferlen, fmt, ##__VA_ARGS__); \
} while(0)
#define LOGE(fmt, ...) do { \
char buffer[LOG_BUFFER_SIZE]; \
memset(buffer, 0, sizeof(buffer)); \
int bufferlen = snprintf(buffer, LOG_BUFFER_SIZE - 1, "[%s:%u] %s# ", strrchr(__FILE__, '/') + 1, __LINE__, __FUNCTION__); \
WifiHookLog(SOFTBUS_LOG_LEVEL_ERROR, LOG_TAG, buffer, bufferlen, fmt, ##__VA_ARGS__); \
} while(0)
#define LOGF(fmt, ...) do { \
char buffer[LOG_BUFFER_SIZE]; \
memset(buffer, 0, sizeof(buffer)); \
int bufferlen = snprintf(buffer, LOG_BUFFER_SIZE - 1, "[%s:%u] %s# ", strrchr(__FILE__, '/') + 1, __LINE__, __FUNCTION__); \
WifiHookLog(SOFTBUS_LOG_LEVEL_FATAL, LOG_TAG, buffer, bufferlen, fmt, ##__VA_ARGS__); \
} while(0)
#else
void HookLog(SoftBusLogLevel level, const char *tag, char *buffer, int length, const char *format, ...);
#define LOGD(fmt, ...) do { \
char buffer[LOG_BUFFER_SIZE]; \
memset(buffer, 0, sizeof(buffer)); \
int bufferlen = snprintf(buffer, LOG_BUFFER_SIZE - 1, "[%s:%u] %s# ", strrchr(__FILE__, '/') + 1, __LINE__, __FUNCTION__); \
HookLog(SOFTBUS_LOG_LEVEL_DEBUG, LOG_TAG, buffer, bufferlen, fmt, ##__VA_ARGS__); \
} while(0)
#define LOGI(fmt, ...) do { \
char buffer[LOG_BUFFER_SIZE]; \
memset(buffer, 0, sizeof(buffer)); \
int bufferlen = snprintf(buffer, LOG_BUFFER_SIZE - 1, "[%s:%u] %s# ", strrchr(__FILE__, '/') + 1, __LINE__, __FUNCTION__); \
HookLog(SOFTBUS_LOG_LEVEL_INFO, LOG_TAG, buffer, bufferlen, fmt, ##__VA_ARGS__); \
} while(0)
#define LOGW(fmt, ...) do { \
char buffer[LOG_BUFFER_SIZE]; \
memset(buffer, 0, sizeof(buffer)); \
int bufferlen = snprintf(buffer, LOG_BUFFER_SIZE - 1, "[%s:%u] %s# ", strrchr(__FILE__, '/') + 1, __LINE__, __FUNCTION__); \
HookLog(SOFTBUS_LOG_LEVEL_WARN, LOG_TAG, buffer, bufferlen, fmt, ##__VA_ARGS__); \
} while(0)
#define LOGE(fmt, ...) do { \
char buffer[LOG_BUFFER_SIZE]; \
memset(buffer, 0, sizeof(buffer)); \
int bufferlen = snprintf(buffer, LOG_BUFFER_SIZE - 1, "[%s:%u] %s# ", strrchr(__FILE__, '/') + 1, __LINE__, __FUNCTION__); \
HookLog(SOFTBUS_LOG_LEVEL_ERROR, LOG_TAG, buffer, bufferlen, fmt, ##__VA_ARGS__); \
} while(0)
#define LOGF(fmt, ...) do { \
char buffer[LOG_BUFFER_SIZE]; \
memset(buffer, 0, sizeof(buffer)); \
int bufferlen = snprintf(buffer, LOG_BUFFER_SIZE - 1, "[%s:%u] %s# ", strrchr(__FILE__, '/') + 1, __LINE__, __FUNCTION__); \
HookLog(SOFTBUS_LOG_LEVEL_FATAL, LOG_TAG, buffer, bufferlen, fmt, ##__VA_ARGS__); \
} while(0)
#endif
#endif