Add info in LteSpectrumPhy on TB from DCI elaborated by LteEnbPhy and LteUePhy
This commit is contained in:
1 parent
197b00cd8c
commit
0fc8864ea2
5 files changed
+76
-8
No files matched your search
@@ -48,10 +48,11 @@ int main (int argc, char *argv[])
|
||||
|
||||
//lena->EnableLogComponents ();
|
||||
|
||||
// LogComponentEnable ("LtePhy", LOG_LEVEL_ALL);
|
||||
LogComponentEnable ("LteSpectrumPhy", LOG_LEVEL_ALL);
|
||||
LogComponentEnable ("LteEnbPhy", LOG_LEVEL_ALL);
|
||||
// LogComponentEnable ("LteUePhy", LOG_LEVEL_ALL);
|
||||
// LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL);
|
||||
LogComponentEnable ("PfFfMacScheduler", LOG_LEVEL_ALL);
|
||||
LogComponentEnable ("RrFfMacScheduler", LOG_LEVEL_ALL);
|
||||
LogComponentEnable ("LenaHelper", LOG_LEVEL_ALL);
|
||||
LogComponentEnable ("BuildingsPropagationLossModel", LOG_LEVEL_ALL);
|
||||
LogComponentEnable ("BuildingsPropagationLossModel", LOG_LEVEL_ALL);
|
||||
@@ -60,7 +61,7 @@ int main (int argc, char *argv[])
|
||||
NodeContainer enbNodes;
|
||||
NodeContainer ueNodes;
|
||||
enbNodes.Create (1);
|
||||
ueNodes.Create (1);
|
||||
ueNodes.Create (3);
|
||||
|
||||
// Install Mobility Model
|
||||
MobilityHelper mobility;
|
||||
@@ -72,8 +73,8 @@ int main (int argc, char *argv[])
|
||||
// Create Devices and install them in the Nodes (eNB and UE)
|
||||
NetDeviceContainer enbDevs;
|
||||
NetDeviceContainer ueDevs;
|
||||
//lena->SetSchedulerType ("ns3::RrFfMacScheduler");
|
||||
lena->SetSchedulerType ("ns3::PfFfMacScheduler");
|
||||
lena->SetSchedulerType ("ns3::RrFfMacScheduler");
|
||||
// lena->SetSchedulerType ("ns3::PfFfMacScheduler");
|
||||
enbDevs = lena->InstallEnbDevice (enbNodes);
|
||||
ueDevs = lena->InstallUeDevice (ueNodes);
|
||||
|
||||
@@ -83,7 +84,11 @@ int main (int argc, char *argv[])
|
||||
// Activate an EPS bearer
|
||||
enum EpsBearer::Qci q = EpsBearer::GBR_CONV_VOICE;
|
||||
EpsBearer bearer (q);
|
||||
EpsBearer bearer1 (q);
|
||||
EpsBearer bearer2 (q);
|
||||
lena->ActivateEpsBearer (ueDevs, bearer);
|
||||
lena->ActivateEpsBearer (ueDevs, bearer1);
|
||||
lena->ActivateEpsBearer (ueDevs, bearer2);
|
||||
|
||||
|
||||
Simulator::Stop (Seconds (0.005));
|
||||
@@ -96,3 +101,4 @@ int main (int argc, char *argv[])
|
||||
Simulator::Destroy ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -381,6 +381,14 @@ LteEnbPhy::StartSubFrame (void)
|
||||
else
|
||||
{
|
||||
(*it2).second->ReceiveIdealControlMessage (msg);
|
||||
// send info of TB to LteSpectrumPhy
|
||||
// translate to allocation map
|
||||
std::vector <int> rbMap;
|
||||
for (int i = dci->GetDci ().m_rbStart; i < dci->GetDci ().m_rbStart + dci->GetDci ().m_rbLen; i++)
|
||||
{
|
||||
rbMap.push_back (i);
|
||||
}
|
||||
m_uplinkSpectrumPhy->AddExpectedTb (dci->GetDci ().m_rnti, dci->GetDci ().m_tbSize, dci->GetDci ().m_mcs, rbMap);
|
||||
}
|
||||
}
|
||||
ctrlMsg.pop_front ();
|
||||
|
||||
@@ -50,6 +50,7 @@ LteSpectrumPhy::LteSpectrumPhy ()
|
||||
LteSpectrumPhy::~LteSpectrumPhy ()
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
m_expectedTbs.clear ();
|
||||
}
|
||||
|
||||
void LteSpectrumPhy::DoDispose ()
|
||||
@@ -223,6 +224,24 @@ LteSpectrumPhy::ChangeState (State newState)
|
||||
m_state = newState;
|
||||
}
|
||||
|
||||
void
|
||||
LteSpectrumPhy::AddExpectedTb (uint16_t rnti, uint16_t size, uint8_t mcs, std::vector<int> map)
|
||||
{
|
||||
NS_LOG_LOGIC (this << " rnti: " << rnti << " size " << size << " mcs " << mcs);
|
||||
expectedTbs_t::iterator it;
|
||||
it = m_expectedTbs.find (rnti);
|
||||
if (it == m_expectedTbs.end ())
|
||||
{
|
||||
// insert new entry
|
||||
tbInfo_t tbInfo = {size, mcs, map, false};
|
||||
m_expectedTbs.insert (std::pair<uint16_t, tbInfo_t> (rnti,tbInfo ));
|
||||
}
|
||||
else
|
||||
{
|
||||
NS_FATAL_ERROR ("Expectd two TBs from the same UE");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
LteSpectrumPhy::StartTx (Ptr<PacketBurst> pb)
|
||||
@@ -404,14 +423,22 @@ LteSpectrumPhy::EndRx ()
|
||||
// this will trigger CQI calculation and Error Model evaluation
|
||||
// as a side effect, the error model should update the error status of all TBs
|
||||
m_interference->EndRx ();
|
||||
|
||||
NS_LOG_INFO (this << " No. of burts " << m_rxPacketBurstList.size ());
|
||||
NS_LOG_DEBUG (this << " Expected TBs " << m_expectedTbs.size ());
|
||||
expectedTbs_t::iterator itTb = m_expectedTbs.begin ();
|
||||
while (itTb!=m_expectedTbs.end ())
|
||||
{
|
||||
NS_LOG_DEBUG (this << "RNTI " << (*itTb).first << " size " << (*itTb).second.size << " mcs " << (*itTb).second.mcs);
|
||||
itTb++;
|
||||
}
|
||||
m_expectedTbs.clear (); // DEBUG
|
||||
for (std::list<Ptr<PacketBurst> >::const_iterator i = m_rxPacketBurstList.begin ();
|
||||
i != m_rxPacketBurstList.end (); ++i)
|
||||
{
|
||||
// here we should determine whether this TB has been received
|
||||
// correctly or not
|
||||
bool tbRxOk = true;
|
||||
|
||||
NS_LOG_INFO (this << " Burst of " << (*i)->GetNPackets ());
|
||||
if (tbRxOk)
|
||||
{
|
||||
m_phyRxEndOkTrace (*i);
|
||||
|
||||
@@ -35,9 +35,21 @@
|
||||
#include <ns3/generic-phy.h>
|
||||
#include <ns3/packet-burst.h>
|
||||
#include <ns3/lte-interference.h>
|
||||
#include <map>
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
|
||||
struct tbInfo_t
|
||||
{
|
||||
uint16_t size;
|
||||
uint8_t mcs;
|
||||
std::vector<int> rbBitmap;
|
||||
bool corrupt;
|
||||
};
|
||||
|
||||
typedef std::map<uint16_t, tbInfo_t> expectedTbs_t;
|
||||
|
||||
class LteNetDevice;
|
||||
|
||||
/**
|
||||
@@ -143,6 +155,16 @@ public:
|
||||
* \param p the new LteSinrChunkProcessor to be added to the processing chain
|
||||
*/
|
||||
void AddSinrChunkProcessor (Ptr<LteSinrChunkProcessor> p);
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* \param rnti the rnti of the source of the TB
|
||||
* \param size the size of the TB
|
||||
* \param mcs the MCS of the TB
|
||||
* \param map the map of RB(s) used
|
||||
*/
|
||||
void AddExpectedTb (uint16_t rnti, uint16_t size, uint8_t mcs, std::vector<int> map);
|
||||
|
||||
private:
|
||||
void ChangeState (State newState);
|
||||
@@ -175,7 +197,9 @@ private:
|
||||
|
||||
Ptr<LteInterference> m_interference;
|
||||
|
||||
uint16_t m_cellId;
|
||||
uint16_t m_cellId;
|
||||
|
||||
expectedTbs_t m_expectedTbs;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -433,6 +433,9 @@ LteUePhy::ReceiveIdealControlMessage (Ptr<IdealControlMessage> msg)
|
||||
}
|
||||
mask = (mask << 1);
|
||||
}
|
||||
|
||||
// send TB info to LteSpectrumPhy
|
||||
m_downlinkSpectrumPhy->AddExpectedTb (dci.m_rnti, dci.m_tbsSize.at (0), dci.m_mcs.at (0), dlRb); // SISO mode
|
||||
|
||||
SetSubChannelsForReception (dlRb);
|
||||
|
||||
|
||||
Reference in new issue
Block a user