diff options
author | kurtis.heimerl <kurtis.heimerl@19bc5d8c-e614-43d4-8b26-e1612bc8e597> | 2011-11-26 03:17:38 +0000 |
---|---|---|
committer | kurtis.heimerl <kurtis.heimerl@19bc5d8c-e614-43d4-8b26-e1612bc8e597> | 2011-11-26 03:17:38 +0000 |
commit | 58d6a01b50a1622af61b57ecd620d298879854d2 (patch) | |
tree | 2be0985a0af10599d1501c0f06c285a6901979b1 /Transceiver52M/radioInterface.cpp | |
parent | d1ae0cd2b979683cf0b1d061d4298be2cb297a01 (diff) |
transceiver: rework digital gain settings
The output of the modulator or resampler is scaled and
converted from floating point to fixed point. The scaling
factor is the leftover dB in RF attention (relative to max
transmit power), which is handled prior to the integer
conversion. This should work across all daughterboards and
non-UHD installations.
Signed-off-by: Thomas Tsou <ttsou@vt.edu>
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2650 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Diffstat (limited to 'Transceiver52M/radioInterface.cpp')
-rw-r--r-- | Transceiver52M/radioInterface.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/Transceiver52M/radioInterface.cpp b/Transceiver52M/radioInterface.cpp index e8eea6f..7e51fa4 100644 --- a/Transceiver52M/radioInterface.cpp +++ b/Transceiver52M/radioInterface.cpp @@ -101,15 +101,14 @@ double RadioInterface::fullScaleOutputValue(void) { } -void RadioInterface::setPowerAttenuation(double dBAtten) +void RadioInterface::setPowerAttenuation(double atten) { double HWatten = mRadio->setTxGain(mRadio->maxTxGain() - atten); - atten -= (-HWatten); + atten -= HWatten; if (atten < 1.0) powerScaling = 1.0; else - powerScaling = 1.0/sqrt(linearAtten); - LOG(INFO) << "setting HW gain to " << HWdBAtten << " and power scaling to " << powerScaling; + powerScaling = 1.0 / sqrt(pow(10, (atten / 10.0))); } |