4
* Written by Oron Peled <oron@actcom.co.il>
5
* Copyright (C) 2004-2006, Xorcom
9
* This program is free software; you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation; either version 2 of the License, or
12
* (at your option) any later version.
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
19
* You should have received a copy of the GNU General Public License
20
* along with this program; if not, write to the Free Software
21
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25
#include <zaptel.h> /* for zt_* defs */
27
/* Debugging Macros */
29
#define PRINTK(level, category, fmt, ...) \
30
printk(KERN_ ## level "%s%s-%s: " fmt, #level, category, THIS_MODULE->name, ## __VA_ARGS__)
32
#define XBUS_PRINTK(level, category, xbus, fmt, ...) \
33
printk(KERN_ ## level "%s%s-%s: %s: " fmt, #level, \
34
category, THIS_MODULE->name, (xbus)->busname, ## __VA_ARGS__)
36
#define XPD_PRINTK(level, category, xpd, fmt, ...) \
37
printk(KERN_ ## level "%s%s-%s: %s/%s: " fmt, #level, \
38
category, THIS_MODULE->name, (xpd)->xbus->busname, (xpd)->xpdname, ## __VA_ARGS__)
40
#define LINE_PRINTK(level, category, xpd, pos, fmt, ...) \
41
printk(KERN_ ## level "%s%s-%s: %s/%s/%d: " fmt, #level, \
42
category, THIS_MODULE->name, (xpd)->xbus->busname, (xpd)->xpdname, (pos), ## __VA_ARGS__)
44
#define PORT_PRINTK(level, category, xbus, unit, port, fmt, ...) \
45
printk(KERN_ ## level "%s%s-%s: %s UNIT=%d PORT=%d: " fmt, #level, \
46
category, THIS_MODULE->name, (xbus)->busname, (unit), (port), ## __VA_ARGS__)
48
#define DBG(bits, fmt, ...) \
49
((void)((debug & (DBG_ ## bits)) && PRINTK(DEBUG, "-" #bits, "%s: " fmt, __FUNCTION__, ## __VA_ARGS__)))
50
#define INFO(fmt, ...) PRINTK(INFO, "", fmt, ## __VA_ARGS__)
51
#define NOTICE(fmt, ...) PRINTK(NOTICE, "", fmt, ## __VA_ARGS__)
52
#define WARNING(fmt, ...) PRINTK(WARNING, "", fmt, ## __VA_ARGS__)
53
#define ERR(fmt, ...) PRINTK(ERR, "", fmt, ## __VA_ARGS__)
55
#define XBUS_DBG(bits, xbus, fmt, ...) \
56
((void)((debug & (DBG_ ## bits)) && XBUS_PRINTK(DEBUG, "-" #bits, xbus, "%s: " fmt, __FUNCTION__, ## __VA_ARGS__)))
57
#define XBUS_INFO(xbus, fmt, ...) XBUS_PRINTK(INFO, "", xbus, fmt, ## __VA_ARGS__)
58
#define XBUS_NOTICE(xbus, fmt, ...) XBUS_PRINTK(NOTICE, "", xbus, fmt, ## __VA_ARGS__)
59
#define XBUS_ERR(xbus, fmt, ...) XBUS_PRINTK(ERR, "", xbus, fmt, ## __VA_ARGS__)
61
#define XPD_DBG(bits, xpd, fmt, ...) \
62
((void)((debug & (DBG_ ## bits)) && XPD_PRINTK(DEBUG, "-" #bits, xpd, "%s: " fmt, __FUNCTION__, ## __VA_ARGS__)))
63
#define XPD_INFO(xpd, fmt, ...) XPD_PRINTK(INFO, "", xpd, fmt, ## __VA_ARGS__)
64
#define XPD_NOTICE(xpd, fmt, ...) XPD_PRINTK(NOTICE, "", xpd, fmt, ## __VA_ARGS__)
65
#define XPD_WARNING(xpd, fmt, ...) XPD_PRINTK(WARNING, "", xpd, fmt, ## __VA_ARGS__)
66
#define XPD_ERR(xpd, fmt, ...) XPD_PRINTK(ERR, "", xpd, fmt, ## __VA_ARGS__)
68
#define LINE_DBG(bits, xpd, pos, fmt, ...) \
69
((void)((debug & (DBG_ ## bits)) && LINE_PRINTK(DEBUG, "-" #bits, xpd, pos, "%s: " fmt, __FUNCTION__, ## __VA_ARGS__)))
70
#define LINE_NOTICE(xpd, pos, fmt, ...) LINE_PRINTK(NOTICE, "", xpd, pos, fmt, ## __VA_ARGS__)
71
#define LINE_ERR(xpd, pos, fmt, ...) LINE_PRINTK(ERR, "", xpd, pos, fmt, ## __VA_ARGS__)
73
#define PORT_DBG(bits, xbus, unit, port, fmt, ...) \
74
((void)((debug & (DBG_ ## bits)) && PORT_PRINTK(DEBUG, "-" #bits, \
75
xbus, unit, port, "%s: " fmt, __FUNCTION__, ## __VA_ARGS__)))
76
#define PORT_NOTICE(xbus, unit, port, fmt, ...) PORT_PRINTK(NOTICE, "", xbus, unit, port, fmt, ## __VA_ARGS__)
77
#define PORT_ERR(xbus, unit, port, fmt, ...) PORT_PRINTK(ERR, "", xbus, unit, port, fmt, ## __VA_ARGS__)
82
#define DBG_GENERAL BIT(0)
83
#define DBG_PCM BIT(1)
84
#define DBG_LEDS BIT(2)
85
#define DBG_SYNC BIT(3)
86
#define DBG_SIGNAL BIT(4)
87
#define DBG_PROC BIT(5)
88
#define DBG_REGS BIT(6)
89
#define DBG_DEVICES BIT(7) /* instantiation/destruction etc. */
90
#define DBG_COMMANDS BIT(8) /* All commands */
93
void dump_poll(int debug, const char *msg, int poll);
95
static inline char *rxsig2str(zt_rxsig_t sig)
98
case ZT_RXSIG_ONHOOK: return "ONHOOK";
99
case ZT_RXSIG_OFFHOOK: return "OFFHOOK";
100
case ZT_RXSIG_START: return "START";
101
case ZT_RXSIG_RING: return "RING";
102
case ZT_RXSIG_INITIAL: return "INITIAL";
104
return "Unknown rxsig";
107
static inline char *txsig2str(zt_txsig_t sig)
110
case ZT_TXSIG_ONHOOK: return "TXSIG_ONHOOK";
111
case ZT_TXSIG_OFFHOOK: return "TXSIG_OFFHOOK";
112
case ZT_TXSIG_START: return "TXSIG_START";
113
case ZT_TXSIG_KEWL: return "TXSIG_KEWL"; /* Drop battery if possible */
115
return "Unknown txsig";
118
static inline char *event2str(int event)
121
case ZT_EVENT_NONE: return "NONE";
122
case ZT_EVENT_ONHOOK: return "ONHOOK";
123
case ZT_EVENT_RINGOFFHOOK: return "RINGOFFHOOK";
124
case ZT_EVENT_WINKFLASH: return "WINKFLASH";
125
case ZT_EVENT_ALARM: return "ALARM";
126
case ZT_EVENT_NOALARM: return "NOALARM";
127
case ZT_EVENT_ABORT: return "ABORT";
128
case ZT_EVENT_OVERRUN: return "OVERRUN";
129
case ZT_EVENT_BADFCS: return "BADFCS";
130
case ZT_EVENT_DIALCOMPLETE: return "DIALCOMPLETE";
131
case ZT_EVENT_RINGERON: return "RINGERON";
132
case ZT_EVENT_RINGEROFF: return "RINGEROFF";
133
case ZT_EVENT_HOOKCOMPLETE: return "HOOKCOMPLETE";
134
case ZT_EVENT_BITSCHANGED: return "BITSCHANGED";
135
case ZT_EVENT_PULSE_START: return "PULSE_START";
136
case ZT_EVENT_TIMER_EXPIRED: return "TIMER_EXPIRED";
137
case ZT_EVENT_TIMER_PING: return "TIMER_PING";
138
case ZT_EVENT_POLARITY: return "POLARITY";
140
return "Unknown event";
143
static inline char *hookstate2str(int hookstate)
146
case ZT_ONHOOK: return "ZT_ONHOOK";
147
case ZT_START: return "ZT_START";
148
case ZT_OFFHOOK: return "ZT_OFFHOOK";
149
case ZT_WINK: return "ZT_WINK";
150
case ZT_FLASH: return "ZT_FLASH";
151
case ZT_RING: return "ZT_RING";
152
case ZT_RINGOFF: return "ZT_RINGOFF";
154
return "Unknown hookstate";
158
static inline char *sig2str(int sig)
161
case ZT_SIG_FXSLS: return "FXSLS";
162
case ZT_SIG_FXSKS: return "FXSKS";
163
case ZT_SIG_FXSGS: return "FXSGS";
164
case ZT_SIG_FXOLS: return "FXOLS";
165
case ZT_SIG_FXOKS: return "FXOKS";
166
case ZT_SIG_FXOGS: return "FXOGS";
167
case ZT_SIG_EM: return "E&M";
168
case ZT_SIG_EM_E1: return "E&M-E1";
169
case ZT_SIG_CLEAR: return "Clear";
170
case ZT_SIG_HDLCRAW: return "HDLCRAW";
171
case ZT_SIG_HDLCFCS: return "HDLCFCS";
172
case ZT_SIG_HDLCNET: return "HDLCNET";
173
case ZT_SIG_SLAVE: return "Slave";
174
case ZT_SIG_CAS: return "CAS";
175
case ZT_SIG_DACS: return "DACS";
176
case ZT_SIG_DACS_RBS: return "DACS+RBS";
177
case ZT_SIG_SF: return "SF (ToneOnly)";
181
return "Unconfigured";
184
static inline char *alarmbit2str(int alarmbit)
187
switch(1 << alarmbit) {
188
case ZT_ALARM_NONE: return "NONE";
189
case ZT_ALARM_RECOVER: return "RECOVER";
190
case ZT_ALARM_LOOPBACK: return "LOOPBACK";
191
case ZT_ALARM_YELLOW: return "YELLOW";
192
case ZT_ALARM_RED: return "RED";
193
case ZT_ALARM_BLUE: return "BLUE";
194
case ZT_ALARM_NOTOPEN: return "NOTOPEN";
199
void alarm2str(int alarm, char *buf, int buflen);
201
#endif /* ZAP_DEBUG_H */