mirror of
https://github.com/RangeNetworks/openbts.git
synced 2025-10-22 23:32:00 +00:00
Transceiver52M: Match handover and slot mask flags with TransceiverRAD1
The following flags affect GPRS performance.
Add flags for HANDOVER/NOHANDOVER commands, which force RACH burst
processing on selected slots. Also turn on the previously disabled
filler table slot mask (i.e. 'Magic flag').
These changes match Transceiver52M with TransceiverRAD1 command handling
that took place in commit
5289a229d9
'sync of openbts'
Signed-off-by: Thomas Tsou <tom@tsou.cc>
This commit is contained in:
committed by
Michael Iedema
parent
84fa77b18c
commit
eceec213a5
@@ -118,6 +118,7 @@ bool Transceiver::init()
|
||||
DFEForward[i] = NULL;
|
||||
DFEFeedback[i] = NULL;
|
||||
channelEstimateTime[i] = mTransmitDeadlineClock;
|
||||
mHandoverActive[i] = false;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -267,6 +268,9 @@ Transceiver::CorrType Transceiver::expectedCorrType(GSM::Time currTime)
|
||||
unsigned burstTN = currTime.TN();
|
||||
unsigned burstFN = currTime.FN();
|
||||
|
||||
if (mHandoverActive[burstTN])
|
||||
return RACH;
|
||||
|
||||
switch (mChanType[burstTN]) {
|
||||
case NONE:
|
||||
return OFF;
|
||||
@@ -593,10 +597,8 @@ void Transceiver::driveControl()
|
||||
sprintf(response,"RSP HANDOVER 1 %d",timeslot);
|
||||
}
|
||||
else {
|
||||
//mHandoverActive[ARFCN][timeslot] = true;
|
||||
//sprintf(response,"RSP HANDOVER 0 %d",timeslot);
|
||||
//handover fails! -kurtis
|
||||
sprintf(response,"RSP HANDOVER 1 %d",timeslot);
|
||||
mHandoverActive[timeslot] = true;
|
||||
sprintf(response,"RSP HANDOVER 0 %d",timeslot);
|
||||
}
|
||||
}
|
||||
else if (strcmp(command,"NOHANDOVER")==0) {
|
||||
@@ -608,10 +610,8 @@ void Transceiver::driveControl()
|
||||
sprintf(response,"RSP NOHANDOVER 1 %d",timeslot);
|
||||
}
|
||||
else {
|
||||
//mHandoverActive[ARFCN][timeslot] = false;
|
||||
//sprintf(response,"RSP NOHANDOVER 0 %d",timeslot);
|
||||
//hanover fails! -kurtis
|
||||
sprintf(response,"RSP NOHANDOVER 1 %d",timeslot);
|
||||
mHandoverActive[timeslot] = false;
|
||||
sprintf(response,"RSP NOHANDOVER 0 %d",timeslot);
|
||||
}
|
||||
}
|
||||
else if (strcmp(command,"SETSLOT")==0) {
|
||||
@@ -700,7 +700,7 @@ bool Transceiver::driveTransmitPriorityQueue()
|
||||
|
||||
radioVector *newVec = fixRadioVector(newBurst,RSSI,currTime);
|
||||
|
||||
if (false && fillerFlag) {
|
||||
if (fillerFlag) {
|
||||
setFiller(newVec,false,true);
|
||||
} else {
|
||||
mTransmitPriorityQueue.write(newVec);
|
||||
|
@@ -133,6 +133,7 @@ private:
|
||||
unsigned mTSC; ///< the midamble sequence code
|
||||
int fillerModulus[8]; ///< modulus values of all timeslots, in frames
|
||||
signalVector *fillerTable[102][8]; ///< table of modulated filler waveforms for all timeslots
|
||||
bool mHandoverActive[8];
|
||||
unsigned mMaxExpectedDelay; ///< maximum expected time-of-arrival offset in GSM symbols
|
||||
|
||||
GSM::Time channelEstimateTime[8]; ///< last timestamp of each timeslot's channel estimate
|
||||
|
Reference in New Issue
Block a user