00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef ADHOC_WIFI_MAC_H
00021 #define ADHOC_WIFI_MAC_H
00022
00023 #include "ns3/mac48-address.h"
00024 #include "ns3/callback.h"
00025 #include "ns3/packet.h"
00026 #include "wifi-mac.h"
00027
00028 namespace ns3 {
00029
00030 class DcaTxop;
00031 class Packet;
00032 class WifiMacHeader;
00033 class WifiPhy;
00034 class DcfManager;
00035 class MacLow;
00036 class MacRxMiddle;
00037
00038
00039
00040
00041
00042
00043
00044
00045 class AdhocWifiMac : public WifiMac
00046 {
00047 public:
00048 typedef Callback<void, Ptr<Packet>, const Mac48Address &> ForwardCallback;
00049
00050 static TypeId GetTypeId (void);
00051
00052 AdhocWifiMac ();
00053 ~AdhocWifiMac ();
00054
00055
00056 virtual void SetSlot (Time slotTime);
00057 virtual void SetSifs (Time sifs);
00058 virtual void SetEifsNoDifs (Time eifsNoDifs);
00059 virtual void SetAckTimeout (Time ackTimeout);
00060 virtual void SetCtsTimeout (Time ctsTimeout);
00061 virtual void SetPifs (Time pifs);
00062 virtual Time GetSlot (void) const;
00063 virtual Time GetSifs (void) const;
00064 virtual Time GetEifsNoDifs (void) const;
00065 virtual Time GetAckTimeout (void) const;
00066 virtual Time GetCtsTimeout (void) const;
00067 virtual Time GetPifs (void) const;
00068 virtual void SetWifiPhy (Ptr<WifiPhy> phy);
00069 virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
00070 virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
00071 virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
00072 virtual bool SupportsSendFrom (void) const;
00073 virtual void SetForwardUpCallback (Callback<void,Ptr<Packet>, Mac48Address, Mac48Address> upCallback);
00074 virtual void SetLinkUpCallback (Callback<void> linkUp);
00075 virtual void SetLinkDownCallback (Callback<void> linkDown);
00076 virtual Mac48Address GetAddress (void) const;
00077 virtual Ssid GetSsid (void) const;
00078 virtual void SetAddress (Mac48Address address);
00079 virtual void SetSsid (Ssid ssid);
00080 virtual Mac48Address GetBssid (void) const;
00081
00082 private:
00083
00084 virtual void DoDispose (void);
00085
00086 void ForwardUp (Ptr<Packet> packet, WifiMacHeader const*hdr);
00087 AdhocWifiMac (const AdhocWifiMac & ctor_arg);
00088 AdhocWifiMac &operator = (const AdhocWifiMac &o);
00089
00090 Ptr<DcaTxop> m_dca;
00091 Callback<void,Ptr<Packet>, Mac48Address, Mac48Address> m_upCallback;
00092 Ptr<WifiRemoteStationManager> m_stationManager;
00093 Ptr<WifiPhy> m_phy;
00094 DcfManager *m_dcfManager;
00095 MacRxMiddle *m_rxMiddle;
00096 Ptr<MacLow> m_low;
00097 Ssid m_ssid;
00098 Time m_eifsNoDifs;
00099 };
00100
00101 }
00102
00103 #endif