#ifndef __EM_TA_LOG_H_
#define __EM_TA_LOG_H_

#define PLATFORM_LOG_TAG "EngineeringMode"

/*#ifdef DEBUG
#define LOGD(...) MB_LOGD(__VA_ARGS__)
#else
#define LOGD(...) do {} while(0)
#endif*/
// End of DEBUG

#ifdef EM_SWD_TEEGRIS
	#include <stdio.h>
	#define TA_TAG "engmode:"
	#define LOGD(fmt, ...) printf("%s%s:%d " fmt, TA_TAG, __func__, __LINE__, ##__VA_ARGS__)
	#define LOGI(fmt, ...) printf("%s%s:%d " fmt, TA_TAG, __func__, __LINE__, ##__VA_ARGS__)
	#define LOGE(fmt, ...) printf("%s%s:%d " fmt, TA_TAG, __func__, __LINE__, ##__VA_ARGS__)
	#define LOGW(fmt, ...) printf("%s%s:%d " fmt, TA_TAG, __func__, __LINE__, ##__VA_ARGS__)
#elif EM_SWD_QSEE
	#include "qsee_log.h"
	#include "qsee_printk.h"
	#define LOGD(fmt, ARGS...) qsee_log(QSEE_LOG_MSG_DEBUG, "%s:%d "fmt, __func__, __LINE__, ##ARGS)
	#define LOGI(fmt, ARGS...) qsee_log(QSEE_LOG_MSG_ERROR, "%s:%d "fmt, __func__, __LINE__, ##ARGS)
	#define LOGE(fmt, ARGS...) qsee_log(QSEE_LOG_MSG_ERROR, "%s:%d "fmt, __func__, __LINE__, ##ARGS)
	#define LOGW(fmt, ARGS...) qsee_log(QSEE_LOG_MSG_ERROR, "%s:%d "fmt, __func__, __LINE__, ##ARGS)
#elif EM_SWD_MOBICORE
	#include "tlStd.h"
	#include "TlApiLogging.h"
	#define TA_TAG "engmode:"
	#define LOGD(fmt, ...) tlApiLogPrintf("%s%s:%d " fmt, TA_TAG, __func__, __LINE__, ##__VA_ARGS__)
	#define LOGI(fmt, ...) tlApiLogPrintf("%s%s:%d " fmt, TA_TAG, __func__, __LINE__, ##__VA_ARGS__)
	#define LOGE(fmt, ...) tlApiLogPrintf("%s%s:%d " fmt, TA_TAG, __func__, __LINE__, ##__VA_ARGS__)
	#define LOGW(fmt, ...) tlApiLogPrintf("%s%s:%d " fmt, TA_TAG, __func__, __LINE__, ##__VA_ARGS__)
#elif defined(EMLITE) && !defined(EDKII_SECSECURE) && !defined(CONFIG_EMC_V20) && !defined(CONFIG_EMC_V30) && !defined(EMBS)
	#include <android/log.h>
	#define LOG_TAG "engmode:"
	#define LOGD(fmt, ...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, "%s:%d " fmt, __func__, __LINE__, ##__VA_ARGS__)
	#define LOGI(fmt, ...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "%s:%d " fmt, __func__, __LINE__, ##__VA_ARGS__)
	#define LOGE(fmt, ...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "%s:%d " fmt, __func__, __LINE__, ##__VA_ARGS__)
	#define LOGW(fmt, ...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG, "%s:%d " fmt, __func__, __LINE__, ##__VA_ARGS__)
#elif EDKII_SECSECURE
	/* QC Bootloader log config */
	#include <Library/DebugLib.h>
	#define LOGD(fmt, ...) DEBUG((EFI_D_VERBOSE, "[EM]"fmt, ##__VA_ARGS__))
	#define LOGI(fmt, ...) DEBUG((EFI_D_INFO, "[EM]"fmt, ##__VA_ARGS__))
	#define LOGE(fmt, ...) DEBUG((EFI_D_ERROR, "[EM]"fmt, ##__VA_ARGS__))
	#define LOGW(fmt, ...) DEBUG((EFI_D_ERROR, "[EM]"fmt, ##__VA_ARGS__))
#else
	#include <stdio.h>
	#define LOGD(fmt, ...) printf("[D]%s:%d " fmt, __func__, __LINE__, ##__VA_ARGS__)
	#define LOGI(fmt, ...) printf("[I]%s:%d " fmt, __func__, __LINE__, ##__VA_ARGS__)
	#define LOGE(fmt, ...) printf("[E]%s:%d " fmt, __func__, __LINE__, ##__VA_ARGS__)
	#define LOGW(fmt, ...) printf("[E]%s:%d " fmt, __func__, __LINE__, ##__VA_ARGS__)
#endif

#endif
