/usr/include/ns3.27/ns3/no-op-component-carrier-manager.h is in libns3-dev 3.27+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2015 Danilo Abrignani
* Copyright (c) 2016 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
*
* 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
*
* Authors: Danilo Abrignani <danilo.abrignani@unibo.it>
* Biljana Bojovic <biljana.bojovic@cttc.es>
*/
#ifndef NO_OP_COMPONENT_CARRIER_MANAGER_H
#define NO_OP_COMPONENT_CARRIER_MANAGER_H
#include <ns3/lte-enb-component-carrier-manager.h>
#include <ns3/lte-ccm-rrc-sap.h>
#include <ns3/lte-rrc-sap.h>
#include <map>
namespace ns3 {
class UeManager;
class LteCcmRrcSapProvider;
/**
* \brief The default component carrier manager that forwards all traffic, the uplink and the downlink,
* over the primary carrier, and will not use secondary carriers. To enable carrier aggregation
* feature, select another component carrier manager class, i.e., some of child classes of
* LteEnbComponentCarrierManager of NoOpComponentCarrierManager.
*/
class NoOpComponentCarrierManager : public LteEnbComponentCarrierManager
{
/// allow EnbMacMemberLteMacSapProvider<NoOpComponentCarrierManager> class friend access
friend class EnbMacMemberLteMacSapProvider<NoOpComponentCarrierManager>;
/// allow MemberLteCcmRrcSapProvider<NoOpComponentCarrierManager> class friend access
friend class MemberLteCcmRrcSapProvider<NoOpComponentCarrierManager>;
/// allow MemberLteCcmRrcSapUser<NoOpComponentCarrierManager> class friend access
friend class MemberLteCcmRrcSapUser<NoOpComponentCarrierManager>;
/// allow MemberLteCcmMacSapUser<NoOpComponentCarrierManager> class friend access
friend class MemberLteCcmMacSapUser<NoOpComponentCarrierManager>;
public:
NoOpComponentCarrierManager ();
virtual ~NoOpComponentCarrierManager ();
/**
* \brief Get the type ID.
* \return the object TypeId
*/
static TypeId GetTypeId ();
protected:
// Inherited methods
virtual void DoInitialize ();
virtual void DoDispose ();
virtual void DoReportUeMeas (uint16_t rnti, LteRrcSap::MeasResults measResults);
/**
* \brief Add UE.
* \param rnti the RNTI
* \param state the state
*/
virtual void DoAddUe (uint16_t rnti, uint8_t state);
/**
* \brief Add LC.
* \param lcInfo the LC info
* \param msu the MSU
*/
virtual void DoAddLc (LteEnbCmacSapProvider::LcInfo lcInfo, LteMacSapUser* msu);
/**
* \brief Setup data radio bearer.
* \param bearer the radio bearer
* \param bearerId the bearerID
* \param rnti the RNTI
* \param lcid the LCID
* \param lcGroup the LC group
* \param msu the MSU
* \returns std::vector<LteCcmRrcSapProvider::LcsConfig>
*/
virtual std::vector<LteCcmRrcSapProvider::LcsConfig> DoSetupDataRadioBearer (EpsBearer bearer, uint8_t bearerId, uint16_t rnti, uint8_t lcid, uint8_t lcGroup, LteMacSapUser* msu);
/**
* \brief Transmit PDU.
* \param params the transmit PDU parameters
*/
virtual void DoTransmitPdu (LteMacSapProvider::TransmitPduParameters params);
/**
* \brief Report buffer status.
* \param params the report buffer status parameters
*/
virtual void DoReportBufferStatus (LteMacSapProvider::ReportBufferStatusParameters params);
/**
* \brief Notify transmit opportunity.
* \param bytes the number of bytes
* \param layer the layer
* \param harqId the HARQ ID
* \param componentCarrierId the component carrier ID
* \param rnti the RNTI
* \param lcid the LCID
*/
virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid);
/**
* \brief Receive PDU.
* \param p the packet
* \param rnti the RNTI
* \param lcid the LCID
*/
virtual void DoReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid);
/// Notify HARQ delivery failure
virtual void DoNotifyHarqDeliveryFailure ();
/**
* \brief Remove UE.
* \param rnti the RNTI
*/
virtual void DoRemoveUe (uint16_t rnti);
/**
* \brief Release data radio bearer.
* \param rnti the RNTI
* \param lcid the LCID
* \returns updated data radio bearer list
*/
virtual std::vector<uint8_t> DoReleaseDataRadioBearer (uint16_t rnti, uint8_t lcid);
/**
* \brief Configure the signal bearer.
* \param lcinfo the LteEnbCmacSapProvider::LcInfo
* \param msu the MSU
* \returns updated data radio bearer list
*/
virtual LteMacSapUser* DoConfigureSignalBearer(LteEnbCmacSapProvider::LcInfo lcinfo, LteMacSapUser* msu);
/**
* \brief Forwards uplink BSR to CCM, called by MAC through CCM SAP interface.
* \param bsr the BSR
* \param componentCarrierId the component carrier ID
*/
virtual void DoUlReceiveMacCe (MacCeListElement_s bsr, uint8_t componentCarrierId);
/**
* \brief Function implements the function of the SAP interface of CCM instance which is used by MAC
* to notify the PRB occupancy reported by scheduler.
* \param prbOccupancy the PRB occupancy
* \param componentCarrierId the component carrier ID
*/
virtual void DoNotifyPrbOccupancy (double prbOccupancy, uint8_t componentCarrierId);
protected:
std::map <uint8_t, double > m_ccPrbOccupancy;//!< The physical resource block occupancy per carrier.
}; // end of class NoOpComponentCarrierManager
/*
* \brief Component carrier manager implementation that splits traffic equally among carriers.
*/
class RrComponentCarrierManager : public NoOpComponentCarrierManager
{
public:
RrComponentCarrierManager ();
virtual ~RrComponentCarrierManager ();
/**
* \brief Get the type ID.
* \return the object TypeId
*/
static TypeId GetTypeId ();
protected:
// Inherited methods
virtual void DoReportBufferStatus (LteMacSapProvider::ReportBufferStatusParameters params);
virtual void DoUlReceiveMacCe (MacCeListElement_s bsr, uint8_t componentCarrierId);
}; // end of class RrComponentCarrierManager
} // end of namespace ns3
#endif /* NO_OP_COMPONENT_CARRIER_MANAGER_H */
|