Dialogic Voice Cards - Why to use dx_blddtcad() for all tone defines

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:

  1. 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.  

  1. 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