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

Martin Harriss martin at Princeton.EDU
Wed Sep 12 14:04:38 CDT 2012


On 09/12/2012 02:18 AM, Pavel Troller wrote:
> 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


Pavel,

You might also like to look at this page:

http://octothorpe.info/site/asterisk-cnet

The patches there are for use by those of us who like to interface 
asterisk to antique electromechanical switches.  I'm curious to know 
what your application is!

Martin



More information about the asterisk-dev mailing list