#ifndef _DEBUG__H_
#define _DEBUG__H_

#include "CH57x_common.h"

/* DEBUG log function. DEBUG printf() 相关定义*/
#ifndef DBG_LOG_EN
#define DBG_LOG_EN			1		//DEBUG LOG 输出总开关
#endif
#define DBG_Particular_EN	1		//详细信息输出 -- 具体到文件名，调用函数，行号
#define DBG_NET_LOG_EN		1		//网络模块调试信息开关

/*调试信息初始状态*/
#define DBG_OPT_ActCond_STATUS		0		//动作执行条件信息打印开关
#define DBG_OPT_MQTT_STATUS		  	0		//MQTT调试信息打印开关
#define DBG_OPT_Debug_STATUS	  	0		//临时调试信息打印开关
#define DBG_OPT_LOGIC_STATUS	 	0		//逻辑调试信息打印开关
#define DBG_OPT_DEVICE_STATUS	  	0		//设备驱动层打印调试信息打印开关
#define DBG_OPT_NET_STATUS		 	0		//网络调试信息打印开关
#define DBG_OPT_SYS_STATUS		  	0		//系统调试信息打印开关

/*调试信息输出控制位*/
#define DBG_BIT_ActCond_STATUS_bit		6 
#define DBG_BIT_MQTT_STATUS_bit		  	5
#define DBG_BIT_Debug_STATUS_bit	  	4
#define DBG_BIT_LOGIC_STATUS_bit	  	3
#define DBG_BIT_DEVICE_STATUS_bit	  	2
#define DBG_BIT_NET_STATUS_bit		  	1
#define DBG_BIT_SYS_STATUS_bit		  	0


#ifdef DBG_LOG_EN
#define DBG_Printf(...)		printf(__VA_ARGS__)
#else
#define DBG_Printf(...)		
#endif

#ifdef DBG_Particular_EN
#define DBG_log(...)		{DBG_Printf("%s %s-%d :",__FILE__,__func__,__LINE__);DBG_Printf(__VA_ARGS__);}
#else
#define DBG_log(...)		DBG_Printf(__VA_ARGS__)
#endif

#define DBG_INFO(msg)		DBG_Printf("%s %s-%d :%s",__FILE__,__func__,__LINE__,msg)

#ifdef DBG_NET_LOG_EN
#define DBG_NET_log(...)		DBG_Printf(__VA_ARGS__)
#else
#define DBG_NET_log(...)		
#endif

extern uint32_t Dbg_Switch;

void Dbg_NoTick_Print(int DbgOptBit ,const char *cmd, ...);
void Dbg_Print(int DbgOptBit ,const char *cmd, ...);
void Dbg_Println(int DbgOptBit ,const char *cmd, ...);
void Dbg_Print_Buff(int DbgOptBit ,const char *cmd ,uint8_t *buff,uint32_t len);


#endif
