mirror of
https://github.com/RangeNetworks/openbts.git
synced 2025-10-23 07:42:01 +00:00
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 <tom@tsou.cc> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6761 19bc5d8c-e614-43d4-8b26-e1612bc8e597
This commit is contained in:
@@ -351,6 +351,7 @@ SoftVector *Transceiver::pullRadioVector(GSM::Time &wTime,
|
||||
|
||||
// Update noise level
|
||||
mNoiseLev = mNoises.avg();
|
||||
avg = sqrt(avg);
|
||||
|
||||
// run the proper correlator
|
||||
if (corrType==TSC) {
|
||||
@@ -394,7 +395,7 @@ SoftVector *Transceiver::pullRadioVector(GSM::Time &wTime,
|
||||
}
|
||||
else {
|
||||
channelResponse[timeslot] = NULL;
|
||||
mNoises.insert(sqrt(avg));
|
||||
mNoises.insert(avg);
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -402,7 +403,7 @@ SoftVector *Transceiver::pullRadioVector(GSM::Time &wTime,
|
||||
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 @@ SoftVector *Transceiver::pullRadioVector(GSM::Time &wTime,
|
||||
*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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user