#ifndef DEBUG_H #define DEBUG_H 1 #define LOG_TRACE 10 #define LOG_ALL 7 #define LOG_ENTER_EXIT 6 #define LOG_DEBUG 5 #define LOG_INFO 4 #define LOG_WARN 3 #define LOG_ERROR 2 #define LOG_FATAL 1 #define LOG_NONE 0 #define TRACE_MODEM_IN 1 #define TRACE_MODEM_OUT 2 #define TRACE_SERIAL_IN 4 #define TRACE_SERIAL_OUT 8 #define TRACE_IP_IN 16 #define TRACE_IP_OUT 32 #include // needed for strerror #include // needed for strerror #include // needed for errno #if __STDC_VERSION__ < 199901L # if __GNUC__ >= 2 # define __func__ __FUNCTION__ # else # define __func__ "" # endif #endif #define LOG(a,args...) do { \ if(a <= log_level) { \ log_start(a); \ fprintf(log_file,args); \ log_end(); \ } \ } while(0) #define ELOG(a,args...) do { \ if(a <= log_level) { \ log_start(a); \ fprintf(log_file,args); \ fprintf(log_file," (%s)\n",strerror(errno)); \ log_end(); \ } \ } while(0) #define LOG_ENTER() LOG(LOG_ENTER_EXIT,"Entering %s function",__func__); #define LOG_EXIT() LOG(LOG_ENTER_EXIT,"Exitting %s function",__func__); int log_init(void); void log_set_file(FILE *a); void log_set_level(int a); int log_get_trace_flags(); void log_set_trace_flags(int a); void log_trace(int type, unsigned char *line, int len); void log_start(int level); void log_end(); #endif #ifndef DEBUG_VARS #define DEBUG_VARS 1 #include extern int log_level; extern FILE *log_file; #endif