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>
This commit is contained in:
parent
fa3a787ccb
commit
a1a3ab4bab
|
@ -329,6 +329,7 @@ SoftVector *Transceiver::pullRadioVector(GSM::Time &wTime,
|
|||
|
||||
// Update noise level
|
||||
mNoiseLev = mNoises.avg();
|
||||
avg = sqrt(avg);
|
||||
|
||||
// run the proper correlator
|
||||
if (corrType==TSC) {
|
||||
|
@ -372,7 +373,7 @@ SoftVector *Transceiver::pullRadioVector(GSM::Time &wTime,
|
|||
}
|
||||
else {
|
||||
channelResponse[timeslot] = NULL;
|
||||
mNoises.insert(sqrt(avg));
|
||||
mNoises.insert(avg);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -380,7 +381,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
|
||||
|
@ -397,7 +398,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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue