11#ifndef UPLINK_SCHEDULER_MBQOS_H
12#define UPLINK_SCHEDULER_MBQOS_H
21#include "ns3/nstime.h"
22#include "ns3/object.h"
29class BaseStationNetDevice;
32class ServiceFlowRecord;
This class implements the bandwidth-request mac Header as described by IEEE Standard for Local and me...
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.
JobPriority
Job priority enumeration.
Virtual class for uplink scheduler.
This class implements a Migration-based Quality of Service uplink scheduler(MBQoS).
void InitOnce() override
This method is called once to initialize window.
uint32_t CountSymbolsQueue(std::list< Ptr< UlJob > > jobs)
~UplinkSchedulerMBQoS() override
Ptr< UlJob > CreateUlJob(SSRecord *ssRecord, ServiceFlow::SchedulingType schedType, ReqType reqType)
void CheckDeadline(uint32_t &availableSymbols)
Check deadline from jobs. Migrate requests if necessary.
void OnSetRequestedBandwidth(ServiceFlowRecord *sfr) override
Set requested bandwidth.
std::list< Ptr< UlJob > > m_uplinkJobs_inter
uplink jobs intermedite priority
std::list< Ptr< UlJob > > m_uplinkJobs_low
uplink jobs low priority
bool ServiceBandwidthRequestsBytes(ServiceFlow *serviceFlow, ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols, uint32_t allocationSizeBytes)
Service bandwidth requests bytes.
std::list< OfdmUlMapIe > GetUplinkAllocations() const override
Get uplink allocations.
uint32_t CountSymbolsJobs(Ptr< UlJob > job)
void GetChannelDescriptorsToUpdate(bool &updateDcd, bool &updateUcd, bool &sendDcd, bool &sendUcd) override
Determines if channel descriptors sent in the current frame are required to be updated.
void ServiceUnsolicitedGrants(const SSRecord *ssRecord, ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols) override
Service unsolicited grants.
Time m_windowInterval
windows interval
void ProcessBandwidthRequest(const BandwidthRequestHeader &bwRequestHdr) override
Process bandwidth request function.
void AllocateInitialRangingInterval(uint32_t &symbolsToAllocation, uint32_t &availableSymbols) override
Allocate initial ranging interval.
void ServiceBandwidthRequests(const SSRecord *ssRecord, ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols) override
Service bandwidth requests.
Ptr< UlJob > DequeueJob(UlJob::JobPriority priority)
Dequeue a job from a priority queue.
uint32_t CalculateAllocationStartTime() override
Calculate allocation start time.
void Schedule() override
Schedule function.
std::list< Ptr< UlJob > > m_uplinkJobs_high
uplink jobs high priority
uint32_t GetPendingSize(ServiceFlow *serviceFlow)
void EnqueueJob(UlJob::JobPriority priority, Ptr< UlJob > job)
Enqueue a job in a priority queue.
Time DetermineDeadline(ServiceFlow *serviceFlow)
Calculates deadline of a request.
static TypeId GetTypeId()
Get the type ID.
void CheckMinimumBandwidth(uint32_t &availableSymbols)
Check if Minimum bandwidth is guarantee. Migrate requests if necessary.
void UplinkSchedWindowTimer()
Reset the current window.
void SetupServiceFlow(SSRecord *ssRecord, ServiceFlow *serviceFlow) override
Setup service flow.
void AddUplinkAllocation(OfdmUlMapIe &ulMapIe, const uint32_t &allocationSize, uint32_t &symbolsToAllocation, uint32_t &availableSymbols) override
Add uplink allocation.
std::list< OfdmUlMapIe > m_uplinkAllocations
uplink allocations
ModulationType
ModulationType enumeration.
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ReqType
Request type enumeration.