[Home]

Summary:ASTERISK-17493: [patch] dsp.c sends multiple DTMF key events up to applications
Reporter:Alec Davis (alecdavis)Labels:
Date Opened:2011-03-01 21:05:33.000-0600Date Closed:2012-01-05 15:51:01.000-0600
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Applications/app_disa
Versions:Frequency of
Occurrence
Related
Issues:
causesASTERISK-19610 dsp.c can no longer detect a quick DTMF sequence
causesASTERISK-20442 dtmf callerid regression
Environment:Attachments:( 0) bug18094.diff.txt
( 1) bug18904-refactor.diff.txt
Description:When using a mobile phone to dial in to a DISA system, digits are regularly double and tripled up.

Using a landline with minimal interferance works nearly perfectly.



****** ADDITIONAL INFORMATION ******

in dsp.c DTMF_MISSES_TO_END is too short.

change from 3 to 6.

Increasing the value doesn't harm DTMF_HITS_TO_BEGIN as if a new different digit is tected then this overrides the misses counter.

Comments:By: Alec Davis (alecdavis) 2011-03-01 21:47:09.000-0600

console output with DTMF_MISSES_TO_END 3
I'm dial 8512 into the DISA
Additional debug printing in dsp.c and app_disa.c

  -- Executing [s@callback-dialtone:4] DISA("DAHDI/i1/021XXXXXX-1", "no-password,trusted") in new stack
[Mar  2 16:31:58] WARNING[2375]: dsp.c:1408 ast_dsp_process: DTMF BEG digit='8' len=0
[Mar  2 16:31:58] WARNING[2375]: dsp.c:1419 ast_dsp_process: DTMF END digit='8' len=102
[Mar  2 16:31:58] WARNING[2375]: app_disa.c:251 disa_exec: DISA digit='8'
[Mar  2 16:31:58] WARNING[2375]: dsp.c:1408 ast_dsp_process: DTMF BEG digit='8' len=0
[Mar  2 16:31:59] WARNING[2375]: dsp.c:1419 ast_dsp_process: DTMF END digit='8' len=1530
[Mar  2 16:31:59] WARNING[2375]: app_disa.c:251 disa_exec: DISA digit='8'
[Mar  2 16:31:59] WARNING[2375]: dsp.c:1408 ast_dsp_process: DTMF BEG digit='5' len=102
[Mar  2 16:31:59] WARNING[2375]: dsp.c:1419 ast_dsp_process: DTMF END digit='5' len=714
[Mar  2 16:31:59] WARNING[2375]: app_disa.c:251 disa_exec: DISA digit='5'
[Mar  2 16:32:00] WARNING[2375]: dsp.c:1408 ast_dsp_process: DTMF BEG digit='5' len=0
[Mar  2 16:32:00] WARNING[2375]: dsp.c:1419 ast_dsp_process: DTMF END digit='5' len=0
[Mar  2 16:32:00] WARNING[2375]: app_disa.c:251 disa_exec: DISA digit='5'
   -- Executing [8855@trusted:1] Dial("DAHDI/i1/021496205-1", "DAHDI/r0/8855") in new stack
   -- Requested transfer capability: 0x00 - SPEECH
   -- Called r0/8855
[Mar  2 16:32:00] WARNING[2375]: dsp.c:1408 ast_dsp_process: DTMF BEG digit='1' len=0
   -- DAHDI/i1/8855-2 is proceeding passing it to DAHDI/i1/021XXXXXX-1
[Mar  2 16:32:00] WARNING[2375]: dsp.c:1419 ast_dsp_process: DTMF END digit='1' len=510
[Mar  2 16:32:00] WARNING[2375]: dsp.c:1408 ast_dsp_process: DTMF BEG digit='1' len=0



By: Alec Davis (alecdavis) 2011-03-01 21:49:36.000-0600

