Virtual class for uplink scheduler. More...
#include "bs-uplink-scheduler.h"
Public Member Functions | |
UplinkScheduler () | |
UplinkScheduler (Ptr< BaseStationNetDevice > bs) | |
Constructor. | |
~UplinkScheduler () override | |
virtual void | AddUplinkAllocation (OfdmUlMapIe &ulMapIe, const uint32_t &allocationSize, uint32_t &symbolsToAllocation, uint32_t &availableSymbols)=0 |
Add uplink allocation. | |
virtual void | AllocateInitialRangingInterval (uint32_t &symbolsToAllocation, uint32_t &availableSymbols)=0 |
Allocate initial ranging interval function. | |
virtual uint32_t | CalculateAllocationStartTime ()=0 |
virtual Ptr< BaseStationNetDevice > | GetBs () |
virtual void | GetChannelDescriptorsToUpdate (bool &, bool &, bool &, bool &)=0 |
Determines if channel descriptors sent in the current frame are required to be updated. | |
virtual Time | GetDcdTimeStamp () const |
virtual bool | GetIsInvIrIntrvlAllocated () const |
virtual bool | GetIsIrIntrvlAllocated () const |
virtual uint8_t | GetNrIrOppsAllocated () const |
virtual Time | GetTimeStampIrInterval () |
virtual Time | GetUcdTimeStamp () const |
virtual std::list< OfdmUlMapIe > | GetUplinkAllocations () const |
virtual void | InitOnce ()=0 |
one time initialization function | |
virtual void | OnSetRequestedBandwidth (ServiceFlowRecord *sfr)=0 |
Set requested bandwidth. | |
virtual void | ProcessBandwidthRequest (const BandwidthRequestHeader &bwRequestHdr)=0 |
Process bandwidth request function. | |
virtual void | Schedule ()=0 |
Schedule function. | |
virtual void | ServiceBandwidthRequests (const SSRecord *ssRecord, ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols)=0 |
Service bandwidth request function. | |
virtual bool | ServiceBandwidthRequests (ServiceFlow *serviceFlow, ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols)=0 |
Service bandwidth request function. | |
virtual void | ServiceUnsolicitedGrants (const SSRecord *ssRecord, ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols)=0 |
Service unsolicited grants function. | |
virtual void | SetBs (Ptr< BaseStationNetDevice > bs) |
Set base station device. | |
virtual void | SetDcdTimeStamp (Time dcdTimeStamp) |
Set DCD timestamp. | |
virtual void | SetIsInvIrIntrvlAllocated (bool isInvIrIntrvlAllocated) |
Set if the Inv IR interval is allocated. | |
virtual void | SetIsIrIntrvlAllocated (bool isIrIntrvlAllocated) |
Set if the IR interval is allocated. | |
virtual void | SetNrIrOppsAllocated (uint8_t nrIrOppsAllocated) |
Set the number of IR opps allocated. | |
virtual void | SetTimeStampIrInterval (Time timeStampIrInterval) |
Set timestamp IR interval. | |
virtual void | SetUcdTimeStamp (Time ucdTimeStamp) |
Set UCD timestamp. | |
virtual void | SetupServiceFlow (SSRecord *ssRecord, ServiceFlow *serviceFlow)=0 |
Setp service flow function. | |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. | |
~Object () override | |
Destructor. | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. | |
void | Dispose () |
Dispose of this Object. | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. | |
bool | IsInitialized () const |
Check if the object has been initialized. | |
void | UnidirectionalAggregateObject (Ptr< Object > other) |
Aggregate an Object to another Object. | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. | |
void | Ref () const |
Increment the reference count. | |
void | Unref () const |
Decrement the reference count. | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. | |
void | GetAttribute (std::string name, AttributeValue &value, bool permissive=false) const |
Get the value of an attribute, raising fatal errors if unsuccessful. | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Get the type ID. | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. | |
Private Attributes | |
Ptr< BaseStationNetDevice > | m_bs |
the base station | |
Time | m_dcdTimeStamp |
DCD timestamp. | |
bool | m_isInvIrIntrvlAllocated |
is Inv IR interval allocated | |
bool | m_isIrIntrvlAllocated |
is IR interval allocated | |
uint8_t | m_nrIrOppsAllocated |
number IR opps allocated | |
Time | m_timeStampIrInterval |
timestamp IR interval | |
Time | m_ucdTimeStamp |
UCD timestamp. | |
std::list< OfdmUlMapIe > | m_uplinkAllocations |
uplink allocations | |
Additional Inherited Members | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. | |
virtual void | DoDispose () |
Destructor implementation. | |
virtual void | DoInitialize () |
Initialize() implementation. | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. | |
Related Symbols inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
Virtual class for uplink scheduler.
Definition at line 33 of file bs-uplink-scheduler.h.
ns3::UplinkScheduler::UplinkScheduler | ( | ) |
Definition at line 32 of file bs-uplink-scheduler.cc.
ns3::UplinkScheduler::UplinkScheduler | ( | Ptr< BaseStationNetDevice > | bs | ) |
|
override |
Definition at line 54 of file bs-uplink-scheduler.cc.
References m_bs, and m_uplinkAllocations.
|
pure virtual |
Add uplink allocation.
ulMapIe | the UL map IE |
allocationSize | the allocation size |
symbolsToAllocation | the symbols to allocation |
availableSymbols | the available symbols |
Implemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
|
pure virtual |
Allocate initial ranging interval function.
symbolsToAllocation | the symbols to allocation |
availableSymbols | the available symbols |
Implemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
|
pure virtual |
Implemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
|
virtual |
Definition at line 151 of file bs-uplink-scheduler.cc.
References m_bs.
Referenced by ns3::UplinkSchedulerMBQoS::AllocateInitialRangingInterval(), ns3::UplinkSchedulerRtps::AllocateInitialRangingInterval(), ns3::UplinkSchedulerSimple::AllocateInitialRangingInterval(), ns3::UplinkSchedulerMBQoS::CalculateAllocationStartTime(), ns3::UplinkSchedulerRtps::CalculateAllocationStartTime(), ns3::UplinkSchedulerSimple::CalculateAllocationStartTime(), ns3::UplinkSchedulerMBQoS::CheckDeadline(), ns3::UplinkSchedulerMBQoS::CheckMinimumBandwidth(), ns3::UplinkSchedulerMBQoS::CountSymbolsJobs(), ns3::UplinkSchedulerMBQoS::GetChannelDescriptorsToUpdate(), ns3::UplinkSchedulerRtps::GetChannelDescriptorsToUpdate(), ns3::UplinkSchedulerSimple::GetChannelDescriptorsToUpdate(), ns3::UplinkSchedulerMBQoS::ProcessBandwidthRequest(), ns3::UplinkSchedulerMBQoS::Schedule(), ns3::UplinkSchedulerRtps::Schedule(), ns3::UplinkSchedulerSimple::Schedule(), ns3::UplinkSchedulerMBQoS::ServiceBandwidthRequests(), ns3::UplinkSchedulerRtps::ServiceBandwidthRequests(), ns3::UplinkSchedulerSimple::ServiceBandwidthRequests(), ns3::UplinkSchedulerMBQoS::ServiceBandwidthRequestsBytes(), ns3::UplinkSchedulerMBQoS::ServiceUnsolicitedGrants(), ns3::UplinkSchedulerRtps::ServiceUnsolicitedGrants(), ns3::UplinkSchedulerSimple::ServiceUnsolicitedGrants(), ns3::UplinkSchedulerMBQoS::SetupServiceFlow(), ns3::UplinkSchedulerRtps::SetupServiceFlow(), ns3::UplinkSchedulerSimple::SetupServiceFlow(), ns3::UplinkSchedulerRtps::ULSchedulerRTPSConnection(), and ns3::UplinkSchedulerMBQoS::UplinkSchedWindowTimer().
|
pure virtual |
Determines if channel descriptors sent in the current frame are required to be updated.
Implemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
|
virtual |
Definition at line 109 of file bs-uplink-scheduler.cc.
References m_dcdTimeStamp.
Referenced by ns3::UplinkSchedulerMBQoS::GetChannelDescriptorsToUpdate(), ns3::UplinkSchedulerRtps::GetChannelDescriptorsToUpdate(), and ns3::UplinkSchedulerSimple::GetChannelDescriptorsToUpdate().
|
virtual |
Definition at line 97 of file bs-uplink-scheduler.cc.
References m_isInvIrIntrvlAllocated.
|
virtual |
Definition at line 85 of file bs-uplink-scheduler.cc.
References m_isIrIntrvlAllocated.
|
virtual |
Definition at line 73 of file bs-uplink-scheduler.cc.
References m_nrIrOppsAllocated.
Referenced by ns3::UplinkSchedulerMBQoS::AllocateInitialRangingInterval(), ns3::UplinkSchedulerRtps::AllocateInitialRangingInterval(), and ns3::UplinkSchedulerSimple::AllocateInitialRangingInterval().
|
virtual |
Definition at line 139 of file bs-uplink-scheduler.cc.
References m_timeStampIrInterval.
Referenced by ns3::UplinkSchedulerMBQoS::AllocateInitialRangingInterval(), ns3::UplinkSchedulerRtps::AllocateInitialRangingInterval(), and ns3::UplinkSchedulerSimple::AllocateInitialRangingInterval().
|
static |
Get the type ID.
Definition at line 66 of file bs-uplink-scheduler.cc.
References ns3::TypeId::SetParent().
|
virtual |
Definition at line 121 of file bs-uplink-scheduler.cc.
References m_ucdTimeStamp.
Referenced by ns3::UplinkSchedulerMBQoS::GetChannelDescriptorsToUpdate(), ns3::UplinkSchedulerRtps::GetChannelDescriptorsToUpdate(), and ns3::UplinkSchedulerSimple::GetChannelDescriptorsToUpdate().
|
virtual |
Reimplemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
Definition at line 133 of file bs-uplink-scheduler.cc.
References m_uplinkAllocations.
|
pure virtual |
one time initialization function
Implemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
Definition at line 61 of file bs-uplink-scheduler.cc.
|
pure virtual |
Set requested bandwidth.
sfr | service flow record |
Implemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
|
pure virtual |
Process bandwidth request function.
bwRequestHdr |
Implemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
|
pure virtual |
Schedule function.
Implemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
|
pure virtual |
Service bandwidth request function.
ssRecord | the SS record |
schedulingType | the scheduling type |
ulMapIe | the UL map IE |
modulationType | the modulation type |
symbolsToAllocation | the symbols to allocation |
availableSymbols | the available symbols |
Implemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
|
pure virtual |
Service bandwidth request function.
serviceFlow | the service flow |
schedulingType | the scheduling type |
ulMapIe | the UL map IE |
modulationType | the modulation type |
symbolsToAllocation | the symbols to allocation |
availableSymbols | the available symbols |
Implemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
|
pure virtual |
Service unsolicited grants function.
ssRecord | the SS record |
schedulingType | the scheduling type |
ulMapIe | the UL map IE |
modulationType | the modulation type |
symbolsToAllocation | the symbols to allocation |
availableSymbols | the available symbols |
Implemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
|
virtual |
Set base station device.
bs |
Definition at line 157 of file bs-uplink-scheduler.cc.
References m_bs.
Referenced by ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerMBQoS::~UplinkSchedulerMBQoS(), ns3::UplinkSchedulerRtps::~UplinkSchedulerRtps(), and ns3::UplinkSchedulerSimple::~UplinkSchedulerSimple().
|
virtual |
Set DCD timestamp.
dcdTimeStamp |
Definition at line 115 of file bs-uplink-scheduler.cc.
References m_dcdTimeStamp.
Referenced by ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerMBQoS::GetChannelDescriptorsToUpdate(), ns3::UplinkSchedulerRtps::GetChannelDescriptorsToUpdate(), and ns3::UplinkSchedulerSimple::GetChannelDescriptorsToUpdate().
|
virtual |
Set if the Inv IR interval is allocated.
isInvIrIntrvlAllocated |
Definition at line 103 of file bs-uplink-scheduler.cc.
References m_isInvIrIntrvlAllocated.
Referenced by ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerMBQoS::Schedule(), ns3::UplinkSchedulerRtps::Schedule(), and ns3::UplinkSchedulerSimple::Schedule().
|
virtual |
Set if the IR interval is allocated.
isIrIntrvlAllocated |
Definition at line 91 of file bs-uplink-scheduler.cc.
References m_isIrIntrvlAllocated.
Referenced by ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerMBQoS::AllocateInitialRangingInterval(), ns3::UplinkSchedulerRtps::AllocateInitialRangingInterval(), ns3::UplinkSchedulerSimple::AllocateInitialRangingInterval(), ns3::UplinkSchedulerMBQoS::Schedule(), ns3::UplinkSchedulerRtps::Schedule(), and ns3::UplinkSchedulerSimple::Schedule().
|
virtual |
Set the number of IR opps allocated.
nrIrOppsAllocated | number of IR opps allocated |
Definition at line 79 of file bs-uplink-scheduler.cc.
References m_nrIrOppsAllocated.
Referenced by ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerMBQoS::AllocateInitialRangingInterval(), ns3::UplinkSchedulerRtps::AllocateInitialRangingInterval(), and ns3::UplinkSchedulerSimple::AllocateInitialRangingInterval().
|
virtual |
Set timestamp IR interval.
timeStampIrInterval |
Definition at line 145 of file bs-uplink-scheduler.cc.
References m_timeStampIrInterval.
Referenced by ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerMBQoS::AllocateInitialRangingInterval(), ns3::UplinkSchedulerRtps::AllocateInitialRangingInterval(), and ns3::UplinkSchedulerSimple::AllocateInitialRangingInterval().
|
virtual |
Set UCD timestamp.
ucdTimeStamp |
Definition at line 127 of file bs-uplink-scheduler.cc.
References m_ucdTimeStamp.
Referenced by ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerRtps::UplinkSchedulerRtps(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerSimple::UplinkSchedulerSimple(), ns3::UplinkSchedulerMBQoS::GetChannelDescriptorsToUpdate(), ns3::UplinkSchedulerRtps::GetChannelDescriptorsToUpdate(), and ns3::UplinkSchedulerSimple::GetChannelDescriptorsToUpdate().
|
pure virtual |
Setp service flow function.
ssRecord | the SS record |
serviceFlow | the service flow |
Implemented in ns3::UplinkSchedulerMBQoS, ns3::UplinkSchedulerRtps, and ns3::UplinkSchedulerSimple.
|
private |
the base station
Definition at line 226 of file bs-uplink-scheduler.h.
Referenced by ~UplinkScheduler(), GetBs(), and SetBs().
|
private |
DCD timestamp.
Definition at line 232 of file bs-uplink-scheduler.h.
Referenced by GetDcdTimeStamp(), and SetDcdTimeStamp().
|
private |
is Inv IR interval allocated
Definition at line 231 of file bs-uplink-scheduler.h.
Referenced by GetIsInvIrIntrvlAllocated(), and SetIsInvIrIntrvlAllocated().
|
private |
is IR interval allocated
Definition at line 230 of file bs-uplink-scheduler.h.
Referenced by GetIsIrIntrvlAllocated(), and SetIsIrIntrvlAllocated().
|
private |
number IR opps allocated
Definition at line 229 of file bs-uplink-scheduler.h.
Referenced by GetNrIrOppsAllocated(), and SetNrIrOppsAllocated().
|
private |
timestamp IR interval
Definition at line 228 of file bs-uplink-scheduler.h.
Referenced by GetTimeStampIrInterval(), and SetTimeStampIrInterval().
|
private |
UCD timestamp.
Definition at line 233 of file bs-uplink-scheduler.h.
Referenced by GetUcdTimeStamp(), and SetUcdTimeStamp().
|
private |
uplink allocations
Definition at line 227 of file bs-uplink-scheduler.h.
Referenced by ~UplinkScheduler(), and GetUplinkAllocations().