25 #include "ns3/lte-rrc-header.h" 
   30 #define MAX_DRB 11 // According to section 6.4 3GPP TS 36.331 
   31 #define MAX_EARFCN 262143 
   32 #define MAX_RAT_CAPABILITIES 8 
   33 #define MAX_SI_MESSAGE 32 
   36 #define MAX_REPORT_CONFIG_ID 32 
   37 #define MAX_OBJECT_ID 32 
   38 #define MAX_MEAS_ID 32 
   39 #define MAX_CELL_MEAS 32 
   40 #define MAX_CELL_REPORT 8 
   42 #define MAX_SCELL_REPORT 5 
   43 #define MAX_SCELL_CONF 5 
   83       case 15: n = 1; 
break;
 
   84       case 25: n = 2; 
break;
 
   85       case 50: n = 3; 
break;
 
   86       case 75: n = 4; 
break;
 
   87       case 100: n = 5; 
break;
 
  100       case 0: bw = 6; 
break;
 
  101       case 1: bw = 15; 
break;
 
  102       case 2: bw = 25; 
break;
 
  103       case 3: bw = 50; 
break;
 
  104       case 4: bw = 75; 
break;
 
  105       case 5: bw = 100; 
break;
 
  119   std::list<LteRrcSap::DrbToAddMod>::iterator it = drbToAddModList.begin ();
 
  120   for (; it != drbToAddModList.end (); it++)
 
  124       std::bitset<5> drbToAddModListOptionalFieldsPresent = std::bitset<5> ();
 
  125       drbToAddModListOptionalFieldsPresent.set (4,1); 
 
  126       drbToAddModListOptionalFieldsPresent.set (3,0); 
 
  127       drbToAddModListOptionalFieldsPresent.set (2,1); 
 
  128       drbToAddModListOptionalFieldsPresent.set (1,1); 
 
  129       drbToAddModListOptionalFieldsPresent.set (0,1); 
 
  138       switch (it->rlcConfig.choice)
 
  207   std::list<LteRrcSap::SrbToAddMod>::iterator it = srbToAddModList.begin ();
 
  208   for (; it != srbToAddModList.end (); it++)
 
  212       std::bitset<2> srbToAddModListOptionalFieldsPresent = std::bitset<2> ();
 
  213       srbToAddModListOptionalFieldsPresent.set (1,0); 
 
  214       srbToAddModListOptionalFieldsPresent.set (0,1); 
 
  244   int prioritizedBitRate;
 
  248       prioritizedBitRate = 0;
 
  251       prioritizedBitRate = 1;
 
  254       prioritizedBitRate = 2;
 
  257       prioritizedBitRate = 3;
 
  260       prioritizedBitRate = 4;
 
  263       prioritizedBitRate = 5;
 
  266       prioritizedBitRate = 6;
 
  269       prioritizedBitRate = 7;          
 
  274   int bucketSizeDuration;
 
  278       bucketSizeDuration = 0;
 
  281       bucketSizeDuration = 1;
 
  284       bucketSizeDuration = 2;
 
  287       bucketSizeDuration = 3;
 
  290       bucketSizeDuration = 4;
 
  293       bucketSizeDuration = 5;
 
  296       bucketSizeDuration = 5;
 
  308   std::bitset<10> optionalFieldsPhysicalConfigDedicated;
 
  310   optionalFieldsPhysicalConfigDedicated.set (8,0);  
 
  311   optionalFieldsPhysicalConfigDedicated.set (7,0);  
 
  312   optionalFieldsPhysicalConfigDedicated.set (6,0);  
 
  313   optionalFieldsPhysicalConfigDedicated.set (5,0);  
 
  314   optionalFieldsPhysicalConfigDedicated.set (4,0);  
 
  315   optionalFieldsPhysicalConfigDedicated.set (3,0);  
 
  318   optionalFieldsPhysicalConfigDedicated.set (0,0);  
 
  404   bool isSrbToAddModListPresent = !radioResourceConfigDedicated.
srbToAddModList.empty ();
 
  405   bool isDrbToAddModListPresent = !radioResourceConfigDedicated.
drbToAddModList.empty ();
 
  406   bool isDrbToReleaseListPresent = !radioResourceConfigDedicated.
drbToReleaseList.empty ();
 
  409   std::bitset<6> optionalFieldsPresent = std::bitset<6> ();
 
  410   optionalFieldsPresent.set (5,isSrbToAddModListPresent);  
 
  411   optionalFieldsPresent.set (4,isDrbToAddModListPresent);  
 
  412   optionalFieldsPresent.set (3,isDrbToReleaseListPresent);  
 
  413   optionalFieldsPresent.set (2,0);  
 
  414   optionalFieldsPresent.set (1,0);  
 
  419   if (isSrbToAddModListPresent)
 
  425   if (isDrbToAddModListPresent)
 
  431   if (isDrbToReleaseListPresent)
 
  434       std::list<uint8_t>::iterator it = radioResourceConfigDedicated.
