21 #ifndef UPLINK_SCHEDULER_H
22 #define UPLINK_SCHEDULER_H
25 #include "ul-mac-messages.h"
26 #include "ns3/nstime.h"
27 #include "wimax-phy.h"
28 #include "service-flow-record.h"
29 #include "service-flow.h"
33 class BaseStationNetDevice;
36 class ServiceFlowRecord;
49 static TypeId GetTypeId (
void);
51 virtual uint8_t GetNrIrOppsAllocated (
void)
const;
52 virtual void SetNrIrOppsAllocated (uint8_t nrIrOppsAllocated);
54 virtual bool GetIsIrIntrvlAllocated (
void)
const;
55 virtual void SetIsIrIntrvlAllocated (
bool isIrIntrvlAllocated);
57 virtual bool GetIsInvIrIntrvlAllocated (
void)
const;
58 virtual void SetIsInvIrIntrvlAllocated (
bool isInvIrIntrvlAllocated);
60 virtual std::list<OfdmUlMapIe> GetUplinkAllocations (
void)
const;
62 virtual Time GetTimeStampIrInterval (
void);
63 virtual void SetTimeStampIrInterval (
Time timeStampIrInterval);
65 virtual Time GetDcdTimeStamp (
void)
const;
66 virtual void SetDcdTimeStamp (
Time dcdTimeStamp);
68 virtual Time GetUcdTimeStamp (
void)
const;
69 virtual void SetUcdTimeStamp (
Time ucdTimeStamp);
78 virtual uint32_t CalculateAllocationStartTime (
void) = 0;
79 virtual void AddUplinkAllocation (
OfdmUlMapIe &ulMapIe,
80 const uint32_t &allocationSize,
81 uint32_t &symbolsToAllocation,
82 uint32_t &availableSymbols) = 0;
83 virtual void Schedule (
void) = 0;
84 virtual void ServiceUnsolicitedGrants (
const SSRecord *ssRecord,
85 enum ServiceFlow::SchedulingType schedulingType,
87 const WimaxPhy::ModulationType modulationType,
88 uint32_t &symbolsToAllocation,
89 uint32_t &availableSymbols) = 0;
90 virtual void ServiceBandwidthRequests (
const SSRecord *ssRecord,
91 enum ServiceFlow::SchedulingType schedulingType,
93 const WimaxPhy::ModulationType modulationType,
94 uint32_t &symbolsToAllocation,
95 uint32_t &availableSymbols) = 0;
96 virtual bool ServiceBandwidthRequests (
ServiceFlow *serviceFlow,
97 enum ServiceFlow::SchedulingType schedulingType,
99 const WimaxPhy::ModulationType modulationType,
100 uint32_t &symbolsToAllocation,
101 uint32_t &availableSymbols) = 0;
102 virtual void AllocateInitialRangingInterval (uint32_t &symbolsToAllocation, uint32_t &availableSymbols) = 0;
106 virtual void InitOnce (
void) = 0;
112 std::list<OfdmUlMapIe> m_uplinkAllocations;
113 Time m_timeStampIrInterval;
114 uint8_t m_nrIrOppsAllocated;
115 bool m_isIrIntrvlAllocated;
116 bool m_isInvIrIntrvlAllocated;
smart pointer class similar to boost::intrusive_ptr
this class implements a structure to manage some parameters and statistics related to a service flow ...
Virtual class for uplink scheduler.
virtual void GetChannelDescriptorsToUpdate(bool &, bool &, bool &, bool &)=0
this class implements the bandwidth-request mac Header as described by IEEE Standard for Local and me...
This class is used by the base station to store some information related to subscriber station in the...
a base class which provides memory management and object aggregation
a unique identifier for an interface.