33 class OriginatorRxStatus; |
33 class OriginatorRxStatus; |
34 |
34 |
35 class MacRxMiddle |
35 class MacRxMiddle |
36 { |
36 { |
37 public: |
37 public: |
38 typedef Callback<void, Ptr<Packet> , WifiMacHeader const *> ForwardUpCallback; |
38 typedef Callback<void, Ptr<Packet>, const WifiMacHeader*> ForwardUpCallback; |
39 |
39 |
40 MacRxMiddle (); |
40 MacRxMiddle (); |
41 ~MacRxMiddle (); |
41 ~MacRxMiddle (); |
42 |
42 |
43 void SetForwardCallback (ForwardUpCallback callback); |
43 void SetForwardCallback (ForwardUpCallback callback); |
44 |
44 |
45 void Receive (Ptr<Packet> packet, WifiMacHeader const *hdr); |
45 void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr); |
46 private: |
46 private: |
47 friend class MacRxMiddleTest; |
47 friend class MacRxMiddleTest; |
48 OriginatorRxStatus *Lookup (WifiMacHeader const*hdr); |
48 OriginatorRxStatus *Lookup (const WifiMacHeader* hdr); |
49 bool IsDuplicate (WifiMacHeader const *hdr, OriginatorRxStatus *originator) const; |
49 bool IsDuplicate (const WifiMacHeader* hdr, OriginatorRxStatus *originator) const; |
50 Ptr<Packet> HandleFragments (Ptr<Packet> packet, WifiMacHeader const*hdr, |
50 Ptr<Packet> HandleFragments (Ptr<Packet> packet, const WifiMacHeader* hdr, |
51 OriginatorRxStatus *originator); |
51 OriginatorRxStatus *originator); |
52 bool SequenceControlSmaller (uint16_t seqa, uint16_t seqb); |
52 bool SequenceControlSmaller (uint16_t seqa, uint16_t seqb); |
53 |
53 |
54 typedef std::map <Mac48Address, OriginatorRxStatus *, std::less<Mac48Address> > Originators; |
54 typedef std::map <Mac48Address, OriginatorRxStatus *, std::less<Mac48Address> > Originators; |
55 typedef std::map <std::pair<Mac48Address, uint8_t>, OriginatorRxStatus *, std::less<std::pair<Mac48Address,uint8_t> > > QosOriginators; |
55 typedef std::map <std::pair<Mac48Address, uint8_t>, OriginatorRxStatus *, std::less<std::pair<Mac48Address,uint8_t> > > QosOriginators; |