diff --git a/src/lte/examples/lena-first-sim.cc b/src/lte/examples/lena-first-sim.cc index c050d03b3..c1f51d00e 100644 --- a/src/lte/examples/lena-first-sim.cc +++ b/src/lte/examples/lena-first-sim.cc @@ -30,13 +30,13 @@ int main (int argc, char *argv[]) { LenaHelper lena; - //lena.EnableLogComponents (); + lena.EnableLogComponents (); // Create Nodes: eNodeB and UE NodeContainer enbNodes; NodeContainer ueNodes; enbNodes.Create (1); - ueNodes.Create (4); + ueNodes.Create (1); // Install Mobility Model MobilityHelper mobility; diff --git a/src/lte/examples/lena-rlc-calculator.cc b/src/lte/examples/lena-rlc-calculator.cc index 7f8829d51..fbf8a47ef 100644 --- a/src/lte/examples/lena-rlc-calculator.cc +++ b/src/lte/examples/lena-rlc-calculator.cc @@ -26,7 +26,7 @@ #include "ns3/rlc-stats-calculator.h" -#include "ns3/gtk-config-store.h" +//#include "ns3/gtk-config-store.h" using namespace ns3; diff --git a/src/lte/model/lte-enb-mac.cc b/src/lte/model/lte-enb-mac.cc index 909d07aab..a399319cc 100644 --- a/src/lte/model/lte-enb-mac.cc +++ b/src/lte/model/lte-enb-mac.cc @@ -264,6 +264,7 @@ public: virtual void ReceivePhyPdu (Ptr p); virtual void SubframeIndication (uint32_t frameNo, uint32_t subframeNo); virtual void ReceiveIdealControlMessage (Ptr msg); + virtual void UlCqiReport (UlCqi_s ulcqi); private: LteEnbMac* m_mac; @@ -292,6 +293,12 @@ EnbMacMemberLteEnbPhySapUser::ReceiveIdealControlMessage (PtrDoReceiveIdealControlMessage (msg); } +void +EnbMacMemberLteEnbPhySapUser::UlCqiReport (UlCqi_s ulcqi) +{ + m_mac->DoUlCqiReport (ulcqi); +} + // ////////////////////////////////////// // generic LteEnbMac methods @@ -473,11 +480,6 @@ LteEnbMac::DoReceiveIdealControlMessage (Ptr msg) Ptr dlcqi = DynamicCast (msg); ReceiveDlCqiIdealControlMessage (dlcqi); } - else if (msg->GetMessageType () == IdealControlMessage::UL_CQI) - { - Ptr ulcqi = DynamicCast (msg); - ReceiveUlCqiIdealControlMessage (ulcqi); - } else if (msg->GetMessageType () == IdealControlMessage::BSR) { Ptr bsr = DynamicCast (msg); @@ -489,6 +491,14 @@ LteEnbMac::DoReceiveIdealControlMessage (Ptr msg) } } + +void +LteEnbMac::DoUlCqiReport (UlCqi_s ulcqi) +{ + NS_LOG_FUNCTION (this << " eNB UL-CQI received"); +} + + void LteEnbMac::ReceiveDlCqiIdealControlMessage (Ptr msg) { diff --git a/src/lte/model/lte-enb-mac.h b/src/lte/model/lte-enb-mac.h index 8f06d6bb3..06cacd72e 100644 --- a/src/lte/model/lte-enb-mac.h +++ b/src/lte/model/lte-enb-mac.h @@ -141,6 +141,8 @@ public: * \param msg the BSR message */ void ReceiveBsrMessage (MacCeListElement_s bsr); + + void DoUlCqiReport (UlCqi_s ulcqi); diff --git a/src/lte/model/lte-enb-phy-sap.h b/src/lte/model/lte-enb-phy-sap.h index c1cdadf9f..a80f30680 100644 --- a/src/lte/model/lte-enb-phy-sap.h +++ b/src/lte/model/lte-enb-phy-sap.h @@ -24,6 +24,7 @@ #define LTE_ENB_PHY_SAP_H #include +#include namespace ns3 { @@ -101,6 +102,12 @@ public: * \param msg the Ideal Control Message to receive */ virtual void ReceiveIdealControlMessage (Ptr msg) = 0; + + /** + * \brief Returns to MAC level the UL-CQI evaluated + * \param ulcqi the UL-CQI (see FF MAC API 4.3.29) + */ + virtual void UlCqiReport (UlCqi_s ulcqi) = 0; }; diff --git a/src/lte/model/lte-enb-phy.cc b/src/lte/model/lte-enb-phy.cc index 4e5a7195b..f45e87004 100644 --- a/src/lte/model/lte-enb-phy.cc +++ b/src/lte/model/lte-enb-phy.cc @@ -380,15 +380,15 @@ LteEnbPhy::GenerateCqiFeedback (const SpectrumValue& sinr) { NS_LOG_FUNCTION (this << sinr); Ptr thisDevice = GetDevice ()->GetObject (); - Ptr msg = CreateUlCqiFeedbackMessage (sinr); - m_enbPhySapUser->ReceiveIdealControlMessage (msg); + + m_enbPhySapUser->UlCqiReport (CreateUlCqiReport (sinr)); } -Ptr -LteEnbPhy::CreateUlCqiFeedbackMessage (const SpectrumValue& sinr) +UlCqi_s +LteEnbPhy::CreateUlCqiReport (const SpectrumValue& sinr) { NS_LOG_FUNCTION (this << sinr); Values::const_iterator it; @@ -401,9 +401,7 @@ LteEnbPhy::CreateUlCqiFeedbackMessage (const SpectrumValue& sinr) NS_LOG_DEBUG(this << " RB " << i << " SINR " << (*it)); i++; } - Ptr msg = Create (); - msg->SetUlCqi (ulcqi); - return (msg); + return (ulcqi); } diff --git a/src/lte/model/lte-enb-phy.h b/src/lte/model/lte-enb-phy.h index 53659f3e4..54c4b6875 100644 --- a/src/lte/model/lte-enb-phy.h +++ b/src/lte/model/lte-enb-phy.h @@ -105,7 +105,7 @@ public: * the physical layer with the signal received from eNB * \param sinr SINR values vector */ - Ptr CreateUlCqiFeedbackMessage (const SpectrumValue& sinr); + UlCqi_s CreateUlCqiReport (const SpectrumValue& sinr); void DoSendIdealControlMessage (Ptr msg); diff --git a/src/lte/model/pf-ff-mac-scheduler.cc b/src/lte/model/pf-ff-mac-scheduler.cc index 3758f75fd..618e66356 100644 --- a/src/lte/model/pf-ff-mac-scheduler.cc +++ b/src/lte/model/pf-ff-mac-scheduler.cc @@ -40,6 +40,20 @@ int PfType0AllocationRbg[4] = { NS_OBJECT_ENSURE_REGISTERED (PfFfMacScheduler); +bool +operator< (const pfsFlowId_t& lhs, const pfsFlowId_t& rhs) +{ + if (lhs.m_rnti == rhs.m_rnti) + { + return (lhs.m_lcId < rhs.m_lcId); + } + else + { + return (lhs.m_rnti < rhs.m_rnti); + } +} + + class PfSchedulerMemberCschedSapProvider : public FfMacCschedSapProvider { public: diff --git a/src/lte/model/pf-ff-mac-scheduler.h b/src/lte/model/pf-ff-mac-scheduler.h index 694edde5e..f86399f4e 100644 --- a/src/lte/model/pf-ff-mac-scheduler.h +++ b/src/lte/model/pf-ff-mac-scheduler.h @@ -36,11 +36,10 @@ struct pfsFlowId_t { uint16_t m_rnti; uint8_t m_lcId; - - bool operator<(const pfsFlowId_t& A) const - { return m_rnti