diff options
author | jim <jim@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2005-06-08 22:35:38 +0000 |
---|---|---|
committer | jim <jim@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2005-06-08 22:35:38 +0000 |
commit | 9fa18f88e43786a803286c8189c80d18b242eada (patch) | |
tree | a90eec335c40205188ed4bac16ac58a2779412e0 | |
parent | fc86f5c437daa269ba6e7d4621b3365a90f5a05d (diff) |
Added functionality so that e&m trunks can "flash" after going offhook
added the #define EMFLASH to zconfig.h to enable this feature
git-svn-id: http://svn.digium.com/svn/zaptel/trunk@666 5390a7c7-147a-4af0-8ec9-7488f05a26cb
-rwxr-xr-x | zaptel.c | 26 | ||||
-rwxr-xr-x | zconfig.h | 8 |
2 files changed, 33 insertions, 1 deletions
@@ -645,6 +645,7 @@ static void zt_check_conf(int x) /* enqueue an event on a channel */ static void __qevent(struct zt_chan *chan, int event) { +printk("@@@@@@@@ sending event %d on %s\n",event,chan->name); /* if full, ignore */ if ((chan->eventoutidx == 0) && (chan->eventinidx == (ZT_MAX_EVENTSIZE - 1))) return; @@ -4970,6 +4971,15 @@ static inline void rbs_itimer_expire(struct zt_chan *chan) __qevent(chan,ZT_EVENT_ONHOOK); chan->gotgs = 0; break; +#ifdef EMFLASH + case ZT_SIG_EM: + case ZT_SIG_EM_E1: + if (chan->rxhooksig == ZT_RXSIG_ONHOOK) { + __qevent(chan,ZT_EVENT_ONHOOK); + break; + } + /* intentionally fall thru */ +#endif default: /* otherwise, its definitely off hook */ __qevent(chan,ZT_EVENT_RINGOFFHOOK); break; @@ -5126,6 +5136,14 @@ static void __zt_hooksig_pvt(struct zt_chan *chan, zt_rxsig_t rxsig) switch(rxsig) { case ZT_RXSIG_OFFHOOK: /* went off hook */ /* The interface is going off hook */ +#ifdef EMFLASH + if (chan->itimer) + { + __qevent(chan,ZT_EVENT_WINKFLASH); + chan->itimerset = chan->itimer = 0; + break; + } +#endif /* set wink timer */ chan->itimerset = chan->itimer = chan->rxwinktime * 8; break; @@ -5134,10 +5152,18 @@ static void __zt_hooksig_pvt(struct zt_chan *chan, zt_rxsig_t rxsig) Check for WINK, etc */ if (chan->itimer) __qevent(chan,ZT_EVENT_WINKFLASH); +#ifdef EMFLASH + else { + chan->itimerset = chan->itimer = chan->rxflashtime * 8; + chan->gotgs = 0; + break; + } +#else else { __qevent(chan,ZT_EVENT_ONHOOK); chan->gotgs = 0; } +#endif chan->itimerset = chan->itimer = 0; break; default: @@ -38,7 +38,7 @@ * processors and can cause system instability! * */ -/* #define CONFIG_ZAPTEL_MMX */ +#define CONFIG_ZAPTEL_MMX /* * Pick your echo canceller: MARK2, MARK3, STEVE, or STEVE2 :) @@ -127,4 +127,10 @@ */ /* #define TDM_REVH_MATCHALL */ +/* + * Uncomment the following if you want to support E&M trunks being + * able to "flash" after going off-hook (dont ask why, just nod :-) ). + */ +/* #define EMFLASH */ + #endif |