[asterisk-dev] DAHDI-analog: Unmuting backward audio path when dialing ?

Pavel Troller patrol at sinus.cz
Wed Sep 12 07:44:34 CDT 2012


Hi!
  Sorry for making noise. I didn't search carefully enough. Now I found the place,
it's in chan_dahdi.c, in the dahdi_read() function. Now the signalling works
absolutely perfectly for me :-).
  With regards,
    Pavel

> Hi!
>   I'm writing a custom signalling mode for DAHDI analog. One of things, which
> I would like to achieve, is to be able to permanently listen to the channel
> audio even in the dialling (especially pulse mode) state, to hear the dial
> clicks and the cooperating switch responses (in interdigit pauses).
>   I've found, that there is the "dialing" member of the private channel
> structure, which, when set, causes the backward audio path to be blocked.
> It is used for dialing control as well, so it's not possible just to prevent
> it being set. 
>   I tried to patch __dahdi_process_putaudio_chunk() in dahdi-base.c driver:
> 
> 
> static inline void __dahdi_process_putaudio_chunk(struct dahdi_chan *ss, unsigned char *rxb)
> {
>         /* We transmit data from our master channel */
>         /* Called with ss->lock held */
>         struct dahdi_chan *ms = ss->master;
>         /* Linear version of received data */
>         short putlin[DAHDI_CHUNKSIZE],k[DAHDI_CHUNKSIZE];
>         int x,r;
>                         vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
> --->    if (ms->dialing && (ms->sig != DAHDI_SIG_UNI)) ms->afterdialingtimer = 50;
>         else if (ms->afterdialingtimer) ms->afterdialingtimer--;
>         if (ms->afterdialingtimer && !is_pseudo_chan(ms)) {
>                 /* Be careful since memset is likely a macro */
>                 rxb[0] = DAHDI_LIN2X(0, ms);
>                 memset(&rxb[1], rxb[0], DAHDI_CHUNKSIZE - 1);  /* receive as silence if dialing */
>         }
> ...
> 
> where DAHDI_SIG_UNI is my private signalling being implemented. When the
> patch is not there, I'm getting the silent code on the channel (which is
> exactly what the routine is doing). But when it is there, I'm still not
> getting the audio, I'm getting no data instead (the difference is, that
> for example the SIP phone starts to play its own comfort noise because
> it's not getting RTP data).
> 
> I'm pretty sure that the hardware and driver can send data even during the
> dialling - when I forcibly clear the dialing variable, I can hear the audio
> including dial clicks etc., but the dialling logic is disturbed and dialing
> stops after the first digit is sent. 
> 
> I'm unable to find another place, which probably either stops reading audio
> from the channel or stops bridging them to the originating channel - I
> scanned chan_dahdi.c, sig_analog.c and physical DAHDI card driver, but
> to no avail. 
> 
> With regards,
>   Pavel
> 
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
> 
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev



More information about the asterisk-dev mailing list