src/devices/wifi/wifi-mac.h
changeset 2524 db72c0e7743e
child 2684 68c643329c2b
equal deleted inserted replaced
2523:58182a1561cc 2524:db72c0e7743e
       
     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 */