drbToReleaseList.begin ();
 
  452   std::bitset<3> sysInfoBlk1Opts;
 
  453   sysInfoBlk1Opts.set (2,0); 
 
  454   sysInfoBlk1Opts.set (1,0); 
 
  455   sysInfoBlk1Opts.set (0,0); 
 
  511   std::bitset<9> rrCfgCmmOpts;
 
  512   rrCfgCmmOpts.set (8,1); 
 
  513   rrCfgCmmOpts.set (7,0); 
 
  514   rrCfgCmmOpts.set (6,0); 
 
  515   rrCfgCmmOpts.set (5,0); 
 
  516   rrCfgCmmOpts.set (4,0); 
 
  517   rrCfgCmmOpts.set (3,0); 
 
  518   rrCfgCmmOpts.set (2,0); 
 
  519   rrCfgCmmOpts.set (1,0); 
 
  520   rrCfgCmmOpts.set (0,0); 
 
  653     std::bitset<4> measResultOptional;
 
  655     measResultOptional.set (2, 
false); 
 
  656     measResultOptional.set (1, 
false); 
 
  681       std::list<LteRrcSap::MeasResultEutra>::iterator it;
 
  703               if (!it->cgiInfo.plmnIdentityList.empty ())
 
  706                   std::list<uint32_t>::iterator it2;
 
  707                   for (it2 = it->cgiInfo.plmnIdentityList.begin (); it2 != it->cgiInfo.plmnIdentityList.end (); it2++)
 
  715           std::bitset<2> measResultFieldsPresent;
 
  716           measResultFieldsPresent[1] = it->haveRsrpResult;
 
  717           measResultFieldsPresent[0] = it->haveRsrqResult;
 
  720           if (it->haveRsrpResult)
 
  725           if (it->haveRsrqResult)
 
  736         std::list<LteRrcSap::MeasResultScell>::iterator it;
 
  742             std::bitset<2> measResultScellPresent;
 
  748             std::bitset<2> measResultScellFieldsPresent;
 
  749             measResultScellFieldsPresent[1] = it->haveRsrpResult;
 
  750             measResultScellFieldsPresent[0] = it->haveRsrqResult;
 
  753             if (it->haveRsrpResult)
 
  758             if (it->haveRsrqResult)
 
  774   int nDig = (plmnId > 99) ? 3 : 2;
 
  777   for (
int i = nDig - 1; i >= 0; i--)
 
  779       int n = floor (plmnId / pow (10,i));
 
  781       plmnId -= n * pow (10,i);
 
  935   switch (qOffsetRange)
 
 1038   switch (thresholdEutra.
choice)
 
 1056   std::bitset<11> measConfigOptional;
 
 1066   measConfigOptional.set (1, 
false ); 
 
 1089           std::bitset<5> measObjOpts;
 
 1090           measObjOpts.set (4,!it->measObjectEutra.cellsToRemoveList.empty () );
 
 1091           measObjOpts.set (3,!it->measObjectEutra.cellsToAddModList.empty () );
 
 1092           measObjOpts.set (2,!it->measObjectEutra.blackCellsToRemoveList.empty () );
 
 1093           measObjOpts.set (1,!it->measObjectEutra.blackCellsToAddModList.empty () );
 
 1094           measObjOpts.set (0,it->measObjectEutra.haveCellForWhichToReportCGI);
 
 1107           if (!it->measObjectEutra.cellsToRemoveList.empty ())
 
 1110               for (std::list<uint8_t>::iterator it2 = it->measObjectEutra.cellsToRemoveList.begin (); it2 != it->measObjectEutra.cellsToRemoveList.end (); it2++)
 
 1116           if (!it->measObjectEutra.cellsToAddModList.empty ())
 
 1119               for (std::list<LteRrcSap::CellsToAddMod>::iterator it2 = it->measObjectEutra.cellsToAddModList.begin (); it2 != it->measObjectEutra.cellsToAddModList.end (); it2++)
 
 1134           if (!it->measObjectEutra.blackCellsToRemoveList.empty () )
 
 1137               for (std::list<uint8_t>::iterator it2 = it->measObjectEutra.blackCellsToRemoveList.begin (); it2 != it->measObjectEutra.blackCellsToRemoveList.end (); it2++)
 
 1143           if (!it->measObjectEutra.blackCellsToAddModList.empty () )
 
 1146               for (std::list<LteRrcSap::BlackCellsToAddMod>::iterator it2 = it->measObjectEutra.blackCellsToAddModList.begin (); it2 != it->measObjectEutra.blackCellsToAddModList.end (); it2++)
 
 1153                   std::bitset<1> rangePresent = std::bitset<1> (it2->physCellIdRange.haveRange);
 
 1156                   if (it2->physCellIdRange.haveRange)
 
 1158                       switch (it2->physCellIdRange.range)
 
 1210           if (it->measObjectEutra.haveCellForWhichToReportCGI)
 
 1238           switch (it->reportConfigEutra.triggerType)
 
 1243               switch (it->reportConfigEutra.purpose)
 
 1257               switch (it->reportConfigEutra.eventId)
 
 1290               switch (it->reportConfigEutra.timeToTrigger)
 
 1367           switch (it->reportConfigEutra.reportInterval)
 
 1420           switch (it->reportConfigEutra.reportAmount)
 
 1473       std::bitset<4> quantityConfigOpts (0);
 
 1474       quantityConfigOpts.set (3,1);
 
 1712     std::bitset<3> noncriticalExtension_v1020;
 
 1713     noncriticalExtension_v1020.set (2,0); 
 
 1714     noncriticalExtension_v1020.set (1,1); 
 
 1715     noncriticalExtension_v1020.set (0,0); 
 
 1722             std::bitset<4> sCellToAddMod_r10;
 
 1723             sCellToAddMod_r10.set (3,1); 
 
 1724             sCellToAddMod_r10.set (2,1); 
 
 1725             sCellToAddMod_r10.set (1,1); 
 
 1726             sCellToAddMod_r10.set (0,it->haveRadioResourceConfigDedicatedSCell); 
 
 1731             std::bitset<2> cellIdentification_r10;
 
 1732             cellIdentification_r10.set(1,1); 
 
 1733             cellIdentification_r10.set(0,1); 
 
 1742             if (it->haveRadioResourceConfigDedicatedSCell)
 
 1760     std::bitset<2> radioResourceConfigCommonSCell_r10;
 
 1768         std::bitset<5> nonUlConfiguration_r10;
 
 1769         nonUlConfiguration_r10.set (4,1); 
 
 1770         nonUlConfiguration_r10.set (3,1); 
 
 1771         nonUlConfiguration_r10.set (2,0); 
 
 1772         nonUlConfiguration_r10.set (1,1); 
 
 1773         nonUlConfiguration_r10.set (0,0); 
 
 1778         std::bitset<1> antennaInfoCommon_r10;
 
 1779         antennaInfoCommon_r10.set (0,1);
 
 1783         std::bitset<2> pdschConfigCommon_r10;
 
 1784         pdschConfigCommon_r10.set (1,1);
 
 1785         pdschConfigCommon_r10.set (0,1);
 
 1796         std::bitset<7> UlConfiguration_r10;
 
 1797         UlConfiguration_r10.set (6,1); 
 
 1798         UlConfiguration_r10.set (5,0); 
 
 1799         UlConfiguration_r10.set (4,1); 
 
 1800         UlConfiguration_r10.set (3,0); 
 
 1801         UlConfiguration_r10.set (2,0); 
 
 1802         UlConfiguration_r10.set (1,1); 
 
 1803         UlConfiguration_r10.set (0,0); 
 
 1807          std::bitset<3> FreqInfo_r10;
 
 1808          FreqInfo_r10.set (2,1); 
 
 1809          FreqInfo_r10.set (1,1); 
 
 1810          FreqInfo_r10.set (0,0); 
 
 1817          std::bitset<2> UlPowerControlCommonSCell_r10;
 
 1818          UlPowerControlCommonSCell_r10.set (1,0); 
 
 1819          UlPowerControlCommonSCell_r10.set (0,1); 
 
 1828          std::bitset<1> prachConfigSCell_r10;
 
 1829          prachConfigSCell_r10.set(0,1);
 
 1840     std::bitset<1> RadioResourceConfigDedicatedSCell_r10;
 
 1841     RadioResourceConfigDedicatedSCell_r10.set (0,1);
 
 1851     std::bitset<2> pcdscOpt;
 
 1859         std::bitset<4> nulOpt;
 
 1905         std::bitset<7> ulOpt;
 
 1987   int thresholdEutraChoice, range;
 
 1990   switch (thresholdEutraChoice)
 
 1995       thresholdEutra->
range = range;
 
 2001       thresholdEutra->
range = range;
 
 2015       *qOffsetRange = -24;
 
 2018       *qOffsetRange = -22;
 
 2021       *qOffsetRange = -20;
 
 2024       *qOffsetRange = -18;
 
 2027       *qOffsetRange = -16;
 
 2030       *qOffsetRange = -14;
 
 2033       *qOffsetRange = -12;
 
 2036       *qOffsetRange = -10;
 
 2115   std::bitset<6> optionalFieldsPresent = std::bitset<6> ();
 
 2118   if (optionalFieldsPresent[5])
 
 2124   if (optionalFieldsPresent[4])
 
 2130   if (optionalFieldsPresent[3])
 
 2136       for (
int i = 0; i < n; i++)
 
 2143   if (optionalFieldsPresent[2])
 
 2149   if (optionalFieldsPresent[1])
 
 2156   if (optionalFieldsPresent[0])
 
 2171   srbToAddModList->clear ();
 
 2174   for (
int i = 0; i < numElems; i++)
 
 2179       std::bitset<2> optionalFields;
 
 2187       if (optionalFields[1])
 
 2193       if (optionalFields[0])
 
 2211       srbToAddModList->insert (srbToAddModList->end (),srbToAddMod);
 
 2224   drbToAddModList->clear ();
 
 2226   for (
int i = 0; i < n; i++)
 
 2230       std::bitset<5> optionalFields;
 
 2233       if (optionalFields[4])
 
 2243       if (optionalFields[3])
 
 2249       if (optionalFields[2])
 
 2256           std::bitset<0> bitset0;
 
 2308       if (optionalFields[1])
 
 2314       if (optionalFields[0])
 
 2319       drbToAddModList->insert (drbToAddModList->end (),drbToAddMod);
 
 2331   std::bitset<1> bitset1;
 
 2341       logicalChannelConfig->
