Skip to content

Commit

Permalink
Check state of the UE
Browse files Browse the repository at this point in the history
  • Loading branch information
mrequena committed May 6, 2013
1 parent 14ae4b6 commit 4171a68
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 26 deletions.
3 changes: 2 additions & 1 deletion src/lte/model/lte-enb-rrc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -980,7 +980,8 @@ UeManager::RecvMeasurementReport (LteRrcSap::MeasurementReport msg)
{
uint16_t targetCellId = bestNeighbour->m_cellId;
NS_LOG_LOGIC ("Best neighbour cellId " << targetCellId);
if (bestNeighbour->m_rsrq - m_servingCellMeasures->m_rsrq >= m_rrc->m_neighbourCellHandoverOffset)
if ( (bestNeighbour->m_rsrq - m_servingCellMeasures->m_rsrq >= m_rrc->m_neighbourCellHandoverOffset) &&
(m_state == CONNECTED_NORMALLY) )
{
NS_LOG_LOGIC ("Trigger Handover to cellId " << targetCellId);
NS_LOG_LOGIC ("target cell RSRQ " << (uint16_t) bestNeighbour->m_rsrq);
Expand Down
55 changes: 30 additions & 25 deletions src/lte/test/test-lte-x2-handover-measures.cc
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ LteX2HandoverMeasuresTestCase::DoRun ()


double distance = 1000.0; // m
double speed = 100; // m/s
double speed = 200; // m/s

NodeContainer enbNodes;
enbNodes.Create (m_nEnbs);
Expand Down Expand Up @@ -599,15 +599,19 @@ class LteX2HandoverMeasuresTestSuite : public TestSuite
LteX2HandoverMeasuresTestSuite::LteX2HandoverMeasuresTestSuite ()
: TestSuite ("lte-x2-handover-measures", SYSTEM)
{
Time checkInterval = Seconds (1);

std::string cel0name ("no ho");
std::list<CheckPointEvent> cel0;
cel0.push_back (CheckPointEvent (Seconds (1), Seconds (50), Seconds (1), 0, 0));

std::string cel1name ("ho: 0 -> 1");
std::list<CheckPointEvent> cel1;
cel1.push_back (CheckPointEvent (Seconds (1), Seconds (15.1), Seconds (1), 0, 0));
// cel1.push_back (CheckPointEvent (Seconds (1), Seconds (15.1), checkInterval, 0, 0));
cel1.push_back (CheckPointEvent (Seconds (1), Seconds (8.1), checkInterval, 0, 0));
// HO is performed between seconds 15 and 16
cel1.push_back (CheckPointEvent (Seconds (16), Seconds (50), Seconds (1), 0, 1));
// cel1.push_back (CheckPointEvent (Seconds (16), Seconds (50), checkInterval, 0, 1));
cel1.push_back (CheckPointEvent (Seconds (9), Seconds (25), checkInterval, 0, 1));

std::string cel2name ("ho: 0 -> 1 -> 2");
std::list<CheckPointEvent> cel2;
Expand Down Expand Up @@ -640,38 +644,39 @@ LteX2HandoverMeasuresTestSuite::LteX2HandoverMeasuresTestSuite ()
int32_t useIdealRrc;
std::vector<std::string> schedulers;
schedulers.push_back ("ns3::RrFfMacScheduler");
schedulers.push_back ("ns3::PfFfMacScheduler");
// schedulers.push_back ("ns3::PfFfMacScheduler");
for (std::vector<std::string>::iterator schedIt = schedulers.begin (); schedIt != schedulers.end (); ++schedIt)
{
for (useIdealRrc = 1; useIdealRrc >= 0; --useIdealRrc)
// for (useIdealRrc = 1; useIdealRrc >= 0; --useIdealRrc)
useIdealRrc = 0;
{
// nEnbs, nUes, nDBearers, celist, name, useUdp, sched, admitHo, idealRrc
AddTestCase (new LteX2HandoverMeasuresTestCase ( 2, 1, 0, cel1, cel1name, true, *schedIt, true, useIdealRrc));
AddTestCase (new LteX2HandoverMeasuresTestCase ( 2, 1, 1, cel1, cel1name, true, *schedIt, true, useIdealRrc));
AddTestCase (new LteX2HandoverMeasuresTestCase ( 2, 1, 2, cel1, cel1name, true, *schedIt, true, useIdealRrc));
AddTestCase (new LteX2HandoverMeasuresTestCase ( 3, 1, 0, cel2, cel2name, true, *schedIt, true, useIdealRrc));
AddTestCase (new LteX2HandoverMeasuresTestCase ( 3, 1, 1, cel2, cel2name, true, *schedIt, true, useIdealRrc));
AddTestCase (new LteX2HandoverMeasuresTestCase ( 3, 1, 2, cel2, cel2name, true, *schedIt, true, useIdealRrc));
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 2, 1, 1, cel1, cel1name, true, *schedIt, true, useIdealRrc));
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 2, 1, 2, cel1, cel1name, true, *schedIt, true, useIdealRrc));
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 3, 1, 0, cel2, cel2name, true, *schedIt, true, useIdealRrc));
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 3, 1, 1, cel2, cel2name, true, *schedIt, true, useIdealRrc));
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 3, 1, 2, cel2, cel2name, true, *schedIt, true, useIdealRrc));
}

useIdealRrc = 1;
AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 0, cel3, cel3name, true, *schedIt, true, useIdealRrc));
AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 1, cel3, cel3name, true, *schedIt, true, useIdealRrc));
AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 2, cel3, cel3name, true, *schedIt, true, useIdealRrc));
// useIdealRrc = 1;
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 0, cel3, cel3name, true, *schedIt, true, useIdealRrc));
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 1, cel3, cel3name, true, *schedIt, true, useIdealRrc));
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 2, cel3, cel3name, true, *schedIt, true, useIdealRrc));

}

useIdealRrc = 0;
std::string scheduler = "ns3::RrFfMacScheduler";
AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 0, cel3, cel3name, true, scheduler, true, useIdealRrc));
AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 1, cel4, cel4name, true, scheduler, true, useIdealRrc));
AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 2, cel3, cel3name, true, scheduler, true, useIdealRrc));

useIdealRrc = 0;
scheduler = "ns3::PfFfMacScheduler";
AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 0, cel3, cel3name, true, scheduler, true, useIdealRrc));
AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 1, cel3, cel3name, true, scheduler, true, useIdealRrc));
AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 2, cel3, cel3name, true, scheduler, true, useIdealRrc));
// useIdealRrc = 0;
// std::string scheduler = "ns3::RrFfMacScheduler";
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 0, cel3, cel3name, true, scheduler, true, useIdealRrc));
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 1, cel4, cel4name, true, scheduler, true, useIdealRrc));
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 2, cel3, cel3name, true, scheduler, true, useIdealRrc));
//
// useIdealRrc = 0;
// scheduler = "ns3::PfFfMacScheduler";
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 0, cel3, cel3name, true, scheduler, true, useIdealRrc));
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 1, cel3, cel3name, true, scheduler, true, useIdealRrc));
// AddTestCase (new LteX2HandoverMeasuresTestCase ( 4, 1, 2, cel3, cel3name, true, scheduler, true, useIdealRrc));

}

Expand Down

0 comments on commit 4171a68

Please sign in to comment.