[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r10051 - openbts/branches/developers/dburgess00/trunk/
From: |
dburgess00 |
Subject: |
[Commit-gnuradio] r10051 - openbts/branches/developers/dburgess00/trunk/GSM |
Date: |
Tue, 25 Nov 2008 10:45:32 -0700 (MST) |
Author: dburgess00
Date: 2008-11-25 10:45:32 -0700 (Tue, 25 Nov 2008)
New Revision: 10051
Modified:
openbts/branches/developers/dburgess00/trunk/GSM/GSMConfig.cpp
openbts/branches/developers/dburgess00/trunk/GSM/GSML1FEC.cpp
Log:
Fix for bug #321 in TCHFACCHL1Encoder::sendFrame() blocking
mechanism.
Modified: openbts/branches/developers/dburgess00/trunk/GSM/GSMConfig.cpp
===================================================================
--- openbts/branches/developers/dburgess00/trunk/GSM/GSMConfig.cpp
2008-11-25 04:06:15 UTC (rev 10050)
+++ openbts/branches/developers/dburgess00/trunk/GSM/GSMConfig.cpp
2008-11-25 17:45:32 UTC (rev 10051)
@@ -144,9 +144,7 @@
++chan;
while (chan!=chanList.end()) {
unsigned thisLoad = (*chan)->load();
- if ((thisLoad<minLoad) ||
- ((thisLoad==minLoad) && (random()%2)) )
- {
+ if (thisLoad<minLoad) {
minLoad = thisLoad;
retVal = *chan;
}
@@ -168,10 +166,7 @@
unsigned pos = random() % sz;
for (unsigned i=0; i<sz; i++) {
ChanType *chan = chanList[pos];
- if (chan->recyclable()) {
- chan->open();
- return chan;
- }
+ if (chan->recyclable()) return chan;
pos = (pos+1) % sz;
}
return NULL;
@@ -185,6 +180,7 @@
{
mLock.lock();
SDCCHLogicalChannel *chan = getChan<SDCCHLogicalChannel>(mSDCCHPool);
+ if (chan) chan->open();
mLock.unlock();
return chan;
}
@@ -194,6 +190,7 @@
{
mLock.lock();
TCHFACCHLogicalChannel *chan =
getChan<TCHFACCHLogicalChannel>(mTCHPool);
+ if (chan) chan->open();
mLock.unlock();
return chan;
}
Modified: openbts/branches/developers/dburgess00/trunk/GSM/GSML1FEC.cpp
===================================================================
--- openbts/branches/developers/dburgess00/trunk/GSM/GSML1FEC.cpp
2008-11-25 04:06:15 UTC (rev 10050)
+++ openbts/branches/developers/dburgess00/trunk/GSM/GSML1FEC.cpp
2008-11-25 17:45:32 UTC (rev 10051)
@@ -1234,6 +1234,13 @@
void TCHFACCHL1Encoder::dispatch()
{
+
+ // No downstream? That's a problem.
+ assert(mDownstream);
+
+ // Get right with the system clock.
+ resync();
+
// If the channel is not active, wait for a multiframe and return.
// Most channels do not need this, becuase they are entirely data-driven
// from above. TCH/FACCH, however, must feed the interleaver on time.
@@ -1243,8 +1250,6 @@
return;
}
- assert(mDownstream);
-
// Let previous data get transmitted.
resync();
waitToSend();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r10051 - openbts/branches/developers/dburgess00/trunk/GSM,
dburgess00 <=