|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
24 #include "ns3/boolean.h"
91 m_dlEdgeSubBandOffset (0),
92 m_dlEdgeSubBandwidth (0),
93 m_ulEdgeSubBandOffset (0),
94 m_ulEdgeSubBandwidth (0),
125 .AddAttribute (
"UlEdgeSubBandOffset",
126 "Uplink Edge SubBand Offset in number of Resource Block Groups",
129 MakeUintegerChecker<uint8_t> ())
130 .AddAttribute (
"UlEdgeSubBandwidth",
131 "Uplink Edge SubBandwidth Configuration in number of Resource Block Groups",
134 MakeUintegerChecker<uint8_t> ())
135 .AddAttribute (
"DlEdgeSubBandOffset",
136 "Downlink Edge SubBand Offset in number of Resource Block Groups",
139 MakeUintegerChecker<uint8_t> ())
140 .AddAttribute (
"DlEdgeSubBandwidth",
141 "Downlink Edge SubBandwidth Configuration in number of Resource Block Groups",
144 MakeUintegerChecker<uint8_t> ())
145 .AddAttribute (
"AllowCenterUeUseEdgeSubBand",
146 "If true center UEs can receive on Edge SubBand RBGs",
150 .AddAttribute (
"RsrqThreshold",
151 "If the RSRQ of is worse than this threshold, UE should be served in Edge sub-band",
154 MakeUintegerChecker<uint8_t> ())
155 .AddAttribute (
"CenterPowerOffset",
156 "PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0",
159 MakeUintegerChecker<uint8_t> ())
160 .AddAttribute (
"EdgePowerOffset",
161 "PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0",
164 MakeUintegerChecker<uint8_t> ())
165 .AddAttribute (
"CenterAreaTpc",
166 "TPC value which will be set in DL-DCI for UEs in center area"
167 "Absolute mode is used, default value 1 is mapped to -1 according to"
168 "TS36.213 Table 5.1.1.1-2",
171 MakeUintegerChecker<uint8_t> ())
172 .AddAttribute (
"EdgeAreaTpc",
173 "TPC value which will be set in DL-DCI for UEs in edge area"
174 "Absolute mode is used, default value 1 is mapped to -1 according to"
175 "TS36.213 Table 5.1.1.1-2",
178 MakeUintegerChecker<uint8_t> ())
230 NS_LOG_LOGIC (
this <<
" requesting Event A1 measurements"
231 <<
" (threshold = 0" <<
")");
298 "(DlEdgeSubBandOffset+DlEdgeSubBandwidth) higher than DlBandwidth");
319 "(UlEdgeSubBandOffset+UlEdgeSubBandwidth) higher than DlBandwidth");
352 std::map< uint16_t, uint8_t >::iterator it =
m_ues.find (rnti);
353 if (it ==
m_ues.end ())
370 return (edgeRbg && edgeUe) || (!edgeRbg && !edgeUe);
398 std::map< uint16_t, uint8_t >::iterator it =
m_ues.find (rnti);
399 if (it ==
m_ues.end ())
416 return (edgeRbg && edgeUe) || (!edgeRbg && !edgeUe);
423 NS_LOG_WARN (
"Method should not be called, because it is empty");
430 NS_LOG_WARN (
"Method should not be called, because it is empty");
437 NS_LOG_WARN (
"Method should not be called, because it is empty");
460 std::map< uint16_t, uint8_t >::iterator it =
m_ues.find (rnti);
461 if (it ==
m_ues.end ())
487 return minContinuousUlBandwidth;
494 minContinuousUlBandwidth =
495 ((leftBandwidth > 0 ) && (leftBandwidth < minContinuousUlBandwidth)) ? leftBandwidth : minContinuousUlBandwidth;
497 minContinuousUlBandwidth =
498 ((centerBandwidth > 0 ) && (centerBandwidth < minContinuousUlBandwidth)) ? centerBandwidth : minContinuousUlBandwidth;
500 minContinuousUlBandwidth =
501 ((rightBandwidth > 0 ) && (rightBandwidth < minContinuousUlBandwidth)) ? rightBandwidth : minContinuousUlBandwidth;
503 NS_LOG_INFO (
"minContinuousUlBandwidth: " << (
int)minContinuousUlBandwidth);
505 return minContinuousUlBandwidth;
514 <<
" RSRP: " << (uint16_t)measResults.
rsrpResult
515 <<
" RSRQ: " << (uint16_t)measResults.
rsrqResult);
523 std::map< uint16_t, uint8_t >::iterator it =
m_ues.find (rnti);
524 if (it ==
m_ues.end ())
528 it =
m_ues.find (rnti);
534 NS_LOG_INFO (
"UE RNTI: " << rnti <<
" will be served in Edge sub-band");
546 NS_LOG_INFO (
"UE RNTI: " << rnti <<
" will be served in Center sub-band");
561 NS_LOG_WARN (
"Method should not be called, because it is empty");
enum ns3::LteRrcSap::ReportConfigEutra::@5 reportInterval
Report interval enumeration.
a unique identifier for an interface.
virtual void DoReportDlCqiInfo(const struct FfMacSchedSapProvider::SchedDlCqiInfoReqParameters ¶ms)
DoReportDlCqiInfo.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
uint8_t rsrqResult
RSRQ result.
std::vector< bool > m_dlEdgeRbgMap
DL edge RBG map.
uint8_t m_ulEdgeSubBandOffset
UL edge subband offset.
@ EVENT_A1
Event A1: Serving becomes better than absolute threshold.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
void SetUplinkConfiguration(uint16_t cellId, uint8_t bandwidth)
Set uplink configuration.
AttributeValue implementation for Boolean.
Service Access Point (SAP) offered by the eNodeB RRC instance to the Frequency Reuse algorithm instan...
uint8_t range
Value range used in RSRP/RSRQ threshold.
const uint16_t NUM_UPLINK_CONFS(sizeof(g_ffrEnhancedUplinkDefaultConfiguration)/sizeof(FfrEnhancedUplinkDefaultConfiguration))
Parameters of the SCHED_DL_CQI_INFO_REQ primitive.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual void SetLteFfrSapUser(LteFfrSapUser *s)
Set the "user" part of the LteFfrSap interface that this frequency reuse algorithm instance will inte...
std::vector< bool > m_ulRbgMap
UL RBG map.
LteFfrRrcSapProvider * m_ffrRrcSapProvider
FFR RRC SAP provider.
Parameters of the SCHED_UL_CQI_INFO_REQ primitive.
uint8_t m_ulEdgeSubBandwidth
UL edge subbandwidth.
virtual bool DoIsUlRbgAvailableForUe(int i, uint16_t rnti)
Implementation of LteFfrSapProvider::IsUlRbgAvailableForUe.
void InitializeUplinkRbgMaps()
Initialize uplink RBG maps.
std::vector< bool > m_ulEdgeRbgMap
UL edge RBG map.
LteFfrSapUser * m_ffrSapUser
FFR SAP user.
uint8_t ulBandwidth
UL bandwidth.
uint8_t m_edgeSubBandThreshold
Edge subband threshold.
friend class MemberLteFfrSapProvider< LteFrSoftAlgorithm >
let the forwarder class access the protected and private members
uint8_t rsrpResult
RSRP result.
#define NS_LOG_WARN(msg)
Use NS_LOG to output a message of level LOG_WARN.
soft uplink default configuration
uint8_t dlEdgeSubBandwidth
Dl edge subbandwidth.
virtual void DoReportUlCqiInfo(const struct FfMacSchedSapProvider::SchedUlCqiInfoReqParameters ¶ms)
DoReportUlCqiInfo.
uint8_t m_dlEdgeSubBandwidth
DL edge subbandwidth.
enum ns3::LteRrcSap::ThresholdEutra::@0 choice
Threshold enumeration.
ThresholdEutra threshold1
Threshold for event A1, A2, A4, and A5.
uint8_t ulEdgeSubBandwidth
UL endge subbandwidth.
Ptr< const AttributeAccessor > MakeBooleanAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
FrSoftDownlinkDefaultConfiguration structure.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
virtual void SetLteFfrRrcSapUser(LteFfrRrcSapUser *s)
Set the "user" part of the LteFfrRrcSap interface that this frequency reuse algorithm instance will i...
bool m_needReconfiguration
If true FR algorithm will be reconfigured.
virtual uint16_t DoGetMinContinuousUlBandwidth()
DoGetMinContinuousUlBandwidth in number of RB.
uint8_t m_ulBandwidth
uplink bandwidth in RBs
LteFfrSapProvider * m_ffrSapProvider
FFR SAP provider.
static const struct ns3::FrSoftUplinkDefaultConfiguration g_frSoftUplinkDefaultConfiguration[]
soft uplink default configuration
virtual void DoInitialize()
Initialize() implementation.
uint8_t m_edgePowerOffset
edge power offset
enum ns3::LteRrcSap::ReportConfigEutra::@2 eventId
Event enumeration.
PdschConfigDedicated structure.
Service Access Point (SAP) offered by the eNodeB RRC instance to the Frequency Reuse algorithm instan...
enum ns3::LteRrcSap::ReportConfigEutra::@3 triggerQuantity
Trigger type enumeration.
virtual std::vector< bool > DoGetAvailableUlRbg()
Implementation of LteFfrSapProvider::GetAvailableUlRbg.
const uint16_t NUM_DOWNLINK_CONFS(sizeof(g_ffrEnhancedDownlinkDefaultConfiguration)/sizeof(FfrEnhancedDownlinkDefaultConfiguration))
virtual uint8_t AddUeMeasReportConfigForFfr(LteRrcSap::ReportConfigEutra reportConfig)=0
Request a certain reporting configuration to be fulfilled by the UEs attached to the eNodeB entity.
uint8_t m_frCellTypeId
FFR cell type ID for automatic configuration.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
Service Access Point (SAP) offered by the Frequency Reuse algorithm instance to the MAC Scheduler ins...
LteFfrRrcSapUser * m_ffrRrcSapUser
FFR RRC SAP user.
Specifies criteria for triggering of an E-UTRA measurement reporting event.
uint8_t m_dlBandwidth
downlink bandwidth in RBs
@ RSRQ
Reference Signal Received Quality.
Ptr< const AttributeChecker > MakeBooleanChecker(void)
uint8_t ulEdgeSubBandOffset
UL edge subband offset
virtual bool DoIsDlRbgAvailableForUe(int i, uint16_t rnti)
Implementation of LteFfrSapProvider::IsDlRbgAvailableForUe.
uint8_t dlEdgeSubBandOffset
DL edge subband offset.
void SetDownlinkConfiguration(uint16_t cellId, uint8_t bandwidth)
Set downlink configuration.
std::map< uint16_t, uint8_t > m_ues
UEs.
uint8_t m_edgeAreaTpc
edge area tpc
friend class MemberLteFfrRrcSapProvider< LteFrSoftAlgorithm >
let the forwarder class access the protected and private members
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
virtual ~LteFrSoftAlgorithm()
virtual void DoInitialize(void)
Initialize() implementation.
uint8_t dlBandwidth
DL bandwidth.
LteFrSoftAlgorithm()
Creates a trivial ffr algorithm instance.
virtual void SetPdschConfigDedicated(uint16_t rnti, LteRrcSap::PdschConfigDedicated pdschConfigDedicated)=0
Instruct the eNodeB RRC entity to perform RrcConnectionReconfiguration to inform UE about new PdschCo...
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
Soft Frequency Reuse algorithm implementation.
uint8_t m_measId
The expected measurement identity.
static const struct ns3::FrSoftDownlinkDefaultConfiguration g_frSoftDownlinkDefaultConfiguration[]
soft downlink default configuration
virtual void DoRecvLoadInformation(EpcX2Sap::LoadInformationParams params)
DoRecvLoadInformation.
virtual void DoDispose()
Destructor implementation.
uint8_t m_centerPowerOffset
center power offset
virtual LteFfrRrcSapProvider * GetLteFfrRrcSapProvider()
Export the "provider" part of the LteFfrRrcSap interface.
virtual LteFfrSapProvider * GetLteFfrSapProvider()
Export the "provider" part of the LteFfrSap interface.
uint8_t m_centerAreaTpc
center area tpc
uint8_t m_dlEdgeSubBandOffset
DL edge subband offset.
int GetRbgSize(int dlbandwidth)
Get RBG size for DL Bandwidth according to table 7.1.6.1-1 of 36.213.
The abstract base class of a Frequency Reuse algorithm.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
virtual void DoReportUeMeas(uint16_t rnti, LteRrcSap::MeasResults measResults)
Implementation of LteFfrRrcSapProvider::ReportUeMeas.
static TypeId GetTypeId()
Get the type ID.
Hold an unsigned integer type.
bool m_enabledInUplink
If true FR algorithm will also work in Uplink.
virtual void Reconfigure()
Automatic FR reconfiguration.
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
virtual uint8_t DoGetTpc(uint16_t rnti)
DoGetTpc for UE.
@ THRESHOLD_RSRQ
RSRQ is used for the threshold.
std::vector< bool > m_dlRbgMap
DL RBG map.
bool m_isEdgeSubBandForCenterUe
is edge subband for center UE?
Service Access Point (SAP) offered by the Frequency Reuse algorithm instance to the eNodeB RRC instan...
virtual std::vector< bool > DoGetAvailableDlRbg()
Implementation of LteFfrSapProvider::GetAvailableDlRbg.
void InitializeDownlinkRbgMaps()
Initialize downlink RBG maps.