INET Framework for OMNeT++/OMNEST
inet::ieee80211::EdcaTransmitLifetimeHandler Class Reference

#include <EdcaTransmitLifetimeHandler.h>

Inheritance diagram for inet::ieee80211::EdcaTransmitLifetimeHandler:
inet::ieee80211::ITransmitLifetimeHandler

Public Member Functions

 EdcaTransmitLifetimeHandler (simtime_t bkLifetime, simtime_t beLifetime, simtime_t viLifetime, simtime_t voLifetime)
 
virtual void frameGotInProgess (const Ptr< const Ieee80211DataHeader > &header)
 
virtual void frameTransmitted (const Ptr< const Ieee80211DataHeader > &header)
 
virtual bool isLifetimeExpired (const Ptr< const Ieee80211DataHeader > &header)
 
- Public Member Functions inherited from inet::ieee80211::ITransmitLifetimeHandler
virtual ~ITransmitLifetimeHandler ()
 

Public Attributes

simtime_t msduLifetime [4]
 
std::map< SequenceNumber, simtime_t > lifetimes
 

Protected Member Functions

AccessCategory mapTidToAc (int tid)
 

Constructor & Destructor Documentation

◆ EdcaTransmitLifetimeHandler()

inet::ieee80211::EdcaTransmitLifetimeHandler::EdcaTransmitLifetimeHandler ( simtime_t  bkLifetime,
simtime_t  beLifetime,
simtime_t  viLifetime,
simtime_t  voLifetime 
)
14 {
15  msduLifetime[0] = bkLifetime;
16  msduLifetime[1] = beLifetime;
17  msduLifetime[2] = viLifetime;
18  msduLifetime[3] = voLifetime;
19 }

Member Function Documentation

◆ frameGotInProgess()

void inet::ieee80211::EdcaTransmitLifetimeHandler::frameGotInProgess ( const Ptr< const Ieee80211DataHeader > &  header)
virtual

Implements inet::ieee80211::ITransmitLifetimeHandler.

22 {
23  if (header->getFragmentNumber() == 0)
24  lifetimes[header->getSequenceNumber().get()] = simTime();
25 }

◆ frameTransmitted()

void inet::ieee80211::EdcaTransmitLifetimeHandler::frameTransmitted ( const Ptr< const Ieee80211DataHeader > &  header)
virtual

Implements inet::ieee80211::ITransmitLifetimeHandler.

28 {
29  // don't care
30 }

◆ isLifetimeExpired()

bool inet::ieee80211::EdcaTransmitLifetimeHandler::isLifetimeExpired ( const Ptr< const Ieee80211DataHeader > &  header)
virtual

Implements inet::ieee80211::ITransmitLifetimeHandler.

33 {
34  ASSERT(header->getType() == ST_DATA_WITH_QOS);
35  AccessCategory ac = mapTidToAc(header->getTid());
36  auto it = lifetimes.find(header->getSequenceNumber().get());
37  if (it == lifetimes.end())
38  throw cRuntimeError("There is no lifetime entry for frame = %s", header->getName());
39  return (simTime() - it->second) >= msduLifetime[ac];
40 }

◆ mapTidToAc()

AccessCategory inet::ieee80211::EdcaTransmitLifetimeHandler::mapTidToAc ( int  tid)
protected
44 {
45  // standard static mapping (see "UP-to-AC mappings" table in the 802.11 spec.)
46  switch (tid) {
47  case 1: case 2: return AC_BK;
48  case 0: case 3: return AC_BE;
49  case 4: case 5: return AC_VI;
50  case 6: case 7: return AC_VO;
51  default: throw cRuntimeError("No mapping from TID=%d to AccessCategory (must be in the range 0..7)", tid);
52  }
53 }

Referenced by isLifetimeExpired().

Member Data Documentation

◆ lifetimes

std::map<SequenceNumber, simtime_t> inet::ieee80211::EdcaTransmitLifetimeHandler::lifetimes

◆ msduLifetime

simtime_t inet::ieee80211::EdcaTransmitLifetimeHandler::msduLifetime[4]

The documentation for this class was generated from the following files:
inet::ieee80211::EdcaTransmitLifetimeHandler::msduLifetime
simtime_t msduLifetime[4]
Definition: EdcaTransmitLifetimeHandler.h:22
inet::ieee80211::AC_BK
@ AC_BK
Definition: AccessCategory.h:20
inet::ieee80211::AC_BE
@ AC_BE
Definition: AccessCategory.h:21
inet::ieee80211::EdcaTransmitLifetimeHandler::lifetimes
std::map< SequenceNumber, simtime_t > lifetimes
Definition: EdcaTransmitLifetimeHandler.h:23
inet::ieee80211::AC_VI
@ AC_VI
Definition: AccessCategory.h:22
inet::ieee80211::ST_DATA_WITH_QOS
@ ST_DATA_WITH_QOS
Definition: Ieee80211Frame_m.h:169
inet::ieee80211::AC_VO
@ AC_VO
Definition: AccessCategory.h:23
inet::ieee80211::AccessCategory
AccessCategory
IEEE 802.11e QoS (EDCA) access categories.
Definition: AccessCategory.h:19
inet::ieee80211::EdcaTransmitLifetimeHandler::mapTidToAc
AccessCategory mapTidToAc(int tid)
Definition: EdcaTransmitLifetimeHandler.cc:43