From 8dbfcbfddd7f16fa7c7a3629ed2e537ae8a8d0cf Mon Sep 17 00:00:00 2001 From: jnin Date: Fri, 29 Apr 2011 17:19:15 +0200 Subject: [PATCH] Refactoring to align trace sinks for RLC and MAC implementations and to make them more user friendly. All sinks are managed in LenaHelper and enabled in simulation programs through the helper. --- src/lte/examples/lena-rlc-calculator.cc | 36 +--------------- src/lte/helper/lena-helper.cc | 55 +++++++++++++++++++++++++ src/lte/helper/lena-helper.h | 16 +++++++ 3 files changed, 72 insertions(+), 35 deletions(-) diff --git a/src/lte/examples/lena-rlc-calculator.cc b/src/lte/examples/lena-rlc-calculator.cc index d74999ef2..aad992359 100644 --- a/src/lte/examples/lena-rlc-calculator.cc +++ b/src/lte/examples/lena-rlc-calculator.cc @@ -23,8 +23,6 @@ #include "ns3/network-module.h" #include "ns3/mobility-module.h" #include "ns3/lte-module.h" -#include "ns3/mac-stats-calculator.h" -#include "ns3/rlc-stats-calculator.h" #include "ns3/config-store.h" //#include "ns3/gtk-config-store.h" @@ -33,29 +31,8 @@ using namespace ns3; -void UlTxPduCallback(Ptr rlcStats, std::string path, - uint16_t rnti, uint8_t lcid, uint32_t packetSize) -{ - rlcStats->UlTxPdu(rnti, lcid, packetSize); -} -void UlRxPduCallback(Ptr rlcStats, std::string path, - uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay) -{ - rlcStats->UlRxPdu(rnti, lcid, packetSize, delay); -} -void DlTxPduCallback(Ptr rlcStats, std::string path, - uint16_t rnti, uint8_t lcid, uint32_t packetSize) -{ - rlcStats->DlTxPdu(rnti, lcid, packetSize); -} - -void DlRxPduCallback(Ptr rlcStats, std::string path, - uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay) -{ - rlcStats->DlRxPdu(rnti, lcid, packetSize, delay); -} int main (int argc, char *argv[]) @@ -104,19 +81,8 @@ int main (int argc, char *argv[]) Simulator::Stop (Seconds (4)); - // Insert RLC Performance Calculator - Ptr rlcStats = CreateObject (); - Config::Connect("/NodeList/0/DeviceList/0/LteEnbRrc/UeMap/*/RadioBearerMap/*/LteRlc/TxPDU", - MakeBoundCallback(&DlTxPduCallback, rlcStats)); - Config::Connect("/NodeList/*/DeviceList/0/LteUeRrc/RlcMap/*/RxPDU", - MakeBoundCallback(&DlRxPduCallback, rlcStats)); - - Config::Connect("/NodeList/*/DeviceList/0/LteUeRrc/RlcMap/*/TxPDU", - MakeBoundCallback(&UlTxPduCallback, rlcStats)); - Config::Connect ("/NodeList/0/DeviceList/0/LteEnbRrc/UeMap/*/RadioBearerMap/*/LteRlc/RxPDU", - MakeBoundCallback(&UlRxPduCallback, rlcStats)); - lena->EnableMacTraces (); + lena->EnableRlcTraces (); Simulator::Run (); diff --git a/src/lte/helper/lena-helper.cc b/src/lte/helper/lena-helper.cc index 7ce685eae..c5d73e244 100644 --- a/src/lte/helper/lena-helper.cc +++ b/src/lte/helper/lena-helper.cc @@ -64,6 +64,7 @@ LenaHelper::DoStart (void) m_downlinkChannel->AddSpectrumPropagationLossModel (dlPropagationModel); m_uplinkChannel->AddSpectrumPropagationLossModel (ulPropagationModel); macStats = CreateObject (); + rlcStats = CreateObject (); Object::DoStart (); } @@ -402,5 +403,59 @@ LenaHelper::EnableUlMacTraces (void) MakeBoundCallback(&UlSchedulingCallback, macStats)); } +void +LenaHelper::EnableRlcTraces (void) +{ + EnableDlRlcTraces (); + EnableUlRlcTraces (); + +} + +void +DlTxPduCallback(Ptr rlcStats, std::string path, + uint16_t rnti, uint8_t lcid, uint32_t packetSize) +{ + rlcStats->DlTxPdu(rnti, lcid, packetSize); +} + +void +DlRxPduCallback(Ptr rlcStats, std::string path, + uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay) +{ + rlcStats->DlRxPdu(rnti, lcid, packetSize, delay); +} + +void +LenaHelper::EnableDlRlcTraces (void) +{ + Config::Connect("/NodeList/0/DeviceList/0/LteEnbRrc/UeMap/*/RadioBearerMap/*/LteRlc/TxPDU", + MakeBoundCallback(&DlTxPduCallback, rlcStats)); + Config::Connect("/NodeList/*/DeviceList/0/LteUeRrc/RlcMap/*/RxPDU", + MakeBoundCallback(&DlRxPduCallback, rlcStats)); +} + +void +UlTxPduCallback(Ptr rlcStats, std::string path, + uint16_t rnti, uint8_t lcid, uint32_t packetSize) +{ + rlcStats->UlTxPdu(rnti, lcid, packetSize); +} + +void +UlRxPduCallback(Ptr rlcStats, std::string path, + uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay) +{ + rlcStats->UlRxPdu(rnti, lcid, packetSize, delay); +} + + +void +LenaHelper::EnableUlRlcTraces (void) +{ + Config::Connect("/NodeList/*/DeviceList/0/LteUeRrc/RlcMap/*/TxPDU", + MakeBoundCallback(&UlTxPduCallback, rlcStats)); + Config::Connect ("/NodeList/0/DeviceList/0/LteEnbRrc/UeMap/*/RadioBearerMap/*/LteRlc/RxPDU", + MakeBoundCallback(&UlRxPduCallback, rlcStats)); +} } // namespace ns3 diff --git a/src/lte/helper/lena-helper.h b/src/lte/helper/lena-helper.h index 34d6aa7d8..34bd29c60 100644 --- a/src/lte/helper/lena-helper.h +++ b/src/lte/helper/lena-helper.h @@ -31,6 +31,7 @@ #include #include #include +#include namespace ns3 { @@ -166,6 +167,20 @@ public: */ void EnableUlMacTraces (void); + /** + * Enable trace sinks for RLC layer + */ + void EnableRlcTraces (void); + + /** + * Enable trace sinks for DL RLC layer + */ + void EnableDlRlcTraces (void); + + /** + * Enable trace sinks for UL MAC layer + */ + void EnableUlRlcTraces (void); protected: @@ -184,6 +199,7 @@ private: ObjectFactory m_propagationModelFactory; Ptr macStats; + Ptr rlcStats; };