MCPcopy Create free account
hub / github.com/RangeNetworks/openbts / processDownlinkAckNack

Function processDownlinkAckNack

GPRS/MAC.cpp:1851–1881  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1849}
1850
1851static void processDownlinkAckNack(PDCHL1FEC *pdch,RLCMsgPacketDownlinkAckNack* rmsg,RadData &rd)
1852{
1853 int tfi = rmsg->getTFI();
1854 TBF *tbf = pdch->getTFITBF(tfi,RLCDir::Down);
1855 if (tbf) {
1856 MSInfo *ms = tbf->mtMS;
1857 ms->talkedUp();
1858 ms->setRadData(rd);
1859 // Store the Channel Quality Report for reporting purposes.
1860 ms->msCValue.addPoint(rmsg->mCQR.mCValue);
1861 ms->msRXQual.addPoint(rmsg->mCQR.mRXQual);
1862 ms->msSigVar.addPoint(rmsg->mCQR.mSignVar);
1863 for (int tn = 0; tn < 8; tn++) {
1864 // Dont bother to differentiate this per timeslot.
1865 if (rmsg->mCQR.mHaveILevel[tn]) {ms->msILevel.addPoint(rmsg->mCQR.mILevel[tn]);}
1866 }
1867
1868 tbf->engineRecvAckNack(rmsg); // process the ack/nack part of the msg.
1869 if (rmsg->mHaveChannelRequest) { // Process the channel request, if any.
1870 TBF *uptbf = TBF::newUpTBF(ms,rmsg->mCRD,ms->msTlli,false);
1871
1872 if (uptbf) {
1873 GPRSLOG(1) <<"Uplink TBF from downlink AckNack" <<ms
1874 <<tbf <<" rlcmode=" <<tbf->mtUnAckMode
1875 <<" count tbfs=",ms->msCountActiveTBF(RLCDir::Up);
1876 }
1877 }
1878 } else {
1879 GPRSLOG(1) <<"ERROR: downlinkacknack for "<<LOGVAR(tfi)<<" with no TBF!";
1880 }
1881}
1882
1883static void uplinkCommon(uint32_t tlli, RadData &rd, const char *culprit)
1884{

Callers 1

processUplinkBlockFunction · 0.85

Calls 6

talkedUpMethod · 0.80
setRadDataMethod · 0.80
msCountActiveTBFMethod · 0.80
getTFIMethod · 0.45
getTFITBFMethod · 0.45
engineRecvAckNackMethod · 0.45

Tested by

no test coverage detected