priority = n;
 
 2345       uint16_t prioritizedBitRateKbps;
 
 2350           prioritizedBitRateKbps = 0;
 
 2353           prioritizedBitRateKbps = 8;
 
 2356           prioritizedBitRateKbps = 16;
 
 2359           prioritizedBitRateKbps = 32;
 
 2362           prioritizedBitRateKbps = 64;
 
 2365           prioritizedBitRateKbps = 128;
 
 2368           prioritizedBitRateKbps = 256;
 
 2371           prioritizedBitRateKbps = 10000;
 
 2374           prioritizedBitRateKbps = 10000;
 
 2380       uint16_t bucketSizeDurationMs;
 
 2384           bucketSizeDurationMs = 50;
 
 2387           bucketSizeDurationMs = 100;
 
 2390           bucketSizeDurationMs = 150;
 
 2393           bucketSizeDurationMs = 300;
 
 2396           bucketSizeDurationMs = 500;
 
 2399           bucketSizeDurationMs = 1000;
 
 2402           bucketSizeDurationMs = 1000;
 
 2419   std::bitset<10> optionalFieldPresent;
 
 2423   if (optionalFieldPresent[9])
 
 2426       std::bitset<0> bitset0;
 
 2438   if (optionalFieldPresent[8])
 
 2443   if (optionalFieldPresent[7])
 
 2448   if (optionalFieldPresent[6])
 
 2453   if (optionalFieldPresent[5])
 
 2458   if (optionalFieldPresent[4])
 
 2463   if (optionalFieldPresent[3])
 
 2469   if (optionalFieldPresent[2])
 
 2486           std::bitset<0> bitset0;
 
 2517   if (optionalFieldPresent[1])
 
 2528           std::bitset<1> codebookSubsetRestrictionPresent;
 
 2535           if (codebookSubsetRestrictionPresent[0])
 
 2541           int txantennaselchosen;
 
 2543           if (txantennaselchosen == 0)
 
 2548           else if (txantennaselchosen == 1)
 
 2555   if (optionalFieldPresent[0])
 
 2567   NS_FATAL_ERROR (
"RrcAsn1Header Print() function must also specify LteRrcSap::RadioResourceConfigDedicated as a second argument");
 
 2574     std::bitset<2> nonCriticalExtension_v890;
 
 2577     if (nonCriticalExtension_v890[0])
 
 2580         std::bitset<3> nonCriticalExtension_v920;
 
 2582         if (nonCriticalExtension_v920[0])
 
 2585             std::bitset<3> nonCriticalExtension_v1020;
 
 2587             NS_ASSERT (!nonCriticalExtension_v1020[2]); 
 
 2588             NS_ASSERT (nonCriticalExtension_v1020[1]); 
 
 2589             NS_ASSERT (!nonCriticalExtension_v1020[0]); 
 
 2595             for (
int i = 0; i < numElems; i++)
 
 2597                 std::bitset<4> sCellToAddMod_r10;
 
 2614                 if (sCellToAddMod_r10[0])
 
 2632     std::bitset<2> cellIdentification_r10;
 
 2650     std::bitset<2> radioResourceConfigCommonSCell_r10;
 
 2656         std::bitset<5> nonUlConfiguration_r10;
 
 2662         std::bitset<1> antennaInfoCommon_r10;
 
 2667         std::bitset<2> pdschConfigCommon_r10;
 
 2676         std::bitset<7> UlConfiguration_r10;
 
 2679         std::bitset<3> FreqInfo_r10;
 
 2687         std::bitset<2> UlPowerControlCommonSCell_r10;
 
 2692         std::bitset<1> prachConfigSCell_r10;
 
 2705     std::bitset<1> RadioResourceConfigDedicatedSCell_r10;
 
 2716     std::bitset<2> pcdscOpt;
 
 2722          std::bitset<4> nulOpt;
 
 2740                  std::bitset<1> codebookSubsetRestrictionPresent;
 
 2747                  if (codebookSubsetRestrictionPresent[0])
 
 2754                  int txantennaselchosen;
 
 2756                  if (txantennaselchosen == 0)
 
 2761                  else if (txantennaselchosen == 1)
 
 2772              std::bitset<0> bitset0;
 
 2787          std::bitset<7> ulOpt;
 
 2808                  std::bitset<1> codebookSubsetRestrictionPresent;
 
 2815                  if (codebookSubsetRestrictionPresent[0])
 
 2822                  int txantennaselchosen;
 
 2824                  if (txantennaselchosen == 0)
 
 2829                  else if (txantennaselchosen == 1)
 
 2854                  std::bitset<0> bitset0;
 
 2893   os << 
"   srbToAddModList: " << std::endl;
 
 2894   std::list<LteRrcSap::SrbToAddMod>::iterator it = radioResourceConfigDedicated.
srbToAddModList.begin ();
 
 2895   for (; it != radioResourceConfigDedicated.
srbToAddModList.end (); it++)
 
 2897       os << 
"      srbIdentity: " << (int)it->srbIdentity << std::endl;
 
 2898       os << 
"      logicalChannelConfig: " << std::endl;
 
 2899       os << 
"         priority: " <<  (
int)it->logicalChannelConfig.priority << std::endl;
 
 2900       os << 
"         prioritizedBitRateKbps: " <<  (int)it->logicalChannelConfig.prioritizedBitRateKbps << std::endl;
 
 2901       os << 
"         bucketSizeDurationMs: " <<  (
int)it->logicalChannelConfig.bucketSizeDurationMs << std::endl;
 
 2902       os << 
"         logicalChannelGroup: " <<  (int)it->logicalChannelConfig.logicalChannelGroup << std::endl;
 
 2906   os << 
"   drbToAddModList: " << std::endl;
 
 2907   std::list<LteRrcSap::DrbToAddMod>::iterator it2 = radioResourceConfigDedicated.
drbToAddModList.begin ();
 
 2908   for (; it2 != radioResourceConfigDedicated.
drbToAddModList.end (); it2++)
 
 2910       os << 
"      epsBearerIdentity: " << (int)it2->epsBearerIdentity << std::endl;
 
 2911       os << 
"      drbIdentity: " << (
int)it2->drbIdentity << std::endl;
 
 2912       os << 
"      rlcConfig: " << it2->rlcConfig.choice << std::endl;
 
 2913       os << 
"      logicalChannelIdentity: " << (int)it2->logicalChannelIdentity << std::endl;
 
 2914       os << 
"      logicalChannelConfig: " << std::endl;
 
 2915       os << 
"         priority: " <<  (
int)it2->logicalChannelConfig.priority << std::endl;
 
 2916       os << 
"         prioritizedBitRateKbps: " <<  (int)it2->logicalChannelConfig.prioritizedBitRateKbps << std::endl;
 
 2917       os << 
"         bucketSizeDurationMs: " <<  (
int)it2->logicalChannelConfig.bucketSizeDurationMs << std::endl;
 
 2918       os << 
"         logicalChannelGroup: " <<  (int)it2->logicalChannelConfig.logicalChannelGroup << std::endl;
 
 2922   os << 
"   drbToReleaseList: ";
 
 2923   std::list<uint8_t>::iterator it3 = radioResourceConfigDedicated.
drbToReleaseList.begin ();
 
 2926       os << (int)*it3 << 
", ";
 
 2934       os << 
"   physicalConfigDedicated: " << std::endl;
 
 2939           os << 
"      soundingRsUlConfigDedicated: " << std::endl;
 
 2956   std::bitset<0> bitset0;
 
 2959   std::bitset<3> sysInfoBlkT1Opts;
 
 2963   std::bitset<1> cellAccessRelatedInfoOpts;
 
 2967   int numPlmnIdentityInfoElements;
 
 2969   for (
int i = 0; i < numPlmnIdentityInfoElements; i++)
 
 2978   std::bitset<16> trackingAreaCode;
 
 2982   std::bitset<28> cellIdentity;
 
 2995   if (cellAccessRelatedInfoOpts[0])
 
 2998       std::bitset<27> csgIdentity;
 
 3004   std::bitset<1> qRxLevMinOffsetPresent;
 
 3007   if (qRxLevMinOffsetPresent[0])
 
 3013   if (sysInfoBlkT1Opts[2])
 
 3023   int numSchedulingInfo;
 
 3025   for (
int i = 0; i < numSchedulingInfo; i++)
 
 3031       for (
int j = 0; j < numSibType; j++)
 
 3037   if (sysInfoBlkT1Opts[1])
 
 3049   if (sysInfoBlkT1Opts[0])
 
 3060   std::bitset<0> bitset0;
 
 3063   std::bitset<2> sysInfoBlkT2Opts;
 
 3065   if (sysInfoBlkT2Opts[1])
 
 3084   std::bitset<2> freqInfoOpts;
 
 3086   if (freqInfoOpts[1])
 
 3092   if (freqInfoOpts[0])
 
 3102   if (sysInfoBlkT2Opts[0])
 
 3118   std::bitset<0> bitset0;
 
 3121   std::bitset<9> rrCfgCommOptions;
 
 3125   if (rrCfgCommOptions[8])
 
 3131   std::bitset<1> prachConfigInfoPresent;
 
 3138   if (prachConfigInfoPresent[0])
 
 3144   if (rrCfgCommOptions[7])
 
 3185   if (rrCfgCommOptions[6])
 
 3191   if (rrCfgCommOptions[5])
 
 3197   if (rrCfgCommOptions[4])
 
 3203   if (rrCfgCommOptions[3])
 
 3209   if (rrCfgCommOptions[2])
 
 3215   if (rrCfgCommOptions[1])
 
 3221   if (rrCfgCommOptions[0])
 
 3235   std::bitset<0> bitset0;
 
 3241   std::bitset<1> preamblesGroupAConfigPresent;
 
 3300   if (preamblesGroupAConfigPresent[0])
 
 3393   std::bitset<0> bitset0;
 
 3411   std::bitset<1> prachConfigInfoPresent;
 
 3416   if (prachConfigInfoPresent[0])
 
 3504   std::bitset<4> measResultOptionalPresent;
 
 3527       int measResultNeighCellsChoice;
 
 3532       if (measResultNeighCellsChoice == 0)
 
 3538           for (
int i = 0; i < numElems; i++)
 
 3542               std::bitset<1> isCgiInfoPresent;
 
 3549               measResultEutra.
