On Friday 30 January 2004 20:05, Terence Parker wrote:
> > 1)  The 'W' character is only for the zaptel channel.
> > 2)  It's case insensitive (i.e. it does NOT need to be uppercase).
> > See line 2387 of zaptel.c if you'd like to confirm this for
> > yourself. 3)  There is no current way within Asterisk to insert a
> > pause into the Voicetronix driver.
> > 4)  There is no current way within Asterisk to insert a flash-hook
> > into the Voicetronix driver.
> > 5)  The solution for 3 and 4 is attached.  This patch will allow
> > you to use the 'w' OR the 'W' character to insert a pause and to
> > use the 'f' or 'F' character to insert a flash-hook.  Please note
> > (VERY IMPORTANT): in the Voicetronix driver, the pause is 1.0
> > seconds, not 0.5 seconds, like it is in the Zaptel driver.
>
> I have tried applying your patch, but unfortunately get the following
> compilation errors:

New patch attached.  Let's see if I can upset the Avaya virus detector
with this attachment (again).

> Looking at the patch file, am I correct in assuming then that the
> Voicetronix OpenLine4 does in fact support the comma and ampersand
> characters - but that it's just a matter of getting the asterisk's
> chan_vpb to translate the use of 'w' and 'f' to ',' and '&'
> respectively for the Voicetronix API?

That's correct.  My patch simply allows the features to be used in
Asterisk.

-Tilghman
Index: channels/chan_vpb.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_vpb.c,v
retrieving revision 1.12
diff -u -r1.12 chan_vpb.c
--- channels/chan_vpb.c 9 Dec 2003 23:55:17 -0000       1.12
+++ channels/chan_vpb.c 31 Jan 2004 05:27:04 -0000
@@ -681,13 +681,26 @@
 {
     struct vpb_pvt *p = (struct vpb_pvt *)ast->pvt->pvt;
     int res = 0;
-    char *s = strrchr(dest, '/');
+    char *s = strrchr(dest, '/'), *t;
 
     if (s)
         s = s + 1;
     else
         s = dest;
 
+       /* We cannot use either the & or the , in a Dial string, as these
+        * characters are used to signal 1) different concurrent technologies,
+        * or 2) separation of application arguments.  Therefore, this channel
+        * driver should translate the w (for a pause) to the , and the f (for
+        * a flash-hook) to a &. */
+
+       for (t = s; t != '\0' ; t++) {
+               if ((*t == 'w') || (*t == 'W'))
+                       *t = ',';
+               else if ((*t == 'f') || (*t == 'F'))
+                       *t = '&';
+       }
+
     if (ast->_state != AST_STATE_DOWN && ast->_state != AST_STATE_RESERVED) {
        ast_log(LOG_WARNING, "vpb_call on %s neither down nor reserved!\n", 
                ast->name);

Reply via email to