A Discrete-Event Network Simulator
API
lte-test-radio-link-failure.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018 Fraunhofer ESK
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation;
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  *
17  * Author: Vignesh Babu <ns3-dev@esk.fraunhofer.de>
18  */
19 
20 #ifndef LTE_TEST_RADIO_LINK_FAILURE_H
21 #define LTE_TEST_RADIO_LINK_FAILURE_H
22 
23 #include <ns3/lte-ue-rrc.h>
24 #include <ns3/mobility-model.h>
25 #include <ns3/net-device-container.h>
26 #include <ns3/node-container.h>
27 #include <ns3/nstime.h>
28 #include <ns3/test.h>
29 #include <ns3/vector.h>
30 
31 #include <vector>
32 
33 namespace ns3
34 {
35 
36 class LteUeNetDevice;
37 
38 }
39 
40 using namespace ns3;
41 
48 {
49  public:
51 };
52 
59 {
60  public:
74  LteRadioLinkFailureTestCase(uint32_t numEnbs,
75  uint32_t numUes,
76  Time simTime,
77  bool isIdealRrc,
78  std::vector<Vector> uePositionList,
79  std::vector<Vector> enbPositionList,
80  Vector ueJumpAwayPosition,
81  std::vector<Time> checkConnectedList);
82 
83  ~LteRadioLinkFailureTestCase() override;
84 
85  private:
93  std::string BuildNameString(uint32_t numEnbs, uint32_t numUes, bool isIdealRrc);
98  void DoRun() override;
99 
105  void CheckConnected(Ptr<NetDevice> ueDevice, NetDeviceContainer enbDevices);
106 
112  void CheckIdle(Ptr<NetDevice> ueDevice, NetDeviceContainer enbDevices);
113 
120  bool CheckUeExistAtEnb(uint16_t rnti, Ptr<NetDevice> enbDevice);
121 
131  void UeStateTransitionCallback(std::string context,
132  uint64_t imsi,
133  uint16_t cellId,
134  uint16_t rnti,
135  LteUeRrc::State oldState,
136  LteUeRrc::State newState);
137 
145  void ConnectionEstablishedUeCallback(std::string context,
146  uint64_t imsi,
147  uint16_t cellId,
148  uint16_t rnti);
149 
157  void ConnectionEstablishedEnbCallback(std::string context,
158  uint64_t imsi,
159  uint16_t cellId,
160  uint16_t rnti);
161 
169  void ConnectionReleaseAtEnbCallback(std::string context,
170  uint64_t imsi,
171  uint16_t cellId,
172  uint16_t rnti);
173 
184  void PhySyncDetectionCallback(std::string context,
185  uint64_t imsi,
186  uint16_t rnti,
187  uint16_t cellId,
188  std::string type,
189  uint8_t count);
190 
198  void RadioLinkFailureCallback(std::string context,
199  uint64_t imsi,
200  uint16_t cellId,
201  uint16_t rnti);
202 
208  void JumpAway(Vector UeJumpAwayPositionList);
209 
210  uint32_t m_numEnbs;
211  uint32_t m_numUes;
214  std::vector<Vector> m_uePositionList;
215  std::vector<Vector> m_enbPositionList;
216  std::vector<Time>
219 
222 
227 
228 }; // end of class LteRadioLinkFailureTestCase
229 
230 #endif /* LTE_TEST_RADIO_LINK_FAILURE_H */
The LteUeNetDevice class implements the UE net device.
State
The states of the UE RRC entity.
Definition: lte-ue-rrc.h:99
holds a vector of ns3::NetDevice pointers
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
encapsulates test code
Definition: test.h:1060
A suite of tests to run.
Definition: test.h:1256
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
Every class exported by the ns3 library is enclosed in the ns3 namespace.