Currently in our Eicon/Diva implementation of our code we use the Early Data B-Channel feature to let us monitor more closely what is happening with phone calls. That includes detection of SIT information, voice before a connection (ie operator without SIT) etc. Does such a feature exist within the Bvf Brooktrout world?
To make sure I understand, are you looking to place a call out and do gather call progress information before a call is answered? Or to monitor a B channel outside of a call?
Yes generally for Eicon we used to run our own tone detection stuff - to get as good a data as we can on why calls are nto going through etc. For now it looks like I have to rely on the internal stuff it seems?
If the ISDN connection announces that there is in-band call progress information (via an ISDN PROGRESS message), then the TR1034 will use that. You can use a callback function from BfvLineOriginateCall (or BfvCallWaitForComplete) to do your own call progress analysis. See the faxll.c sample application for an example of using a callback function during call establishment.
I already have the call progress function in play, but I am finding one situation which is not being handled cleanly right now by the Brooktrout hardware/software combination. We classify calls that do not answer into various categories like operator voice, sit, fast busy. Most are being detected ok by Brooktrout except for the 'operator voice' type situations. These are calls where there is a recording that comes on, no sit tones are generated and neither is a fast busy often. In this case the Brooktrout layers are not letting us easily determine the 'human voice' situation. Brooktrout returns them as 'no answer' which we will deal with differently than a 'operator voice' situation. We'll flip carriers on sit/fast busy/operator voice, but not usually for no answer. The rest of the results processing seems fine and matches up with our Eicon experiences.
The callback function allows you to perform your own call progress analysis. That includes analyzing the raw CP data that indicates presence and absence of energy in the frequency band. With that info, you could decide if you're receiving voice because of its irregular cadence and terminate the call from within the callback function.