[Asterisk-Users] Voicetronix Audio Problems when making two or
more simultanoues calls
Peter Zion
pzion at nit.ca
Tue Feb 3 10:21:53 MST 2004
Hi David,
I've been working with an * setup with a VoiceTronix 4-port FXO card and
I had similar problems with detecting dialtone. I had to chan_vpb.c to
use a VPB driver call progress dial command, and to change the dialtone
dectection (I'm in North America) -- please see patch against version
0.7.1 below. I have not submitted this patch upstream because it's a
workaround that works for my application but leaves lots of problems
unfixed, and possibly creates other problems, so use at your own risk!
I have not yet worked with more than one line with this card so I cannot
say whether I have the other problem you mentioned.
In general, my experience using this card with Asterisk has been
negative. I hope that Digium will be releasing a multi-port FXO card
soon.
Peter Zion
--BEGIN PATCH--
diff -rpuN ../.build_orig/asterisk/channels/chan_vpb.c
asterisk/channels/chan_vpb.c
--- ../.build_orig/asterisk/channels/chan_vpb.c 2004-01-28
12:36:42.000000000 -0500
+++ asterisk/channels/chan_vpb.c 2004-01-28 12:36:35.000000000 -0500
@@ -280,17 +280,21 @@ static inline int monitor_handle_owned(s
break;
case VPB_CALLEND:
- if (e->data == VPB_CALL_CONNECTED)
+ if (e->data == VPB_CALL_CONNECTED ||
+ e->data == VPB_CALL_NO_RING_BACK)
f.subclass = AST_CONTROL_ANSWER;
- else if (e->data == VPB_CALL_NO_DIAL_TONE ||
- e->data == VPB_CALL_NO_RING_BACK)
+ else if (e->data == VPB_CALL_NO_DIAL_TONE)
f.subclass = AST_CONTROL_CONGESTION;
else if (e->data == VPB_CALL_NO_ANSWER ||
e->data == VPB_CALL_BUSY)
f.subclass = AST_CONTROL_BUSY;
else if (e->data == VPB_CALL_DISCONNECTED)
f.subclass = AST_CONTROL_HANGUP;
- break;
+
+ if (f.subclass != AST_CONTROL_ANSWER)
+ vpb_sethook_sync(p->handle, VPB_ONHOOK);
+
+ break;
case VPB_STATION_OFFHOOK:
f.subclass = AST_CONTROL_ANSWER;
@@ -459,8 +463,12 @@ static void *do_monitor(void *unused)
ast_mutex_lock(&monlock),
ast_mutex_lock(&iflock); {
struct vpb_pvt *p = iflist; /* Find the pvt structure */
+ int len;
vpb_translate_event(&e, str);
+ len = strlen(str);
+ if (len > 0 && str[len-1] == '\n')
+ str[len-1] = '\0';
if (e.type == VPB_NULL_EVENT)
goto done; /* Nothing to do, just a wakeup call.*/
@@ -546,7 +554,8 @@ struct vpb_pvt *mkif(int board, int chan
{
struct vpb_pvt *tmp;
-
+ VPB_DETECT tone;
+
tmp = (struct vpb_pvt *)calloc(1, sizeof *tmp);
if (!tmp)
@@ -560,6 +569,13 @@ struct vpb_pvt *mkif(int board, int chan
free(tmp);
return NULL;
}
+
+ vpb_gettonedet(tmp->handle, VPB_DIAL, &tone);
+ tone.freq1 = 400;
+ tone.bandwidth1 = 140;
+ tone.glitch = 100;
+ tone.stran[1].tfire = 250;
+ vpb_settonedet(tmp->handle, &tone);
if (echocancel) {
if (option_verbose > 4)
@@ -712,11 +728,15 @@ static int vpb_call(struct ast_channel *
vpb_sethook_sync(p->handle,VPB_OFFHOOK);
- res = vpb_dial_async(p->handle, s);
+ res = vpb_call_async(p->handle, s);
if (res != VPB_OK) {
ast_log(LOG_DEBUG, "Call on %s to %s failed: %s\n",
ast->name, dest, vpb_strerror(res));
+
+ vpb_sethook_sync(p->handle, VPB_ONHOOK);
+ ast_setstate(ast, AST_STATE_DOWN);
+
res = -1;
} else
res = 0;
@@ -733,8 +753,6 @@ static int vpb_call(struct ast_channel *
vpb_timer_start(p->timer);
}
p->calling = 1;
- ast_setstate(ast, AST_STATE_RINGING);
- ast_queue_control(ast,AST_CONTROL_RINGING, 0);
}
return res;
--END PATCH--
On Tue, 2004-02-03 at 00:11, David Liu wrote:
> Hi there,
>
> Besides the problem of Voicetronix dialing too early before the
> carrier gives a dial tone, there also appears to be issues with the
> audio quality when more than 1 channel is utilized.
>
> From an experiment, whenever 1 channel is occupied (i.e. outbound call
> in progress) then getting a dial tone on an available channel will
> take sometime. What this means is, once you get a dial tone after
> pressing 9, the channel is bridged with the SIP phone, then you wait
> about 4 to 5 seconds and you will hear a dial tone from the carrier.
> The dial tone is very choppy and most of the time we can't even dial
> out because the quality is so bad that the DTMF is not sent out at
> all.
>
> It is definitely not the individual line as this scenerio can happen
> at any channel.
>
> Anybody had similiar problems?
>
> David
More information about the asterisk-users
mailing list