[Asterisk-cvs] zaptel zaptel.c, 1.121, 1.122 zaptel.h, 1.47,
1.48 zconfig.h, 1.21, 1.22
kpfleming
kpfleming
Fri Sep 30 11:23:18 CDT 2005
Update of /usr/cvsroot/zaptel
In directory mongoose.digium.com:/tmp/cvs-serv20745
Modified Files:
zaptel.c zaptel.h zconfig.h
Log Message:
optionally support flash events on FXS signaling (work done by Jim Dixon)
Index: zaptel.c
===================================================================
RCS file: /usr/cvsroot/zaptel/zaptel.c,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -d -r1.121 -r1.122
--- zaptel.c 29 Sep 2005 03:03:33 -0000 1.121
+++ zaptel.c 30 Sep 2005 15:19:45 -0000 1.122
@@ -1906,7 +1906,7 @@
set_txtone(chan,0,0,0);
}
}
- chan->otimer = timeout * 8; /* Otimer is timer in samples */
+ chan->otimer = timeout * ZT_CHUNKSIZE; /* Otimer is timer in samples */
return;
}
if (chan->span->hooksig) {
@@ -1914,7 +1914,7 @@
chan->txhooksig = txsig;
chan->span->hooksig(chan, txsig);
}
- chan->otimer = timeout * 8; /* Otimer is timer in samples */
+ chan->otimer = timeout * ZT_CHUNKSIZE; /* Otimer is timer in samples */
return;
} else {
for (x=0;x<NUM_SIGS;x++) {
@@ -1925,7 +1925,7 @@
chan->txhooksig = txsig;
chan->txsig = outs[x][txsig+1];
chan->span->rbsbits(chan, chan->txsig);
- chan->otimer = timeout * 8; /* Otimer is timer in samples */
+ chan->otimer = timeout * ZT_CHUNKSIZE; /* Otimer is timer in samples */
return;
}
}
@@ -3346,17 +3346,17 @@
if ((tdp.mfv1_tonelen > 4000) || (tdp.mfv1_tonelen < 10))
return -EINVAL;
for (i=0;i<16;i++)
- dtmf_tones[i].tonesamples = tdp.dtmf_tonelen * 8;
- dtmf_silence.tonesamples = tdp.dtmf_tonelen * 8;
+ dtmf_tones[i].tonesamples = tdp.dtmf_tonelen * ZT_CHUNKSIZE;
+ dtmf_silence.tonesamples = tdp.dtmf_tonelen * ZT_CHUNKSIZE;
for (i=0;i<15;i++)
- mfv1_tones[i].tonesamples = tdp.mfv1_tonelen * 8;
- mfv1_silence.tonesamples = tdp.mfv1_tonelen * 8;
+ mfv1_tones[i].tonesamples = tdp.mfv1_tonelen * ZT_CHUNKSIZE;
+ mfv1_silence.tonesamples = tdp.mfv1_tonelen * ZT_CHUNKSIZE;
/* Special case for K/P tone */
- mfv1_tones[10].tonesamples = tdp.mfv1_tonelen * 8 * 5 / 3;
+ mfv1_tones[10].tonesamples = tdp.mfv1_tonelen * ZT_CHUNKSIZE * 5 / 3;
break;
case ZT_GET_DIALPARAMS:
- tdp.dtmf_tonelen = dtmf_tones[0].tonesamples / 8;
- tdp.mfv1_tonelen = mfv1_tones[0].tonesamples / 8;
+ tdp.dtmf_tonelen = dtmf_tones[0].tonesamples / ZT_CHUNKSIZE;
+ tdp.mfv1_tonelen = mfv1_tones[0].tonesamples / ZT_CHUNKSIZE;
tdp.reserved[0] = 0;
tdp.reserved[1] = 0;
tdp.reserved[2] = 0;
@@ -3391,7 +3391,7 @@
break;
case ZT_MAINT_LOOPUP:
case ZT_MAINT_LOOPDOWN:
- spans[maint.spanno]->mainttimer = ZT_LOOPCODE_TIME * 8;
+ spans[maint.spanno]->mainttimer = ZT_LOOPCODE_TIME * ZT_CHUNKSIZE;
rv = spans[maint.spanno]->maint(spans[maint.spanno], maint.command);
spin_unlock_irqrestore(&spans[maint.spanno]->lock, flags);
if (rv) return rv;
@@ -5015,10 +5015,10 @@
static inline void rbs_itimer_expire(struct zt_chan *chan)
{
/* the only way this could have gotten here, is if a channel
- went off hook longer then the wink or flash detect timeout */
+ went onf hook longer then the wink or flash detect timeout */
/* Called with chan->lock held */
switch(chan->sig)
- {
+ {
case ZT_SIG_FXOLS: /* if FXO, its definitely on hook */
case ZT_SIG_FXOGS:
case ZT_SIG_FXOKS:
@@ -5032,13 +5032,21 @@
__qevent(chan,ZT_EVENT_ONHOOK);
break;
}
- /* intentionally fall thru */
+ __qevent(chan,ZT_EVENT_RINGOFFHOOK);
+ break;
+#endif
+#ifdef FXSFLASH
+ case ZT_SIG_FXSKS:
+ if (chan->rxhooksig == ZT_RXSIG_ONHOOK) {
+ __qevent(chan, ZT_EVENT_ONHOOK);
+ break;
+ }
#endif
+ /* fall thru intentionally */
default: /* otherwise, its definitely off hook */
__qevent(chan,ZT_EVENT_RINGOFFHOOK);
break;
- }
-
+ }
}
static inline void __rbs_otimer_expire(struct zt_chan *chan)
@@ -5116,7 +5124,7 @@
zt_rbs_sethook(chan, ZT_TXSIG_OFFHOOK, ZT_TXSTATE_OFFHOOK, 0);
/* See if we've gone back on hook */
if ((chan->rxhooksig == ZT_RXSIG_ONHOOK) && (chan->rxflashtime > 2))
- chan->itimerset = chan->itimer = chan->rxflashtime * 8;
+ chan->itimerset = chan->itimer = chan->rxflashtime * ZT_CHUNKSIZE;
wake_up_interruptible(&chan->txstateq);
break;
@@ -5158,7 +5166,7 @@
break;
}
chan->txstate = ZT_TXSTATE_PULSEAFTER;
- chan->otimer = chan->pulseaftertime * 8;
+ chan->otimer = chan->pulseaftertime * ZT_CHUNKSIZE;
wake_up_interruptible(&chan->txstateq);
break;
@@ -5204,7 +5212,7 @@
}
#endif
/* set wink timer */
- chan->itimerset = chan->itimer = chan->rxwinktime * 8;
+ chan->itimerset = chan->itimer = chan->rxwinktime * ZT_CHUNKSIZE;
break;
case ZT_RXSIG_ONHOOK: /* went on hook */
/* This interface is now going on hook.
@@ -5213,7 +5221,7 @@
__qevent(chan,ZT_EVENT_WINKFLASH);
#ifdef EMFLASH
else {
- chan->itimerset = chan->itimer = chan->rxflashtime * 8;
+ chan->itimerset = chan->itimer = chan->rxflashtime * ZT_CHUNKSIZE;
chan->gotgs = 0;
break;
}
@@ -5232,6 +5240,16 @@
case ZT_SIG_FXSKS: /* FXS Kewlstart */
/* ignore a bit poopy if loop not closed and stable */
if (chan->txstate != ZT_TXSTATE_OFFHOOK) break;
+#ifdef FXSFLASH
+ if (rxsig == ZT_RXSIG_ONHOOK) {
+ chan->itimer = ZT_FXSFLASHTIME * ZT_CHUNKSIZE;
+ break;
+ } else if (rxsig == ZT_RXSIG_OFFHOOK) {
+ if (chan->itimer) __qevent(chan, ZT_EVENT_WINKFLASH);
+ chan->itimer = 0;
+ break;
+ }
+#endif
/* fall through intentionally */
case ZT_SIG_FXSGS: /* FXS Groundstart */
if (rxsig == ZT_RXSIG_ONHOOK) {
@@ -5294,7 +5312,7 @@
if ((chan->txstate != ZT_TXSTATE_DEBOUNCE) &&
(chan->txstate != ZT_TXSTATE_KEWL) &&
(chan->txstate != ZT_TXSTATE_AFTERKEWL)) {
- chan->itimerset = chan->itimer = chan->rxflashtime * 8;
+ chan->itimerset = chan->itimer = chan->rxflashtime * ZT_CHUNKSIZE;
}
if (chan->txstate == ZT_TXSTATE_KEWL)
chan->kewlonhook = 1;
Index: zaptel.h
===================================================================
RCS file: /usr/cvsroot/zaptel/zaptel.h,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -r1.47 -r1.48
--- zaptel.h 29 Sep 2005 02:29:16 -0000 1.47
+++ zaptel.h 30 Sep 2005 15:19:45 -0000 1.48
@@ -905,6 +905,10 @@
#define ZT_MAX_CHANNELS 1024 /* Max, 1024 channels */
#define ZT_MAX_CONF 1024 /* Max, 1024 conferences */
+#ifdef FXSFLASH
+#define ZT_FXSFLASHTIME 550 /* max 550ms */
+#endif
+
#ifdef __KERNEL__
#include <linux/types.h>
Index: zconfig.h
===================================================================
RCS file: /usr/cvsroot/zaptel/zconfig.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- zconfig.h 12 Sep 2005 19:07:02 -0000 1.21
+++ zconfig.h 30 Sep 2005 15:19:45 -0000 1.22
@@ -137,9 +137,15 @@
/*
* Comment out the following if you dont want events to indicate the
- * beginning of an incomming ring. Most non-asterisk applications will
+ * beginning of an incoming ring. Most non-Asterisk applications will
* want this commented out.
*/
#define RINGBEGIN
+/*
+ * Uncomment the following if you need to support FXS Flash events.
+ * Most applications will want this commented out.
+ */
+/* #define FXSFLASH */
+
#endif
More information about the svn-commits
mailing list