[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