haveCgiInfo = isCgiInfoPresent[0];
 
 3550               if (isCgiInfoPresent[0])
 
 3552                   std::bitset<1> havePlmnIdentityList;
 
 3562                   std::bitset<28> cellId;
 
 3567                   std::bitset<16> trArCo;
 
 3572                   if (havePlmnIdentityList[0])
 
 3577                       for ( 
int j = 0; j < numPlmnElems; j++)
 
 3587               std::bitset<2> measResultOpts;
 
 3591               if (measResultOpts[1])
 
 3599               if (measResultOpts[0])
 
 3610       if (measResultNeighCellsChoice == 1)
 
 3616       if (measResultNeighCellsChoice == 2)
 
 3621       if (measResultNeighCellsChoice == 3)
 
 3632         for (
int i = 0; i < numElems; i++)
 
 3639             std::bitset<2> measResultScellPresent;
 
 3646                std::bitset<2> measResultOpts;
 
 3650                if (measResultOpts[1])
 
 3658                if (measResultOpts[0])
 
 3680   std::bitset<1> isMccPresent;
 
 3683   if (isMccPresent[0])
 
 3694   for (
int j = mncDigits - 1; j >= 0; j--)
 
 3697       mnc += n * pow (10,j);
 
 3710   std::bitset<0> bitset0;
 
 3711   std::bitset<2> bitset2;
 
 3712   std::bitset<11> bitset11;
 
 3721       int measObjectToRemoveListElems;
 
 3724       for (
int i = 0; i < measObjectToRemoveListElems; i++)
 
 3734       int measObjectToAddModListElems;
 
 3737       for (
int i = 0; i < measObjectToAddModListElems; i++)
 
 3746           int measObjectChoice;
 
 3749           switch (measObjectChoice)
 
 3769               std::bitset<5> measObjectEutraOpts;
 
 3790               if (measObjectEutraOpts[4])
 
 3796                   for (
int i = 0; i < numElems; i++)
 
 3803               if (measObjectEutraOpts[3])
 
 3809                   for (
int i = 0; i < numElems; i++)
 
 3830               if (measObjectEutraOpts[2])
 
 3836                   for (
int i = 0; i < numElems; i++)
 
 3844               if (measObjectEutraOpts[1])
 
 3850                   for (
int i = 0; i < numElems; i++)
 
 3859                       std::bitset<1> isRangePresent;
 
 3927               if (measObjectEutraOpts[0])
 
 3941       int reportConfigToRemoveListElems;
 
 3944       for (
int i = 0; i < reportConfigToRemoveListElems; i++)
 
 3954       int reportConfigToAddModListElems;
 
 3957       for (
int i = 0; i < reportConfigToAddModListElems; i++)
 
 3966           int reportConfigChoice;
 
 3969           if (reportConfigChoice == 0)
 
 3975               int triggerTypeChoice;
 
 3978               if (triggerTypeChoice == 0)
 
 3988                   switch (eventIdChoice)
 
 4082               if (triggerTypeChoice == 1)
 
 4209           if (reportConfigChoice == 1)
 
 4222       int measIdToRemoveListElems;
 
 4225       for (
int i = 0; i < measIdToRemoveListElems; i++)
 
 4235       int measIdToAddModListElems;
 
 4238       for (
int i = 0; i < measIdToAddModListElems; i++)
 
 4261       std::bitset<4> quantityConfigOpts;
 
 4264       if (quantityConfigOpts[3])
 
 4377       if (quantityConfigOpts[2])
 
 4382       if (quantityConfigOpts[1])
 
 4387       if (quantityConfigOpts[0])
 
 4398       int measGapConfigChoice;
 
 4400       switch (measGapConfigChoice)
 
 4411           int gapOffsetChoice;
 
 4413           switch (gapOffsetChoice)
 
 4447       int speedStateParsChoice;
 
 4449       switch (speedStateParsChoice)
 
 4527   m_mmec = std::bitset<8> (0ul);
 
 4528   m_mTmsi = std::bitset<32> (0ul);
 
 4530   m_spare = std::bitset<1> (0ul);
 
 4541   static TypeId tid = 
TypeId (
"ns3::RrcConnectionRequestHeader")
 
 4543     .SetGroupName(
"Lte")
 
 4551   os << 
"MMEC:" << 
m_mmec << std::endl;
 
 4552   os << 
"MTMSI:" << 
m_mTmsi << std::endl;
 
 4554   os << 
"Spare: " << 
m_spare << std::endl;
 
 4603   std::bitset<1> dummy;
 
 4604   std::bitset<0> optionalOrDefaultMask;
 
 4682   os << 
"radioResourceConfigDedicated:" << std::endl;
 
 4731   std::bitset<0> bitset0;
 
 4732   std::bitset<1> bitset1;
 
 4733   std::bitset<2> bitset2;
 
 4747   int criticalExtensionChoice;
 
 4749   if (criticalExtensionChoice == 1)
 
 4754   else if (criticalExtensionChoice == 0)
 
 4817 std::list<LteRrcSap::SrbToAddMod>
 
 4823 std::list<LteRrcSap::DrbToAddMod>
 
 4889   std::bitset<0> bitset0;
 
 4992   std::bitset<0> bitset0;
 
 5078   std::bitset<6> options;
 
 5097       std::bitset<4> mobCtrlIntoOptional;
 
 5100       mobCtrlIntoOptional.set (1,0); 
 
 5152         std::bitset<2> noncriticalExtension_v890;
 
 5153         noncriticalExtension_v890.set (1,0); 
 
 5160         std::bitset<3> noncriticalExtension_v920;
 
 5161         noncriticalExtension_v920.set (1,0); 
 
 5162         noncriticalExtension_v920.set (1,0); 
 
 5177   std::bitset<0> bitset0;
 
 5206       else if (c1Chosen == 0)
 
 5209           std::bitset<6> rrcConnRecOpts;
 
 5222               std::bitset<4> mobCtrlOpts;
 
 5233                   std::bitset<1> ulCarrierFreqPresent;
 
 5239                   if (ulCarrierFreqPresent[0])
 
 5250                   std::bitset<1> ulBandwidthPresent;
 
 5256                   if (ulBandwidthPresent[0])
 
 5273               std::bitset<16> cRnti;
 
 5292           if (rrcConnRecOpts[3])
 
 5305           if (rrcConnRecOpts[1])
 
 5332           os << 
"  measObjectToRemoveList: ";
 
 5334           std::list<uint8_t>::iterator it = auxList.begin ();
 
 5335           for (; it != auxList.end (); it++)
 
 5337               os << (int) *it << 
", ";
 
 5343           os << 
"  reportConfigToRemoveList: ";
 
 5345           std::list<uint8_t>::iterator it = auxList.begin ();
 
 5346           for (; it != auxList.end (); it++)
 
 5348               os << (int) *it << 
", ";
 
 5354           os << 
"  measIdToRemoveList: ";
 
 5356           std::list<uint8_t>::iterator it = auxList.begin ();
 
 5357           for (; it != auxList.end (); it++)
 
 5359               os << (int) *it << 
", ";
 
 5366           os << 
