Dialogic Voice Cards - Why to use dx_blddtcad() for all tone defines
Symptom
When developing an application designed to detect user-defined tones, using a function other than dx_blddtcad() sometimes causes incorrect detection of tones.
Reason for the issue
At the library level, all tones are built as dual-frequency tones with a cadence value (repitition count). Aside from dx_blddtcad(), there are three APIs that can be used to create a user-defined tone. Each of these convenience functions automatically populates a portion of dx_blddtcad().
Each also has a potential drawback that can either cause a tone to be detected when it's not present or not detected when it is present.
The drawbacks fall into one of two categories:
In functions where cadence is not defined (dx_bldst(), dx_blddt()), the "on time" is also not defined. This means a tone can be detected if the defined frequency is present on the line for as little as 40ms! This is especially problematic with dx_bldst(), where even human voice can trigger a single frequency for that period of time.
When user-defined tones are used in an application, they are usually present on the line for significantly longer than DTMFs. While DTMFs are usually around 100ms long, user-defined tones are often 200-500ms or longer.
In functions where only one frequency is defined (dx_bldst(), dx_bldstcad()), there have been issues because of the way the tones are detected. All tones are detected as dual-frequency tones. When the dx_bldst*() convenience functions are used, the second frequency is automatically filled in as 0. Usually for single frequency tones, the second frequency equals 0, so there's no problem.
Sometimes, however, a second frequency is detected that is very close to the first frequency. This has been seen in the field, and can be resolved by making two definitions to dx_blddtcad().
Fix / Solution
Use dx_blddtcad() for all tone definitions. The small amount of extra data entry far outweighs the possibility of poor tone detection in the field.
Using dx_blddt() and dx_bldstcad() are relatively safe, but do have potential drawbacks that make it safer to use dx_blddtcad().
Avoid using dx_bldst() at all costs!
Product List
All JCT products
Glossary of Acronyms / Terms
DTMF -- dual-tone multi-frequency