[dahdi-commits] sruffell: linux/trunk r6564 - /linux/trunk/drivers/dahdi/voicebus/GpakCust.c
SVN commits to the DAHDI project
dahdi-commits at lists.digium.com
Tue May 5 12:32:33 CDT 2009
Author: sruffell
Date: Tue May 5 12:32:29 2009
New Revision: 6564
URL: http://svn.asterisk.org/svn-view/dahdi?view=rev&rev=6564
Log:
voicebus: Use the companding type on the span when enabling echocan.
Modified:
linux/trunk/drivers/dahdi/voicebus/GpakCust.c
Modified: linux/trunk/drivers/dahdi/voicebus/GpakCust.c
URL: http://svn.asterisk.org/svn-view/dahdi/linux/trunk/drivers/dahdi/voicebus/GpakCust.c?view=diff&rev=6564&r1=6563&r2=6564
==============================================================================
--- linux/trunk/drivers/dahdi/voicebus/GpakCust.c (original)
+++ linux/trunk/drivers/dahdi/voicebus/GpakCust.c Tue May 5 12:32:29 2009
@@ -212,6 +212,47 @@
return res;
}
+static int vpmadt032_enable_ec(struct vpmadt032 *vpm, int channel)
+{
+ int res;
+ GPAK_AlgControlStat_t pstatus;
+ GpakAlgCtrl_t control;
+
+ if (vpm->span) {
+ control = (DAHDI_LAW_ALAW == vpm->span->deflaw) ?
+ EnableALawSwCompanding :
+ EnableMuLawSwCompanding;
+ } else {
+ control = EnableMuLawSwCompanding;
+ }
+ printk(KERN_DEBUG "Enabling ecan on channel: %d (%s)\n", channel,
+ ((control == EnableMuLawSwCompanding) ?
+ "MuLaw" : "ALaw"));
+ res = gpakAlgControl(vpm->dspid, channel, control, &pstatus);
+ if (res) {
+ printk(KERN_WARNING "Unable to set SW Companding on " \
+ "channel %d (reason %d)\n", channel, res);
+ }
+ res = gpakAlgControl(vpm->dspid, channel, EnableEcanA, &pstatus);
+ return res;
+}
+
+static int vpmadt032_disable_ec(struct vpmadt032 *vpm, int channel)
+{
+ int res;
+ GPAK_AlgControlStat_t pstatus;
+
+ printk(KERN_DEBUG "Disabling ecan on channel: %d\n", channel);
+ res = gpakAlgControl(vpm->dspid, channel, BypassSwCompanding, &pstatus);
+ if (res) {
+ printk(KERN_WARNING "Unable to disable sw companding on " \
+ "echo cancellation channel %d (reason %d)\n",
+ channel, res);
+ }
+ res = gpakAlgControl(vpm->dspid, channel, BypassEcanA, &pstatus);
+ return res;
+}
+
/**
* vpmadt032_bh - Changes the echocan parameters on the vpmadt032 module.
*
@@ -272,19 +313,10 @@
}
} else if (desiredstate->tap_length != curstate->tap_length) {
- if (desiredstate->tap_length) {
- printk(KERN_DEBUG "Enabling ecan on channel: %d\n", channel);
- res = gpakAlgControl(vpm->dspid, channel, EnableMuLawSwCompanding, &pstatus);
- if (res)
- printk("Unable to set SW Companding on channel %d (reason %d)\n", channel, res);
- res = gpakAlgControl(vpm->dspid, channel, EnableEcanA, &pstatus);
- } else {
- printk(KERN_DEBUG "Disabling ecan on channel: %d\n", channel);
- res = gpakAlgControl(vpm->dspid, channel, BypassSwCompanding, &pstatus);
- if (res)
- printk("Unable to disable sw companding on echo cancellation channel %d (reason %d)\n", channel, res);
- res = gpakAlgControl(vpm->dspid, channel, BypassEcanA, &pstatus);
- }
+ if (desiredstate->tap_length)
+ res = vpmadt032_enable_ec(vpm, channel);
+ else
+ res = vpmadt032_disable_ec(vpm, channel);
}
vpm_bh_out:
if (!res)
More information about the dahdi-commits
mailing list