"  measObjectToAddMod: " << std::endl;
 
 5368           std::list<LteRrcSap::MeasObjectToAddMod>::iterator it = auxList.begin ();
 
 5369           for (; it != auxList.end (); it++)
 
 5371               os << 
"    measObjectId: " << (int)it->measObjectId << std::endl;
 
 5372               os << 
"    carrierFreq: " << (
int)it->measObjectEutra.carrierFreq << std::endl;
 
 5373               os << 
"    allowedMeasBandwidth: " <<  (int)it->measObjectEutra.allowedMeasBandwidth << std::endl;
 
 5374               os << 
"    presenceAntennaPort1: " <<  it->measObjectEutra.presenceAntennaPort1  << std::endl;
 
 5375               os << 
"    neighCellConfig: " << (
int) it->measObjectEutra.neighCellConfig  << std::endl;
 
 5376               os << 
"    offsetFreq: " <<  (int)it->measObjectEutra.offsetFreq  << std::endl;
 
 5379               if (!it->measObjectEutra.cellsToRemoveList.empty ())
 
 5381                   os << 
"    cellsToRemoveList: ";
 
 5382                   std::list<uint8_t> auxList = it->measObjectEutra.cellsToRemoveList;
 
 5383                   std::list<uint8_t>::iterator it = auxList.begin ();
 
 5384                   for (; it != auxList.end (); it++)
 
 5386                       os << (int) *it << 
", ";
 
 5391               if (!it->measObjectEutra.blackCellsToRemoveList.empty ())
 
 5393                   os << 
"    blackCellsToRemoveList: ";
 
 5394                   std::list<uint8_t> auxList = it->measObjectEutra.blackCellsToRemoveList;
 
 5395                   std::list<uint8_t>::iterator it = auxList.begin ();
 
 5396                   for (; it != auxList.end (); it++)
 
 5398                       os << (int) *it << 
", ";
 
 5403               if (!it->measObjectEutra.cellsToAddModList.empty ())
 
 5405                   os << 
"    cellsToAddModList: " << std::endl;
 
 5406                   std::list<LteRrcSap::CellsToAddMod> auxList = it->measObjectEutra.cellsToAddModList;
 
 5407                   std::list<LteRrcSap::CellsToAddMod>::iterator it = auxList.begin ();
 
 5408                   for (; it != auxList.end (); it++)
 
 5410                       os << 
"      cellIndex: " <<  (int)it->cellIndex << std::endl;
 
 5411                       os << 
"      physCellId: " <<  (
int)it->physCellId  << std::endl;
 
 5412                       os << 
"      cellIndividualOffset: " <<  (int)it->cellIndividualOffset << std::endl;
 
 5413                       os << 
"      ------ " << std::endl;
 
 5417               if (!it->measObjectEutra.blackCellsToAddModList.empty ())
 
 5419                   os << 
"    blackCellsToAddModList: " << std::endl;
 
 5420                   std::list<LteRrcSap::BlackCellsToAddMod> auxList = it->measObjectEutra.blackCellsToAddModList;
 
 5421                   std::list<LteRrcSap::BlackCellsToAddMod>::iterator it = auxList.begin ();
 
 5422                   for (; it != auxList.end (); it++)
 
 5424                       os << 
"      cellIndex: " <<  (int)it->cellIndex << std::endl;
 
 5425                       os << 
"      physCellIdRange.start: " <<  (
int)it->physCellIdRange.start  << std::endl;
 
 5426                       os << 
"      physCellIdRange.haveRange: " <<  it->physCellIdRange.haveRange << std::endl;
 
 5427                       os << 
"      physCellIdRange.range: " <<  (int)it->physCellIdRange.range << std::endl;
 
 5428                       os << 
"      ------ " << std::endl;
 
 5432               os << 
"    haveCellForWhichToReportCGI: " <<  it->measObjectEutra.haveCellForWhichToReportCGI  << std::endl;
 
 5433               os << 
"    cellForWhichToReportCGI: " <<  (int)it->measObjectEutra.cellForWhichToReportCGI  << std::endl;
 
 5434               os << 
"    ------------- " << std::endl;
 
 5441           os << 
"  reportConfigToAddModList: " << std::endl;
 
 5443           std::list<LteRrcSap::ReportConfigToAddMod>::iterator it = auxList.begin ();
 
 5444           for (; it != auxList.end (); it++)
 
 5446               os << 
"    reportConfigId: " << (int)it->reportConfigId << std::endl;
 
 5447               os << 
"    reportConfigEutra.triggerType  " <<  (
int)it->reportConfigEutra.triggerType << std::endl;
 
 5450                   os << 
"    reportConfigEutra.eventId  " <<  (int)it->reportConfigEutra.eventId << std::endl;
 
 5453                       os << 
"    reportConfigEutra.reportOnLeave  " <<  (int)it->reportConfigEutra.reportOnLeave << std::endl;
 
 5454                       os << 
"    reportConfigEutra.a3Offset  " <<  (
int)it->reportConfigEutra.a3Offset << std::endl;
 
 5458                       os << 
"    reportConfigEutra.threshold1.choice  " <<  (int)it->reportConfigEutra.threshold1.choice << std::endl;
 
 5459                       os << 
"    reportConfigEutra.threshold1.range  " <<  (
int)it->reportConfigEutra.threshold1.range << std::endl;
 
 5462                           os << 
"    reportConfigEutra.threshold2.choice  " <<  (int)it->reportConfigEutra.threshold2.choice << std::endl;
 
 5463                           os << 
"    reportConfigEutra.threshold2.range  " <<  (
int)it->reportConfigEutra.threshold2.range << std::endl;
 
 5466                   os << 
"    reportConfigEutra.hysteresis  " <<  (int)it->reportConfigEutra.hysteresis << std::endl;
 
 5467                   os << 
"    reportConfigEutra.timeToTrigger  " <<  (
int)it->reportConfigEutra.timeToTrigger << std::endl;
 
 5471                   os << 
"    reportConfigEutra.purpose  " <<  (int)it->reportConfigEutra.purpose << std::endl;
 
 5473               os << 
"    reportConfigEutra.triggerQuantity  " <<  (int)it->reportConfigEutra.triggerQuantity << std::endl;
 
 5474               os << 
"    reportConfigEutra.reportQuantity  " <<  (
int)it->reportConfigEutra.reportQuantity << std::endl;
 
 5475               os << 
"    reportConfigEutra.maxReportCells  " <<  (int)it->reportConfigEutra.maxReportCells << std::endl;
 
 5476               os << 
"    reportConfigEutra.reportInterval  " <<  (
int)it->reportConfigEutra.reportInterval << std::endl;
 
 5477               os << 
"    reportConfigEutra.reportAmount  " <<  (int)it->reportConfigEutra.reportAmount << std::endl;
 
 5483           os << 
"  measIdToAddModList: " << std::endl;
 
 5485           std::list<LteRrcSap::MeasIdToAddMod>::iterator it = auxList.begin ();
 
 5486           for (; it != auxList.end (); it++)
 
 5488               os << 
"    measId: " << (int)it->measId << std::endl;
 
 5489               os << 
"    measObjectId: " << (
int)it->measObjectId << std::endl;
 
 5490               os << 
"    reportConfigId: " << (int)it->reportConfigId << std::endl;
 
 5491               os << 
"    ------ " << std::endl;
 
 5654 std::list<LteRrcSap::SrbToAddMod> 
 
 5660 std::list<LteRrcSap::DrbToAddMod> 
 
 5704   std::bitset<4> handoverPrepInfoOpts;
 
 5705   handoverPrepInfoOpts.set (3,1); 
 
 5706   handoverPrepInfoOpts.set (2,0); 
 
 5707   handoverPrepInfoOpts.set (1,0); 
 
 5708   handoverPrepInfoOpts.set (0,0); 
 
 5762   std::bitset<0> bitset0;
 
 5770   int criticalExtensionsChosen;
 
 5773   if (criticalExtensionsChosen == 1)
 
 5778   else if (criticalExtensionsChosen == 0)
 
 5787       else if (c1Chosen == 0)
 
 5790           std::bitset<4> handoverPrepInfoOpts;
 
 5795           for (
int i = 0; i < n; i++)
 
 5801           if (handoverPrepInfoOpts[3])
 
 5818               std::bitset<16> cRnti;
 
 5833               std::bitset<8> systemFrameNumber;
 
 5837               std::bitset<10> spare;
 
 5854           if (handoverPrepInfoOpts[2])
 
 5859           if (handoverPrepInfoOpts[1])
 
 5864           if (handoverPrepInfoOpts[0])
 
 5975   std::bitset<0> bitset0;
 
 6000       std::bitset<16> cRnti;
 
 6010       std::bitset<16> shortMacI;
 
 6032       std::bitset<2> spare;
 
 6124   std::bitset<0> bitset0;
 
 6138   int criticalExtensionsChoice;
 
 6140   if (criticalExtensionsChoice == 1)
 
 6145   else if (criticalExtensionsChoice == 0)
 
 6158           std::bitset<1> nonCriticalExtensionPresent;
 
 6176   os << 
