src/lte/model/ue-phy.cc
changeset 8749 4462ac63d4cf
parent 8748 87a141a38088
parent 8747 2aec19a85c73
child 8750 b3db7d51f260
child 8765 b89660102b63
--- a/src/lte/model/ue-phy.cc	Fri May 11 14:02:54 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2010 TELEMATICS LAB, DEE - Politecnico di Bari
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Giuseppe Piro  <g.piro@poliba.it>
- */
-
-#include <ns3/waveform-generator.h>
-#include <ns3/object-factory.h>
-#include <ns3/log.h>
-#include <math.h>
-#include <ns3/simulator.h>
-#include "ns3/spectrum-error-model.h"
-#include "ue-phy.h"
-#include "lte-net-device.h"
-#include "ue-net-device.h"
-#include "enb-net-device.h"
-#include "lte-spectrum-value-helper.h"
-#include "amc-module.h"
-#include "ue-mac-entity.h"
-
-NS_LOG_COMPONENT_DEFINE ("UeLtePhy");
-
-namespace ns3 {
-
-
-NS_OBJECT_ENSURE_REGISTERED (UeLtePhy);
-
-
-UeLtePhy::UeLtePhy ()
-{
-  SetDevice (0);
-  SetDownlinkSpectrumPhy (0);
-  SetUplinkSpectrumPhy (0);
-  SetTxPower (43); // XXX
-  SetTti (0.001);
-  SetNrFrames (0);
-  SetNrSubFrames (0);
-}
-
-
-UeLtePhy::UeLtePhy (Ptr<LteNetDevice> d)
-{
-  SetDevice (0);
-  SetDownlinkSpectrumPhy (0);
-  SetUplinkSpectrumPhy (0);
-  SetTxPower (43); // XXX
-  SetTti (0.001);
-  SetNrFrames (0);
-  SetNrSubFrames (0);
-}
-
-
-TypeId
-UeLtePhy::GetTypeId (void)
-{
-  static TypeId tid = TypeId ("ns3::UeLtePhy")
-    .SetParent<LtePhy> ()
-    .AddConstructor<UeLtePhy> ()
-  ;
-  return tid;
-}
-
-
-UeLtePhy::~UeLtePhy ()
-{
-}
-
-
-bool
-UeLtePhy::SendPacket (Ptr<PacketBurst> pb)
-{
-  NS_LOG_FUNCTION (this);
-  return GetUplinkSpectrumPhy ()->StartTx (pb);
-}
-
-
-void
-UeLtePhy::DoSetUplinkSubChannels ()
-{
-  NS_LOG_FUNCTION (this);
-
-  /*
-   *  XXX: the uplink scheduler is not implemented yet!
-   *  Now, all uplink sub channels can be used for uplink transmission
-   */
-  SetSubChannelsForTransmission (GetUplinkSubChannels ());
-}
-
-
-void
-UeLtePhy::SetSubChannelsForTransmission (std::vector <int> mask)
-{
-  NS_LOG_FUNCTION (this);
-
-  m_subChannelsForTransmission = mask;
-
-  Ptr<SpectrumValue> txPsd = CreateTxPowerSpectralDensity ();
-  GetUplinkSpectrumPhy ()->SetTxPowerSpectralDensity (txPsd);
-}
-
-
-void
-UeLtePhy::SetSubChannelsForReception (std::vector <int> mask)
-{
-  NS_LOG_FUNCTION (this);
-  m_subChannelsForReception = mask;
-}
-
-
-std::vector <int>
-UeLtePhy::GetSubChannelsForTransmission ()
-{
-  NS_LOG_FUNCTION (this);
-  return m_subChannelsForTransmission;
-}
-
-
-std::vector <int>
-UeLtePhy::GetSubChannelsForReception ()
-{
-  NS_LOG_FUNCTION (this);
-  return m_subChannelsForReception;
-}
-
-
-Ptr<SpectrumValue>
-UeLtePhy::CreateTxPowerSpectralDensity ()
-{
-  NS_LOG_FUNCTION (this);
-  LteSpectrumValueHelper psdHelper;
-  Ptr<SpectrumValue> psd = psdHelper.CreateUplinkTxPowerSpectralDensity (GetTxPower (), GetSubChannelsForTransmission ());
-
-  return psd;
-}
-
-void
-UeLtePhy::CreateCqiFeedbacks (std::vector<double> sinr)
-{
-  NS_LOG_FUNCTION (this);
-  Ptr<UeNetDevice> thisDevice = GetDevice ()->GetObject<UeNetDevice> ();
-  Ptr<UeMacEntity> mac = thisDevice->GetMacEntity ()->GetObject<UeMacEntity> ();
-  Ptr<CqiIdealControlMessage> msg = mac->CreateCqiFeedbacks (sinr);
-  SendIdealControlMessage (msg);
-}
-
-void
-UeLtePhy::SendIdealControlMessage (Ptr<IdealControlMessage> msg)
-{
-  NS_LOG_FUNCTION (this << msg);
-  Ptr<LtePhy> phy = msg->GetDestinationDevice ()->GetPhy ();
-  phy->ReceiveIdealControlMessage (msg);
-}
-
-
-void
-UeLtePhy::ReceiveIdealControlMessage (Ptr<IdealControlMessage> msg)
-{
-  NS_LOG_FUNCTION (this << msg);
-
-  if (msg->GetMessageType () == IdealControlMessage::ALLOCATION_MAP)
-    {
-      Ptr<PdcchMapIdealControlMessage> msg2 = DynamicCast<PdcchMapIdealControlMessage> (msg);
-
-      std::vector <int> ulSubChennels;
-      std::vector <int> dlSubChennels;
-
-      // store information about UL and DL sub channel assigned to this device
-      PdcchMapIdealControlMessage::IdealPdcchMessage* message = msg2->GetMessage ();
-      for (PdcchMapIdealControlMessage::IdealPdcchMessage::iterator it = message->begin ();
-           it != message->end (); it++)
-        {
-          PdcchMapIdealControlMessage::IdealPdcchRecord record = *it;
-
-          if (record.m_ue == GetDevice ())
-            {
-              if (record.m_direction == PdcchMapIdealControlMessage::DOWNLINK)
-                {
-                  dlSubChennels.push_back (record.m_idSubChannel);
-                }
-              else
-                {
-                  ulSubChennels.push_back (record.m_idSubChannel);
-                }
-            }
-          else
-            {
-              // not for me!
-            }
-        }
-
-      // UPDATE ASSIGNED UL and DL sub channels
-      /*
-       * XXX: do not update the UL sub channels. Since no uplink packet scheduler
-       * is implemented yet, ulSubChennels is empty.
-       */
-      // SetSubChannelsForTransmission (ulSubChennels);
-
-      SetSubChannelsForReception (dlSubChennels);
-    }
-
-  else
-    {
-      // XXX at this time, the UE must receive only Allocation Map messages!
-    }
-
-
-}
-
-
-} // namespace ns3