[Home]

Summary:ASTERISK-13838: [patch] 1.6.1: unidirectional PCM if (FXS?) hardware DTMF detection enabled
Reporter:Tzafrir Cohen (tzafrir)Labels:
Date Opened:2009-03-26 06:26:20Date Closed:2009-06-25 16:10:56
Priority:BlockerRegression?Yes
Status:Closed/CompleteComponents:Channels/chan_dahdi
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) confmute.diff
( 1) v1-14761.patch
Description:The following is seems to be a regression between 1.6.0 to 1.6.1 . Tested it locally with Astribanks and also heard it reported with Sangoma A200 cards.

In this case, the caller does not get PCM once the call is established.

Workaround: disable hardwqre DTMF detection in the driver.
Comments:By: Tzafrir Cohen (tzafrir) 2009-04-25 07:57:41

Did some bisecting in the 1.6.1 branch.

Versions before r134260 fail to build with current DAHDI.

That version and on exhibits the problem.

By: Tzafrir Cohen (tzafrir) 2009-04-25 10:56:34

confmute is set on DTMFDOWN, but not reset on DTMFUP. A sample brute-force patch attached (confmute.diff)

By: Tzafrir Cohen (tzafrir) 2009-05-08 06:58:05

Maybe the problem is with the removal of the "else" case in handle_dtmf_up at r111022 ?

By: Leif Madsen (lmadsen) 2009-05-12 14:17:28

dimas: would you mind taking a look at this issue to determine if the patch you provided for issue ASTERISK-11413 could have caused a regression here? Thanks!

By: Dmitry Andrianov (dimas) 2009-05-12 15:08:20

Yeah, it looks like it could be me.
My patch was tested with software DTMF detection only because I had no board woth hardware detection available so I missed the logic how hardware-detected DTMF are processed.


tzafrir, I'm just curious why your patch not just returns the last "else" but does "unmute" a bit different? I believe "else { zt_confmute(p, 0); }" should work fine...

By: Dmitry Andrianov (dimas) 2009-05-12 20:01:29

Btw, after looking more at the code, I think that confmute(p, 0) should be not in the zt_handle_dtmfup but in the zt_handle_event instead (in the if which handles ZT_EVENT_DTMFUP - right before "return f;")

This way "unmute" code for the case of hardware-detected DTMFs will be close to the code which makes the "mute" call.

tzafrir, could you please test if it works because I still do not have the board with h/w detection. Thanks.

By: Tzafrir Cohen (tzafrir) 2009-05-13 07:30:29

dimas, you need some translation to dahdi: s/zt_/dahdi_/; s/ZT_/DAHDI_/

Adding 'dahdi_confmute(p, 0)' either at an else clause in the end of dahdi_handle_dtmfup() or in dahdi_handle_event right before the 'return f;' both work fine.

I'll note that dahdi_handle_dtmfup can also be called from dahdi_read . I'm not really sure at what scenario.

By: Dmitry Andrianov (dimas) 2009-05-13 08:26:18

tzafrir,
could you please test v1-14761.patch which tries to handle hardware-detected UP and DOWN in the same way instead of spreading the mute/unmute code into different functions)?

To my knowledge, dahdi_read calls dahdi_handle_dtmfup when software DTMF detection is used (in other words when ast_dsp_process returns DTMF END frame).

By: Tzafrir Cohen (tzafrir) 2009-05-13 15:07:32

dimas, this patch works as well.

By: Leif Madsen (lmadsen) 2009-05-28 22:30:21

What is needed to get this committed now?

By: Dmitry Andrianov (dimas) 2009-05-29 03:17:51

To my taste it is v1-14761.patch
However tzafrir is more involved into DAHDI/Zaptel stuff so lets ask him :)

By: Tzafrir Cohen (tzafrir) 2009-05-29 03:25:27

Works well here.

By: Leif Madsen (lmadsen) 2009-05-29 05:48:40

Then I presume this is ready to be committed. Marking as Ready for Review.

By: Digium Subversion (svnbot) 2009-06-25 14:22:47

Repository: asterisk
Revision: 203258

U   trunk/channels/chan_dahdi.c

------------------------------------------------------------------------
r203258 | qwell | 2009-06-25 14:22:47 -0500 (Thu, 25 Jun 2009) | 10 lines

Unmute when we get a dtmfup (we muted on dtmfdown) event.

This would occasionally cause one-way audio when using hardware DTMF detection.

(closes issue ASTERISK-13838)
Reported by: tzafrir
Patches:
     v1-14761.patch uploaded by dimas (license 88)
Tested by: tzafrir, dimas

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=203258

By: Digium Subversion (svnbot) 2009-06-25 14:27:06

Repository: asterisk
Revision: 203274

_U  branches/1.6.1/
U   branches/1.6.1/channels/chan_dahdi.c

------------------------------------------------------------------------
r203274 | qwell | 2009-06-25 14:27:05 -0500 (Thu, 25 Jun 2009) | 17 lines

Merged revisions 203258 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

........
 r203258 | qwell | 2009-06-25 14:22:46 -0500 (Thu, 25 Jun 2009) | 10 lines
 
 Unmute when we get a dtmfup (we muted on dtmfdown) event.
 
 This would occasionally cause one-way audio when using hardware DTMF detection.
 
 (closes issue ASTERISK-13838)
 Reported by: tzafrir
 Patches:
       v1-14761.patch uploaded by dimas (license 88)
 Tested by: tzafrir, dimas
........

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=203274

By: Digium Subversion (svnbot) 2009-06-25 14:27:13

Repository: asterisk
Revision: 203276

_U  branches/1.6.2/
U   branches/1.6.2/channels/chan_dahdi.c

------------------------------------------------------------------------
r203276 | qwell | 2009-06-25 14:27:11 -0500 (Thu, 25 Jun 2009) | 17 lines

Merged revisions 203258 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

........
 r203258 | qwell | 2009-06-25 14:22:46 -0500 (Thu, 25 Jun 2009) | 10 lines
 
 Unmute when we get a dtmfup (we muted on dtmfdown) event.
 
 This would occasionally cause one-way audio when using hardware DTMF detection.
 
 (closes issue ASTERISK-13838)
 Reported by: tzafrir
 Patches:
       v1-14761.patch uploaded by dimas (license 88)
 Tested by: tzafrir, dimas
........

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=203276

By: Digium Subversion (svnbot) 2009-06-25 16:10:55

Repository: asterisk
Revision: 203278

_U  branches/1.6.0/

------------------------------------------------------------------------
r203278 | qwell | 2009-06-25 16:10:55 -0500 (Thu, 25 Jun 2009) | 16 lines

Blocked revisions 203258 via svnmerge

........
 r203258 | qwell | 2009-06-25 14:22:46 -0500 (Thu, 25 Jun 2009) | 10 lines
 
 Unmute when we get a dtmfup (we muted on dtmfdown) event.
 
 This would occasionally cause one-way audio when using hardware DTMF detection.
 
 (closes issue ASTERISK-13838)
 Reported by: tzafrir
 Patches:
       v1-14761.patch uploaded by dimas (license 88)
 Tested by: tzafrir, dimas
........

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=203278