dahdi: Add compile time DAHDI_ECHOCAN_PROCESS_TX option.

Add optional interface to allow software echo cans to process the
transmitted samples.  Can be used for things like DC removal.

I used the following patches uploaded by biohumanoid but changed the
name of 'echocan_hpf_tx' to 'echoan_process_tx and put the changes
behind a compile time option.

(issue #13562)
Reported by: biohumanoid
Patches:
      kernel.h.patch uploaded by biohumanoid (license 459)
      dahdi-base.c.#2.patch uploaded by biohumanoid (license 459)

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Kinsey Moore <kmoore@digium.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9442 a0bf4364-ded3-4de4-8d8a-66a801d63aff
This commit is contained in:
Shaun Ruffell
2010-10-20 12:23:06 +00:00
parent 5b08a20526
commit 2ba1b4c201
3 changed files with 31 additions and 0 deletions

View File

@@ -2330,6 +2330,21 @@ static ssize_t dahdi_chan_write(struct file *file, const char __user *usrbuf,
}
chan->writen[res] = amnt;
}
#ifdef CONFIG_DAHDI_ECHOCAN_PROCESS_TX
if ((chan->ec_state) &&
(ECHO_MODE_ACTIVE == chan->ec_state->status.mode) &&
(chan->ec_state->ops->echocan_process_tx)) {
struct ec_state *const ec_state = chan->ec_state;
for (x = 0; x < chan->writen[res]; ++x) {
short tx;
tx = DAHDI_XLAW(chan->writebuf[res][x], chan);
ec_state->ops->echocan_process_tx(ec_state,
&tx, 1);
chan->writebuf[res][x] = DAHDI_LIN2X((int) tx,
chan);
}
}
#endif
chan->writeidx[res] = 0;
if (chan->flags & DAHDI_FLAG_FCS)
calc_fcs(chan, res);