From dac14cf60fe486bd2e40b68d99b283d6e92db47f Mon Sep 17 00:00:00 2001 From: ZorazeAli Date: Wed, 24 Apr 2019 10:03:16 +0200 Subject: [PATCH] lte: Communicate the IMSI to UE MAC and PHY --- src/lte/model/lte-ue-cmac-sap.h | 6 ++++++ src/lte/model/lte-ue-cphy-sap.h | 13 +++++++++++++ src/lte/model/lte-ue-mac.cc | 15 +++++++++++++++ src/lte/model/lte-ue-mac.h | 7 +++++++ src/lte/model/lte-ue-phy.cc | 10 +++++++++- src/lte/model/lte-ue-phy.h | 7 +++++++ src/lte/model/lte-ue-rrc.cc | 7 +++++++ 7 files changed, 64 insertions(+), 1 deletion(-) diff --git a/src/lte/model/lte-ue-cmac-sap.h b/src/lte/model/lte-ue-cmac-sap.h index f2a8dfcfd..1ec3c6c31 100644 --- a/src/lte/model/lte-ue-cmac-sap.h +++ b/src/lte/model/lte-ue-cmac-sap.h @@ -119,6 +119,12 @@ public: */ virtual void NotifyConnectionSuccessful () = 0; + /** + * \brief A method call by UE RRC to communicate the IMSI to the UE MAC + * \param imsi the IMSI of the UE + */ + virtual void SetImsi (uint64_t imsi) = 0; + }; diff --git a/src/lte/model/lte-ue-cphy-sap.h b/src/lte/model/lte-ue-cphy-sap.h index ee5fa3390..5e79ff29e 100644 --- a/src/lte/model/lte-ue-cphy-sap.h +++ b/src/lte/model/lte-ue-cphy-sap.h @@ -190,6 +190,12 @@ public: */ virtual void StartInSnycDetection () = 0; + /** + * \brief A method call by UE RRC to communicate the IMSI to the UE PHY + * \param imsi the IMSI of the UE + */ + virtual void SetImsi (uint64_t imsi) = 0; + }; @@ -321,6 +327,7 @@ public: virtual void ResetPhyAfterRlf (); virtual void ResetRlfParams (); virtual void StartInSnycDetection (); + virtual void SetImsi (uint64_t imsi); private: MemberLteUeCphySapProvider (); @@ -441,6 +448,12 @@ void MemberLteUeCphySapProvider::StartInSnycDetection () m_owner->DoStartInSnycDetection (); } +template +void MemberLteUeCphySapProvider::SetImsi (uint64_t imsi) +{ + m_owner->DoSetImsi (imsi); +} + /** diff --git a/src/lte/model/lte-ue-mac.cc b/src/lte/model/lte-ue-mac.cc index fb0020cd8..758306e05 100644 --- a/src/lte/model/lte-ue-mac.cc +++ b/src/lte/model/lte-ue-mac.cc @@ -68,6 +68,7 @@ public: virtual void RemoveLc (uint8_t lcId); virtual void Reset (); virtual void NotifyConnectionSuccessful (); + virtual void SetImsi (uint64_t imsi); private: LteUeMac* m_mac; ///< the UE MAC @@ -127,6 +128,12 @@ UeMemberLteUeCmacSapProvider::NotifyConnectionSuccessful () m_mac->DoNotifyConnectionSuccessful (); } +void + UeMemberLteUeCmacSapProvider::SetImsi (uint64_t imsi) + { + m_mac->DoSetImsi (imsi); + } + /// UeMemberLteMacSapProvider class class UeMemberLteMacSapProvider : public LteMacSapProvider @@ -239,6 +246,7 @@ LteUeMac::LteUeMac () m_freshUlBsr (false), m_harqProcessId (0), m_rnti (0), + m_imsi (0), m_rachConfigured (false), m_waitingForRaResponse (false) @@ -536,6 +544,13 @@ LteUeMac::DoSetRnti (uint16_t rnti) m_rnti = rnti; } +void +LteUeMac::DoSetImsi (uint64_t imsi) +{ + NS_LOG_FUNCTION (this); + m_imsi = imsi; +} + void LteUeMac::DoStartNonContentionBasedRandomAccessProcedure (uint16_t rnti, uint8_t preambleId, uint8_t prachMask) diff --git a/src/lte/model/lte-ue-mac.h b/src/lte/model/lte-ue-mac.h index fc7c36e9a..699ca60b9 100644 --- a/src/lte/model/lte-ue-mac.h +++ b/src/lte/model/lte-ue-mac.h @@ -175,6 +175,12 @@ private: * establishment. */ void DoNotifyConnectionSuccessful (); + /** + * Set IMSI + * + * \param imsi the IMSI of the UE + */ + void DoSetImsi (uint64_t imsi); // forwarded from PHY SAP /** @@ -253,6 +259,7 @@ private: std::vector < uint8_t > m_miUlHarqProcessesPacketTimer; ///< timer for packet life in the buffer uint16_t m_rnti; ///< RNTI + uint16_t m_imsi; ///< IMSI bool m_rachConfigured; ///< is RACH configured? LteUeCmacSapProvider::RachConfig m_rachConfig; ///< RACH configuration diff --git a/src/lte/model/lte-ue-phy.cc b/src/lte/model/lte-ue-phy.cc index c1e02009b..db9cb2368 100644 --- a/src/lte/model/lte-ue-phy.cc +++ b/src/lte/model/lte-ue-phy.cc @@ -163,7 +163,8 @@ LteUePhy::LteUePhy (Ptr dlPhy, Ptr ulPhy) m_pssReceived (false), m_ueMeasurementsFilterPeriod (MilliSeconds (200)), m_ueMeasurementsFilterLast (MilliSeconds (0)), - m_rsrpSinrSampleCounter (0) + m_rsrpSinrSampleCounter (0), + m_imsi (0) { m_amc = CreateObject (); m_powerControl = CreateObject (); @@ -1507,6 +1508,13 @@ LteUePhy::DoStartInSnycDetection () m_downlinkInSync = false; } +void +LteUePhy::DoSetImsi (uint64_t imsi) +{ + NS_LOG_FUNCTION (this); + m_imsi = imsi; +} + void LteUePhy::InitializeRlfParams () { diff --git a/src/lte/model/lte-ue-phy.h b/src/lte/model/lte-ue-phy.h index f2c4baff5..f1614a66e 100644 --- a/src/lte/model/lte-ue-phy.h +++ b/src/lte/model/lte-ue-phy.h @@ -545,6 +545,12 @@ private: * */ void InitializeRlfParams (); + /** + * Set IMSI + * + * \param imsi the IMSI of the UE + */ + void DoSetImsi (uint64_t imsi); /** * \brief Do set RSRP filter coefficient * @@ -758,6 +764,7 @@ private: uint16_t m_numOfFrames; ///< count the number of frames for which the downlink radio link quality is estimated double m_sinrDbFrame; ///< the average SINR per radio frame SpectrumValue m_ctrlSinrForRlf; ///< the CTRL SINR used for RLF detection + uint64_t m_imsi; }; // end of `class LteUePhy` diff --git a/src/lte/model/lte-ue-rrc.cc b/src/lte/model/lte-ue-rrc.cc index f67bb4c7a..c84fa1f5e 100644 --- a/src/lte/model/lte-ue-rrc.cc +++ b/src/lte/model/lte-ue-rrc.cc @@ -434,6 +434,13 @@ LteUeRrc::SetImsi (uint64_t imsi) { NS_LOG_FUNCTION (this << imsi); m_imsi = imsi; + + //Communicate the IMSI to MACs and PHYs for all the component carriers + for (uint16_t i = 0; i < m_numberOfComponentCarriers; i++) + { + m_cmacSapProvider.at(i)->SetImsi (m_imsi); + m_cphySapProvider.at(i)->SetImsi (m_imsi); + } } void