#ifndef __DEBUG_H
#define __DEBUG_H

#include "ldp.h"

#define DEBUG

/* define for debug */
#ifdef DEBUG

#ifndef DBG_LVL_VAL
#define DBG_LVL_VAL DBG_LVL_ALL
#endif

#define DBG_LVL_NONE   0x00
#define DBG_LVL_DBG    0x01
#define DBG_LVL_INFO   0x02
#define DBG_LVL_ERR    0x04
#define DBG_LVL_ALL    0xFF

#define DBG_LVL_EI    (DBG_LVL_ERR | DBG_LVL_INFO)

#define DBG_PRINT(flg, fmt, args...)                                        \
	do        														\
  	{                                                               \
		if (DBG_LVL_VAL & flg)                                             \
		{                                                                   \
			printf("[%s:%d]: "fmt, __FUNCTION__, __LINE__, ## args);   \
		}                                                                   \
	}                                                                       \
	while (0)

#define DPRINT_DBG(fmt, args...)   DBG_PRINT(DBG_LVL_DBG, fmt, ## args)
#define DPRINT_INFO(fmt, args...)   DBG_PRINT(DBG_LVL_INFO, fmt, ## args)
#define DPRINT_ERR(fmt, args...)    DBG_PRINT(DBG_LVL_ERR, fmt, ## args)
#define DPRINT_ALL(fmt, args...)    DBG_PRINT(DBG_LVL_ALL, fmt, ## args)

#else
#define DBG_PRINT(flg, fmt, args...)

#define DPRINT_DBG(...)
#define DPRINT_INFO(...)
#define DPRINT_ERR(...)
#define DPRINT_ALL(...)
#endif

#ifndef LOCAL_DEBUG
#define LOCAL_DEBUG printf("%s:%d\n", __func__, __LINE__)
#endif

#endif //__DEBUG_H


