[Freeswitch-dev] FXS bridged on FXO ports and DTMF - Deja Vu

Jeroen C. van Gelderen jeroeng at thegreek.com
Tue Jun 15 16:23:13 PDT 2010


Hi everybody,

I have a problem that is very similar to a problem 
reported by François [1] except for the fact that 
my FXS and FXO ports are on a Xorcom Astribank 
device instead of a Sangoma.

To quote François: "The problem is that each leg of 
the bridge is detecting the inband DTMF, and so 
[F]reeswitch sends each detected DTMF from one leg 
to the other, and so on and so forth (as each leg 
detects the DTMF again and again)"

HIS words but evidenced by the MY log :)

The snippet below has DTMF coming in on the FXS port 
(1:1) and bouncing between it and the FXO port (3:1). 
The ports are simply bridged together with

  "bridge(OpenZap/3/1/F)" or "bridge(OpenZap/3/1/w)"

I'm running:

FreeSWITCH version: 1.0.head (git-01c0c69 2010-06-08 16-22-21 -0500)
dahdi: Version: SVN-trunk-r8762

Output of lsdahdi at end of message.

----8<----8<----8<----8<----8<----8<----8<----
[...]
2010-06-13 04:18:39.217256 [DEBUG] mod_openzap.c:721 queue DTMF [4]
2010-06-13 04:18:39.256255 [DEBUG] zap_io.c:2062 3:1 GENERATE DTMF [4]
2010-06-13 04:18:39.397253 [DEBUG] mod_openzap.c:721 queue DTMF [4]
2010-06-13 04:18:39.439252 [DEBUG] mod_openzap.c:780 Dropping frame! (write
not ready)
2010-06-13 04:18:39.439252 [DEBUG] zap_io.c:2062 1:1 GENERATE DTMF [4]
2010-06-13 04:18:39.637249 [DEBUG] mod_openzap.c:721 queue DTMF [4]
2010-06-13 04:18:39.676248 [DEBUG] zap_io.c:2062 3:1 GENERATE DTMF [4]
2010-06-13 04:18:39.859244 [DEBUG] mod_openzap.c:780 Dropping frame! (write
not ready)
[...ad infinitum...]
----8<----8<----8<----8<----8<----8<----8<----

Because I needed DTMF pass-through working "now" 
I applied an ugly HACK. This drops DTMF tones 
detected on spans 3 and 4 (which are my FXO 
spans). This is very WRONG but it does solve 
my immediate problem:

----8<----8<----8<----8<----8<----8<----8<----
diff --git a/libs/openzap/mod_openzap/mod_openzap.c
b/libs/openzap/mod_openzap/mod_openzap.c
index 5aebfea..ff3b081 100644
--- a/libs/openzap/mod_openzap/mod_openzap.c
+++ b/libs/openzap/mod_openzap/mod_openzap.c
@@ -718,8 +718,12 @@ static switch_status_t
channel_read_frame(switch_core_session_t *session, switch
                for (p = dtmf; p && *p; p++) {
                        if (is_dtmf(*p)) {
                                _dtmf.digit = *p;
-                               zap_log(ZAP_LOG_DEBUG, "queue DTMF [%c]\n",
*p);
-                               switch_channel_queue_dtmf(channel, &_dtmf);
+                               if (tech_pvt->zchan->span_id == 3 ||
tech_pvt->zchan->span_id == 4) {
+                                       zap_log(ZAP_LOG_DEBUG, "Ignoring
DTMF [%c] on FXO port %d:%d\n", *p, tech_pvt->zchan->span_id,
tech_pvt->zchan->chan_id)
;
+                               } else {
+                                       zap_log(ZAP_LOG_DEBUG, "queue DTMF
[%c]\n", *p);
+                                       switch_channel_queue_dtmf(channel,
&_dtmf);
+                               }
                        }
                }
        }
----8<----8<----8<----8<----8<----8<----8<----

Can someone point me in the "right" direction 
instead? Do I need to do this at the OpenZAP/DAHDI 
level by disabling some kind of DTMF detection 
like was done for the Sangoma driver?

Any and all pointers appreciated.

Cheers,
-Slim

[1] [Freeswitch-dev] FXS bridged on FXO ports and DTMF
http://www.mail-archive.com/freeswitch-dev@lists.freeswitch.org/msg02830.htm
l

[Freeswitch-dev] Problem with sending 
DTMF on FXS port bridged to	an FXO port
http://lists.freeswitch.org/pipermail/freeswitch-dev/2010-April/003607.html


----8<----8<----8<----8<----8<----8<----8<----
[root at localhost freeswitch]# lsdahdi
### Span  1: XBUS-00/XPD-00 "Xorcom XPD #00/00: FXS" (MASTER)
  1 FXS        FXOKS
  2 FXS        FXOKS
  3 FXS        FXOKS
  4 FXS        FXOKS
  5 FXS        FXOKS
  6 FXS        FXOKS
  7 FXS        FXOKS
  8 FXS        FXOKS
  9 Output     FXOKS
 10 Output     FXOKS
 11 Input      FXOKS
 12 Input      FXOKS
 13 Input      FXOKS
 14 Input      FXOKS
### Span  2: XBUS-00/XPD-10 "Xorcom XPD #00/10: FXS"
 15 FXS        FXOKS
 16 FXS        FXOKS
 17 FXS        FXOKS
 18 FXS        FXOKS
 19 FXS        FXOKS
 20 FXS        FXOKS
 21 FXS        FXOKS
 22 FXS        FXOKS
### Span  3: XBUS-00/XPD-20 "Xorcom XPD #00/20: FXO"
 23 FXO        FXSKS        RED
 24 FXO        FXSKS        RED
 25 FXO        FXSKS        RED
 26 FXO        FXSKS        RED
 27 FXO        FXSKS        RED
 28 FXO        FXSKS        RED
 29 FXO        FXSKS        RED
 30 FXO        FXSKS        RED
### Span  4: XBUS-00/XPD-30 "Xorcom XPD #00/30: FXO"
 31 FXO        FXSKS        RED
 32 FXO        FXSKS        RED
 33 FXO        FXSKS        RED
 34 FXO        FXSKS        RED
 35 FXO        FXSKS        RED
 36 FXO        FXSKS        RED
 37 FXO        FXSKS        RED
 38 FXO        FXSKS        RED
----8<----8<----8<----8<----8<----8<----8<----


Cheers,
-Slim
--
Jeroen C. "Slim" van Gelderen
Olympic Sports Data Services
Email: jeroeng at thegreek.com
Phone: +1 876 953 6182 x128





More information about the FreeSWITCH-dev mailing list