Ok, I think I have gotten to the bottom of it: 1.: Using zap_channel_dequeue_dtmf() correctly identifies digits for both in-band PRI and analog.
2.: Setting an event callback and waiting for ZAP_EVENT_DTMF works for in-band digits on a PRI channel. 3.: Potential bug: As suggested by Moises, adding extra logging in libteletone_detect.c shows that digits were detected, but the ZAP_EVENT_DTMF events were *not* sent back for an analog channel (I am using an Openvox A800p, but it looks to be the same for all analog cards). 4.: Potential bug: DTMF digit detection *eats some audio* each time a digit is detected. If the device is connected directly to free switch this is not a problem. If a device makes a call through freeswitch (to let's say phone banking) a digit that is held down may be detected as 3 digits (sometimes more) due to the consumed audio. This can be heard on the other side of freeswitch as a start-stop at the start of the DTMF. Any thoughts? Cheers -alex Moises Silva wrote: > On Tue, Aug 11, 2009 at 1:17 AM, Alex Green <al...@etherstack.com > <mailto:al...@etherstack.com>> wrote: > > Thanks Moises, do I need to do a flush_dtmf() or set values for DTMF > on/off period, or anything else? > > > I think default on/off times are good enough, but I suppose you may have > to play with it. As of flushing, sounds like a good idea to do when the > call starts, but that depends on your applications, if you are certain > of consuming all DTMF always, then is not needed. > > Are you using hw dtmf? are you using Sangoma boards? > > I noticed that openzap behavior will be different from an API point of > view when using hardware DTMF than when using software DTMF, since the > callbacks (for span and channel) are currently not available when using > hardware DTMF. That sounds like a bug to me, the behavior should be > available regardless of the backend system used for DTMF. I will fix > that asap. > > > zap_channel_dequeue_dtmf() correctly identifies the digit, but if the > digit is held down it is detected more than once. I am using a frame > size of 160 for the read. > > > More than once like in twice? 3 times, 4 times? ad infinitum if the > digit is hold? I'd need to debug to try to figure out where that comes > from. If you are using hardware dtmf in wanpipe boards you can go to > src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c and search for > WP_TDMAPI_EVENT_DTMF, then uncomment the log line there to see if the > digit is detected twice by the drivers. > > If using software DTMF, some logging in zap_channel_read when calling > teletone_dtmf_detect() can be added to check if its detecting it twice. > > -- > Moises Silva > Software Developer > Sangoma Technologies Inc. | 50 McIntosh Drive, Suite 120, Markham ON L3R > 9T3 Canada > t. 1 905 474 1990 x 128 | e. m...@sangoma.com <mailto:m...@sangoma.com> > > > ------------------------------------------------------------------------ > > _______________________________________________ > FreeSWITCH-dev mailing list > FreeSWITCH-dev@lists.freeswitch.org > http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev > http://www.freeswitch.org _______________________________________________ FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org