24 #include "ns3/simulator.h" 
   25 #include "ns3/packet.h" 
   31 #include "ns3/pointer.h" 
   38 #include "ns3/buffer.h" 
   47     m_maxDsaRspRetries (100)                                     
 
   98 std::vector<ServiceFlow*>
 
  121   SSRecord *ssRecord = bs->GetSSManager ()->GetSSRecord (cid);
 
  124       NS_LOG_INFO (
"SS not registered with the BS CID:" << cid);
 
  130   ssRecord->AddServiceFlow (serviceFlow);
 
  133   bs->GetUplinkScheduler ()->SetupServiceFlow (ssRecord, serviceFlow);
 
  138   if (ssRecord->GetDsaRspRetries () == 0)
 
  140       dsaRsp = 
CreateDsaRsp (serviceFlow, ssRecord->GetSfTransactionId ());
 
  142       ssRecord->SetDsaRsp (dsaRsp);
 
  152           NS_LOG_DEBUG (
"Service flows could not be initialized!");
 
  156   ssRecord->IncrementDsaRspRetries ();
 
  179   SSRecord *ssRecord = bs->GetSSManager ()->GetSSRecord (cid);
 
  181   NS_LOG_INFO (
"BsServiceFlowManager: Processing DSA-REQ...");
 
  182   if (ssRecord->GetSfTransactionId () != 0)
 
  186                      "Error while processing DSA request:the received transaction ID is not expected");
 
  194       transportConnection = BsConManager->CreateConnection (
Cid::TRANSPORT);
 
  196       transportConnection->SetServiceFlow (serviceFlow);
 
  203       NS_LOG_INFO (
"BsServiceFlowManager: Creating a new Service flow: SFID = " << serviceFlow->
GetSfid () << 
" CID = " 
  204                                                                                 << serviceFlow->
GetCid ());
 
  222   bs->GetUplinkScheduler ()->SetupServiceFlow (0, serviceFlow);
 
  232       NS_LOG_INFO (
"No service Flow. Could not connect.");
 
  240   SSRecord *ssRecord = bs->GetSSManager ()->GetSSRecord (cid);
 
  247   ssRecord->SetDsaRspRetries (0);
 
  248   ssRecord->SetSfTransactionId (0);
 
  253       ssRecord->SetAreServiceFlowsAllocated (
true);
 
smart pointer class similar to boost::intrusive_ptr 
ServiceFlow * GetServiceFlow(uint32_t sfid) const 
void SetConnection(Ptr< WimaxConnection > connection)
void SetServiceFlow(ServiceFlow sf)
specify a service flow to be requested by this message 
void AllocateServiceFlows(const DsaReq &dsaReq, Cid cid)
ServiceFlow GetServiceFlow(void) const 
#define NS_LOG_COMPONENT_DEFINE(name)
BsServiceFlowManager(Ptr< BaseStationNetDevice > device)
uint8_t GetMaxDsaRspRetries(void) const 
uint32_t GetSfid(void) const 
~BsServiceFlowManager(void)
static void Cancel(const EventId &id)
bool IsRunning(void) const 
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Ptr< WimaxNetDevice > m_device
void ScheduleDsaRsp(ServiceFlow *serviceFlow, Cid cid)
void SetTransactionId(uint16_t transactionId)
EventId m_dsaAckTimeoutEvent
static Cid InitialRanging(void)
void SetUnsolicitedPollingInterval(uint16_t)
bool AreServiceFlowsAllocated()
void CopyParametersFrom(ServiceFlow sf)
ServiceFlow * GetServiceFlow(uint32_t sfid) const 
uint8_t m_maxDsaRspRetries
void SetUnsolicitedGrantInterval(uint16_t)
EventId GetDsaAckTimeoutEvent(void) const 
void SetConvergenceSublayerParam(CsParameters)
std::vector< ServiceFlow * > GetServiceFlows(enum ServiceFlow::SchedulingType schedulingType) const 
Cid m_inuseScheduleDsaRspCid
ServiceFlow * ProcessDsaReq(const DsaReq &dsaReq, Cid cid)
process a DSA-Req message 
void SetConfirmationCode(uint16_t confirmationCode)
#define NS_ASSERT_MSG(condition, message)
void SetModulation(enum WimaxPhy::ModulationType modulationType)
void SetMaxDsaRspRetries(uint8_t maxDsaRspRetries)
set the maximum Dynamic ServiceFlow Add (DSA) retries 
void ProcessDsaAck(const DsaAck &dsaAck, Cid cid)
process a DSA-ACK message 
enum Direction GetDirection(void) const 
void SetIsEnabled(bool isEnabled)
void SetType(enum Type type)
an identifier for simulation events. 
void AddServiceFlow(ServiceFlow *serviceFlow)
#define NS_LOG_DEBUG(msg)
uint16_t GetTransactionId(void) const 
void AddServiceFlow(ServiceFlow *serviceFlow)
Add a new service flow. 
void AddMulticastServiceFlow(ServiceFlow sf, enum WimaxPhy::ModulationType modulation)
add a multicast service flow 
This class is used by the base station to store some information related to subscriber station in the...
void SetIsMulticast(bool isMulticast)
CsParameters GetConvergenceSublayerParam(void) const 
DsaRsp CreateDsaRsp(const ServiceFlow *serviceFlow, uint16_t transactionId)
void AddHeader(const Header &header)
uint16_t GetTransactionId(void) const 
uint16_t GetCid(void) const 
std::vector< ServiceFlow * > GetServiceFlows(ServiceFlow::SchedulingType schedulingType) const