"RadioResourceConfigDedicated: " << std::endl;
 
 6244   std::bitset<0> bitset0;
 
 6258   int criticalExtensionsChoice;
 
 6260   if (criticalExtensionsChoice == 1)
 
 6265   else if (criticalExtensionsChoice == 0)
 
 6268       std::bitset<1> opts;
 
 6343   std::bitset<0> bitset0;
 
 6352   int criticalExtensionsChoice;
 
 6354   if (criticalExtensionsChoice == 1)
 
 6359   else if (criticalExtensionsChoice == 0)
 
 6362       std::bitset<1> opts;
 
 6437   std::bitset<0> bitset0;
 
 6451   int criticalExtensionsChoice;
 
 6453   if (criticalExtensionsChoice == 1)
 
 6458   else if (criticalExtensionsChoice == 0)
 
 6467           std::bitset<3> opts;
 
 6559   std::bitset<0> bitset0;
 
 6569   int criticalExtensionsChoice;
 
 6571   if (criticalExtensionsChoice == 1)
 
 6576   else if (criticalExtensionsChoice == 0)
 
 6586       else if (c1Choice == 0)
 
 6589           std::bitset<1> opts;
 
 6669   std::bitset<0> bitset0;
 
 6675   int criticalExtensionsChoice;
 
 6678   if (criticalExtensionsChoice == 1)
 
 6683   else if (criticalExtensionsChoice == 0)
 
 6696           std::bitset<1> isNonCriticalExtensionPresent;
 
 6702           if (isNonCriticalExtensionPresent[0])
 
 6725       std::list<LteRrcSap::MeasResultEutra>::iterator it = measResultListEutra.begin ();
 
 6726       for (; it != measResultListEutra.end (); it++)
 
 6728           os << 
"   physCellId =" << (int) it->physCellId << std::endl;
 
 6729           os << 
"   haveCgiInfo =" << it->haveCgiInfo << std::endl;
 
 6730           if (it->haveCgiInfo)
 
 6732               os << 
"      plmnIdentity = " << (int) it->cgiInfo.plmnIdentity << std::endl;
 
 6733               os << 
"      cellIdentity = " << (
int) it->cgiInfo.cellIdentity << std::endl;
 
 6734               os << 
"      trackingAreaCode = " << (int) it->cgiInfo.trackingAreaCode << std::endl;
 
 6735               os << 
"      havePlmnIdentityList = " << !it->cgiInfo.plmnIdentityList.empty () << std::endl;
 
 6736               if (!it->cgiInfo.plmnIdentityList.empty ())
 
 6738                   for (std::list<uint32_t>::iterator it2 = it->cgiInfo.plmnIdentityList.begin (); it2 != it->cgiInfo.plmnIdentityList.end (); it2++)
 
 6740                       os << 
"         plmnId : " << *it2 << std::endl;
 
 6745           os << 
"   haveRsrpResult =" << it->haveRsrpResult << std::endl;
 
 6746           if (it->haveRsrpResult)
 
 6748               os << 
"   rsrpResult =" << (int) it->rsrpResult << std::endl;
 
 6751           os << 
"   haveRsrqResult =" << it->haveRsrqResult << std::endl;
 
 6752           if (it->haveRsrqResult)
 
 6754               os << 
"   rsrqResult =" << (int) it->rsrqResult << std::endl;
 
 6795   std::cout << 
"UL DCCH MSG TYPE: " << 
m_messageType << std::endl;
 
 6807   std::bitset<0> bitset0;
 
 6856   std::cout << 
"DL DCCH MSG TYPE: " << 
m_messageType << std::endl;
 
 6868   std::bitset<0> bitset0;
 
 6917   std::cout << 
"UL CCCH MSG TYPE: " << 
m_messageType << std::endl;
 
 6929   std::bitset<0> bitset0;
 
 6978   std::cout << 
"DL CCCH MSG TYPE: " << 
m_messageType << std::endl;
 
 6990   std::bitset<0> bitset0;
 
uint32_t sCellIndex
SCell index. 
 
bool haveRange
has a range? 
 
RrcConnectionRequest structure. 
 
enum ns3::LteRrcSap::ReportConfigEutra::@67 reportQuantity
Report type enumeration. 
 
SystemInformationBlockType2 sourceSystemInformationBlockType2
source system information block type 2 
 
PhysicalConfigDedicated structure. 
 
enum ns3::LteRrcSap::ThresholdEutra::@63 choice
Threshold enumeration. 
 
bool haveNonCriticalExtension
have critical extension? 
 
uint32_t carrierFreq
carrier frequency 
 
CellIdentification structure. 
 
uint8_t drbIdentity
DRB identity. 
 
RadioResourceConfigCommonSCell radioResourceConfigCommonSCell
radio resource config common SCell 
 
CarrierFreqEutra carrierFreq
carrier frequency 
 
void SerializeDlDcchMessage(int msgType) const 
Serialize DL DCCH message function. 
 
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
 
PdschConfigDedicated pdschConfigDedicated
PDSCH config dedicated. 
 
Event A1: Serving becomes better than absolute threshold. 
 
uint16_t physCellId
Phy cell ID. 
 
MeasurementReport structure. 
 
uint32_t Deserialize(Buffer::Iterator bIterator)
 
uint8_t measObjectId
measure object ID 
 
PhysCellIdRange physCellIdRange
Phy cell ID range. 
 
PdschConfigDedicated pdschConfigDedicated
PDSCH config dedicated. 
 
MeasConfig sourceMeasConfig
source measure config 
 
uint32_t sourceDlCarrierFreq
source DL carrier frequency 
 
uint8_t srbIdentity
SB identity. 
 
Buffer::Iterator DeserializeUlCcchMessage(Buffer::Iterator bIterator)
Deserialize DL CCCH message function. 
 
MobilityControlInfo structure. 
 
uint8_t cellIndex
cell index 
 
std::list< MeasObjectToAddMod > measObjectToAddModList
measure object to add mod list 
 
uint8_t numberOfRaPreambles
number of RA preambles 
 
RadioResourceConfigCommon structure. 
 
SoundingRsUlConfigDedicated soundingRsUlConfigDedicated
sounding RS UL config dedicated 
 
bool presenceAntennaPort1
antenna port 1 present? 
 
uint8_t hysteresis
Parameter used within the entry and leave condition of an event triggered reporting condition...
 
std::list< CellsToAddMod > cellsToAddModList
cells to add mod list 
 
QuantityConfig quantityConfig
quantity config 
 
std::list< uint8_t > reportConfigToRemoveList
report config to remove list 
 
RlcConfig rlcConfig
RLC config. 
 
uint8_t rsrpResult
RSRP result. 
 
std::list< MeasResultEutra > measResultListEutra
measure result list eutra 
 
uint8_t reportConfigId
report config ID 
 
HandoverPreparationInfoHeader()
 
ThresholdEutra threshold1
Threshold for event A1, A2, A4, and A5. 
 
automatically resized byte buffer 
 
RadioResourceConfigDedicatedSCell radioResourceConfigDedicateSCell
radio resource config dedicated SCell 
 
uint32_t Deserialize(Buffer::Iterator bIterator)
 
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
 
std::list< SrbToAddMod > srbToAddModList
SRB to add mod list. 
 
enum ns3::LteRrcSap::ReportConfigEutra::report purpose
purpose 
 
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated 
 
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
 
void SerializeDlCcchMessage(int msgType) const 
Serialize DL CCCH message function. 
 
std::list< uint8_t > measObjectToRemoveList
measure object to remove list 
 
