[Asterisk-cvs] zaptel zaptel.c,1.82,1.83 zaptel.h,1.32,1.33
markster at lists.digium.com
markster at lists.digium.com
Tue Jun 29 00:41:27 CDT 2004
Update of /usr/cvsroot/zaptel
In directory mongoose.digium.com:/tmp/cvs-serv13944
Modified Files:
zaptel.c zaptel.h
Log Message:
Add signalling freeze/unfreeze ioctl (and get)
Index: zaptel.c
===================================================================
RCS file: /usr/cvsroot/zaptel/zaptel.c,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -d -r1.82 -r1.83
--- zaptel.c 26 Jun 2004 22:41:21 -0000 1.82
+++ zaptel.c 29 Jun 2004 04:27:14 -0000 1.83
@@ -926,7 +926,7 @@
chan->txgain = defgain;
chan->gainalloc = 0;
chan->eventinidx = chan->eventoutidx = 0;
- chan->flags &= ~(ZT_FLAG_LINEAR | ZT_FLAG_PPP);
+ chan->flags &= ~(ZT_FLAG_LINEAR | ZT_FLAG_PPP | ZT_FLAG_SIGFREEZE);
zt_set_law(chan,0);
@@ -3722,6 +3722,25 @@
return -ENOSYS;
switch(cmd) {
+ case ZT_SIGFREEZE:
+ get_user(j, (int *)data);
+ spin_lock_irqsave(&chan->lock, flags);
+ if (j) {
+ chan->flags |= ZT_FLAG_SIGFREEZE;
+ } else {
+ chan->flags &= ~ZT_FLAG_SIGFREEZE;
+ }
+ spin_unlock_irqrestore(&chan->lock, flags);
+ break;
+ case ZT_GETSIGFREEZE:
+ spin_lock_irqsave(&chan->lock, flags);
+ if (chan->flags & ZT_FLAG_SIGFREEZE)
+ j = 1;
+ else
+ j = 0;
+ spin_unlock_irqrestore(&chan->lock, flags);
+ put_user(j, (int *)data);
+ break;
case ZT_AUDIOMODE:
/* Only literal clear channels can be put in */
if (chan->sig != ZT_SIG_CLEAR) return (-EINVAL);
@@ -4820,6 +4839,8 @@
called with chan->lock held */
if ((chan->rxhooksig) == rxsig) return;
+
+ if ((chan->flags & ZT_FLAG_SIGFREEZE)) return;
chan->rxhooksig = rxsig;
switch(chan->sig) {
@@ -4939,6 +4960,8 @@
if (cursig == chan->rxsig)
return;
+ if ((chan->flags & ZT_FLAG_SIGFREEZE)) return;
+
spin_lock_irqsave(&chan->lock, flags);
switch(chan->sig) {
case ZT_SIG_FXOGS: /* FXO Groundstart */
Index: zaptel.h
===================================================================
RCS file: /usr/cvsroot/zaptel/zaptel.h,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- zaptel.h 4 May 2004 03:20:08 -0000 1.32
+++ zaptel.h 29 Jun 2004 04:27:14 -0000 1.33
@@ -569,7 +569,7 @@
/*
* Queue Ping
*/
-#define ZT_TIMERPING _IOW (ZT_CODE, 42, int)
+#define ZT_TIMERPING _IOW (ZT_CODE, 42, int) /* Should be 52, but works */
/*
* Acknowledge ping
@@ -577,6 +577,12 @@
#define ZT_TIMERPONG _IOW (ZT_CODE, 53, int)
/*
+ * Set/get signalling freeze
+ */
+#define ZT_SIGFREEZE _IOW (ZT_CODE, 54, int)
+#define ZT_GETSIGFREEZE _IOR (ZT_CODE, 55, int)
+
+/*
* 60-80 are reserved for private drivers
* 80-85 are reserved for dynamic span stuff
*/
@@ -1137,6 +1143,7 @@
#define ZT_FLAG_LINEAR (1 << 13) /* Talk to user space in linear */
#define ZT_FLAG_PPP (1 << 14) /* PPP is available */
#define ZT_FLAG_T1PPP (1 << 15)
+#define ZT_FLAG_SIGFREEZE (1 << 16) /* Freeze signalling */
struct zt_span {
spinlock_t lock;
More information about the svn-commits
mailing list