20 #ifndef UPLINK_SCHEDULER_H
21 #define UPLINK_SCHEDULER_H
28 #include "ns3/nstime.h"
35 class BaseStationNetDevice;
38 class ServiceFlowRecord;
153 const uint32_t& allocationSize,
154 uint32_t& symbolsToAllocation,
155 uint32_t& availableSymbols) = 0;
173 uint32_t& symbolsToAllocation,
174 uint32_t& availableSymbols) = 0;
188 uint32_t& symbolsToAllocation,
189 uint32_t& availableSymbols) = 0;
204 uint32_t& symbolsToAllocation,
205 uint32_t& availableSymbols) = 0;
212 uint32_t& availableSymbols) = 0;
This class implements the bandwidth-request mac Header as described by IEEE Standard for Local and me...
A base class which provides memory management and object aggregation.
This class implements the UL-MAP_IE message as described by "IEEE Standard for Local and metropolitan...
Smart pointer class similar to boost::intrusive_ptr.
This class is used by the base station to store some information related to subscriber station in the...
This class implements service flows as described by the IEEE-802.16 standard.
SchedulingType
section 11.13.11 Service flow scheduling type, page 701
this class implements a structure to manage some parameters and statistics related to a service flow
Simulation virtual time values and global simulation resolution.
a unique identifier for an interface.
Virtual class for uplink scheduler.
virtual void SetUcdTimeStamp(Time ucdTimeStamp)
Set UCD timestamp.
virtual void SetupServiceFlow(SSRecord *ssRecord, ServiceFlow *serviceFlow)=0
Setp service flow function.
virtual void SetDcdTimeStamp(Time dcdTimeStamp)
Set DCD timestamp.
virtual void SetNrIrOppsAllocated(uint8_t nrIrOppsAllocated)
Set the number of IR opps allocated.
virtual std::list< OfdmUlMapIe > GetUplinkAllocations() const
virtual void Schedule()=0
Schedule function.
virtual bool GetIsIrIntrvlAllocated() const
virtual void SetBs(Ptr< BaseStationNetDevice > bs)
Set base station device.
~UplinkScheduler() override
Time m_ucdTimeStamp
UCD timestamp.
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 SetIsIrIntrvlAllocated(bool isIrIntrvlAllocated)
Set if the IR interval is allocated.
std::list< OfdmUlMapIe > m_uplinkAllocations
uplink allocations
virtual uint8_t GetNrIrOppsAllocated() const
Time m_timeStampIrInterval
timestamp IR interval
Time m_dcdTimeStamp
DCD timestamp.
virtual bool GetIsInvIrIntrvlAllocated() const
virtual void SetIsInvIrIntrvlAllocated(bool isInvIrIntrvlAllocated)
Set if the Inv IR interval is allocated.
virtual void OnSetRequestedBandwidth(ServiceFlowRecord *sfr)=0
Set requested bandwidth.
virtual void InitOnce()=0
one time initialization function
bool m_isIrIntrvlAllocated
is IR interval allocated
static TypeId GetTypeId()
Get the type ID.
virtual void AddUplinkAllocation(OfdmUlMapIe &ulMapIe, const uint32_t &allocationSize, uint32_t &symbolsToAllocation, uint32_t &availableSymbols)=0
Add uplink allocation.
uint8_t m_nrIrOppsAllocated
number IR opps allocated
virtual Time GetTimeStampIrInterval()
Ptr< BaseStationNetDevice > m_bs
the base station
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 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 Time GetDcdTimeStamp() const
virtual uint32_t CalculateAllocationStartTime()=0
virtual void SetTimeStampIrInterval(Time timeStampIrInterval)
Set timestamp IR interval.
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 void AllocateInitialRangingInterval(uint32_t &symbolsToAllocation, uint32_t &availableSymbols)=0
Allocate initial ranging interval function.
virtual Time GetUcdTimeStamp() const
virtual void ProcessBandwidthRequest(const BandwidthRequestHeader &bwRequestHdr)=0
Process bandwidth request function.
bool m_isInvIrIntrvlAllocated
is Inv IR interval allocated
ModulationType
ModulationType enumeration.
Every class exported by the ns3 library is enclosed in the ns3 namespace.