On Sat, Jan 25, 2014 at 1:22 AM, Andreas Eversberg <andreas(a)eversberg.eu> wrote:
once a channel was activeated,
there will be RF power on the specific TS, even when osmo-bts does not send
bursts anymore. i guess that some filler table of osmo-trx causes it. i
think it would be nice if osmo-trx would stop transmitting, when there are
no more bursts comming from osmo-bts. (at least after a while.)
Yes, this is the behaviour of the filler table, which will resend the
previous frame until a new frame arrives. Sending an idle frame will
disable output, which is how the filler table is managed in OpenBTS.
You can disable the filler table with this patch.
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index e5ab476..9077465 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -197,19 +197,13 @@ void Transceiver::pushRadioVector(GSM::Time &nowTime)
TransceiverState *state;
std::vector<signalVector *> bursts(mChans);
std::vector<bool> zeros(mChans);
+ std::vector<bool> filler(mChans, true);
for (size_t i = 0; i < mChans; i ++) {
state = &mStates[i];
while ((burst = mTxPriorityQueues[i].getStaleBurst(nowTime))) {
LOG(NOTICE) << "dumping STALE burst in TRX->USRP interface";
-
- TN = burst->getTime().TN();
- modFN = burst->getTime().FN() % state->fillerModulus[TN];
-
- delete state->fillerTable[modFN][TN];
- state->fillerTable[modFN][TN] = burst->getVector();
- burst->setVector(NULL);
delete burst;
}
@@ -220,9 +214,8 @@ void Transceiver::pushRadioVector(GSM::Time &nowTime)
zeros[i] = state->chanType[TN] == NONE;
if ((burst = mTxPriorityQueues[i].getCurrentBurst(nowTime))) {
- delete state->fillerTable[modFN][TN];
- state->fillerTable[modFN][TN] = burst->getVector();
bursts[i] = burst->getVector();
+ filler[i] = false;
burst->setVector(NULL);
delete burst;
}
@@ -230,6 +223,11 @@ void Transceiver::pushRadioVector(GSM::Time &nowTime)
mRadioInterface->driveTransmitRadio(bursts, zeros);
+ for (size_t i = 0; i < mChans; i++) {
+ if (!filler[i])
+ delete bursts[i];
+ }
+
return;
}