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:
Thomas Tsou
2014-10-06 10:26:58 -07:00
committed by Michael Iedema
parent 84fa77b18c
commit eceec213a5
2 changed files with 10 additions and 9 deletions

View File

@@ -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);

View File

@@ -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