From fb55f9a6b3f61e731a8a3d548dc77c23b8117dca Mon Sep 17 00:00:00 2001 From: Budiarto Herman Date: Wed, 11 Sep 2013 13:35:10 +0300 Subject: [PATCH] Revised lte-cell-selection test vector --- .../lte-cell-selection-closed-access.dia | Bin 2318 -> 2187 bytes src/lte/doc/source/lte-testing.rst | 30 ++--- src/lte/test/lte-test-cell-selection.cc | 119 +++++++++++------- src/lte/test/lte-test-cell-selection.h | 15 ++- 4 files changed, 99 insertions(+), 65 deletions(-) diff --git a/src/lte/doc/source/figures/lte-cell-selection-closed-access.dia b/src/lte/doc/source/figures/lte-cell-selection-closed-access.dia index 48327d1aaea519c5d5930ee8c9285ec0d346509b..52b593607f5bd11fc97bbb50ab603bbc101afe55 100644 GIT binary patch literal 2187 zcmV;62z2)!iwFP!000021MOW~bE7sCe$TI9ysr+H5Ry>cWM_A$m#4PVZl5!R&0vyLSz61~(ykaI7+u|Ha*7qIp=?H#&|8)^qk0MU|D7@=I8}uv@j-!bm z&hC1DfByN_>%G6f`Ela&ALP$0<_k-n5hm)@U2mSI%O3`Vr>7@7SSLJS!mF^zp<>B1|~e^>b>G!o~E%sTBX7Y`9j?FMtuBb7Duaa(#uN~<;GDE#nvMa z?t1U0+0h#mW(GTUPS{@ZnHa@_e>rX%$b+#erk5h#H@jFyi7$(!>*Ya_BX-p97iEf4 zi7XV(?%#cI-{n;*-q_kItLRZD>4L{IKRom!`zFXc!m&Naab#y;<}pBB3O9Z7dUvCC z-39Hsi`#YQClAXgPGjz;hb~7^6bK&XUekCbs{2XCJdi`|RI_TdV(O=9bf*4O9we7E zAb0I5mgYsV!MR@FFL!Cj&!*K*CH;= zf82&?tN4No#uJH;E+C!nI4VyEyuF{Je&pM+4>NIK7`eLEM>bNvdUiE zgu{=ee|qY3Qn`AP{l&vB97+J8;IIWm1rHgu9d`6Ht=W)bm$?W76+=CW#Vzux`SZh2 z#Cn^Q%%i7=k}2%@_*~81DBswSh@rNEj_IR-#$q`b&QV*taoXN6QNz?AtR^z;I(dK(PD48TqUjMNq} zwBjp^UwYAHqL%@eCQXCZ1{c$-X=Li)P{ZdqUwdaIDYs~U&0&w54v78w~8!_DXZ0OR8E*B!@y)(J$Rv)($tJs z20_W|QG5_dw!&ANQIFN0OJcoOYRGn(Q^Y-o*ceb1_*ka{pW~Xy_tqod%e3XU8~J{V z!dn^rZcOxRDf+3r6BGU3c=Y?^C*w%QzE2VrtANMWavp^*WlFfowF32ZN~km03fh!H zNc+&S5r%AtY>Fu%eTZ!UDC=+ttlV!G>7zEp4pXbngfSN(qBHtA`sAJM68h$V-*aSb zSU#$e3IGmN#oFThH1L-X^C0S0dXWlZ0#L^M>dR(KmF*iq9(Dp@iYRCK#URy`PyRa~G(anki1tlW(zu z-+pSy-#?jzkQNd`_D0|}B!htVl0hD`Djg?s)D91^CKd>Z-rK$vJOn+%LxzXWjzGgh z9poXWiA|?O>)r7-vmrx5hJ?-yKf^&?Ub8R;{v6yy~QDO3^nI)Di_T z!$93&pbzo5?71xUx24&PPyqW%g-1y11~r=jgi+tIU5q_>aRzKa5LTWE@hU2f<0uRt zL^wHrm(yeIEZw?U`L0qt9$#{w+v?Kvcojd2hl!uat{tBcC2xVvpvznrL&tNFM-jqZ zS;ejS0Ey=w4?{TuC0>$)?_%?bHJ1P@C_jzzJucSv<1%r){6gXO-0Od$>fVvGGBG?%^xJ?Q;*38n4YgfSlm_h6T1~9=8VaIU|1Dt07T!R7F zw_$(=o^;a^130eD5I}wP2N9aB6v@BY4sXJ!W(GLc%<`?Ppz{;}4c^b=oz%d)Z1gt) zJZ=c^5M@x%4S1RX+yySo0PirAc_x^&1Nehx8o+>=J){9 ze2&lD%rkYocINn(0sac+_|S%s%Bd9dj*uUFu{gPx(?@ zq_(mWB{0yA(9y3Fxi_-2L_8I-kXImvnOb0`-9c&Yl=w}VDSsXCwTSO;@)z=F7W2jZ N&Hs>6PU=OL001AtI2Ql_ literal 2318 zcmV+p3GwzHiwFP!000021MOX1ld3oxzVBZ_d2VgY2Z3aq?x~qmv%6O_TRUg2yHKOD z2f+gDKF-Dd_DulWRzVa9N1RyIA8L5tB<6YE@Z?SW@uzPq-+1Lw?1jP80GeQ6@L(Fw zykPM(`18v@9_iqx=Z7C>p8JFNSw!y25LX1TeD*Y0CdvAT(dg~%&Gfgin}m_+dmA(6 zqyM?S?~X*F(ct;PFg_ZXxrr-Z%U^YqB=RPkgd2go;!lH#JN>$d!c8z6WToqtr!Kok7H-6R;$fO7%(HVqM1{}+QyFR(z z-K1N0ez)$TZryqD%Q}pb$n}y_my1`-!KnFNWB;W;JNV+)I+MqW*K& zk1uIJ_VPR0u0`%5@@D6Odr+dp%9}S!mM`BFbysG6tH}DR7kd+*7uDVilGe;`+cAIq z>7?wvzr5jS$gGuyhZ*IBlk3C7V&lztTrtcJ%amAJ=EX);y?$Ko(vHbqIttdQ3*X)H zC^!GhK1>_=2b?pG;Z76pb@%K;pM;bD@@bMc_K(C3W^Oby9*uv8{&o=tgZ(^2%tE}` z)8Kb-*kQ*_6b1zsp7hu{d>>Z!5FdBIDSecgo=lD{N2302u<-f2^)UoP26&tDGVPyh%Chdm%_cu1-3w4>i?&4doIn1u8NR&~Oku0zb1|2U_P}X`B-j*52r7k=G(Sc}F_sP+QSd%F4<>QFMw3R< z@2Dx7pjCSyT?D5zDvhNVrV>v_%_xjcken@0zls`By+hQmzVEHYJ>4myaAQP?*nw0c z$}*V@PvZ9&0TYP-9r3%KNAB~L_?)BQR1a#WNvVU1k=vy1OYSX}N$a*JVKfs6sHiwF zA;=!kVgN$BZZGBTDgo!t#BHD5fJ5SB>+@p|JlL!<2Ub@ovznp|s0G<$2CNihq!Ww* z4KWR|HX%luLJXrJQ3x?A#DsUrdByjHTbdg zqEtCNYDS?He_lCkP(`gA_Cq=RjVEtm^i=@r7dPgH09fJ`qKY-169T0%i<&kdLu3*$ zGlV8)WJpbDIW=9bc;XH!k|Ji_G*KBMnQ4pm*y_S0Fex~ESPBEDWjgHOK^rp5<}41g z2Gw&h_k8~X7fm8(!oMX|1MH|w8EK?xiU;M6G8#Ys@lRvQeZM5H@k}yMS^tDVQshv+ zZp_`4=Wj*5c;w9oMk*SmG?HEW#ar?C@jv0p4L*jR>nm|G-mV?tb(|hjTv@V+$rx$o z=Qzwz{4h(YB_m-3TH~ys0`T@n$0Te)0NC813HWpcceEr97Xhdk}n(_n>_T`krW!zRS@9 zpBDIfCGd&arM|_v7ljYEpztY;eLIOSi+($ePlUfa5czcc(<+}<`TD5x=@@uNGM{zZ z`G`A}&ype^rSB@ABSk*i=NPCo3-aznzJ?oRw8*DLzPl6oE+=`?!mbXri#fLBdGx-R z1F7VBr~ivN4LVM*=4hhVM6Zed8lu1X?Rz=T@22xRp6~s1Uh$SeP4k-OHO*_9&uQMd z^Y@=lxP4k-OJE3{n0?jLxZFW5Wo`Z|;M7F^?30KeOHPLILZ|TU2 zFEZVsfZ~t_lGC%~TY|{#r-uCbt4;{%AR**v1l~h32u!9}>05#yN0q-;cJpMj_cUl5G#3>Y1 z1KvpiZUGCXfJY3co^4`x1Nf6>YQX=E0Z)4f_{J%|kVz4YcA)hMPmnPuo#jJnXR~|? zrDrNosCt%P*3NsK=0g)gM@*&|6@LIlj-KULa{#_&t*>msk+qO~#nk3r(Ov45UUSrI zj#UFtFFN)x?E!-pQqh^(OmwJTA%}gCI)8U}h=cV?MnVP4C0=3j6IY@BRj+zikxk*!# orlzy$qCj)g?Qm1}+;_J;dVa{Bh@VB|uAU$M4@BoX%ub>J03ern{r~^~ diff --git a/src/lte/doc/source/lte-testing.rst b/src/lte/doc/source/lte-testing.rst index 582457713..6d23fc40c 100644 --- a/src/lte/doc/source/lte-testing.rst +++ b/src/lte/doc/source/lte-testing.rst @@ -1017,8 +1017,9 @@ Initial cell selection ---------------------- The test suite `lte-cell-selection` is responsible for verifying the -:ref:`sec-initial-cell-selection` procedure. 3 short test cases are included in -the suite. +:ref:`sec-initial-cell-selection` procedure. Included in the suite are 3 short +test cases using ideal RRC protocol and the same test cases but using real RRC +protocol. Each test case is a simulation of a small network of 4 cells. Each eNodeB is equipped with directional antenna (parabolic model) and is arranged so that some @@ -1062,24 +1063,19 @@ while the rest are not. The resulting simulation is depicted in Figure It shows that CSG members may attach to either CSG or non-CSG cells, and simply choose the stronger one. On the other hand, non-members can only attach to -non-CSG cells, even when they are actually receive stronger signal from a CSG +non-CSG cells, even when they are actually receiving stronger signal from a CSG cell. -Note that a real life CSG deployment typically implements interference -coordination. Section 5.1 of [TS36922]_ describes frequency, time, and spatial -partitioning as possible approaches to interference coordination. However, none -of these approaches are implemented in this test suite. +The CSG scenario reveals an interference issue experienced by the UE highlighted +in the figure above. The UE is positioned within the coverage of a CSG cell but +it is not a member of the CSG. The CSG cell becomes a source of major +interference to the UE and causing difficulties (i.e. low SINR) to the UE in its +attempt to attach (i.e. receiving MIB and SIB1) to the closest non-CSG cell. -As "expected", interference issues occur in the simulation. The issue is more -apparent in the CSG scenario, as experienced by the UE (highlighted in Figure -:ref:`fig-lte-cell-selection-closed-access` above) which is well positioned -within the coverage of a CSG cell but not a member of the CSG. After the UE -fails to attach to the CSG cell, the cell becomes a major interference to the UE -and causing difficulties to the UE in attempting to attach to the closest -non-CSG cell. In other words, the UE is experiencing low SINR when receiving -transmission from the non-CSG cell. As a result, the UE takes longer time to -attach to the non-CSG cell because it often fails to receive system information -messages (e.g. MIB, SIB1, and SIB2) from the non-CSG cell. +A real life CSG deployment typically implements interference coordination to +remedy such issue. Section 5.1 of [TS36922]_ describes frequency, time, and +spatial partitioning as possible approaches to interference coordination. +However, none of these approaches are implemented in this test suite. diff --git a/src/lte/test/lte-test-cell-selection.cc b/src/lte/test/lte-test-cell-selection.cc index bd1ecfafa..246da7910 100644 --- a/src/lte/test/lte-test-cell-selection.cc +++ b/src/lte/test/lte-test-cell-selection.cc @@ -41,7 +41,6 @@ #include #include #include -#include NS_LOG_COMPONENT_DEFINE ("LteCellSelectionTest"); @@ -56,19 +55,10 @@ namespace ns3 { LteCellSelectionTestSuite::LteCellSelectionTestSuite () : TestSuite ("lte-cell-selection", SYSTEM) { - //LogComponentEnable ("LteCellSelectionTest", LOG_PREFIX_ALL); - //LogComponentEnable ("LteCellSelectionTest", LOG_FUNCTION); - //LogComponentEnable ("LteUePhy", LOG_INFO); - //LogComponentEnable ("LteUePhy", LOG_WARN); - //LogComponentEnable ("LteUePhy", LOG_DEBUG); - //LogComponentEnable ("LteUePhy", LOG_FUNCTION); - //LogComponentEnable ("LteSpectrumValueHelper", LOG_FUNCTION); - //LogComponentEnable ("LteSpectrumPhy", LOG_LOGIC); - //LogComponentEnable ("LteSpectrumPhy", LOG_FUNCTION); - //LogComponentEnable ("LteEnbPhy", LOG_FUNCTION); - //LogComponentEnable ("LteUeRrc", LOG_PREFIX_ALL); - //LogComponentEnable ("LteUeRrc", LOG_LOGIC); - //LogComponentEnable ("LteUeRrc", LOG_WARN); + // LogComponentEnable ("LteCellSelectionTest", LOG_PREFIX_ALL); + // LogComponentEnable ("LteCellSelectionTest", LOG_FUNCTION); + // LogComponentEnable ("LteSpectrumPhy", LOG_PREFIX_ALL); + // LogComponentEnable ("LteSpectrumPhy", LOG_DEBUG); std::vector x; @@ -87,49 +77,69 @@ LteCellSelectionTestSuite::LteCellSelectionTestSuite () x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector (-80, 10, 0), 0, 3)); x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector ( 80, 10, 0), 0, 1)); x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector (240, 10, 0), 0, 2)); - AddTestCase (new LteCellSelectionTestCase ("[EPC] Open access", - true, false, x, MilliSeconds (261)), + AddTestCase (new LteCellSelectionTestCase ("[EPC, ideal RRC] Open access", + true, true, false, x, + MilliSeconds (261)), + TestCase::QUICK); + AddTestCase (new LteCellSelectionTestCase ("[EPC, real RRC] Open access", + true, false, false, x, + MilliSeconds (279)), TestCase::QUICK); /* * <-- <-- * ue1---CELL3 ue2---CELL4 ue3 * (1) (1) (1) / (0) /(1) - * /-------------/ / - * / --> / --> / + * / / + * --> / --> / * ue4 CELL1 ue5 CELL2---ue6 * (0) (1) (0) (0) (0) + * + * DL error rate of ue4 when attached to CELL3 = 0 + * when attached to CELL4 = 0.734758 */ x.clear (); // position x y z, csg expectedCellId x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector (-80, 20, 0), 1, 3)); x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector ( 80, 20, 0), 1, 4)); x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector (240, 20, 0), 1, 2)); - x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector (-80, 10, 0), 0, 4)); + x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector (-80, 10, 0), 0, 0)); x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector ( 80, 10, 0), 0, 4)); x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector (240, 10, 0), 0, 2)); - AddTestCase (new LteCellSelectionTestCase ("[EPC] Some CSG 1", - true, true, x, MilliSeconds (361)), - TestCase::QUICK); + AddTestCase (new LteCellSelectionTestCase ("[EPC, ideal RRC] Some CSG 1", + true, true, true, x, + MilliSeconds (261)), + TestCase::EXTENSIVE); + AddTestCase (new LteCellSelectionTestCase ("[EPC, real RRC] Some CSG 1", + true, false, true, x, + MilliSeconds (279)), + TestCase::EXTENSIVE); /* - * /-------------\ - * / <-- \ <-- + * <-- <-- * ue1 CELL3 ue2---CELL4 ue3 * (0) / (1) (0) (0) /(0) * / / * / --> --> / * ue4 CELL1---ue5 CELL2---ue6 * (1) (1) (1) (0) (1) + * + * DL error rate of ue1 when attached to CELL3 = 0 + * when attached to CELL4 = 0.777789 */ x.clear (); // position x y z, csg expectedCellId - x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector (-80, 20, 0), 0, 4)); + x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector (-80, 20, 0), 0, 0)); x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector ( 80, 20, 0), 0, 4)); x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector (240, 20, 0), 0, 2)); x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector (-80, 10, 0), 1, 3)); x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector ( 80, 10, 0), 1, 1)); x.push_back (LteCellSelectionTestCase::UeSetup_t (Vector (240, 10, 0), 1, 2)); - AddTestCase (new LteCellSelectionTestCase ("[EPC] Some CSG 2", - true, true, x, MilliSeconds (361)), + AddTestCase (new LteCellSelectionTestCase ("[EPC, ideal RRC] Some CSG 2", + true, true, true, x, + MilliSeconds (261)), + TestCase::EXTENSIVE); + AddTestCase (new LteCellSelectionTestCase ("[EPC, real RRC] Some CSG 2", + true, false, true, x, + MilliSeconds (279)), TestCase::EXTENSIVE); } // end of LteCellSelectionTestSuite::LteCellSelectionTestSuite () @@ -147,20 +157,25 @@ static LteCellSelectionTestSuite g_lteCellSelectionTestSuite; LteCellSelectionTestCase::UeSetup_t::UeSetup_t (Vector position, uint32_t csgIdentity, uint16_t expectedCellId) - : position (position), csgIdentity (csgIdentity), + : position (position), + csgIdentity (csgIdentity), expectedCellId (expectedCellId) { } LteCellSelectionTestCase::LteCellSelectionTestCase ( - std::string name, bool isEpcMode, bool hasCsgDiversity, + std::string name, bool isEpcMode, bool isIdealRrc, bool hasCsgDiversity, std::vector ueSetupList, Time duration) - : TestCase (name), m_isEpcMode (isEpcMode), - m_hasCsgDiversity (hasCsgDiversity), m_ueSetupList (ueSetupList), - m_duration (duration), m_lastState (LteUeRrc::NUM_STATES) + : TestCase (name), + m_isEpcMode (isEpcMode), + m_isIdealRrc (isIdealRrc), + m_hasCsgDiversity (hasCsgDiversity), + m_ueSetupList (ueSetupList), + m_duration (duration) { NS_LOG_FUNCTION (this << GetName ()); + m_lastState.resize (m_ueSetupList.size (), LteUeRrc::NUM_STATES); } @@ -178,7 +193,7 @@ LteCellSelectionTestCase::DoRun () Ptr lteHelper = CreateObject (); lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::FriisSpectrumPropagationLossModel")); - lteHelper->SetAttribute ("UseIdealRrc", BooleanValue (true)); + lteHelper->SetAttribute ("UseIdealRrc", BooleanValue (m_isIdealRrc)); Ptr epcHelper; @@ -242,7 +257,7 @@ LteCellSelectionTestCase::DoRun () NetDeviceContainer ueDevs; ueDevs = lteHelper->InstallUeDevice (ueNodes); - // Set the PLMN and CSG ID + // Set the CSG ID if (m_hasCsgDiversity) { lteHelper->SetEnbCsgId (enbDevs.Get (0), 1, true); @@ -318,6 +333,8 @@ LteCellSelectionTestCase::DoRun () MakeCallback (&LteCellSelectionTestCase::InitialCellSelectionEndOkCallback, this)); Config::Connect ("/NodeList/*/DeviceList/*/LteUeRrc/InitialCellSelectionEndError", MakeCallback (&LteCellSelectionTestCase::InitialCellSelectionEndErrorCallback, this)); + Config::Connect ("/NodeList/*/DeviceList/*/LteUeRrc/ConnectionEstablished", + MakeCallback (&LteCellSelectionTestCase::ConnectionEstablishedCallback, this)); // Enable Idle mode cell selection lteHelper->Attach (ueDevs); @@ -339,22 +356,27 @@ LteCellSelectionTestCase::DoRun () NS_TEST_ASSERT_MSG_EQ (actualCellId, expectedCellId, "IMSI " << ueDev->GetImsi () << " has attached to an unexpected cell"); + if (expectedCellId > 0) + { + NS_TEST_ASSERT_MSG_EQ (m_lastState.at (ueDev->GetImsi () - 1), + LteUeRrc::CONNECTED_NORMALLY, + "UE " << ueDev->GetImsi () + << " is not at CONNECTED_NORMALLY state"); + } } - NS_TEST_ASSERT_MSG_EQ (m_lastState, LteUeRrc::CONNECTED_NORMALLY, - "UE is not at CONNECTED_NORMALLY state"); - Simulator::Destroy (); } // end of void LteCellSelectionTestCase::DoRun () + void LteCellSelectionTestCase::MibReceivedCallback ( std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti, uint16_t sourceCellId) { - NS_LOG_FUNCTION (this << context << imsi << cellId << rnti << sourceCellId); + NS_LOG_FUNCTION (this << imsi << cellId << rnti << sourceCellId); } @@ -363,7 +385,7 @@ LteCellSelectionTestCase::Sib1ReceivedCallback ( std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti, uint16_t sourceCellId) { - NS_LOG_FUNCTION (this << context << imsi << cellId << rnti << sourceCellId); + NS_LOG_FUNCTION (this << imsi << cellId << rnti << sourceCellId); } @@ -371,7 +393,7 @@ void LteCellSelectionTestCase::Sib2ReceivedCallback ( std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti) { - NS_LOG_FUNCTION (this << context << imsi << cellId << rnti); + NS_LOG_FUNCTION (this << imsi << cellId << rnti); } @@ -383,9 +405,8 @@ LteCellSelectionTestCase::StateTransitionCallback (std::string context, LteUeRrc::State oldState, LteUeRrc::State newState) { - NS_LOG_FUNCTION (this << context << imsi << cellId << rnti - << oldState << newState); - m_lastState = newState; + NS_LOG_FUNCTION (this << imsi << cellId << rnti << oldState << newState); + m_lastState.at (imsi - 1) = newState; } @@ -393,7 +414,7 @@ void LteCellSelectionTestCase::InitialCellSelectionEndOkCallback ( std::string context, uint64_t imsi, uint16_t cellId) { - NS_LOG_FUNCTION (this << context << imsi << cellId); + NS_LOG_FUNCTION (this << imsi << cellId); } @@ -401,7 +422,15 @@ void LteCellSelectionTestCase::InitialCellSelectionEndErrorCallback ( std::string context, uint64_t imsi, uint16_t cellId) { - NS_LOG_FUNCTION (this << context << imsi << cellId); + NS_LOG_FUNCTION (this << imsi << cellId); +} + + +void +LteCellSelectionTestCase::ConnectionEstablishedCallback ( + std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti) +{ + NS_LOG_FUNCTION (this << imsi << cellId << rnti); } diff --git a/src/lte/test/lte-test-cell-selection.h b/src/lte/test/lte-test-cell-selection.h index b5490f12c..3c763d366 100644 --- a/src/lte/test/lte-test-cell-selection.h +++ b/src/lte/test/lte-test-cell-selection.h @@ -71,7 +71,8 @@ public: * \param ueSetupList an array of UE setup parameters * \param duration length of simulation */ - LteCellSelectionTestCase (std::string name, bool isEpcMode, bool hasCsgDiversity, + LteCellSelectionTestCase (std::string name, bool isEpcMode, + bool isIdealRrc, bool hasCsgDiversity, std::vector ueSetupList, Time duration); virtual ~LteCellSelectionTestCase (); @@ -98,12 +99,20 @@ private: uint16_t cellId); void InitialCellSelectionEndErrorCallback (std::string context, uint64_t imsi, uint16_t cellId); + void ConnectionEstablishedCallback (std::string context, uint64_t imsi, + uint16_t cellId, uint16_t rnti); /** * \brief If true, then the simulation should be set up with EPC enabled. */ bool m_isEpcMode; + /** + * \brief If true, then the simulation should be set up with ideal RRC + * protocol, otherwise real RRC protocol is used. + */ + bool m_isIdealRrc; + /** * \brief If true, then the west cells in the simulation will be CSG cell, * while the east cells will be non-CSG cells. @@ -121,14 +130,14 @@ private: * The shortest possible simulation length for testing initial cell selection * is 206 milliseconds. If RRC_CONNECTED state is required, then the length * should be extended to 261 milliseconds in ideal RRC protocol, or at least - * 277 milliseconds in real RRC protocol. Moreover, scenarios which expect + * 278 milliseconds in real RRC protocol. Moreover, scenarios which expect * failure in initial cell selection procedure might want to extend this even * further to give the UE the chance to retry the procedure. */ Time m_duration; /// The current UE RRC state. - LteUeRrc::State m_lastState; + std::vector m_lastState; }; // end of class LteCellSelectionTestCase