More VPB updates from Paul

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1763 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Spencer 2003-11-18 15:13:38 +00:00
parent 1ceb43f77f
commit 626d85b1bd
1 changed files with 29 additions and 7 deletions

View File

@ -97,10 +97,9 @@ static int restart_monitor(void);
#define MODE_FXO 3
static VPB_TONE Dialtone = {440, 440, 440, -10, -100, -100, 5000, 0 };
static VPB_TONE Busytone = {440, 0, 0, -10, -100, -100, 500, 500};
static VPB_TONE Ringbacktone = {440, 0, 0, -10, -100, -100, 100, 100};
static VPB_TONE Dialtone = {440, 440, 440, 0, 0, 0, 5000, 0 };
static VPB_TONE Busytone = {440, 0, 0, 0, -100, -100, 500, 500};
static VPB_TONE Ringbacktone = {440, 0, 0, 0, -100, -100, 100, 100};
#define VPB_MAX_BRIDGES 128
@ -390,14 +389,21 @@ static inline int monitor_handle_notowned(struct vpb_pvt *p, VPB_EVENT *e)
break;
case VPB_STATION_ONHOOK: /*, clear ext */
vpb_tone_terminate(p->handle);
while (vpb_playtone_state(p->handle) != 0){
vpb_tone_terminate(p->handle);
vpb_sleep(10);
}
p->wantdtmf = 1;
p->ext[0] = 0;
break;
case VPB_DTMF:
if (p->wantdtmf == 1) {
vpb_tone_terminate(p->handle);
while (vpb_playtone_state(p->handle) != 0){
vpb_tone_terminate(p->handle);
vpb_sleep(10);
}
p->wantdtmf = 0;
}
s[0] = e->data;
@ -609,16 +615,32 @@ static int vpb_indicate(struct ast_channel *ast, int condition)
switch(condition) {
case AST_CONTROL_BUSY:
case AST_CONTROL_CONGESTION:
while (vpb_playtone_state(p->handle) != 0){
res = vpb_tone_terminate(p->handle);
vpb_sleep(10);
}
res = vpb_playtone_async(p->handle, &Busytone);
break;
case AST_CONTROL_RINGING:
while (vpb_playtone_state(p->handle) != 0){
res = vpb_tone_terminate(p->handle);
vpb_sleep(10);
}
res = vpb_playtone_async(p->handle, &Ringbacktone);
break;
case AST_CONTROL_ANSWER:
case -1: /* -1 means stop playing? */
res = vpb_tone_terminate(p->handle);
while (vpb_playtone_state(p->handle) != 0){
res = vpb_tone_terminate(p->handle);
vpb_sleep(10);
}
break;
case AST_CONTROL_HANGUP:
while (vpb_playtone_state(p->handle) != 0){
res = vpb_tone_terminate(p->handle);
vpb_sleep(10);
}
res = vpb_playtone_async(p->handle, &Busytone);
break;