23 #include "ns3/simulator.h" 24 #include "ns3/packet.h" 32 #include "ns3/pointer.h" 39 #include "ns3/buffer.h" 48 m_maxDsaReqRetries (100),
51 m_currentTransactionId (0),
52 m_transactionIdIndex (1),
54 m_pendingServiceFlow (0)
68 .SetGroupName (
"Wimax")
123 NS_ASSERT_MSG (serviceFlow != 0,
"Error while initiating a new service flow: All service flows have been initiated");
176 NS_LOG_DEBUG (
"Service flows could not be initialized!");
219 (*m_pendingServiceFlow) = sf;
227 ss->GetConnectionManager ()->AddConnection (transportConnection,
233 if (serviceFlow == 0)
235 ss->SetAreServiceFlowsAllocated (
true);
This class implements the DSA-RSP message described by "IEEE Standard for Local and metropolitan ...
DsaReq m_dsaReq
DSA request.
uint8_t m_maxDsaReqRetries
maximum DSA request retries
Smart pointer class similar to boost::intrusive_ptr.
This class implements the DSA-ACK message described by "IEEE Standard for Local and metropolitan area...
void SetServiceFlow(ServiceFlow sf)
specify a service flow to be requested by this message
void SetConnection(Ptr< WimaxConnection > connection)
Set connection.
NS_ASSERT_MSG(false, "Ipv4AddressGenerator::MaskToIndex(): Impossible")
Mac Management messages Section 6.3.2.3 MAC Management messages page 42, Table 14 page 43...
uint16_t GetTransactionId(void) const
Ptr< SubscriberStationNetDevice > m_device
the device
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
ServiceFlow * GetNextServiceFlowToAllocate()
static void Cancel(const EventId &id)
Set the cancel bit on this event: the event's associated function will not be invoked when it expires...
uint8_t GetMaxDsaReqRetries(void) const
EventId GetDsaAckTimeoutEvent(void) const
Get DSA ack timeout event.
void AddServiceFlow(ServiceFlow *serviceFlow)
add a service flow to the list
void SetMaxDsaReqRetries(uint8_t maxDsaReqRetries)
sets the maximum retries on DSA request message
static EventId Schedule(Time const &delay, MEM mem_ptr, OBJ obj)
Schedule an event to expire after delay.
uint16_t GetTransactionId(void) const
void CopyParametersFrom(ServiceFlow sf)
Copy parameters from another service flow.
EventId GetDsaRspTimeoutEvent(void) const
Get DSA response timeout event.
void SetUnsolicitedGrantInterval(uint16_t unsolicitedGrantInterval)
Set unsolicied grant interval.
~SsServiceFlowManager(void)
uint16_t m_currentTransactionId
current transaction ID
SsServiceFlowManager(Ptr< SubscriberStationNetDevice > device)
creates a service flow manager and attaches it to a device
void InitiateServiceFlows(void)
Initiate service flows.
uint16_t GetCid(void) const
Get CID.
void DoDispose(void)
Destructor implementation.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ServiceFlow * m_pendingServiceFlow
pending service flow
This class implements service flows as described by the IEEE-802.16 standard.
EventId m_dsaAckTimeoutEvent
DSA ack timeout event.
DsaReq CreateDsaReq(const ServiceFlow *serviceFlow)
Create DSA request.
void SetTransactionId(uint16_t transactionId)
set the transaction ID
ServiceFlow GetServiceFlow(void) const
void SetIsEnabled(bool isEnabled)
Set is enabled flag.
void SetTransactionId(uint16_t transactionId)
Set transaction ID field.
An identifier for simulation events.
void AddServiceFlow(ServiceFlow *serviceFlow)
Add service flow function.
void SetUnsolicitedPollingInterval(uint16_t unsolicitedPollingInterval)
Set unsolicited polling interval.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
Ptr< Packet > CreateDsaAck(void)
Create DSA ack.
bool IsRunning(void) const
This method is syntactic sugar for !IsExpired().
uint16_t m_transactionIdIndex
transaction ID index
SubscriberStationNetDevice subclass of WimaxNetDevice.
void DoDispose(void)
Destructor implementation.
void ProcessDsaRsp(const DsaRsp &dsaRsp)
Process DSA response.
EventId m_dsaRspTimeoutEvent
DSA response timeout event.
uint8_t m_dsaReqRetries
DSA request retries.
This class implements the DSA-REQ message described by "IEEE Standard for Local and metropolitan area...
The same service flow manager class serves both for BS and SS though some functions are exclusive to ...
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
static TypeId GetTypeId(void)
Register this type.
void AddHeader(const Header &header)
Add header to this packet.
void SetConfirmationCode(uint16_t confirmationCode)
Set confirmation code field.
void ScheduleDsaReq(const ServiceFlow *serviceFlow)
Schedule DSA response.