bool haveNonUlConfiguration
have non UL configuration? 
 
uint16_t start
starting cell ID 
 
uint8_t tEvaluation
evaluation 
 
PdschConfigCommon pdschConfigCommon
4: Physical configuration, physical channels pdsch-ConfigCommon-r10 
 
uint16_t srsConfigIndex
SRS config index. 
 
MeasObjectEutra measObjectEutra
measure object eutra 
 
uint16_t sourceUeIdentity
source UE identity 
 
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate. 
 
Event A5: PCell becomes worse than absolute threshold1 AND Neighbour becomes better than another abso...
 
bool haveCarrierFreq
have carrier frequency? 
 
enum ns3::LteRrcSap::ReportConfigEutra::@66 triggerQuantity
Trigger type enumeration. 
 
uint8_t neighCellConfig
neighbor cell config 
 
RachConfigDedicated rachConfigDedicated
RACH config dedicated. 
 
RSRP is used for the threshold. 
 
bool haveSmeasure
have S measure? 
 
MeasConfig measConfig
measure config 
 
uint8_t rrcTransactionIdentifier
RRC transaction identifier. 
 
uint32_t cellIdentity
cell identity 
 
uint8_t rsrpResult
the RSRP result 
 
uint8_t waitTime
wait time 
 
uint32_t ulCarrierFreq
UL carrier frequency. 
 
bool haveRsrqResult
have RSRQ result? 
 
uint32_t Deserialize(Buffer::Iterator bIterator)
 
LteRrcSap::HandoverPreparationInfo GetMessage() const 
Returns a HandoverPreparationInfo IE from the values in the class attributes. 
 
iterator in a Buffer instance 
 
bool haveRadioResourceConfigDedicated
have radio resource config dedicated 
 
LteRrcSap::AsConfig m_asConfig
AS config. 
 
bool havePdschConfigDedicated
have PDSCH config dedicated? 
 
bool haveNonUlConfiguration
have non UL configuration? 
 
Buffer::Iterator DeserializeDlCcchMessage(Buffer::Iterator bIterator)
Deserialize DL CCCH message function. 
 
uint16_t trackingAreaCode
tracking area code 
 
std::list< BlackCellsToAddMod > blackCellsToAddModList
black cells to add mod list 
 
Buffer::Iterator DeserializeDlDcchMessage(Buffer::Iterator bIterator)
Deserialize DL DCCH message function. 
 
AsConfig asConfig
AS config. 
 
SystemInformationBlockType1 sourceSystemInformationBlockType1
source system information block type 1 
 
uint8_t rrcTransactionIdentifier
RRC transaction identifier. 
 
PreambleInfo preambleInfo
preamble info 
 
uint8_t rsrpResult
RSRP result. 
 
CellIdentification cellIdentification
cell identification 
 
bool haveUlConfiguration
have UL configuration 
 
AntennaInfoCommon antennaInfoCommon
2: Physical configuration, general antennaInfoCommon-r10 
 
enum ns3::LteRrcSap::MeasGapConfig::gap gapOffsetChoice
gap offset 
 
PhysicalConfigDedicatedSCell structure. 
 
uint8_t preambleTransMax
preamble transmit maximum 
 
MeasResults measResults
measure results 
 
FreqInfo ulFreqInfo
UL frequency info. 
 
MeasResultScell structure. 
 
uint8_t epsBearerIdentity
EPS bearer identity. 
 
uint8_t tHystNormal
hyst normal 
 
UlPowerControlCommonSCell ulPowerControlCommonSCell
3GPP TS 36.331 v.11.10 R11 pag.223 
 
uint64_t ueIdentity
UE identity. 
 
int8_t referenceSignalPower
INTEGER (-60..50),. 
 
enum ns3::LteRrcSap::SpeedStatePars::action type
action type 
 
RrcConnectionReestablishment structure. 
 
LogicalChannelConfig logicalChannelConfig
logical channel config 
 
RachConfigCommon rachConfigCommon
RACH config common. 
 
ReportConfigEutra reportConfigEutra
report config eutra 
 
uint8_t rsrqResult
the RSRQ result 
 
uint8_t logicalChannelGroup
logical channel group 
 
bool haveMeasurementResultsNeighCell
always false since not implemented 
 
std::list< uint32_t > plmnIdentityList
PLMN identity list. 
 
NonUlConfiguration nonUlConfiguration
non UL configuration 
 
uint8_t nCellChangeHigh
cell change high 
 
ReestablishmentCause
ReestablishmentCause enumeration. 
 
bool haveRadioResourceConfigDedicatedSCell
have radio resource config dedicated SCell? 
 
uint8_t rrcTransactionIdentifier
RRC transaction identifier. 
 
void SerializeUlDcchMessage(int msgType) const 
Serialize UL DCCH message function. 
 
uint8_t sMeasure
S measure. 
 
uint32_t dlCarrierFreq
ARFCN - valueEUTRA. 
 
bool haveMeasGapConfig
have measure gap config? 
 
MeasResultEutra structure. 
 
std::list< MeasResultScell > measResultScell
measure results Scells 
 
uint16_t alpha
alpha value 
 
RrcConnectionReconfiguration structure. 
 
std::list< MeasIdToAddMod > measIdToAddModList
measure ID to add mod list 
 
uint8_t srsBandwidth
SRS bandwidth. 
 
bool haveRachConfigDedicated
Have RACH config dedicated? 
 
uint8_t raPrachMaskIndex
RA PRACH mask index. 
 
uint8_t rrcTransactionIdentifier
RRC transaction identifier. 
 
PhysicalConfigDedicated physicalConfigDedicated
physical config dedicated 
 
uint8_t filterCoefficientRSRP
filter coefficient RSRP 
 
bool haveRsrpResult
have RSRP result? 
 
void Print(std::ostream &os) const 
This function prints the object, for debugging purposes. 
 
RrcConnectionReconfigurationCompleted structure. 
 
MeasResultServFreqList measScellResultList
measure SCell result list 
 
RSRQ is used for the threshold. 
 
enum ns3::LteRrcSap::ReportConfigEutra::@68 reportInterval
Report interval enumeration. 
 
bool haveAntennaInfoUlDedicated
have antenna info UL dedicated? 
 
void Print(std::ostream &os) const 
This function prints the object, for debugging purposes. 
 
enum ns3::LteRrcSap::ReportConfigEutra::@65 eventId
Event enumeration. 
 
std::list< SCellToAddMod > sCellsToAddModList
SCell to add mod list. 
 
bool haveRsrpResult
have RSRP result 
 
MeasIdToAddMod structure. 
 
uint8_t rrcTransactionIdentifier
RRC transaction identifier. 
 
MobilityStateParameters mobilityStateParameters
mobility state parameters 
 
PrachConfigSCell prachConfigSCell
PRACH config SCell. 
 
RrcConnectionSetupCompleted structure. 
 
HandoverPreparationInfo structure. 
 
void PreSerialize() const 
This function serializes class attributes to m_serializationResult local Buffer. 
 
void PreSerialize() const 
This function serializes class attributes to m_serializationResult local Buffer. 
 
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated 
 
RrcConnectionSetup structure. 
 
uint8_t rrcTransactionIdentifier
RRC transaction identifier. 
 
RadioResourceConfigCommonSib structure. 
 
RrcConnectionReestablishmentRequest structure. 
 
uint8_t raPreambleIndex
RA preamble index. 
 
RadioResourceConfigDedicated sourceRadioResourceConfig
source radio resource config 
 
uint8_t reportConfigId
report config ID 
 
uint16_t cellForWhichToReportCGI
cell for which to report CGI 
 
uint16_t servFreqId
service frequency ID 
 
bool reportOnLeave
Indicates whether or not the UE shall initiate the measurement reporting procedure when the leaving c...
 
uint16_t physCellId
Phy cell ID. 
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
 
bool haveQuantityConfig
have quantity config? 
 
Event A2: Serving becomes worse than absolute threshold. 
 
uint16_t targetPhysCellId
target Phy cell ID 
 
RrcConnectionReject structure. 
 
PhysicalConfigDedicatedSCell physicalConfigDedicatedSCell
physical config dedicated SCell 
 
uint8_t rrcTransactionIdentifier
RRC transaction identifier. 
 
