This commit is contained in:
Nicola Baldo
2011-03-29 18:29:42 +02:00
4 changed files with 59 additions and 0 deletions

View File

@@ -471,6 +471,11 @@ 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);
@@ -495,6 +500,21 @@ LteEnbMac::ReceiveDlCqiIdealControlMessage (Ptr<DlCqiIdealControlMessage> msg)
}
void
LteEnbMac::ReceiveUlCqiIdealControlMessage (Ptr<UlCqiIdealControlMessage> msg)
{
NS_LOG_FUNCTION (this << msg);
UlCqi_s ulcqi = msg->GetUlCqi ();
if (ulcqi.m_type == UlCqi_s::PUSCH)
{
NS_LOG_DEBUG(this << " eNB rxed an PUSCH UL-CQI");
}
// TODO store UL-CQI to send them to scheduler
//m_dlCqiReceived.push_back (dlcqi);
}
void
LteEnbMac::ReceiveBsrMessage (MacCeListElement_s bsr)
{

View File

@@ -34,6 +34,7 @@
namespace ns3 {
class DlCqiIdealControlMessage;
class UlCqiIdealControlMessage;
class PdcchMapIdealControlMessage;
@@ -128,6 +129,11 @@ public:
* \param msg the DL CQI message
*/
void ReceiveDlCqiIdealControlMessage (Ptr<DlCqiIdealControlMessage> msg);
/**
* \brief Receive a UL CQI ideal control message
* \param msg the UL CQI message
*/
void ReceiveUlCqiIdealControlMessage (Ptr<UlCqiIdealControlMessage> msg);
void DoReceiveIdealControlMessage (Ptr<IdealControlMessage> msg);
/**

View File

@@ -377,6 +377,32 @@ void
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);
}
Ptr<UlCqiIdealControlMessage>
LteEnbPhy::CreateUlCqiFeedbackMessage (const SpectrumValue& sinr)
{
NS_LOG_FUNCTION (this << sinr);
Values::const_iterator it;
UlCqi_s ulcqi;
ulcqi.m_type = UlCqi_s::PUSCH;
int i = 0;
for (it = sinr.ConstValuesBegin (); it != sinr.ConstValuesEnd (); it++)
{
ulcqi.m_sinr.push_back ((*it));
NS_LOG_DEBUG(this << " RB " << i << " SINR " << (*it));
i++;
}
Ptr<UlCqiIdealControlMessage> msg = Create<UlCqiIdealControlMessage> ();
msg->SetUlCqi (ulcqi);
return (msg);
}
};

View File

@@ -99,6 +99,13 @@ public:
* \param msg the received message
*/
virtual void ReceiveIdealControlMessage (Ptr<IdealControlMessage> msg);
/**
* \brief Create the UL CQI feedback from SINR values perceived at
* the physical layer with the signal received from eNB
* \param sinr SINR values vector
*/
Ptr<UlCqiIdealControlMessage> CreateUlCqiFeedbackMessage (const SpectrumValue& sinr);
void DoSendIdealControlMessage (Ptr<IdealControlMessage> msg);