Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

TAPI 3 detect busy tone

66 views
Skip to first unread message

mahesh

unread,
Dec 10, 2009, 5:19:30 AM12/10/09
to
Hi,

Currently having problem with detecting busy tones with TAPI.

Is Busy tone detection possible by using the functions:

TAPI32 : lineMonitorTones

TAPI 3 : DetectTonesByCollection

Does anyone of you have an proper working example to detect busy tones for
frequency 400 Hz and duration of 750 ms. ?

If it is not possible to detect specific or busy tones
using the above mentioned functions, why on the earth they are present in
the library at the first place (I am really frustrated)?

I did found the example for detecting DTMF tones on the tapi.info site, but
unfortunately they don't have any example for monitoring tones.

I will be really grateful, if anybody has achieved success in monitoring
tones. I am working in VB6.

Thanks in advance.

url:http://www.ureader.com/gp/1481-1.aspx

fdecker

unread,
Dec 10, 2009, 3:08:30 PM12/10/09
to
What TAPI device are you using? Automatic tone detection is built
into the device so you don't have to. The major tones like dialtone,
busy, etc are all the responsibility of the device to detect and
report via a call state message. A busy signal is
LINECALLSTATE_BUSY. It doesn't matter what country your busy tone is,
the device should have a configuration for what your local tones are.

What are the capabilities of your device? Does it support
lineMonitorTones? Even a device that does not support it almost
always provided basic call detection like busy tones using the
callstate message. Check the dwMonitorToneMaxNumFreq member of the
LINEDEVCAPS structure to see if it is greater than zero.

You might want to look at our TeleTools controls also which will make
programming in VB6 much, much easier. We have a lot of samples and
you won't have to deal with callbacks and pointers which are not well
documented in VB6. It is a lot easier to just have simple methods and
have an event that fires for each important message like "Busy".

Fred
www.exceletel.com


mahesh

unread,
Dec 10, 2009, 5:03:47 PM12/10/09
to
I am using SmartLink Internal Voice modem.

"You might want to look at our TeleTools controls also which will make
programming in VB6 much, much easier"

I did use a lot of ActiveX controls including "TeleTools".
But there was not any example which shows how to monitor tones. With
"TAPIEx" activex control, I was able to detect the busy tones. I think they
record the sound in real-time and analyze the wave chunks for tones.

If DTMF tones are detected (tapi.info TAPI PSDK examples), why not busy
tones should be?

I have a few options though:
1) Use a dedicated telephony card having their own TSP.
2) Record sound from the Modem in real-time (like ModemSpy), and analyze for
specific busy tones.
3) Build a tone detection circuit using tone decoder IC like LM567C and get
the logic output to LPT port.

Although, this is very surprising, that a sophisticated device like modem
should not be able to detect a simple busy tone continuously just like the
"Ring...Ring...Ring".

Do you know if there is any "AT" command to set frequency and duration for a
specific tone to detect on the modem itself, so that I can get periodic
messages for that tone from the modem?

Thanks in advance.

url:http://www.ureader.com/msg/14812479.aspx

fdecker

unread,
Dec 14, 2009, 3:50:59 PM12/14/09
to
Hi Mahesh,

The problem is that modem manufacturers see themselves in the data
business, the voice features were tacked on as an afterthought. A
modem uses AT commands, which are string based and slow. A modem CAN
do quite a lot, but that functionality isn't available to you, or at
least it isn't available through the Unimodem TSP that modem
manufacturers depend on. They let Microsoft do the work with a generic
driver instead of doing it themselves.

Modems have digital signal processing chips in them and can detect
most anything, the TSP does not allow you access to those features
through AT commands. Modems easily handle dialtone and busy tone and
disconnect (for the most part), but most modems are designed for the
US market and to not detect the tones of other countries. In addition,
since Unimodem doesn't take advantage of voice detection, the modem
will either go connected immediately (therefore missing the busy
signal) or wait until is misses the ringback cadence which is a
useless way to tell when the phone is connected, it takes too long to
recognize that the ringback stopped.

I can save you a lot of trouble. All of your methods of solving the
problem are valid, you could intercept the audio stream and do your
own fast fourrier transform on it, which is what controls that do
their own tone detection do, or you could create a tone array in TAPI
and use timers and state machine variables to handle the tone and
cadence of different signals. It is MUCH easier to just use a better
device since part of the TAPI spec is to provide the call progress
tones as specific messages to you.

You can see if your modem manufacturer can detect a busy tone for your
phone line, if so, that is reported in the lineCallstate message, not
by using lineMonitorTone. You can use any of the devices on our web
page, the Hi-Phone being closest to what you expect a modem to be but
much more. The old Dialogic cards, the Dialogic Diva cards, and many
others do a great job too. You could also not use hardware at all and
use a VoIP line and a SIP TSP to control it. More and more people
have VoIP lines now or are willing to scrap the analog line and add a
VoIP line.

0 new messages