PUSCH based UL-CQI generation at eNB PHY side
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
|
||||
@@ -370,6 +370,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);
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -98,6 +98,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);
|
||||
|
||||
Reference in New Issue
Block a user