bool haveMobilityControlInfo
have mobility control info 
 
uint16_t prioritizedBitRateKbps
prioritized bit rate Kbps 
 
uint32_t Deserialize(Buffer::Iterator bIterator)
 
uint8_t maxReportCells
Maximum number of cells, excluding the serving cell, to be included in the measurement report...
 
void Print(std::ostream &os) const 
This function prints the object, for debugging purposes. 
 
int8_t cellIndividualOffset
cell individual offset 
 
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated 
 
bool haveMeasResultNeighCells
have measure result neighbor cells 
 
uint16_t dlBandwidth
1: Cell characteristics 
 
uint32_t physCellId
physical cell ID 
 
uint8_t filterCoefficientRSRQ
filter coefficient RSRQ 
 
bool havePdschConfigDedicated
have PDSCH config dedicated? 
 
uint8_t logicalChannelIdentity
logical channel identify 
 
uint8_t sfHigh
scale factor high 
 
uint16_t newUeIdentity
new UE identity 
 
MeasGapConfig measGapConfig
measure gap config 
 
RachConfigCommon structure. 
 
void SerializeUlCcchMessage(int msgType) const 
Serialize UL CCCH message function. 
 
uint8_t range
Value range used in RSRP/RSRQ threshold. 
 
void PreSerialize() const 
This function serializes class attributes to m_serializationResult local Buffer. 
 
bool havePhysicalConfigDedicated
have physical config dedicated? 
 
bool haveCgiInfo
have CGI info? 
 
uint8_t ulBandwidth
UL bandwidth. 
 
uint8_t reportAmount
Number of measurement reports applicable, always assumed to be infinite. 
 
bool haveSoundingRsUlConfigDedicated
have sounding RS UL config dedicated? 
 
RrcConnectionReestablishmentReject structure. 
 
BlackCellsToAddMod structure. 
 
void PreSerialize() const 
This function serializes class attributes to m_serializationResult local Buffer. 
 
uint8_t measObjectId
measure object ID 
 
void SetMessage(LteRrcSap::HandoverPreparationInfo msg)
Receives a HandoverPreparationInfo IE and stores the contents into the class attributes. 
 
uint8_t gapOffsetValue
gap offset value 
 
uint16_t physCellId
Phy cell ID. 
 
RadioResourceConfigCommon radioResourceConfigCommon
radio resource config common 
 
uint32_t plmnIdentity
PLMN identity. 
 
LteRrcSap::AsConfig GetAsConfig() const 
Getter for m_asConfig. 
 
uint32_t dlCarrierFreq
DL carrier frequency. 
 
CarrierBandwidthEutra carrierBandwidth
carrier bandwidth 
 
int8_t a3Offset
Offset value for Event A3. An integer between -30 and 30. The actual value is (value * 0...
 
Event A4: Neighbour becomes better than absolute threshold. 
 
Reference Signal Received Quality. 
 
bool haveUlConfiguration
have UL configuration? 
 
LogicalChannelConfig logicalChannelConfig
logical channel config 
 
RachConfigCommon rachConfigCommon
RACH config common. 
 
SpeedStatePars speedStatePars
speed state parameters 
 
uint8_t raResponseWindowSize
RA response window size. 
 
ReestabUeIdentity structure. 
 
bool haveCarrierBandwidth
have carrier bandwidth? 
 
bool haveAntennaInfoDedicated
have antenna info dedicated? 
 
uint8_t ulBandwidth
UL bandwidth. 
 
uint8_t rsrqResult
RSRQ result. 
 
uint32_t Deserialize(Buffer::Iterator bIterator)
 
std::list< uint8_t > blackCellsToRemoveList
black cells to remove list 
 
NonCriticalExtensionConfiguration nonCriticalExtension
3GPP TS 36.331 v.11.10 R11 Sec. 6.2.2 pag. 147 (also known as ETSI TS 136 331 v.11.10 Feb-2015) 
 
void Print(std::ostream &os) const 
This function prints the object, for debugging purposes. 
 
RadioResourceConfigDedicatedSCell structure. 
 
int8_t pb
INTEGER (0..3),. 
 
bool haveSpeedStatePars
have speed state parameters? 
 
bool haveSoundingRsUlConfigDedicated
have sounding RS UL config dedicated? 
 
uint8_t allowedMeasBandwidth
allowed measure bandwidth 
 
uint8_t cellIndex
cell index 
 
std::list< DrbToAddMod > drbToAddModList
DRB to add mod list. 
 
enum ns3::LteRrcSap::SoundingRsUlConfigDedicated::action type
action type 
 
void PreSerialize() const 
This function serializes class attributes to m_serializationResult local Buffer. 
 
int8_t offsetFreq
offset frequency 
 
Reference Signal Received Power. 
 
bool haveAntennaInfoDedicated
have antenna info dedicated? 
 
RrcConnectionReestablishmentComplete structure. 
 
uint8_t transmissionMode
transmission mode 
 
enum ns3::LteRrcSap::RlcConfig::direction choice
direction choice 
 
void Print(std::ostream &os) const 
This function prints the object, for debugging purposes. 
 
Event A3: Neighbour becomes amount of offset better than PCell. 
 
enum ns3::LteRrcSap::MeasGapConfig::action type
action type 
 
MobilityControlInfo mobilityControlInfo
mobility control info 
 
bool haveMeasConfig
have measure config 
 
Both the RSRP and RSRQ quantities are to be included in the measurement report. 
 
bool haveRsrqResult
have RSRQ result? 
 
AntennaInfoDedicated antennaInfo
antenna info 
 
uint32_t plmnIdentity
PLMN identity. 
 
std::list< uint8_t > cellsToRemoveList
cells to remove list 
 
uint8_t rsrqResult
RSRQ result. 
 
ReestablishmentCause reestablishmentCause
reestablishment cause 
 
uint8_t dlBandwidth
DL bandwidth. 
 
NonCriticalExtensionConfiguration structure. 
 
RrcConnectionRelease structure. 
 
SoundingRsUlConfigDedicated soundingRsUlConfigDedicated
sounding RS UL config dedicated 
 
uint8_t sfMedium
scale factor medium 
 
LogicalChannelConfig structure. 
 
uint16_t timeToTrigger
Time during which specific criteria for the event needs to be met in order to trigger a measurement r...
 
uint16_t bucketSizeDurationMs
bucket size duration ms 
 
UlConfiguration ulConfiguration
UL configuration. 
 
Threshold for event evaluation. 
 
This class only serves to discriminate which message type has been received in uplink (ue to eNb) for...
 
std::list< uint8_t > measIdToRemoveList
measure ID to remove list 
 
a unique identifier for an interface. 
 
std::list< ReportConfigToAddMod > reportConfigToAddModList
report config to add mod list 
 
ReportConfigToAddMod structure. 
 
ReestabUeIdentity ueIdentity
UE identity. 
 
TypeId SetParent(TypeId tid)
Set the parent TypeId. 
 
std::list< uint8_t > drbToReleaseList
DRB to release list. 
 
Buffer::Iterator DeserializeUlDcchMessage(Buffer::Iterator bIterator)
Deserialize UL DCCH message function. 
 
MeasObjectToAddMod structure. 
 
SpeedStateScaleFactors timeToTriggerSf
time to trigger scale factors 
 
uint16_t antennaPortsCount
antenna ports count 
 
RaSupervisionInfo raSupervisionInfo
RA supervision info. 
 
uint8_t nCellChangeMedium
cell change medium 
 
bool haveScellsMeas
has SCells measure 
 
AntennaInfoDedicated antennaInfo
antenna info dedicated 
 
bool haveMeasurementResultsServingSCells
have measure results serving Scells 
 
RadioResourceConfigCommonSCell. 
 
RadioResourceConfigDedicated structure. 
 
uint32_t ulCarrierFreq
UL carrier frequency. 
 
MasterInformationBlock sourceMasterInformationBlock
source master information block 
 
enum ns3::LteRrcSap::ReportConfigEutra::@64 triggerType
Trigger enumeration. 
 
bool haveCellForWhichToReportCGI
have cell for which to report CGI? 
 
AntennaInfoDedicated antennaInfoUl
antenna info UL 
 
ThresholdEutra threshold2
Threshold for event A5.