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>
35 : m_dlOutputFilename (
""),
36 m_ulOutputFilename (
"")
53 .AddConstructor<LteStatsCalculator> ()
145 std::string ueMapPath = path.substr (0, path.find (
"/DataRadioBearerMap"));
148 if (match.
GetN () != 0)
168 std::string ueRlcPath = path.substr (0, path.find (
"/LteUePhy"));
169 ueRlcPath +=
"/LteUeRrc";
172 if (match.
GetN () != 0)
195 if (match.
GetN () != 0)
215 std::string enbNetDevicePath = path.substr (0, path.find (
"/LteEnbRrc"));
217 if (match.
GetN () != 0)
225 NS_FATAL_ERROR (
"Lookup " << enbNetDevicePath <<
" got no matches");
235 std::ostringstream oss;
236 std::string p = path.substr (0, path.find (
"/LteEnbMac"));
238 p +=
"/LteEnbRrc/UeMap/" + oss.str ();
240 NS_LOG_LOGIC (
"FindImsiFromEnbMac: " << path <<
", " << rnti <<
", " << imsi);
249 std::ostringstream oss;
250 std::string p = path.substr (0, path.find (
"/LteEnbMac"));
252 p +=
"/LteEnbRrc/UeMap/" + oss.str ();
254 NS_LOG_LOGIC (
"FindCellIdFromEnbMac: " << path <<
", "<< rnti <<
", " << cellId);
264 if (path.find (
"/DlPhyTransmission"))
267 std::ostringstream oss;
268 std::string p = path.substr (0, path.find (
"/LteEnbPhy"));
270 p +=
"/LteEnbRrc/UeMap/" + oss.str ();
272 NS_LOG_LOGIC (
"FindImsiForEnb[Tx]: " << path <<
", " << rnti <<
", " << imsi);
274 else if (path.find (
"/UlPhyReception"))
276 std::string p = path.substr (0, path.find (
"/LteUePhy"));
278 NS_LOG_LOGIC (
"FindImsiForEnb[Rx]: " << path <<
", " << rnti <<
", " << imsi);
289 if (path.find (
"/UlPhyTransmission"))
291 std::string p = path.substr (0, path.find (
"/LteUePhy"));
293 NS_LOG_LOGIC (
"FindImsiForUe[Tx]: " << path <<
", " << rnti <<
", " << imsi);
295 else if (path.find (
"/DlPhyReception"))
298 std::ostringstream oss;
299 std::string p = path.substr (0, path.find (
"/LteEnbPhy"));
301 p +=
"/LteEnbRrc/UeMap/" + oss.str ();
303 NS_LOG_LOGIC (
"FindImsiForUe[Rx]: " << path <<
", " << rnti <<
", " << imsi);
static uint64_t FindImsiFromLteNetDevice(std::string path)
static uint64_t FindImsiFromUePhy(std::string path)
#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)
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)
static TypeId GetTypeId(void)
Config::MatchContainer LookupMatches(std::string path)
static uint16_t FindCellIdFromEnbMac(std::string path, uint16_t rnti)
std::map< std::string, uint64_t > m_pathImsiMap
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)
#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.
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)
static uint64_t FindImsiForUe(std::string path, uint16_t rnti)
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
virtual ~LteStatsCalculator()
Destructor.
std::string m_dlOutputFilename
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
The eNodeB device implementation.
Ptr< T > GetObject(void) const
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.