SDCCHLogicalChannel *GSMConfig::getSDCCH() { ScopedLock lock(mLock); SDCCHLogicalChannel *chan = getChan<SDCCHLogicalChannel>(mSDCCHPool,0); if (chan) chan->lcinit(); LOG(DEBUG) <<chan; return chan; }
void GSMConfig::createCombinationVII(TransceiverManager& TRX, unsigned CN, unsigned TN) { LOG_ASSERT((CN!=0)||(TN!=0)); LOG(NOTICE) << "Configuring combination VII on C" << CN << "T" << TN; ARFCNManager *radio = TRX.ARFCN(CN); radio->setSlot(TN,7); // (pat) 7 => Transciever.h enum ChannelCombination = VII for (int i=0; i<8; i++) { SDCCHLogicalChannel* chan = new SDCCHLogicalChannel(CN,TN,gSDCCH8[i]); chan->downstream(radio); Thread* thread = new Thread; thread->start((void*(*)(void*))Control::DCCHDispatcher,dynamic_cast<L3LogicalChannel*>(chan)); chan->lcinit(); if (CN == 0 && !testStart) chan->lcstart(); // Everything on C0 must broadcast continually. gBTS.addSDCCH(chan); } }