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);
954 switch (qOffsetRange)
1057 switch (thresholdEutra.
choice)
1075 std::bitset<11> measConfigOptional;
1085 measConfigOptional.set (1,
false );
1108 std::bitset<5> measObjOpts;
1109 measObjOpts.set (4,!it->measObjectEutra.cellsToRemoveList.empty () );
1110 measObjOpts.set (3,!it->measObjectEutra.cellsToAddModList.empty () );
1111 measObjOpts.set (2,!it->measObjectEutra.blackCellsToRemoveList.empty () );
1112 measObjOpts.set (1,!it->measObjectEutra.blackCellsToAddModList.empty () );
1113 measObjOpts.set (0,it->measObjectEutra.haveCellForWhichToReportCGI);
1126 if (!it->measObjectEutra.cellsToRemoveList.empty ())
1129 for (std::list<uint8_t>::iterator it2 = it->measObjectEutra.cellsToRemoveList.begin (); it2 != it->measObjectEutra.cellsToRemoveList.end (); it2++)
1135 if (!it->measObjectEutra.cellsToAddModList.empty ())
1138 for (std::list<LteRrcSap::CellsToAddMod>::iterator it2 = it->measObjectEutra.cellsToAddModList.begin (); it2 != it->measObjectEutra.cellsToAddModList.end (); it2++)
1153 if (!it->measObjectEutra.blackCellsToRemoveList.empty () )
1156 for (std::list<uint8_t>::iterator it2 = it->measObjectEutra.blackCellsToRemoveList.begin (); it2 != it->measObjectEutra.blackCellsToRemoveList.end (); it2++)
1162 if (!it->measObjectEutra.blackCellsToAddModList.empty () )
1165 for (std::list<LteRrcSap::BlackCellsToAddMod>::iterator it2 = it->measObjectEutra.blackCellsToAddModList.begin (); it2 != it->measObjectEutra.blackCellsToAddModList.end (); it2++)
1172 std::bitset<1> rangePresent = std::bitset<1> (it2->physCellIdRange.haveRange);
1175 if (it2->physCellIdRange.haveRange)
1177 switch (it2->physCellIdRange.range)
1229 if (it->measObjectEutra.haveCellForWhichToReportCGI)
1257 switch (it->reportConfigEutra.triggerType)
1262 switch (it->reportConfigEutra.purpose)
1276 switch (it->reportConfigEutra.eventId)
1309 switch (it->reportConfigEutra.timeToTrigger)
1386 switch (it->reportConfigEutra.reportInterval)
1439 switch (it->reportConfigEutra.reportAmount)
1492 std::bitset<4> quantityConfigOpts (0);
1493 quantityConfigOpts.set (3,1);
1731 std::bitset<3> noncriticalExtension_v1020;
1732 noncriticalExtension_v1020.set (2,0);
1733 noncriticalExtension_v1020.set (1,1);
1734 noncriticalExtension_v1020.set (0,0);
1741 std::bitset<4> sCellToAddMod_r10;
1742 sCellToAddMod_r10.set (3,1);
1743 sCellToAddMod_r10.set (2,1);
1744 sCellToAddMod_r10.set (1,1);
1745 sCellToAddMod_r10.set (0,it->haveRadioResourceConfigDedicatedSCell);
1750 std::bitset<2> cellIdentification_r10;
1751 cellIdentification_r10.set(1,1);
1752 cellIdentification_r10.set(0,1);
1761 if (it->haveRadioResourceConfigDedicatedSCell)
1779 std::bitset<2> radioResourceConfigCommonSCell_r10;
1787 std::bitset<5> nonUlConfiguration_r10;
1788 nonUlConfiguration_r10.set (4,1);
1789 nonUlConfiguration_r10.set (3,1);
1790 nonUlConfiguration_r10.set (2,0);
1791 nonUlConfiguration_r10.set (1,1);
1792 nonUlConfiguration_r10.set (0,0);
1797 std::bitset<1> antennaInfoCommon_r10;
1798 antennaInfoCommon_r10.set (0,1);
1802 std::bitset<2> pdschConfigCommon_r10;
1803 pdschConfigCommon_r10.set (1,1);
1804 pdschConfigCommon_r10.set (0,1);
1815 std::bitset<7> UlConfiguration_r10;
1816 UlConfiguration_r10.set (6,1);
1817 UlConfiguration_r10.set (5,0);
1818 UlConfiguration_r10.set (4,1);
1819 UlConfiguration_r10.set (3,0);
1820 UlConfiguration_r10.set (2,0);
1821 UlConfiguration_r10.set (1,1);
1822 UlConfiguration_r10.set (0,0);
1826 std::bitset<3> FreqInfo_r10;
1827 FreqInfo_r10.set (2,1);
1828 FreqInfo_r10.set (1,1);
1829 FreqInfo_r10.set (0,0);
1836 std::bitset<2> UlPowerControlCommonSCell_r10;
1837 UlPowerControlCommonSCell_r10.set (1,0);
1838 UlPowerControlCommonSCell_r10.set (0,1);
1847 std::bitset<1> prachConfigSCell_r10;
1848 prachConfigSCell_r10.set(0,1);
1859 std::bitset<1> RadioResourceConfigDedicatedSCell_r10;
1860 RadioResourceConfigDedicatedSCell_r10.set (0,1);
1870 std::bitset<2> pcdscOpt;
1878 std::bitset<4> nulOpt;
1924 std::bitset<7> ulOpt;
2006 int thresholdEutraChoice, range;
2009 switch (thresholdEutraChoice)
2014 thresholdEutra->
range = range;
2020 thresholdEutra->
range = range;
2034 *qOffsetRange = -24;
2037 *qOffsetRange = -22;
2040 *qOffsetRange = -20;
2043 *qOffsetRange = -18;
2046 *qOffsetRange = -16;
2049 *qOffsetRange = -14;
2052 *qOffsetRange = -12;
2055 *qOffsetRange = -10;
2134 std::bitset<6> optionalFieldsPresent = std::bitset<6> ();
2137 if (optionalFieldsPresent[5])
2143 if (optionalFieldsPresent[4])
2149 if (optionalFieldsPresent[3])
2155 for (
int i = 0; i <
n; i++)
2162 if (optionalFieldsPresent[2])
2168 if (optionalFieldsPresent[1])
2175 if (optionalFieldsPresent[0])
2190 srbToAddModList->clear ();
2193 for (
int i = 0; i < numElems; i++)
2198 std::bitset<2> optionalFields;
2206 if (optionalFields[1])
2212 if (optionalFields[0])
2230 srbToAddModList->insert (srbToAddModList->end (),srbToAddMod);
2243 drbToAddModList->clear ();
2245 for (
int i = 0; i <
n; i++)
2249 std::bitset<5> optionalFields;
2252 if (optionalFields[4])
2262 if (optionalFields[3])
2268 if (optionalFields[2])
2275 std::bitset<0> bitset0;
2327 if (optionalFields[1])
2333 if (optionalFields[0])
2338 drbToAddModList->insert (drbToAddModList->end (),drbToAddMod);
2350 std::bitset<1> bitset1;
2364 uint16_t prioritizedBitRateKbps;
2369 prioritizedBitRateKbps = 0;
2372 prioritizedBitRateKbps = 8;
2375 prioritizedBitRateKbps = 16;
2378 prioritizedBitRateKbps = 32;
2381 prioritizedBitRateKbps = 64;
2384 prioritizedBitRateKbps = 128;
2387 prioritizedBitRateKbps = 256;
2390 prioritizedBitRateKbps = 10000;
2393 prioritizedBitRateKbps = 10000;
2399 uint16_t bucketSizeDurationMs;
2403 bucketSizeDurationMs = 50;
2406 bucketSizeDurationMs = 100;
2409 bucketSizeDurationMs = 150;
2412 bucketSizeDurationMs = 300;
2415 bucketSizeDurationMs = 500;
2418 bucketSizeDurationMs = 1000;
2421 bucketSizeDurationMs = 1000;
2438 std::bitset<10> optionalFieldPresent;
2442 if (optionalFieldPresent[9])
2445 std::bitset<0> bitset0;
2457 if (optionalFieldPresent[8])
2462 if (optionalFieldPresent[7])
2467 if (optionalFieldPresent[6])
2472 if (optionalFieldPresent[5])
2477 if (optionalFieldPresent[4])
2482 if (optionalFieldPresent[3])
2488 if (optionalFieldPresent[2])
2505 std::bitset<0> bitset0;
2536 if (optionalFieldPresent[1])
2547 std::bitset<1> codebookSubsetRestrictionPresent;
2554 if (codebookSubsetRestrictionPresent[0])
2560 int txantennaselchosen;
2562 if (txantennaselchosen == 0)
2567 else if (txantennaselchosen == 1)
2574 if (optionalFieldPresent[0])
2586 NS_FATAL_ERROR (
"RrcAsn1Header Print() function must also specify LteRrcSap::RadioResourceConfigDedicated as a second argument");
2593 std::bitset<2> nonCriticalExtension_v890;
2596 if (nonCriticalExtension_v890[0])
2599 std::bitset<3> nonCriticalExtension_v920;
2601 if (nonCriticalExtension_v920[0])
2604 std::bitset<3> nonCriticalExtension_v1020;
2606 NS_ASSERT (!nonCriticalExtension_v1020[2]);
2607 NS_ASSERT (nonCriticalExtension_v1020[1]);
2608 NS_ASSERT (!nonCriticalExtension_v1020[0]);
2614 for (
int i = 0; i < numElems; i++)
2616 std::bitset<4> sCellToAddMod_r10;
2633 if (sCellToAddMod_r10[0])
2651 std::bitset<2> cellIdentification_r10;
2669 std::bitset<2> radioResourceConfigCommonSCell_r10;
2675 std::bitset<5> nonUlConfiguration_r10;
2681 std::bitset<1> antennaInfoCommon_r10;
2686 std::bitset<2> pdschConfigCommon_r10;
2695 std::bitset<7> UlConfiguration_r10;
2698 std::bitset<3> FreqInfo_r10;
2706 std::bitset<2> UlPowerControlCommonSCell_r10;
2711 std::bitset<1> prachConfigSCell_r10;
2724 std::bitset<1> RadioResourceConfigDedicatedSCell_r10;
2735 std::bitset<2> pcdscOpt;
2741 std::bitset<4> nulOpt;
2759 std::bitset<1> codebookSubsetRestrictionPresent;
2766 if (codebookSubsetRestrictionPresent[0])
2773 int txantennaselchosen;
2775 if (txantennaselchosen == 0)
2780 else if (txantennaselchosen == 1)
2791 std::bitset<0> bitset0;
2806 std::bitset<7> ulOpt;
2827 std::bitset<1> codebookSubsetRestrictionPresent;
2834 if (codebookSubsetRestrictionPresent[0])
2841 int txantennaselchosen;
2843 if (txantennaselchosen == 0)
2848 else if (txantennaselchosen == 1)
2873 std::bitset<0> bitset0;
2912 os <<
" srbToAddModList: " << std::endl;
2913 std::list<LteRrcSap::SrbToAddMod>::iterator it = radioResourceConfigDedicated.
srbToAddModList.begin ();
2914 for (; it != radioResourceConfigDedicated.
srbToAddModList.end (); it++)
2916 os <<
" srbIdentity: " << (int)it->srbIdentity << std::endl;
2917 os <<
" logicalChannelConfig: " << std::endl;
2918 os <<
" priority: " << (
int)it->logicalChannelConfig.priority << std::endl;
2919 os <<
" prioritizedBitRateKbps: " << (int)it->logicalChannelConfig.prioritizedBitRateKbps << std::endl;
2920 os <<
" bucketSizeDurationMs: " << (
int)it->logicalChannelConfig.bucketSizeDurationMs << std::endl;
2921 os <<
" logicalChannelGroup: " << (int)it->logicalChannelConfig.logicalChannelGroup << std::endl;
2925 os <<
" drbToAddModList: " << std::endl;
2926 std::list<LteRrcSap::DrbToAddMod>::iterator it2 = radioResourceConfigDedicated.
drbToAddModList.begin ();
2927 for (; it2 != radioResourceConfigDedicated.
drbToAddModList.end (); it2++)
2929 os <<
" epsBearerIdentity: " << (int)it2->epsBearerIdentity << std::endl;
2930 os <<
" drbIdentity: " << (
int)it2->drbIdentity << std::endl;
2931 os <<
" rlcConfig: " << it2->rlcConfig.choice << std::endl;
2932 os <<
" logicalChannelIdentity: " << (int)it2->logicalChannelIdentity << std::endl;
2933 os <<
" logicalChannelConfig: " << std::endl;
2934 os <<
" priority: " << (
int)it2->logicalChannelConfig.priority << std::endl;
2935 os <<
" prioritizedBitRateKbps: " << (int)it2->logicalChannelConfig.prioritizedBitRateKbps << std::endl;
2936 os <<
" bucketSizeDurationMs: " << (
int)it2->logicalChannelConfig.bucketSizeDurationMs << std::endl;
2937 os <<
" logicalChannelGroup: " << (int)it2->logicalChannelConfig.logicalChannelGroup << std::endl;
2941 os <<
" drbToReleaseList: ";
2942 std::list<uint8_t>::iterator it3 = radioResourceConfigDedicated.
drbToReleaseList.begin ();
2945 os << (int)*it3 <<
", ";
2953 os <<
" physicalConfigDedicated: " << std::endl;
2958 os <<
" soundingRsUlConfigDedicated: " << std::endl;
2975 std::bitset<0> bitset0;
2978 std::bitset<3> sysInfoBlkT1Opts;
2982 std::bitset<1> cellAccessRelatedInfoOpts;
2986 int numPlmnIdentityInfoElements;
2988 for (
int i = 0; i < numPlmnIdentityInfoElements; i++)
2997 std::bitset<16> trackingAreaCode;
3001 std::bitset<28> cellIdentity;
3014 if (cellAccessRelatedInfoOpts[0])
3017 std::bitset<27> csgIdentity;
3023 std::bitset<1> qRxLevMinOffsetPresent;
3026 if (qRxLevMinOffsetPresent[0])
3032 if (sysInfoBlkT1Opts[2])
3042 int numSchedulingInfo;
3044 for (
int i = 0; i < numSchedulingInfo; i++)
3050 for (
int j = 0; j < numSibType; j++)
3056 if (sysInfoBlkT1Opts[1])
3068 if (sysInfoBlkT1Opts[0])
3079 std::bitset<0> bitset0;
3082 std::bitset<2> sysInfoBlkT2Opts;
3084 if (sysInfoBlkT2Opts[1])
3103 std::bitset<2> freqInfoOpts;
3105 if (freqInfoOpts[1])
3111 if (freqInfoOpts[0])
3121 if (sysInfoBlkT2Opts[0])
3137 std::bitset<0> bitset0;
3140 std::bitset<9> rrCfgCommOptions;
3144 if (rrCfgCommOptions[8])
3150 std::bitset<1> prachConfigInfoPresent;
3157 if (prachConfigInfoPresent[0])
3163 if (rrCfgCommOptions[7])
3204 if (rrCfgCommOptions[6])
3210 if (rrCfgCommOptions[5])
3216 if (rrCfgCommOptions[4])
3222 if (rrCfgCommOptions[3])
3228 if (rrCfgCommOptions[2])
3234 if (rrCfgCommOptions[1])
3240 if (rrCfgCommOptions[0])
3254 std::bitset<0> bitset0;
3260 std::bitset<1> preamblesGroupAConfigPresent;
3319 if (preamblesGroupAConfigPresent[0])
3432 std::bitset<0> bitset0;
3450 std::bitset<1> prachConfigInfoPresent;
3455 if (prachConfigInfoPresent[0])
3543 std::bitset<4> measResultOptionalPresent;
3566 int measResultNeighCellsChoice;
3571 if (measResultNeighCellsChoice == 0)
3577 for (
int i = 0; i < numElems; i++)
3581 std::bitset<1> isCgiInfoPresent;
3588 measResultEutra.
haveCgiInfo = isCgiInfoPresent[0];
3589 if (isCgiInfoPresent[0])
3591 std::bitset<1> havePlmnIdentityList;
3601 std::bitset<28> cellId;
3606 std::bitset<16> trArCo;
3611 if (havePlmnIdentityList[0])
3616 for (
int j = 0; j < numPlmnElems; j++)
3626 std::bitset<2> measResultOpts;
3630 if (measResultOpts[1])
3638 if (measResultOpts[0])
3649 if (measResultNeighCellsChoice == 1)
3655 if (measResultNeighCellsChoice == 2)
3660 if (measResultNeighCellsChoice == 3)
3671 for (
int i = 0; i < numElems; i++)
3678 std::bitset<2> measResultScellPresent;
3685 std::bitset<2> measResultOpts;
3689 if (measResultOpts[1])
3697 if (measResultOpts[0])
3719 std::bitset<1> isMccPresent;
3722 if (isMccPresent[0])
3733 for (
int j = mncDigits - 1; j >= 0; j--)
3736 mnc +=
n * pow (10,j);
3749 std::bitset<0> bitset0;
3750 std::bitset<2> bitset2;
3751 std::bitset<11> bitset11;
3760 int measObjectToRemoveListElems;
3763 for (
int i = 0; i < measObjectToRemoveListElems; i++)
3773 int measObjectToAddModListElems;
3776 for (
int i = 0; i < measObjectToAddModListElems; i++)
3785 int measObjectChoice;
3788 switch (measObjectChoice)
3808 std::bitset<5> measObjectEutraOpts;
3829 if (measObjectEutraOpts[4])
3835 for (
int i = 0; i < numElems; i++)
3842 if (measObjectEutraOpts[3])
3848 for (
int i = 0; i < numElems; i++)
3869 if (measObjectEutraOpts[2])
3875 for (
int i = 0; i < numElems; i++)
3883 if (measObjectEutraOpts[1])
3889 for (
int i = 0; i < numElems; i++)
3898 std::bitset<1> isRangePresent;
3966 if (measObjectEutraOpts[0])
3980 int reportConfigToRemoveListElems;
3983 for (
int i = 0; i < reportConfigToRemoveListElems; i++)
3993 int reportConfigToAddModListElems;
3996 for (
int i = 0; i < reportConfigToAddModListElems; i++)
4005 int reportConfigChoice;
4008 if (reportConfigChoice == 0)
4014 int triggerTypeChoice;
4017 if (triggerTypeChoice == 0)
4027 switch (eventIdChoice)
4121 if (triggerTypeChoice == 1)
4248 if (reportConfigChoice == 1)
4261 int measIdToRemoveListElems;
4264 for (
int i = 0; i < measIdToRemoveListElems; i++)
4274 int measIdToAddModListElems;
4277 for (
int i = 0; i < measIdToAddModListElems; i++)
4300 std::bitset<4> quantityConfigOpts;
4303 if (quantityConfigOpts[3])
4416 if (quantityConfigOpts[2])
4421 if (quantityConfigOpts[1])
4426 if (quantityConfigOpts[0])
4437 int measGapConfigChoice;
4439 switch (measGapConfigChoice)
4450 int gapOffsetChoice;
4452 switch (gapOffsetChoice)
4486 int speedStateParsChoice;
4488 switch (speedStateParsChoice)
4566 m_mmec = std::bitset<8> (0ul);
4567 m_mTmsi = std::bitset<32> (0ul);
4569 m_spare = std::bitset<1> (0ul);
4580 static TypeId tid =
TypeId (
"ns3::RrcConnectionRequestHeader")
4582 .SetGroupName(
"Lte")
4590 os <<
"MMEC:" <<
m_mmec << std::endl;
4591 os <<
"MTMSI:" <<
m_mTmsi << std::endl;
4593 os <<
"Spare: " <<
m_spare << std::endl;
4642 std::bitset<1> dummy;
4643 std::bitset<0> optionalOrDefaultMask;
4721 os <<
"radioResourceConfigDedicated:" << std::endl;
4770 std::bitset<0> bitset0;
4771 std::bitset<1> bitset1;
4772 std::bitset<2> bitset2;
4786 int criticalExtensionChoice;
4788 if (criticalExtensionChoice == 1)
4793 else if (criticalExtensionChoice == 0)
4856 std::list<LteRrcSap::SrbToAddMod>
4862 std::list<LteRrcSap::DrbToAddMod>
4928 std::bitset<0> bitset0;
5031 std::bitset<0> bitset0;
5117 std::bitset<6> options;
5136 std::bitset<4> mobCtrlIntoOptional;
5139 mobCtrlIntoOptional.set (1,0);
5191 std::bitset<2> noncriticalExtension_v890;
5192 noncriticalExtension_v890.set (1,0);
5199 std::bitset<3> noncriticalExtension_v920;
5200 noncriticalExtension_v920.set (1,0);
5201 noncriticalExtension_v920.set (1,0);
5216 std::bitset<0> bitset0;
5245 else if (c1Chosen == 0)
5248 std::bitset<6> rrcConnRecOpts;
5261 std::bitset<4> mobCtrlOpts;
5272 std::bitset<1> ulCarrierFreqPresent;
5278 if (ulCarrierFreqPresent[0])
5289 std::bitset<1> ulBandwidthPresent;
5295 if (ulBandwidthPresent[0])
5312 std::bitset<16> cRnti;
5331 if (rrcConnRecOpts[3])
5344 if (rrcConnRecOpts[1])
5371 os <<
" measObjectToRemoveList: ";
5373 std::list<uint8_t>::iterator it = auxList.begin ();
5374 for (; it != auxList.end (); it++)
5376 os << (int) *it <<
", ";
5382 os <<
" reportConfigToRemoveList: ";
5384 std::list<uint8_t>::iterator it = auxList.begin ();
5385 for (; it != auxList.end (); it++)
5387 os << (int) *it <<
", ";
5393 os <<
" measIdToRemoveList: ";
5395 std::list<uint8_t>::iterator it = auxList.begin ();
5396 for (; it != auxList.end (); it++)
5398 os << (int) *it <<
", ";
5405 os <<
" measObjectToAddMod: " << std::endl;
5407 std::list<LteRrcSap::MeasObjectToAddMod>::iterator it = auxList.begin ();
5408 for (; it != auxList.end (); it++)
5410 os <<
" measObjectId: " << (int)it->measObjectId << std::endl;
5411 os <<
" carrierFreq: " << (
int)it->measObjectEutra.carrierFreq << std::endl;
5412 os <<
" allowedMeasBandwidth: " << (int)it->measObjectEutra.allowedMeasBandwidth << std::endl;
5413 os <<
" presenceAntennaPort1: " << it->measObjectEutra.presenceAntennaPort1 << std::endl;
5414 os <<
" neighCellConfig: " << (
int) it->measObjectEutra.neighCellConfig << std::endl;
5415 os <<
" offsetFreq: " << (int)it->measObjectEutra.offsetFreq << std::endl;
5418 if (!it->measObjectEutra.cellsToRemoveList.empty ())
5420 os <<
" cellsToRemoveList: ";
5421 std::list<uint8_t> auxList = it->measObjectEutra.cellsToRemoveList;
5422 std::list<uint8_t>::iterator it = auxList.begin ();
5423 for (; it != auxList.end (); it++)
5425 os << (int) *it <<
", ";
5430 if (!it->measObjectEutra.blackCellsToRemoveList.empty ())
5432 os <<
" blackCellsToRemoveList: ";
5433 std::list<uint8_t> auxList = it->measObjectEutra.blackCellsToRemoveList;
5434 std::list<uint8_t>::iterator it = auxList.begin ();
5435 for (; it != auxList.end (); it++)
5437 os << (int) *it <<
", ";
5442 if (!it->measObjectEutra.cellsToAddModList.empty ())
5444 os <<
" cellsToAddModList: " << std::endl;
5445 std::list<LteRrcSap::CellsToAddMod> auxList = it->measObjectEutra.cellsToAddModList;
5446 std::list<LteRrcSap::CellsToAddMod>::iterator it = auxList.begin ();
5447 for (; it != auxList.end (); it++)
5449 os <<
" cellIndex: " << (int)it->cellIndex << std::endl;
5450 os <<
" physCellId: " << (
int)it->physCellId << std::endl;
5451 os <<
" cellIndividualOffset: " << (int)it->cellIndividualOffset << std::endl;
5452 os <<
" ------ " << std::endl;
5456 if (!it->measObjectEutra.blackCellsToAddModList.empty ())
5458 os <<
" blackCellsToAddModList: " << std::endl;
5459 std::list<LteRrcSap::BlackCellsToAddMod> auxList = it->measObjectEutra.blackCellsToAddModList;
5460 std::list<LteRrcSap::BlackCellsToAddMod>::iterator it = auxList.begin ();
5461 for (; it != auxList.end (); it++)
5463 os <<
" cellIndex: " << (int)it->cellIndex << std::endl;
5464 os <<
" physCellIdRange.start: " << (
int)it->physCellIdRange.start << std::endl;
5465 os <<
" physCellIdRange.haveRange: " << it->physCellIdRange.haveRange << std::endl;
5466 os <<
" physCellIdRange.range: " << (int)it->physCellIdRange.range << std::endl;
5467 os <<
" ------ " << std::endl;
5471 os <<
" haveCellForWhichToReportCGI: " << it->measObjectEutra.haveCellForWhichToReportCGI << std::endl;
5472 os <<
" cellForWhichToReportCGI: " << (int)it->measObjectEutra.cellForWhichToReportCGI << std::endl;
5473 os <<
" ------------- " << std::endl;
5480 os <<
" reportConfigToAddModList: " << std::endl;
5482 std::list<LteRrcSap::ReportConfigToAddMod>::iterator it = auxList.begin ();
5483 for (; it != auxList.end (); it++)
5485 os <<
" reportConfigId: " << (int)it->reportConfigId << std::endl;
5486 os <<
" reportConfigEutra.triggerType " << (
int)it->reportConfigEutra.triggerType << std::endl;
5489 os <<
" reportConfigEutra.eventId " << (int)it->reportConfigEutra.eventId << std::endl;
5492 os <<
" reportConfigEutra.reportOnLeave " << (int)it->reportConfigEutra.reportOnLeave << std::endl;
5493 os <<
" reportConfigEutra.a3Offset " << (
int)it->reportConfigEutra.a3Offset << std::endl;
5497 os <<
" reportConfigEutra.threshold1.choice " << (int)it->reportConfigEutra.threshold1.choice << std::endl;
5498 os <<
" reportConfigEutra.threshold1.range " << (
int)it->reportConfigEutra.threshold1.range << std::endl;
5501 os <<
" reportConfigEutra.threshold2.choice " << (int)it->reportConfigEutra.threshold2.choice << std::endl;
5502 os <<
" reportConfigEutra.threshold2.range " << (
int)it->reportConfigEutra.threshold2.range << std::endl;
5505 os <<
" reportConfigEutra.hysteresis " << (int)it->reportConfigEutra.hysteresis << std::endl;
5506 os <<
" reportConfigEutra.timeToTrigger " << (
int)it->reportConfigEutra.timeToTrigger << std::endl;
5510 os <<
" reportConfigEutra.purpose " << (int)it->reportConfigEutra.purpose << std::endl;
5512 os <<
" reportConfigEutra.triggerQuantity " << (int)it->reportConfigEutra.triggerQuantity << std::endl;
5513 os <<
" reportConfigEutra.reportQuantity " << (
int)it->reportConfigEutra.reportQuantity << std::endl;
5514 os <<
" reportConfigEutra.maxReportCells " << (int)it->reportConfigEutra.maxReportCells << std::endl;
5515 os <<
" reportConfigEutra.reportInterval " << (
int)it->reportConfigEutra.reportInterval << std::endl;
5516 os <<
" reportConfigEutra.reportAmount " << (int)it->reportConfigEutra.reportAmount << std::endl;
5522 os <<
" measIdToAddModList: " << std::endl;
5524 std::list<LteRrcSap::MeasIdToAddMod>::iterator it = auxList.begin ();
5525 for (; it != auxList.end (); it++)
5527 os <<
" measId: " << (int)it->measId << std::endl;
5528 os <<
" measObjectId: " << (
int)it->measObjectId << std::endl;
5529 os <<
" reportConfigId: " << (int)it->reportConfigId << std::endl;
5530 os <<
" ------ " << std::endl;
5693 std::list<LteRrcSap::SrbToAddMod>
5699 std::list<LteRrcSap::DrbToAddMod>
5743 std::bitset<4> handoverPrepInfoOpts;
5744 handoverPrepInfoOpts.set (3,1);
5745 handoverPrepInfoOpts.set (2,0);
5746 handoverPrepInfoOpts.set (1,0);
5747 handoverPrepInfoOpts.set (0,0);
5801 std::bitset<0> bitset0;
5809 int criticalExtensionsChosen;
5812 if (criticalExtensionsChosen == 1)
5817 else if (criticalExtensionsChosen == 0)
5826 else if (c1Chosen == 0)
5829 std::bitset<4> handoverPrepInfoOpts;
5834 for (
int i = 0; i <
n; i++)
5840 if (handoverPrepInfoOpts[3])
5857 std::bitset<16> cRnti;
5872 std::bitset<8> systemFrameNumber;
5876 std::bitset<10> spare;
5893 if (handoverPrepInfoOpts[2])
5898 if (handoverPrepInfoOpts[1])
5903 if (handoverPrepInfoOpts[0])
6014 std::bitset<0> bitset0;
6039 std::bitset<16> cRnti;
6049 std::bitset<16> shortMacI;
6071 std::bitset<2> spare;
6163 std::bitset<0> bitset0;
6177 int criticalExtensionsChoice;
6179 if (criticalExtensionsChoice == 1)
6184 else if (criticalExtensionsChoice == 0)
6197 std::bitset<1> nonCriticalExtensionPresent;
6215 os <<
"RadioResourceConfigDedicated: " << std::endl;
6283 std::bitset<0> bitset0;
6297 int criticalExtensionsChoice;
6299 if (criticalExtensionsChoice == 1)
6304 else if (criticalExtensionsChoice == 0)
6307 std::bitset<1> opts;
6382 std::bitset<0> bitset0;
6391 int criticalExtensionsChoice;
6393 if (criticalExtensionsChoice == 1)
6398 else if (criticalExtensionsChoice == 0)
6401 std::bitset<1> opts;
6476 std::bitset<0> bitset0;
6490 int criticalExtensionsChoice;
6492 if (criticalExtensionsChoice == 1)
6497 else if (criticalExtensionsChoice == 0)
6506 std::bitset<3> opts;
6598 std::bitset<0> bitset0;
6608 int criticalExtensionsChoice;
6610 if (criticalExtensionsChoice == 1)
6615 else if (criticalExtensionsChoice == 0)
6625 else if (c1Choice == 0)
6628 std::bitset<1> opts;
6708 std::bitset<0> bitset0;
6714 int criticalExtensionsChoice;
6717 if (criticalExtensionsChoice == 1)
6722 else if (criticalExtensionsChoice == 0)
6735 std::bitset<1> isNonCriticalExtensionPresent;
6741 if (isNonCriticalExtensionPresent[0])
6764 std::list<LteRrcSap::MeasResultEutra>::iterator it = measResultListEutra.begin ();
6765 for (; it != measResultListEutra.end (); it++)
6767 os <<
" physCellId =" << (int) it->physCellId << std::endl;
6768 os <<
" haveCgiInfo =" << it->haveCgiInfo << std::endl;
6769 if (it->haveCgiInfo)
6771 os <<
" plmnIdentity = " << (int) it->cgiInfo.plmnIdentity << std::endl;
6772 os <<
" cellIdentity = " << (
int) it->cgiInfo.cellIdentity << std::endl;
6773 os <<
" trackingAreaCode = " << (int) it->cgiInfo.trackingAreaCode << std::endl;
6774 os <<
" havePlmnIdentityList = " << !it->cgiInfo.plmnIdentityList.empty () << std::endl;
6775 if (!it->cgiInfo.plmnIdentityList.empty ())
6777 for (std::list<uint32_t>::iterator it2 = it->cgiInfo.plmnIdentityList.begin (); it2 != it->cgiInfo.plmnIdentityList.end (); it2++)
6779 os <<
" plmnId : " << *it2 << std::endl;
6784 os <<
" haveRsrpResult =" << it->haveRsrpResult << std::endl;
6785 if (it->haveRsrpResult)
6787 os <<
" rsrpResult =" << (int) it->rsrpResult << std::endl;
6790 os <<
" haveRsrqResult =" << it->haveRsrqResult << std::endl;
6791 if (it->haveRsrqResult)
6793 os <<
" rsrqResult =" << (int) it->rsrqResult << std::endl;
6834 std::cout <<
"UL DCCH MSG TYPE: " <<
m_messageType << std::endl;
6846 std::bitset<0> bitset0;
6895 std::cout <<
"DL DCCH MSG TYPE: " <<
m_messageType << std::endl;
6907 std::bitset<0> bitset0;
6956 std::cout <<
"UL CCCH MSG TYPE: " <<
m_messageType << std::endl;
6968 std::bitset<0> bitset0;
7017 std::cout <<
"DL CCCH MSG TYPE: " <<
m_messageType << std::endl;
7029 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?
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
LteRrcSap::HandoverPreparationInfo GetMessage() const
Returns a HandoverPreparationInfo IE from the values in the class attributes.
uint32_t carrierFreq
carrier frequency
CellIdentification structure.
uint8_t drbIdentity
DRB identity.
RadioResourceConfigCommonSCell radioResourceConfigCommonSCell
radio resource config common SCell
CarrierFreqEutra carrierFreq
carrier frequency
#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.
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.
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
uint8_t cellIndex
cell index
std::list< MeasObjectToAddMod > measObjectToAddModList
measure object to add mod list
uint8_t numberOfRaPreambles
number of RA preambles
Event A3: Neighbour becomes amount of offset better than PCell.
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
RSRP is used for the threshold.
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.
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.
TxFailParam txFailParam
txFailParams
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.
bool haveSmeasure
have S measure?
Reference Signal Received Quality.
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)
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?
LteRrcSap::AsConfig GetAsConfig() const
Getter for m_asConfig.
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
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
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.
void SerializeDlDcchMessage(int msgType) const
Serialize DL DCCH message function.
ReportConfigEutra reportConfigEutra
report config eutra
uint8_t rsrqResult
the RSRQ result
uint8_t logicalChannelGroup
logical channel group
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
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
bool haveRadioResourceConfigDedicatedSCell
have radio resource config dedicated SCell?
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
uint8_t sMeasure
S measure.
Event A5: PCell becomes worse than absolute threshold1 AND Neighbour becomes better than another abso...
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?
RrcConnectionReconfigurationCompleted structure.
MeasResultServFreqList measScellResultList
measure SCell result list
enum ns3::LteRrcSap::ReportConfigEutra::@68 reportInterval
Report interval enumeration.
bool haveAntennaInfoUlDedicated
have antenna info UL dedicated?
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.
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?
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
void SerializeUlCcchMessage(int msgType) const
Serialize UL CCCH message function.
uint16_t prioritizedBitRateKbps
prioritized bit rate Kbps
uint8_t connEstFailCount
Number of times that the UE detects T300 expiry on the same cell.
uint32_t Deserialize(Buffer::Iterator bIterator)
uint8_t maxReportCells
Maximum number of cells, excluding the serving cell, to be included in the measurement report...
ReestablishmentCause
ReestablishmentCause enumeration.
int8_t cellIndividualOffset
cell individual offset
void SerializeDlCcchMessage(int msgType) const
Serialize DL CCCH message function.
Reference Signal Received Power.
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?
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
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.
uint8_t range
Value range used in RSRP/RSRQ threshold.
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.
void Print(std::ostream &os) const
This function prints the object, for debugging purposes.
BlackCellsToAddMod structure.
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.
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
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...
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.
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
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)
Both the RSRP and RSRQ quantities are to be included in the measurement report.
RadioResourceConfigDedicatedSCell structure.
int8_t pb
INTEGER (0..3),.
void PreSerialize() const
This function serializes class attributes to m_serializationResult local Buffer.
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
int8_t offsetFreq
offset frequency
bool haveAntennaInfoDedicated
have antenna info dedicated?
RrcConnectionReestablishmentComplete structure.
uint8_t transmissionMode
transmission mode
enum ns3::LteRrcSap::RlcConfig::direction choice
direction choice
void SerializeUlDcchMessage(int msgType) const
Serialize UL DCCH message function.
Event A1: Serving becomes better than absolute threshold.
enum ns3::LteRrcSap::MeasGapConfig::action type
action type
RSRQ is used for the threshold.
MobilityControlInfo mobilityControlInfo
mobility control info
bool haveMeasConfig
have measure config
Event A4: Neighbour becomes better than absolute threshold.
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.
Event A2: Serving becomes worse than absolute threshold.
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.