|
1 #ifndef WIFI_MAC_H |
|
2 #define WIFI_MAC_H |
|
3 |
|
4 #include "ns3/packet.h" |
|
5 #include "ns3/mac48-address.h" |
|
6 |
|
7 #include "wifi-phy.h" |
|
8 #include "wifi-remote-station-manager.h" |
|
9 #include "ssid.h" |
|
10 |
|
11 namespace ns3 { |
|
12 |
|
13 class WifiMac : public Object |
|
14 { |
|
15 public: |
|
16 static TypeId GetTypeId (void); |
|
17 |
|
18 virtual void SetSlot (Time slotTime); |
|
19 virtual void SetSifs (Time sifs); |
|
20 virtual void SetEifsNoDifs (Time eifsNoDifs); |
|
21 void SetPifs (Time pifs); |
|
22 void SetCtsTimeout (Time ctsTimeout); |
|
23 void SetAckTimeout (Time ackTimeout); |
|
24 void SetMsduLifetime (Time msduLifetime); |
|
25 void SetMaxPropagationDelay (Time delay); |
|
26 |
|
27 Time GetPifs (void) const; |
|
28 Time GetSifs (void) const; |
|
29 Time GetSlot (void) const; |
|
30 Time GetEifsNoDifs (void) const; |
|
31 Time GetCtsTimeout (void) const; |
|
32 Time GetAckTimeout (void) const; |
|
33 Time GetMsduLifetime (void) const; |
|
34 Time GetMaxPropagationDelay (void) const; |
|
35 uint32_t GetMaxMsduSize (void) const; |
|
36 |
|
37 virtual Mac48Address GetAddress (void) const = 0; |
|
38 virtual Ssid GetSsid (void) const = 0; |
|
39 virtual Mac48Address GetBssid (void) const = 0; |
|
40 virtual void SetAddress (Mac48Address address) = 0; |
|
41 virtual void SetSsid (Ssid ssid) = 0; |
|
42 |
|
43 private: |
|
44 friend class WifiNetDevice; |
|
45 virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to) = 0; |
|
46 virtual void SetWifiPhy (Ptr<WifiPhy> phy) = 0; |
|
47 virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager) = 0; |
|
48 virtual void SetForwardUpCallback (Callback<void,Ptr<Packet>, const Mac48Address &> upCallback) = 0; |
|
49 virtual void SetLinkUpCallback (Callback<void> linkUp) = 0; |
|
50 virtual void SetLinkDownCallback (Callback<void> linkDown) = 0; |
|
51 |
|
52 |
|
53 static Time GetDefaultMaxPropagationDelay (void); |
|
54 static Time GetDefaultSlot (void); |
|
55 static Time GetDefaultSifs (void); |
|
56 static Time GetDefaultEifsNoDifs (void); |
|
57 static Time GetDefaultCtsAckDelay (void); |
|
58 static Time GetDefaultCtsAckTimeout (void); |
|
59 |
|
60 Time m_slot; |
|
61 Time m_pifs; |
|
62 Time m_sifs; |
|
63 Time m_eifsNoDifs; |
|
64 Time m_ctsTimeout; |
|
65 Time m_ackTimeout; |
|
66 Time m_maxPropagationDelay; |
|
67 uint32_t m_maxMsduSize; |
|
68 }; |
|
69 |
|
70 } // namespace ns3 |
|
71 |
|
72 #endif /* WIFI_MAC_H */ |