[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