23 #ifndef UPLINK_SCHEDULER_MBQOS_H 24 #define UPLINK_SCHEDULER_MBQOS_H 28 #include "ns3/nstime.h" 32 #include "ns3/object.h" 38 class BaseStationNetDevice;
41 class ServiceFlowRecord;
115 const uint32_t &allocationSize,
116 uint32_t &symbolsToAllocation,
117 uint32_t &availableSymbols);
136 uint32_t &symbolsToAllocation,
137 uint32_t &availableSymbols);
151 uint32_t &symbolsToAllocation,
152 uint32_t &availableSymbols);
167 uint32_t &symbolsToAllocation,
168 uint32_t &availableSymbols);
299 uint32_t &symbolsToAllocation, uint32_t &availableSymbols, uint32_t allocationSizeBytes);
Ptr< UlJob > DequeueJob(UlJob::JobPriority priority)
Dequeue a job from a priority queue.
void AllocateInitialRangingInterval(uint32_t &symbolsToAllocation, uint32_t &availableSymbols)
Allocate initial ranging interval.
uint32_t CalculateAllocationStartTime(void)
Calculate allocation start time.
Simulation virtual time values and global simulation resolution.
Smart pointer class similar to boost::intrusive_ptr.
uint32_t CountSymbolsJobs(Ptr< UlJob > job)
ReqType
Request type enumeration.
this class implements a structure to manage some parameters and statistics related to a service flow ...
uint32_t GetPendingSize(ServiceFlow *serviceFlow)
void InitOnce(void)
This method is called once to initialize window.
static TypeId GetTypeId(void)
Get the type ID.
void AddUplinkAllocation(OfdmUlMapIe &ulMapIe, const uint32_t &allocationSize, uint32_t &symbolsToAllocation, uint32_t &availableSymbols)
Add uplink allocation.
Time m_windowInterval
windows interval
std::list< OfdmUlMapIe > GetUplinkAllocations(void) const
Get uplink allocations.
void GetChannelDescriptorsToUpdate(bool &updateDcd, bool &updateUcd, bool &sendDcd, bool &sendUcd)
Determines if channel descriptors sent in the current frame are required to be updated.
SchedulingType
section 11.13.11 Service flow scheduling type, page 701
bool ServiceBandwidthRequestsBytes(ServiceFlow *serviceFlow, enum ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols, uint32_t allocationSizeBytes)
Service bandwidth requests bytes.
std::list< Ptr< UlJob > > m_uplinkJobs_low
uplink jobs low priority
Virtual class for uplink scheduler.
uint32_t CountSymbolsQueue(std::list< Ptr< UlJob > > jobs)
void OnSetRequestedBandwidth(ServiceFlowRecord *sfr)
Set requested bandwidth.
void UplinkSchedWindowTimer(void)
Reset the current window.
std::list< Ptr< UlJob > > m_uplinkJobs_high
uplink jobs high priority
void ProcessBandwidthRequest(const BandwidthRequestHeader &bwRequestHdr)
Process bandwidth request function.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
This class implements the bandwidth-request mac Header as described by IEEE Standard for Local and me...
void CheckMinimumBandwidth(uint32_t &availableSymbols)
Check if Minimum bandwidth is guarantee. Migrate requests if necessary.
This class implements service flows as described by the IEEE-802.16 standard.
This class implements a Migration-based Quality of Service uplink scheduler(MBQoS).
~UplinkSchedulerMBQoS(void)
void EnqueueJob(UlJob::JobPriority priority, Ptr< UlJob > job)
Enqueue a job in a priority queue.
ModulationType
ModulationType enumeration.
Ptr< UlJob > CreateUlJob(SSRecord *ssRecord, enum ServiceFlow::SchedulingType schedType, ReqType reqType)
void ServiceBandwidthRequests(const SSRecord *ssRecord, enum ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols)
Service bandwidth requests.
void ServiceUnsolicitedGrants(const SSRecord *ssRecord, enum ServiceFlow::SchedulingType schedulingType, OfdmUlMapIe &ulMapIe, const WimaxPhy::ModulationType modulationType, uint32_t &symbolsToAllocation, uint32_t &availableSymbols)
Service unsolicited grants.
JobPriority
Job priority enumeration.
void SetupServiceFlow(SSRecord *ssRecord, ServiceFlow *serviceFlow)
Setup service flow.
This class is used by the base station to store some information related to subscriber station in the...
std::list< Ptr< UlJob > > m_uplinkJobs_inter
uplink jobs intermedite priority
void Schedule(void)
Schedule function.
std::list< OfdmUlMapIe > m_uplinkAllocations
uplink allocations
Time DetermineDeadline(ServiceFlow *serviceFlow)
Calculates deadline of a request.
This class implements the UL-MAP_IE message as described by "IEEE Standard for Local and metropolitan...
a unique identifier for an interface.
void CheckDeadline(uint32_t &availableSymbols)
Check deadline from jobs. Migrate requests if necessary.