changed it to not play a received DTMF frame if native bridged!
authorBen Kramer <bkramer@voicetronix.com.au>
Wed, 6 Oct 2004 10:54:58 +0000 (10:54 +0000)
committerBen Kramer <bkramer@voicetronix.com.au>
Wed, 6 Oct 2004 10:54:58 +0000 (10:54 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3921 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_vpb.c

index 84f4f65..be9623a 100755 (executable)
@@ -550,14 +550,8 @@ static inline int monitor_handle_owned(struct vpb_pvt *p, VPB_EVENT *e)
 
                case VPB_DTMF:
                        if (p->owner->_state == AST_STATE_UP) {
 
                case VPB_DTMF:
                        if (p->owner->_state == AST_STATE_UP) {
-                               if ((strcmp(p->owner->type,"vpb"))||(e->data == '#')||(e->data == '*')){
                                        f.frametype = AST_FRAME_DTMF;
                                        f.subclass = e->data;
                                        f.frametype = AST_FRAME_DTMF;
                                        f.subclass = e->data;
-                               }
-                               else {
-                                       if (option_verbose > 3) 
-                                               ast_verbose(VERBOSE_PREFIX_4 "%s: handle_owned: Not transmiting DTMF frame on native bridge\n", p->dev);
-                               }
                        } else
                                f.frametype = -1;
                        break;
                        } else
                                f.frametype = -1;
                        break;
@@ -1835,9 +1829,15 @@ static void *do_chanreads(void *pvt)
                        // This DTMF is played by asterisk and leads to an annoying trailing beep on CISCO phones
                        if( !ignore_dtmf) 
                                vpb_set_event_mask(p->handle, VPB_EVENTS_NODTMF );
                        // This DTMF is played by asterisk and leads to an annoying trailing beep on CISCO phones
                        if( !ignore_dtmf) 
                                vpb_set_event_mask(p->handle, VPB_EVENTS_NODTMF );
-                       vpb_dial_sync(p->handle,p->play_dtmf);
-                       if(option_verbose>1) 
-                               ast_verbose( VERBOSE_PREFIX_2 "%s: Played DTMF %s\n",p->dev,p->play_dtmf);
+                       if (strcmp(p->owner->type,"vpb")){
+                               vpb_dial_sync(p->handle,p->play_dtmf);
+                               if(option_verbose>1) 
+                                       ast_verbose( VERBOSE_PREFIX_2 "%s: chanreads: Played DTMF %s\n",p->dev,p->play_dtmf);
+                       }
+                       else {
+                               if (option_verbose > 1) 
+                                       ast_verbose(VERBOSE_PREFIX_2 "%s: chanreads: Not playing DTMF frame on native bridge\n", p->dev);
+                       }
                        p->play_dtmf[0] = '\0';
                        ast_mutex_unlock(&p->play_dtmf_lock);
                        vpb_sleep(700); // Long enough to miss echo and DTMF event
                        p->play_dtmf[0] = '\0';
                        ast_mutex_unlock(&p->play_dtmf_lock);
                        vpb_sleep(700); // Long enough to miss echo and DTMF event