blob: fc387cec3e395bbc9cbfeb34a251b95c4d05f7f9 [file] [log] [blame]
Harald Welte52b1f982008-12-23 20:25:15 +00001#ifndef _DEBUG_H
2#define _DEBUG_H
3
Harald Welte3633a6d2008-12-26 00:06:02 +00004#define DEBUG
5
Harald Welte52b1f982008-12-23 20:25:15 +00006#define DRLL 0x0001
7#define DCC 0x0002
8#define DMM 0x0004
9#define DRR 0x0008
Harald Welte3633a6d2008-12-26 00:06:02 +000010#define DRSL 0x0010
11#define DNM 0x0020
Harald Welteb480f412009-02-18 03:27:39 +000012
Harald Weltec125a682009-05-23 06:42:38 +000013#define DMNCC 0x0080
Harald Weltebcae43f2008-12-27 21:45:37 +000014#define DSMS 0x0100
Harald Welted35b6a72008-12-29 04:06:41 +000015#define DPAG 0x0200
Harald Welte10d0e672009-06-27 02:53:10 +020016#define DMEAS 0x0400
Harald Welteb480f412009-02-18 03:27:39 +000017
Harald Welte3633a6d2008-12-26 00:06:02 +000018#define DMI 0x1000
Harald Weltea3d04382008-12-27 17:02:56 +000019#define DMIB 0x2000
Harald Welteb480f412009-02-18 03:27:39 +000020#define DMUX 0x4000
Harald Welteedb37782009-05-01 14:59:07 +000021#define DINP 0x8000
Harald Welte52b1f982008-12-23 20:25:15 +000022
Holger Hans Peter Freythered0a47b2009-08-01 16:54:45 +020023#define DSCCP 0x10000
Holger Hans Peter Freyther32201c52009-08-18 12:54:50 +020024#define DMSC 0x20000
Holger Hans Peter Freythered0a47b2009-08-01 16:54:45 +020025
Holger Hans Peter Freytherff5fa4e2009-11-20 13:05:48 +010026#define DMGCP 0x40000
27
Harald Welte8d77b952009-12-17 00:31:10 +010028#define DHO 0x80000
29
Harald Welte52b1f982008-12-23 20:25:15 +000030#ifdef DEBUG
Harald Welte6ddd1682009-02-06 12:38:29 +000031#define DEBUGP(ss, fmt, args...) debugp(ss, __FILE__, __LINE__, 0, fmt, ## args)
32#define DEBUGPC(ss, fmt, args...) debugp(ss, __FILE__, __LINE__, 1, fmt, ## args)
Harald Welte52b1f982008-12-23 20:25:15 +000033#else
Harald Weltead384642008-12-26 10:20:07 +000034#define DEBUGP(xss, fmt, args...)
Harald Welte6ddd1682009-02-06 12:38:29 +000035#define DEBUGPC(ss, fmt, args...)
Harald Welte52b1f982008-12-23 20:25:15 +000036#endif
37
Holger Freyther1ad732c2008-12-28 16:32:41 +000038#define static_assert(exp, name) typedef int dummy##name [(exp) ? 1 : -1];
39
Holger Hans Peter Freythere78074e2009-08-20 13:16:26 +020040char *hexdump(const unsigned char *buf, int len);
Holger Hans Peter Freyther02c28a02009-10-20 08:56:06 +020041void debugp(unsigned int subsys, char *file, int line, int cont, const char *format, ...) __attribute__ ((format (printf, 5, 6)));
Holger Freyther5ee72ee2008-12-27 12:46:49 +000042void debug_parse_category_mask(const char* mask);
Holger Freytherb332f612008-12-27 12:46:51 +000043void debug_use_color(int use_color);
Harald Welted3ff51d2009-06-09 20:21:57 +000044void debug_timestamp(int enable);
Harald Weltec125a682009-05-23 06:42:38 +000045extern unsigned int debug_mask;
Harald Weltead384642008-12-26 10:20:07 +000046
Harald Welteb1d4c8e2009-12-17 23:10:46 +010047/* new logging interface */
48#define LOGP(ss, level, fmt, args...) debugp(ss, __FILE__, __LINE__, 0, fmt, ##args)
49#define LOGPC(ss, level, fmt, args...) debugp(ss, __FILE__, __LINE__, 1, fmt, ##args)
50
51/* different levels */
52#define LOGL_DEBUG 1 /* debugging information */
53#define LOGL_INFO 3
54#define LOGL_NOTICE 5 /* abnormal/unexpected condition */
55#define LOGL_ERROR 7 /* error condition, requires user action */
56#define LOGL_FATAL 8 /* fatal, program aborted */
57
Harald Welte52b1f982008-12-23 20:25:15 +000058#endif /* _DEBUG_H */