23 #ifndef WIMAX_SS_NET_DEVICE_H
24 #define WIMAX_SS_NET_DEVICE_H
26 #include "ns3/event-id.h"
28 #include "ns3/nstime.h"
30 #include "ns3/uinteger.h"
31 #include "ns3/ss-service-flow-manager.h"
37 class OfdmDlBurstProfile;
38 class OfdmUlBurstProfile;
41 class SsServiceFlowManager;
This class implements Downlink channel descriptor as described by "IEEE Standard for Local and metrop...
This class implements DL-MAP as described by "IEEE Standard for Local and metropolitan area networks ...
An identifier for simulation events.
This class implements the OFDM Downlink burst profile descriptor as described by "IEEE Standard for L...
This class implements the UL burst profile as described by "IEEE Standard for Local and metropolitan ...
This class implements service flows as described by the IEEE-802.16 standard.
SubscriberStationNetDevice subclass of WimaxNetDevice.
Time GetMaxUcdInterval(void) const
void Start(void)
Start the device.
bool Enqueue(Ptr< Packet > packet, const MacHeaderType &hdrType, Ptr< WimaxConnection > connection)
Enqueue a packet into a connection queue.
uint8_t m_ucdCount
UCD count.
Time m_intervalT2
in seconds, wait for broadcast ranging timeout, i.e., wait for initial ranging opportunity
SubscriberStationNetDevice(void)
Time m_lostDlMapInterval
in milliseconds, time since last received DL-MAP before downlink synchronization is considered lost,...
Time m_lostUlMapInterval
in milliseconds, time since last received UL-MAP before uplink synchronization is considered lost,...
Ptr< SSLinkManager > m_linkManager
link manager
Ptr< WimaxConnection > m_primaryConnection
primary connection
bool GetAreServiceFlowsAllocated(void) const
void SetAsciiTxQueueDropCallback(AsciiTraceCallback cb)
Set the Drop callback for ASCII tracing.
TracedCallback< Ptr< const Packet > > m_ssPromiscRxTrace
The trace source fired for packets successfully received by the device immediately before being forwa...
double m_allocationStartTime
allocation start time
void DoReceive(Ptr< Packet > packet)
Receive a packet.
EventId m_dcdWaitTimeoutEvent
DCD wait timeout event.
bool DoSend(Ptr< Packet > packet, const Mac48Address &source, const Mac48Address &dest, uint16_t protocolNumber)
Send a packet.
void SetIntervalT21(Time interval21)
OfdmUlBurstProfile * m_ulBurstProfile
UL burst profile.
void SetIntervalT20(Time interval20)
Ptr< SSScheduler > m_scheduler
the scheduler
bool GetAreManagementConnectionsAllocated(void) const
void SetIpcsPacketClassifier(Ptr< IpcsClassifier > classifier)
Sets the packet classifier to be used.
void SetIntervalT1(Time interval1)
Time m_intervalT21
in seconds, time the SS searches for (decodable) DL-MAP on a given channel
Time GetIntervalT3(void) const
void InitSubscriberStationNetDevice(void)
initializes the net device and sets the parameters to the default values
void SetMaxDcdInterval(Time maxDcdInterval)
void SetAreManagementConnectionsAllocated(bool areManagementConnectionsAllocated)
Ptr< IpcsClassifier > m_classifier
the classifier
Callback< void, std::string, Ptr< const Packet > > AsciiTraceCallback
Callback for logging packets on ASCII traces.
uint32_t m_nrUlMapRecvd
number UL map received
Time GetIntervalT7(void) const
AsciiTraceCallback m_asciiTxQueueDropCb
Bound callback to perform ASCII logging for Drop events.
WimaxPhy::ModulationType m_modulationType
modulation type
uint32_t m_nrDcdRecvd
number DCD received
void SetAsciiTxQueueDequeueCallback(AsciiTraceCallback cb)
Set the Dequeue callback for ASCII tracing.
void SetScheduler(Ptr< SSScheduler > ssScheduler)
AsciiTraceCallback m_asciiTxQueueEnqueueCb
Bound callback to perform ASCII logging for Enqueue events.
void SetBasicConnection(Ptr< WimaxConnection > basicConnection)
AsciiTraceCallback m_asciiTxQueueDequeueCb
Bound callback to perform ASCII logging for Dequeue events.
bool m_areManagementConnectionsAllocated
are management connections allocated
Ptr< SSLinkManager > GetLinkManager(void) const
Time m_intervalT20
in seconds, time the SS searches for preambles on a given channel
Ptr< IpcsClassifier > GetIpcsClassifier() const
void SetLostUlMapInterval(Time lostUlMapInterval)
Time m_intervalT1
in seconds, wait for DCD timeout
uint8_t GetMaxContentionRangingRetries(void) const
void SetPrimaryConnection(Ptr< WimaxConnection > primaryConnection)
Ptr< SsServiceFlowManager > GetServiceFlowManager(void) const
Time GetLostUlMapInterval(void) const
Time GetIntervalT12(void) const
void ProcessUcd(const Ucd &ucd)
Process UCD.
uint8_t m_dcdCount
DCD count.
void SetTimer(EventId eventId, EventId &event)
Set timer.
bool HasServiceFlows(void) const
void Stop(void)
Stop the device.
Ptr< SSScheduler > GetScheduler(void) const
uint8_t m_maxContentionRangingRetries
maximum contention ranging retries
EventId m_ucdWaitTimeoutEvent
UCD wait timeout event.
Time GetIntervalT1(void) const
Time GetIntervalT21(void) const
TracedCallback< Ptr< const Packet > > m_ssRxTrace
The trace source fired for packets successfully received by the device immediately before being forwa...
EventId m_rangOppWaitTimeoutEvent
range opp wait timeout event
Ptr< WimaxConnection > GetBasicConnection(void) const
TracedCallback< Ptr< const Packet > > m_ssTxDropTrace
The trace source fired when packets coming into the "top" of the device are dropped at the MAC layer ...
Time GetMaxDcdInterval(void) const
Mac48Address m_baseStationId
base station ID
void SetMaxContentionRangingRetries(uint8_t maxContentionRangingRetries)
bool IsRegistered(void) const
Cid GetBasicCid(void) const
void ProcessDlMap(const DlMap &dlmap)
Process DL map.
void ProcessDcd(const Dcd &dcd)
Process DCD.
void SetIntervalT2(Time interval2)
TracedCallback< Ptr< const Packet >, Mac48Address, const Cid & > m_traceSSRx
trace SS receive callback
Time m_maxUcdInterval
in seconds, maximum time between transmission of UCD messages
Time GetTimeToAllocation(Time deferTime)
Get time to allocation.
static Time GetDefaultLostDlMapInterval()
Get default lost DL map interval.
void SetIntervalT12(Time interval12)
void SetIntervalT3(Time interval3)
TracedCallback< Ptr< const Packet > > m_ssRxDropTrace
The trace source fired when packets coming into the "top" of the device are dropped at the MAC layer ...
bool m_areServiceFlowsAllocated
are service flows allocated
void SetAsciiTxQueueEnqueueCallback(AsciiTraceCallback cb)
Set the Enqueue callback for ASCII tracing.
WimaxPhy::ModulationType GetModulationType(void) const
Time GetIntervalT20(void) const
EventId m_lostDlMapEvent
lost DL map event
void SetLostDlMapInterval(Time lostDlMapInterval)
Ptr< SsServiceFlowManager > m_serviceFlowManager
the service flow manager
void DoDispose(void)
Destructor implementation.
Time GetIntervalT2(void) const
static TypeId GetTypeId(void)
Get the type ID.
Time m_intervalT12
in seconds, wait for UCD descriptor
void SetLinkManager(Ptr< SSLinkManager > linkManager)
sets the link manager to be used
void SetIntervalT7(Time interval7)
Time m_maxDcdInterval
in seconds, maximum time between transmission of DCD messages
Time m_intervalT3
in milliseconds, ranging Response reception timeout following the transmission of a ranging request
EventType
EventType enumeration.
@ EVENT_RANG_OPP_WAIT_TIMEOUT
@ EVENT_DL_MAP_SYNC_TIMEOUT
void SetServiceFlowManager(Ptr< SsServiceFlowManager > sfm)
Sets the service flow manager to be installed on the device.
uint32_t m_nrDlMapRecvd
number DL map received
void SetAreServiceFlowsAllocated(bool areServiceFlowsAllocated)
void ProcessUlMap(const UlMap &ulmap)
Process UL map.
Ptr< WimaxConnection > m_basicConnection
basic connection
OfdmDlBurstProfile * m_dlBurstProfile
DL burst profile.
uint16_t m_nrDlMapElements
number DL Map elements
TracedCallback< Ptr< const Packet > > m_ssTxTrace
The trace source fired when packets come into the "top" of the device at the L3/L2 transition,...
uint32_t m_nrUcdRecvd
number UCD received
Time GetLostDlMapInterval(void) const
Cid GetPrimaryCid(void) const
void SetModulationType(WimaxPhy::ModulationType modulationType)
Set the most efficient modulation and coding scheme (MCS) supported by the device.
void SendBurst(uint8_t uiuc, uint16_t nrSymbols, Ptr< WimaxConnection > connection, MacHeaderType::HeaderType packetType=MacHeaderType::HEADER_TYPE_GENERIC)
Sends a burst on the uplink frame.
void AddServiceFlow(ServiceFlow *sf)
adds a new service flow
@ SS_STATE_WAITING_REG_RANG_INTRVL
@ SS_STATE_ADJUSTING_PARAMETERS
@ SS_STATE_WAITING_INV_RANG_INTRVL
@ SS_STATE_WAITING_RNG_RSP
@ SS_STATE_ACQUIRING_PARAMETERS
uint16_t m_nrUlMapElements
number UL Map elements
Time m_intervalT7
in seconds, wait for DSA/DSC/DSD Response timeout
~SubscriberStationNetDevice(void)
void SetMaxUcdInterval(Time maxUcdInterval)
EventId m_lostUlMapEvent
lost UL map event
Ptr< WimaxConnection > GetPrimaryConnection(void) const
Simulation virtual time values and global simulation resolution.
Forward calls to a chain of Callback.
a unique identifier for an interface.
This class implements the UCD message as described by "IEEE Standard for Local and metropolitan area ...
This class implements the UL-MAP_IE message as described by "IEEE Standard for Local and metropolitan...
Hold together all WiMAX-related objects in a NetDevice.
ModulationType
ModulationType enumeration.
Every class exported by the ns3 library is enclosed in the ns3 namespace.