Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv5735/channels

Modified Files:
        chan_zap.c 
Log Message:
Fixed little oops with DTMF tone duration


Index: chan_zap.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_zap.c,v
retrieving revision 1.479
retrieving revision 1.480
diff -u -d -r1.479 -r1.480
--- chan_zap.c  21 Jul 2005 15:06:50 -0000      1.479
+++ chan_zap.c  22 Jul 2005 18:07:53 -0000      1.480
@@ -167,7 +167,6 @@
 #define DCHAN_AVAILABLE        (DCHAN_PROVISIONED | DCHAN_NOTINALARM | 
DCHAN_UP)
 
 static int cur_emdigitwait = 250; /* Wait time in ms for digits on EM channel 
*/
-static int cur_toneduration = -1; /* Tone duration */
 
 static char context[AST_MAX_CONTEXT] = "default";
 static char cid_num[256] = "";
@@ -6550,7 +6549,6 @@
        struct zt_bufferinfo bi;
 #endif
        struct zt_spaninfo si;
-       struct zt_dialparams dps;
        int res;
        int span=0;
        int here = 0;
@@ -6823,15 +6821,6 @@
                                p.debouncetime = cur_debounce;
                }
                
-               if (cur_toneduration > -1) {
-                       dps.dtmf_tonelen = dps.mfv1_tonelen = cur_toneduration;
-                       res = ioctl(tmp->subs[SUB_REAL].zfd, ZT_SET_DIALPARAMS, 
&dps);
-                       if (res < 0) {
-                               ast_log(LOG_ERROR, "Invalid tone duration: %d 
ms\n", cur_toneduration);
-                               destroy_zt_pvt(&tmp);
-                               return NULL;
-                       }
-               }
                /* dont set parms on a pseudo-channel (or CRV) */
                if (tmp->subs[SUB_REAL].zfd >= 0)
                {
@@ -10522,7 +10511,28 @@
                        } else if (!strcasecmp(v->name, "emdigitwait")) {
                                cur_emdigitwait = atoi(v->value);
                        } else if (!strcasecmp(v->name, "toneduration")) {
-                               cur_toneduration = atoi(v->value);
+                               int toneduration;
+                               int ctlfd;
+                               int res;
+                               struct zt_dialparams dps;
+
+                               ctlfd = open("/dev/zap/ctl", O_RDWR);
+                               if (ctlfd == -1) {
+                                       ast_log(LOG_ERROR, "Unable to open 
/dev/zap/ctl to set toneduration\n");
+                                       return -1;
+                               }
+
+                               toneduration = atoi(v->value);
+                               if (toneduration > -1) {
+                                       dps.dtmf_tonelen = dps.mfv1_tonelen = 
toneduration;
+                                       res = ioctl(ctlfd, ZT_SET_DIALPARAMS, 
&dps);
+                                       if (res < 0) {
+                                               ast_log(LOG_ERROR, "Invalid 
tone duration: %d ms\n", toneduration);
+                                               destroy_zt_pvt(&tmp);
+                                               return NULL;
+                                       }
+                               }
+                               close(ctlfd);
                        } else if (!strcasecmp(v->name, 
"polarityonanswerdelay")) {
                                polarityonanswerdelay = atoi(v->value);
                        } else if (!strcasecmp(v->name, 
"answeronpolarityswitch")) {

_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs

Reply via email to