summaryrefslogtreecommitdiff
path: root/xpp
diff options
context:
space:
mode:
authortzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2006-08-10 02:38:43 +0000
committertzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2006-08-10 02:38:43 +0000
commit99a3ccdba4500df334460bf45b1955d0d663b238 (patch)
treeb888cbe0c1d9f97948fbe2f27adea811455471bd /xpp
parent608b6a40db52a9db9017f384a0c69f0d4b973763 (diff)
- In SIG_CHANGED only sig_toggles bits are interesting (was good in FXS,
now fixed in FXO). - Better DBG messages for SIG_CHANGED (FXS and FXO). - Start work on new RING logic (for FXO caller id). git-svn-id: http://svn.digium.com/svn/zaptel/trunk@1279 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'xpp')
-rw-r--r--xpp/card_fxo.c18
-rw-r--r--xpp/card_fxs.c4
2 files changed, 16 insertions, 6 deletions
diff --git a/xpp/card_fxo.c b/xpp/card_fxo.c
index 126f890..ae7c06f 100644
--- a/xpp/card_fxo.c
+++ b/xpp/card_fxo.c
@@ -560,6 +560,8 @@ static /* 0x0F */ HOSTCMD(FXO, SETHOOK, int pos, bool offhook)
pack->datalen = len;
packet_send(xbus, pack);
do_led(xpd, pos, LED_GREEN, (offhook)?LED_ON:LED_OFF);
+ if(!offhook)
+ xpd->ringing[pos] = 0;
spin_unlock_irqrestore(&xpd->lock, flags);
return ret;
}
@@ -606,10 +608,18 @@ HANDLER_DEF(FXO, SIG_CHANGED)
DBG("%s/%s: (PSTN) sig_toggles=0x%04X sig_status=0x%04X\n", xpd->xbus->busname, xpd->xpdname, sig_toggles, sig_status);
spin_lock_irqsave(&xpd->lock, flags);
for_each_line(xpd, i) {
- if(IS_SET(sig_status, i)) {
- xpd->ringing[i] = 1;
- } else {
- xpd->ringing[i] = 0;
+ if(IS_SET(sig_toggles, i)) {
+ struct zt_chan *chan = &xpd->span.chans[i];
+
+ if(IS_SET(sig_status, i)) {
+ DBG("%s/%s/%d: RING-ON\n", xbus->busname, xpd->xpdname, chan->channo);
+ xpd->ringing[i] = 1;
+ do_led(xpd, i, LED_GREEN, LED_ON);
+ } else {
+ DBG("%s/%s/%d: RING-OFF\n", xbus->busname, xpd->xpdname, chan->channo);
+ xpd->ringing[i] = 0;
+ do_led(xpd, i, LED_GREEN, LED_OFF);
+ }
}
}
spin_unlock_irqrestore(&xpd->lock, flags);
diff --git a/xpp/card_fxs.c b/xpp/card_fxs.c
index 094ed71..09f548b 100644
--- a/xpp/card_fxs.c
+++ b/xpp/card_fxs.c
@@ -781,12 +781,12 @@ HANDLER_DEF(FXS, SIG_CHANGED)
do_chan_power(xpd->xbus, xpd, BIT(i), 0); // When not ringing, VBAT is always Low
MARK_BLINK(priv,i,LED_GREEN,0);
if(IS_SET(sig_status, i)) {
- DBG("OFFHOOK: channo=%d\n", chan->channo);
+ DBG("%s/%s/%d: OFFHOOK\n", xbus->busname, xpd->xpdname, chan->channo);
MARK_LED(priv,i,LED_GREEN,LED_ON);
BIT_SET(xpd->hookstate, i);
zt_hooksig(chan, ZT_RXSIG_OFFHOOK);
} else {
- DBG("ONHOOK channo=%d\n", chan->channo);
+ DBG("%s/%s/%d: ONHOOK\n", xbus->busname, xpd->xpdname, chan->channo);
MARK_LED(priv,i,LED_GREEN,LED_OFF);
BIT_CLR(xpd->hookstate, i);
zt_hooksig(chan, ZT_RXSIG_ONHOOK);