24 #include <ns3/config.h>
25 #include <ns3/lte-enb-rrc.h>
26 #include <ns3/lte-ue-rrc.h>
27 #include <ns3/lte-enb-net-device.h>
28 #include <ns3/lte-ue-net-device.h>
37 : m_dlOutputFilename (
""),
38 m_ulOutputFilename (
"")
55 .AddConstructor<LteStatsCalculator> ()
147 std::string ueMapPath = path.substr (0, path.find (
"/DataRadioBearerMap"));
150 if (match.
GetN () != 0)
170 std::string ueRlcPath = path.substr (0, path.find (
"/LteUePhy"));
171 ueRlcPath +=
"/LteUeRrc";
174 if (match.
GetN () != 0)
197 if (match.
GetN () != 0)
217 std::string enbNetDevicePath = path.substr (0, path.find (
"/LteEnbRrc"));
219 if (match.
GetN () != 0)
227 NS_FATAL_ERROR (
"Lookup " << enbNetDevicePath <<
" got no matches");
237 std::ostringstream oss;
238 std::string p = path.substr (0, path.find (
"/LteEnbMac"));
240 p +=
"/LteEnbRrc/UeMap/" + oss.str ();
242 NS_LOG_LOGIC (
"FindImsiFromEnbMac: " << path <<
", " << rnti <<
", " << imsi);
251 std::ostringstream oss;
252 std::string p = path.substr (0, path.find (
"/LteEnbMac"));
254 p +=
"/LteEnbRrc/UeMap/" + oss.str ();
256 NS_LOG_LOGIC (
"FindCellIdFromEnbMac: " << path <<
", "<< rnti <<
", " << cellId);
266 if (path.find (
"/DlPhyTransmission"))
269 std::ostringstream oss;
270 std::string p = path.substr (0, path.find (
"/LteEnbPhy"));
272 p +=
"/LteEnbRrc/UeMap/" + oss.str ();
274 NS_LOG_LOGIC (
"FindImsiForEnb[Tx]: " << path <<
", " << rnti <<
", " << imsi);
276 else if (path.find (
"/UlPhyReception"))
278 std::string p = path.substr (0, path.find (
"/LteUePhy"));
280 NS_LOG_LOGIC (
"FindImsiForEnb[Rx]: " << path <<
", " << rnti <<
", " << imsi);
291 if (path.find (
"/UlPhyTransmission"))
293 std::string p = path.substr (0, path.find (
"/LteUePhy"));
295 NS_LOG_LOGIC (
"FindImsiForUe[Tx]: " << path <<
", " << rnti <<
", " << imsi);
297 else if (path.find (
"/DlPhyReception"))
300 std::ostringstream oss;
301 std::string p = path.substr (0, path.find (
"/LteEnbPhy"));
303 p +=
"/LteEnbRrc/UeMap/" + oss.str ();
305 NS_LOG_LOGIC (
"FindImsiForUe[Rx]: " << path <<
", " << rnti <<
", " << imsi);
static uint64_t FindImsiFromLteNetDevice(std::string path)
Retrieves IMSI from LteNetDevice path in the attribute system.
static uint64_t FindImsiFromUePhy(std::string path)
Retrieves IMSI from Ue PHY path in the attribute system.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
static uint64_t FindImsiFromEnbMac(std::string path, uint16_t rnti)
Retrieves IMSI from Enb MAC path in the attribute system.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
uint16_t GetCellId() const
void SetCellIdPath(std::string path, uint16_t cellId)
Stores the (path, cellId) pairs in a map.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_FATAL_ERROR(msg)
Fatal error handling.
static uint16_t FindCellIdFromEnbRlcPath(std::string path)
Retrieves CellId from Enb RLC path in the attribute system.
static TypeId GetTypeId(void)
Register this type.
Config::MatchContainer LookupMatches(std::string path)
static uint16_t FindCellIdFromEnbMac(std::string path, uint16_t rnti)
Retrieves CellId from Enb MAC path in the attribute system.
std::map< std::string, uint64_t > m_pathImsiMap
List of IMSI by path in the attribute system.
void SetUlOutputFilename(std::string outputFilename)
Set the name of the file where the uplink statistics will be stored.
static uint64_t FindImsiForEnb(std::string path, uint16_t rnti)
Retrieves IMSI from path for Enb in the attribute system.
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
uint32_t GetN(void) const
std::string GetUlOutputFilename(void)
Get the name of the file where the uplink statistics will be stored.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
LteStatsCalculator()
Constructor.
Manages all the radio bearer information possessed by the ENB RRC for a single UE.
bool ExistsCellIdPath(std::string path)
Checks if there is an already stored cell id for the given path.
void SetDlOutputFilename(std::string outputFilename)
Set the name of the file where the downlink statistics will be stored.
Ptr< Object > Get(uint32_t i) const
static uint64_t FindImsiFromEnbRlcPath(std::string path)
Retrieves IMSI from Enb RLC path in the attribute system.
static uint64_t FindImsiForUe(std::string path, uint16_t rnti)
Retrieves IMSI from path for Ue in the attribute system.
hold a set of objects which match a specific search string.
uint16_t GetCellIdPath(std::string path)
Retrieves the cell id information for the given path.
uint64_t GetImsi(void) const
uint64_t GetImsiPath(std::string path)
Retrieves the imsi information for the given path.
std::map< std::string, uint16_t > m_pathCellIdMap
List of CellId by path in the attribute system.
virtual ~LteStatsCalculator()
Destructor.
std::string m_dlOutputFilename
Name of the file where the downlink results will be saved.
void SetImsiPath(std::string path, uint64_t imsi)
Stores the (path, imsi) pairs in a map.
A base class which provides memory management and object aggregation.
std::string m_ulOutputFilename
Name of the file where the uplink results will be saved.
The eNodeB device implementation.
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
bool ExistsImsiPath(std::string path)
Checks if there is an already stored IMSI for the given path.
std::string GetDlOutputFilename(void)
Get the name of the file where the downlink statistics will be stored.
The LteUeNetDevice class implements the UE net device.