This commit is contained in:
mrequena
2011-04-01 11:13:18 +02:00
9 changed files with 49 additions and 19 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -264,6 +264,7 @@ public:
virtual void ReceivePhyPdu (Ptr<Packet> p);
virtual void SubframeIndication (uint32_t frameNo, uint32_t subframeNo);
virtual void ReceiveIdealControlMessage (Ptr<IdealControlMessage> msg);
virtual void UlCqiReport (UlCqi_s ulcqi);
private:
LteEnbMac* m_mac;
@@ -292,6 +293,12 @@ EnbMacMemberLteEnbPhySapUser::ReceiveIdealControlMessage (Ptr<IdealControlMessag
m_mac->DoReceiveIdealControlMessage (msg);
}
void
EnbMacMemberLteEnbPhySapUser::UlCqiReport (UlCqi_s ulcqi)
{
m_mac->DoUlCqiReport (ulcqi);
}
// //////////////////////////////////////
// generic LteEnbMac methods
@@ -473,11 +480,6 @@ LteEnbMac::DoReceiveIdealControlMessage (Ptr<IdealControlMessage> msg)
Ptr<DlCqiIdealControlMessage> dlcqi = DynamicCast<DlCqiIdealControlMessage> (msg);
ReceiveDlCqiIdealControlMessage (dlcqi);
}
else if (msg->GetMessageType () == IdealControlMessage::UL_CQI)
{
Ptr<UlCqiIdealControlMessage> ulcqi = DynamicCast<UlCqiIdealControlMessage> (msg);
ReceiveUlCqiIdealControlMessage (ulcqi);
}
else if (msg->GetMessageType () == IdealControlMessage::BSR)
{
Ptr<BsrIdealControlMessage> bsr = DynamicCast<BsrIdealControlMessage> (msg);
@@ -489,6 +491,14 @@ LteEnbMac::DoReceiveIdealControlMessage (Ptr<IdealControlMessage> msg)
}
}
void
LteEnbMac::DoUlCqiReport (UlCqi_s ulcqi)
{
NS_LOG_FUNCTION (this << " eNB UL-CQI received");
}
void
LteEnbMac::ReceiveDlCqiIdealControlMessage (Ptr<DlCqiIdealControlMessage> msg)
{

View File

@@ -141,6 +141,8 @@ public:
* \param msg the BSR message
*/
void ReceiveBsrMessage (MacCeListElement_s bsr);
void DoUlCqiReport (UlCqi_s ulcqi);

View File

@@ -24,6 +24,7 @@
#define LTE_ENB_PHY_SAP_H
#include <ns3/packet.h>
#include <ns3/ff-mac-common.h>
namespace ns3 {
@@ -101,6 +102,12 @@ public:
* \param msg the Ideal Control Message to receive
*/
virtual void ReceiveIdealControlMessage (Ptr<IdealControlMessage> 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;
};

View File

@@ -380,15 +380,15 @@ LteEnbPhy::GenerateCqiFeedback (const SpectrumValue& sinr)
{
NS_LOG_FUNCTION (this << sinr);
Ptr<LteEnbNetDevice> thisDevice = GetDevice ()->GetObject<LteEnbNetDevice> ();
Ptr<UlCqiIdealControlMessage> msg = CreateUlCqiFeedbackMessage (sinr);
m_enbPhySapUser->ReceiveIdealControlMessage (msg);
m_enbPhySapUser->UlCqiReport (CreateUlCqiReport (sinr));
}
Ptr<UlCqiIdealControlMessage>
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<UlCqiIdealControlMessage> msg = Create<UlCqiIdealControlMessage> ();
msg->SetUlCqi (ulcqi);
return (msg);
return (ulcqi);
}

View File

@@ -105,7 +105,7 @@ public:
* the physical layer with the signal received from eNB
* \param sinr SINR values vector
*/
Ptr<UlCqiIdealControlMessage> CreateUlCqiFeedbackMessage (const SpectrumValue& sinr);
UlCqi_s CreateUlCqiReport (const SpectrumValue& sinr);
void DoSendIdealControlMessage (Ptr<IdealControlMessage> msg);

View File

@@ -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:

View File

@@ -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<A.m_rnti; }
};
bool operator< (const pfsFlowId_t& lhs, const pfsFlowId_t& rhs);
struct pfsFlowPerf_t
{
Time flowStart;