[Asterisk-Dev] DTMF detection on Italian national analogue phone

Leandro leandro at texnet.it
Wed Dec 15 11:56:36 MST 2004


I noticed asterisk was unable to detect DTMF on italian national standard
analogue phone, Telecom Sirio.187, after you press flash-hook key, using
three-way-calling.
Before you press the flash-hook key (R on italian phone) DTMF is correctly
detected. After the press, you can still ear DTMF tones, but asterisk fails
to detect them.

Scrolling through the code in dsp.c I found the Sirio.187 fails the
"fraction of total energy test".

Here is the values of row_energy, col_energy and s->energy pressing a key
(4) before pressing the flash-hook key, so correctly detected by *.
Following there are results still pressing a key (4), but after pressing the
flash-hook key, so * not recognizing it.

Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 51197734912.000000
col_energy[best_row] = 79007612928.000000
s->energy = 2446498816.000000
Totalized = 130205347840.000000
Required =  102752950272.000000
Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 40048136192.000000
col_energy[best_row] = 68445212672.000000
s->energy = 2220868352.000000
Totalized = 108493348864.000000
Required =  93276470784.000000
Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 48126177280.000000
col_energy[best_row] = 73434710016.000000
s->energy = 2343587584.000000
Totalized = 121560887296.000000
Required =  98430678528.000000
Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 41578663936.000000
col_energy[best_row] = 69766201344.000000
s->energy = 2250892032.000000
Totalized = 111344865280.000000
Required =  94537465344.000000
Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 46268534784.000000
col_energy[best_row] = 73994788864.000000
s->energy = 2341982976.000000
Totalized = 120263323648.000000
Required =  98363284992.000000
Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 47956094976.000000
col_energy[best_row] = 76737814528.000000
s->energy = 2382856960.000000
Totalized = 124693909504.000000
Required =  100079992320.000000
Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 40457850880.000000
col_energy[best_row] = 67653341184.000000
s->energy = 2211096320.000000
Totalized = 108111192064.000000
Required =  92866045440.000000
Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 51918557184.000000
col_energy[best_row] = 77449338880.000000
s->energy = 2437239552.000000
Totalized = 129367896064.000000
Required =  102364061184.000000
Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 36203597824.000000
col_energy[best_row] = 65965674496.000000
s->energy = 2147873536.000000
Totalized = 102169272320.000000
Required =  90210688512.000000
Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 51488350208.000000
col_energy[best_row] = 78079942656.000000
s->energy = 2426924032.000000
Totalized = 129568292864.000000
Required =  101930809344.000000
Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 39871606784.000000
col_energy[best_row] = 66242617344.000000
s->energy = 2182198528.000000
Totalized = 106114224128.000000
Required =  91652338176.000000
Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 48861020160.000000
col_energy[best_row] = 78064590848.000000
s->energy = 2401483008.000000
Totalized = 126925611008.000000
Required =  100862286336.000000
Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52

Here the result for a key (4) pressed after the flash-hook.

Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 40055701504.000000
col_energy[best_row] = 68427182080.000000
s->energy = 2842917376.000000
Totalized = 108482883584.000000
Required =  119402529792.000000
Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 46886240256.000000
col_energy[best_row] = 75203706880.000000
s->energy = 3012673024.000000
Totalized = 122089947136.000000
Required =  126532267008.000000
Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 41132843008.000000
col_energy[best_row] = 68392464384.000000
s->energy = 2954963968.000000
Totalized = 109525307392.000000
Required =  124108486656.000000
Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 45613502464.000000
col_energy[best_row] = 77834403840.000000
s->energy = 2990991872.000000
Totalized = 123447906304.000000
Required =  125621658624.000000
Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 45468848128.000000
col_energy[best_row] = 65383550976.000000
s->energy = 2924743424.000000
Totalized = 110852399104.000000
Required =  122839223808.000000
Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 48466411520.000000
col_energy[best_row] = 77433192448.000000
s->energy = 2994533888.000000
Totalized = 125899603968.000000
Required =  125770423296.000000
Dec 15 19:45:39 NOTICE[26644]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 36973805568.000000
col_energy[best_row] = 68595224576.000000
s->energy = 2832371712.000000
Totalized = 105569030144.000000
Required =  118959611904.000000
Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 52560257024.000000
col_energy[best_row] = 73354240000.000000
s->energy = 3117404416.000000
Totalized = 125914497024.000000
Required =  130930985472.000000
Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 37500686336.000000
col_energy[best_row] = 68955963392.000000
s->energy = 2833644544.000000
Totalized = 106456649728.000000
Required =  119013070848.000000
Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
Sirio 187 Debug:
row_energy[best_row] = 49607892992.000000
col_energy[best_row] = 72208801792.000000
s->energy = 3053703168.000000
Totalized = 121816694784.000000
Required =  128255533056.000000

As you can notice the s->energy level is higher. I don't want to use an hack
and reduce manually the s->energy value to its 85%, but any idea about the
reasons? Take in mind that Sirio.187 made by Telecom is the wider used
analog phone here in Italy. It is the "de facto" standard.

Thank you

Leandro




More information about the asterisk-dev mailing list