23 #ifndef WIMAX_SS_NET_DEVICE_H
24 #define WIMAX_SS_NET_DEVICE_H
26 #include "ns3/event-id.h"
27 #include "wimax-net-device.h"
28 #include "ns3/nstime.h"
29 #include "wimax-mac-header.h"
30 #include "ns3/uinteger.h"
31 #include "ns3/ss-service-flow-manager.h"
32 #include "ipcs-classifier.h"
37 class OfdmDlBurstProfile;
38 class OfdmUlBurstProfile;
41 class SsServiceFlowManager;
52 SS_STATE_IDLE, SS_STATE_SCANNING, SS_STATE_SYNCHRONIZING, SS_STATE_ACQUIRING_PARAMETERS,
53 SS_STATE_WAITING_REG_RANG_INTRVL,
54 SS_STATE_WAITING_INV_RANG_INTRVL,
55 SS_STATE_WAITING_RNG_RSP, SS_STATE_ADJUSTING_PARAMETERS, SS_STATE_REGISTERED, SS_STATE_TRANSMITTING,
61 EVENT_NONE, EVENT_WAIT_FOR_RNG_RSP, EVENT_DL_MAP_SYNC_TIMEOUT, EVENT_LOST_DL_MAP, EVENT_LOST_UL_MAP,
62 EVENT_DCD_WAIT_TIMEOUT, EVENT_UCD_WAIT_TIMEOUT, EVENT_RANG_OPP_WAIT_TIMEOUT
65 static TypeId GetTypeId (
void);
81 Time GetLostDlMapInterval (
void)
const;
263 Time GetTimeToAllocation (
Time defferTime);
292 static Time GetDefaultLostDlMapInterval ();
298 void ProcessDlMap (
const DlMap &dlmap);
299 void ProcessUlMap (
const UlMap &ulmap);
300 void ProcessDcd (
const Dcd &dcd);
301 void ProcessUcd (
const Ucd &ucd);
304 Time m_lostDlMapInterval;
305 Time m_lostUlMapInterval;
306 Time m_maxDcdInterval;
307 Time m_maxUcdInterval;
315 uint8_t m_maxContentionRangingRetries;
323 double m_allocationStartTime;
326 uint16_t m_nrDlMapElements;
327 uint16_t m_nrUlMapElements;
332 EventId m_lostDlMapEvent, m_lostUlMapEvent, m_dcdWaitTimeoutEvent, m_ucdWaitTimeoutEvent, m_rangOppWaitTimeoutEvent;
334 uint32_t m_nrDlMapRecvd;
335 uint32_t m_nrUlMapRecvd;
336 uint32_t m_nrDcdRecvd;
337 uint32_t m_nrUcdRecvd;
344 WimaxPhy::ModulationType m_modulationType;
346 bool m_areManagementConnectionsAllocated;
347 bool m_areServiceFlowsAllocated;
void SetIntervalT3(Time interval3)
Cid GetBasicCid(void) const
void SetIntervalT1(Time interval1)
Time GetIntervalT2(void) const
void SetLostDlMapInterval(Time lostDlMapInterval)
Time GetMaxUcdInterval(void) const
void SetIntervalT21(Time interval21)
bool HasServiceFlows(void) const
void SetIntervalT2(Time interval2)
void SetModulationType(WimaxPhy::ModulationType modulationType)
Set the most efficient modulation and coding scheme (MCS) supported by the device.
forward calls to a chain of CallbackAn ns3::TracedCallback has almost exactly the same API as a norma...
bool GetAreManagementConnectionsAllocated(void) const
void SetMaxDcdInterval(Time maxDcdInterval)
void SetAreManagementConnectionsAllocated(bool areManagementConnectionsAllocated)
Time GetIntervalT7(void) const
void SetLostUlMapInterval(Time lostUlMapInterval)
Time GetLostUlMapInterval(void) const
void SetScheduler(Ptr< SSScheduler > ssScheduler)
void SetMaxUcdInterval(Time maxUcdInterval)
Time GetIntervalT12(void) const
Ptr< IpcsClassifier > GetIpcsClassifier() const
TracedCallback< Ptr< const Packet > > m_ssPromiscRxTrace
bool IsRegistered(void) const
Cid GetPrimaryCid(void) const
Ptr< SSScheduler > GetScheduler(void) const
TracedCallback< Ptr< const Packet > > m_ssRxTrace
void SetIntervalT20(Time interval20)
void SetMaxContentionRangingRetries(uint8_t maxContentionRangingRetries)
void SetIntervalT12(Time interval12)
bool Enqueue(Ptr< Packet > packet, const MacHeaderType &hdrType, Ptr< WimaxConnection > connection)
Enqueue a packet into a connection queue.
TracedCallback< Ptr< const Packet > > m_ssTxDropTrace
Ptr< SSLinkManager > GetLinkManager(void) const
TracedCallback< Ptr< const Packet > > m_ssTxTrace
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.
TracedCallback< Ptr< const Packet > > m_ssRxDropTrace
Hold together all Wimax-related objects in a NetDevice.This class holds together ns3::WimaxPhy, ns3::WimaxConnection, ns3::ConectionManager, ns3::BurstProfileManager, and ns3::BandwidthManager.
WimaxPhy::ModulationType GetModulationType(void) const
void SetBasicConnection(Ptr< WimaxConnection > basicConnection)
Ptr< WimaxConnection > GetBasicConnection(void) const
void SetAreServiceFlowsAllocated(bool areServiceFlowsAllocated)
Time GetIntervalT21(void) const
void SetLinkManager(Ptr< SSLinkManager >)
sets the link manager to be used
an identifier for simulation events.
Time GetIntervalT1(void) const
Time GetMaxDcdInterval(void) const
void SetIntervalT7(Time interval7)
Time GetIntervalT20(void) const
void SetServiceFlowManager(Ptr< SsServiceFlowManager >)
Sets the service flow manager to be installed on the device.
void InitSubscriberStationNetDevice(void)
initializes the net device and sets the parameters to the default values
void SetIpcsPacketClassifier(Ptr< IpcsClassifier >)
Sets the packet classifier to be used.
Ptr< SsServiceFlowManager > GetServiceFlowManager(void) const
void AddServiceFlow(ServiceFlow *sf)
adds a new service flow
a unique identifier for an interface.
void SetPrimaryConnection(Ptr< WimaxConnection > primaryConnection)
uint8_t GetMaxContentionRangingRetries(void) const
Ptr< WimaxConnection > GetPrimaryConnection(void) const
bool GetAreServiceFlowsAllocated(void) const
Time GetIntervalT3(void) const