From 5a4a76a2cacc8e1dbc4d112ffad1343c28162ac2 Mon Sep 17 00:00:00 2001 From: Mathieu Rene Date: Thu, 4 Jun 2009 23:08:11 +0000 Subject: [PATCH] OPENZAP-76 git-svn-id: http://svn.openzap.org/svn/openzap/trunk@739 a93c3328-9c30-0410-af19-c9cd2b2d52af --- libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.c | 48 +++++++++++++--------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.c b/libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.c index 6ffedc29b6..db20ef95c5 100644 --- a/libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.c +++ b/libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.c @@ -372,25 +372,6 @@ static unsigned zt_open_range(zap_span_t *span, unsigned start, unsigned end, za zchan->native_codec = zchan->effective_codec = type; } - if(zt_globals.rxgain || zt_globals.txgain) { - struct zt_gains gains; - memset(&gains, 0, sizeof(gains)); - - gains.chan_no = ztp.chan_no; - zt_build_gains(&gains, zt_globals.rxgain, zt_globals.txgain, zchan->native_codec); - - if(zt_globals.rxgain) - zap_log(ZAP_LOG_INFO, "Setting rxgain to %f on channel %d\n", zt_globals.rxgain, gains.chan_no); - - if(zt_globals.txgain) - zap_log(ZAP_LOG_INFO, "Setting txgain to %f on channel %d\n", zt_globals.txgain, gains.chan_no); - - if (ioctl(sockfd, codes.SETGAINS, &gains) < 0) { - zap_log(ZAP_LOG_ERROR, "failure configuring device %s as OpenZAP device %d:%d fd:%d\n", chanpath, zchan->span_id, zchan->chan_id, sockfd); - close(sockfd); - continue; - } - } } ztp.wink_time = zt_globals.wink_ms; @@ -582,6 +563,35 @@ static ZIO_OPEN_FUNCTION(zt_open) } } } + if(zt_globals.rxgain || zt_globals.txgain) { + struct zt_gains gains; + memset(&gains, 0, sizeof(gains)); + + gains.chan_no = zchan->physical_chan_id; + zt_build_gains(&gains, zt_globals.rxgain, zt_globals.txgain, zchan->native_codec); + + if(zt_globals.rxgain) + zap_log(ZAP_LOG_INFO, "Setting rxgain to %f on channel %d\n", zt_globals.rxgain, gains.chan_no); + + if(zt_globals.txgain) + zap_log(ZAP_LOG_INFO, "Setting txgain to %f on channel %d\n", zt_globals.txgain, gains.chan_no); + + if (ioctl(zchan->sockfd, codes.SETGAINS, &gains) < 0) { + zap_log(ZAP_LOG_ERROR, "failure configuring device %s as OpenZAP device %d:%d fd:%d\n", chanpath, zchan->span_id, zchan->chan_id, zchan->sockfd); + } + } + + int len = zt_globals.eclevel; + zap_log(ZAP_LOG_INFO, "Setting echo cancel to %d taps for %d:%d\n", len, zchan->span_id, zchan->chan_id); + if (ioctl(zchan->sockfd, codes.ECHOCANCEL, &len)) { + zap_log(ZAP_LOG_WARNING, "Echo cancel not available for %d:%d\n", zchan->span_id, zchan->chan_id); + } else { + len = zt_globals.etlevel; + if (ioctl(zchan->sockfd, codes.ECHOTRAIN, &len)) { + zap_log(ZAP_LOG_WARNING, "Echo training not available for %d:%d\n", zchan->span_id, zchan->chan_id); + } + } + } return ZAP_SUCCESS; }