working console output with DTMF_MISSES_TO_END 6
I'm dial 8512 into the DISA
Additional debug printing in dsp.c and app_disa.c

   -- Executing [s@callback-dialtone:4] DISA("DAHDI/i1/021XXXXXX-1", "no-password,trusted") in new stack
[Mar  2 16:34:48] WARNING[3022]: dsp.c:1408 ast_dsp_process: DTMF BEG digit='8' len=102
[Mar  2 16:34:48] WARNING[3022]: dsp.c:1419 ast_dsp_process: DTMF END digit='8' len=1836
[Mar  2 16:34:48] WARNING[3022]: app_disa.c:251 disa_exec: DISA digit='8'
[Mar  2 16:34:49] WARNING[3022]: dsp.c:1408 ast_dsp_process: DTMF BEG digit='5' len=0
[Mar  2 16:34:49] WARNING[3022]: dsp.c:1419 ast_dsp_process: DTMF END digit='5' len=1530
[Mar  2 16:34:49] WARNING[3022]: app_disa.c:251 disa_exec: DISA digit='5'
[Mar  2 16:34:50] WARNING[3022]: dsp.c:1408 ast_dsp_process: DTMF BEG digit='1' len=0
[Mar  2 16:34:50] WARNING[3022]: dsp.c:1419 ast_dsp_process: DTMF END digit='1' len=1938
[Mar  2 16:34:50] WARNING[3022]: app_disa.c:251 disa_exec: DISA digit='1'
[Mar  2 16:34:50] WARNING[3022]: dsp.c:1408 ast_dsp_process: DTMF BEG digit='2' len=0
[Mar  2 16:34:51] WARNING[3022]: dsp.c:1419 ast_dsp_process: DTMF END digit='2' len=1734
[Mar  2 16:34:51] WARNING[3022]: app_disa.c:251 disa_exec: DISA digit='2'
   -- Executing [8512@trusted:1] Dial("DAHDI/i1/021XXXXXX-1", "DAHDI/r0/8512") in new stack
   -- Requested transfer capability: 0x00 - SPEECH
   -- Called r0/8512

By: Alec Davis (alecdavis) 2011-03-02 05:30:46.000-0600

Changing the DTMF_MISSES_TO_END to more than 4, then prevents fast 50ms DTMF rate, but still assist's with mobile phone DISA.

bug18904-refactor.diff.txt
clean up 'edge detection' section of dtmf_detect, saving on continuous writes every iteration of this.
Only reset hits and misses on a DTMF EDGE.



By: Alec Davis (alecdavis) 2011-03-02 14:13:54.000-0600

Now with bug18904-refactor.diff.txt which has the DTMF_MISSES_TO_END set to 4

When dialling into VoiceMailMain from a landline, previously you had to carefully enter mailbox number and password.
After multiple attempts entering as fast as I possibly can, I cannot get a misread.

When dialling in from mobile phone, to DISA or VOICEMAIL, same positive experience.

Hopefully our receptionist now won't get so many calls that users couldn't use the IVR, or that app_directory selected the wrong user.



By: David Brillert (aragon) 2011-03-18 08:12:39

alecdavis: Is this patch/ticket related to one of my open tickets ASTERISK-17364 ?

By: David Brillert (aragon) 2011-03-18 08:17:04

If they are related then I would like to test your patch.
Can you provide 1.4 SVN version of patch?

EDIT: If try to patch SVN r311203 I get these failures
patching file main/dsp.c
Hunk #1 FAILED at 209.
Hunk #2 FAILED at 723.
Hunk #3 FAILED at 1405.
Hunk #4 FAILED at 1415.
4 out of 4 hunks FAILED -- saving rejects to file main/dsp.c.rej



By: Alec Davis (alecdavis) 2011-03-18 13:49:31

Differences for dsp.c between 1.4 and trunk are very different, sorry.

By: David Brillert (aragon) 2011-03-18 13:51:48

Thanks for the response :)