27 #include "ns3/simulator.h"
71 uint32_t allocationSize = 0;
98 allocationSize = bs->GetBwReqOppSize ();
108 allocationSize = bs->GetBwReqOppSize ();
116 allocationSize = bs->GetBwReqOppSize ();
123 return allocationSize;
135 for (std::vector<ServiceFlow*>::iterator iter = serviceFlows.begin (); iter != serviceFlows.end (); ++iter)
145 bytesToRequest = serviceFlow->
GetQueue ()->GetQueueLengthWithMACOverhead ();
159 uint32_t bytesToRequest = 0;
162 if (!serviceFlow || !bytesToRequest)
173 bwRequestHdr.
SetBr (bytesToRequest);
188 ServiceFlow *serviceFlow = bs->GetConnectionManager ()->GetConnection (bwRequestHdr.
GetCid ())->GetServiceFlow ();
191 serviceFlow->GetRecord ()->UpdateRequestedBandwidth (bwRequestHdr.
GetBr ());
195 serviceFlow->GetRecord ()->SetRequestedBandwidth (bwRequestHdr.
GetBr ());
196 bs->GetUplinkScheduler ()->OnSetRequestedBandwidth (serviceFlow->GetRecord ());
198 bs->GetUplinkScheduler ()->ProcessBandwidthRequest (bwRequestHdr);
200 serviceFlow->GetRecord ()->IncreaseBacklogged (bwRequestHdr.
GetBr ());
210 uint32_t symbolsPerFrame = bs->GetPhy ()->GetSymbolsPerFrame ();
213 bs->SetNrDlSymbols (symbolsPerFrame / 2);
214 bs->SetNrUlSymbols (symbolsPerFrame / 2);
222 uint32_t allocationPerFrame = 0;
224 std::vector<SSRecord*> *ssRecords = bs->GetSSManager ()->GetSSRecords ();
225 for (std::vector<SSRecord*>::iterator iter1 = ssRecords->begin (); iter1 != ssRecords->end (); ++iter1)
230 allocationPerFrame += (*iter2)->GetRecord ()->GetGrantSize ();
233 return allocationPerFrame;
void SendBandwidthRequest(uint8_t uiuc, uint16_t allocationSize)
NS_LOG_COMPONENT_DEFINE("BandwidthManager")
keep track of time values and allow control of global simulation resolution
smart pointer class similar to boost::intrusive_ptr
enum ServiceFlow::SchedulingType GetSchedulingType(void) const
void SetType(uint8_t type)
NS_OBJECT_ENSURE_REGISTERED(NullMessageSimulatorImpl)
Ptr< WimaxMacQueue > GetQueue(void) const
uint8_t GetType(void) const
void DoDispose(void)
This method is called by Object::Dispose or by the object's destructor, whichever comes first...
Ptr< WimaxConnection > GetConnection(void) const
#define NS_FATAL_ERROR(msg)
fatal error handling
Ptr< WimaxNetDevice > m_device
static TypeId GetTypeId(void)
Time GetGrantTimeStamp(void) const
void SetGrantTimeStamp(Time grantTimeStamp)
Set the grant time stamp.
ServiceFlow * SelectFlowForRequest(uint32_t &bytesToRequest)
void ProcessBandwidthRequest(const BandwidthRequestHeader &bwRequestHdr)
bool GetHasServiceFlowUgs(void) const
bool GetPollMeBit(void) const
this class implements the bandwidth-request mac Header as described by IEEE Standard for Local and me...
BandwidthManager(Ptr< WimaxNetDevice > device)
This class implements service flows as described by the IEEE-802.16 standard.
static Time Now(void)
Return the "current simulation time".
ServiceFlowRecord * GetRecord(void) const
#define NS_ASSERT_MSG(condition, message)
uint32_t GetBr(void) const
void SetSubframeRatio(void)
uint32_t GetGrantSize(void) const
uint32_t GetSymbolsPerFrameAllocated(void)
uint16_t GetUnsolicitedGrantInterval(void) const
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
uint32_t CalculateAllocationSize(const SSRecord *ssRecord, const ServiceFlow *serviceFlow)
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
void AddHeader(const Header &header)
Add header to this packet.
uint16_t GetUnsolicitedPollingInterval(void) const
bool HasPackets(void) const