|
From: <do_...@wu...> - 2013-10-18 15:00:04
|
Author: ttsou
Date: 2013-10-18 09:59:57 -0500 (Fri, 18 Oct 2013)
New Revision: 6761
Modified:
software/public/openbts/trunk/Transceiver52M/Transceiver.cpp
Log:
Transceiver52M: Update RSSI calculation
Use the same measurement method for RSSI as the noise level. Previous
method was to use the peak correlation amplitude relative to the
expected value. This created two very different amplitude approaches
between the noise measurement and RSSI measurement, which would
throw off the upper layer MS power control loop.
Signed-off-by: Thomas Tsou <to...@ts...>
Modified: software/public/openbts/trunk/Transceiver52M/Transceiver.cpp
===================================================================
--- software/public/openbts/trunk/Transceiver52M/Transceiver.cpp 2013-10-18 09:23:42 UTC (rev 6760)
+++ software/public/openbts/trunk/Transceiver52M/Transceiver.cpp 2013-10-18 14:59:57 UTC (rev 6761)
@@ -351,6 +351,7 @@
// Update noise level
mNoiseLev = mNoises.avg();
+ avg = sqrt(avg);
// run the proper correlator
if (corrType==TSC) {
@@ -394,7 +395,7 @@
}
else {
channelResponse[timeslot] = NULL;
- mNoises.insert(sqrt(avg));
+ mNoises.insert(avg);
}
}
else {
@@ -402,7 +403,7 @@
if (success = detectRACHBurst(*vectorBurst, 6.0, mSPSRx, &litude, &TOA))
channelResponse[timeslot] = NULL;
else
- mNoises.insert(sqrt(avg));
+ mNoises.insert(avg);
}
// demodulate burst
@@ -419,7 +420,7 @@
*DFEFeedback[timeslot]);
}
wTime = rxBurst->getTime();
- RSSI = (int) floor(20.0*log10(rxFullScale/amplitude.abs()));
+ RSSI = (int) floor(20.0*log10(rxFullScale/avg));
LOG(DEBUG) << "RSSI: " << RSSI;
timingOffset = (int) round(TOA * 256.0 / mSPSRx);
}
|