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

#include <FrameSequenceContext.h>

Inheritance diagram for inet::ieee80211::FrameSequenceContext:

Public Member Functions

 FrameSequenceContext (MacAddress address, physicallayer::Ieee80211ModeSet *modeSet, InProgressFrames *inProgressFrames, IRtsProcedure *rtsProcedure, IRtsPolicy *rtsPolicy, NonQoSContext *nonQosContext, QoSContext *qosContext)
 
virtual ~FrameSequenceContext ()
 
virtual simtime_t getDuration () const
 
virtual void addStep (IFrameSequenceStep *step)
 
virtual int getNumSteps () const
 
virtual IFrameSequenceStepgetStep (int i) const
 
virtual IFrameSequenceStepgetLastStep () const
 
virtual IFrameSequenceStepgetStepBeforeLast () const
 
virtual InProgressFramesgetInProgressFrames () const
 
virtual IRtsProceduregetRtsProcedure () const
 
virtual IRtsPolicygetRtsPolicy () const
 
virtual NonQoSContextgetNonQoSContext () const
 
virtual QoSContextgetQoSContext () const
 
virtual simtime_t getAckTimeout (Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &dataOrMgmtframe) const
 
virtual simtime_t getCtsTimeout (Packet *packet, const Ptr< const Ieee80211RtsFrame > &rtsFrame) const
 
virtual simtime_t getIfs () const
 
virtual bool isForUs (const Ptr< const Ieee80211MacHeader > &header) const
 
virtual bool isSentByUs (const Ptr< const Ieee80211MacHeader > &header) const
 

Protected Attributes

simtime_t startTime = simTime()
 
MacAddress address = MacAddress::UNSPECIFIED_ADDRESS
 
physicallayer::Ieee80211ModeSetmodeSet = nullptr
 
InProgressFramesinProgressFrames = nullptr
 
std::vector< IFrameSequenceStep * > steps
 
IRtsProcedurertsProcedure = nullptr
 
IRtsPolicyrtsPolicy = nullptr
 
NonQoSContextnonQoSContext = nullptr
 
QoSContextqosContext = nullptr
 

Constructor & Destructor Documentation

◆ FrameSequenceContext()

inet::ieee80211::FrameSequenceContext::FrameSequenceContext ( MacAddress  address,
physicallayer::Ieee80211ModeSet modeSet,
InProgressFrames inProgressFrames,
IRtsProcedure rtsProcedure,
IRtsPolicy rtsPolicy,
NonQoSContext nonQosContext,
QoSContext qosContext 
)

◆ ~FrameSequenceContext()

inet::ieee80211::FrameSequenceContext::~FrameSequenceContext ( )
virtual
58 {
59  for (auto step : steps)
60  delete step;
61  delete nonQoSContext;
62  delete qosContext;
63 }

Member Function Documentation

◆ addStep()

virtual void inet::ieee80211::FrameSequenceContext::addStep ( IFrameSequenceStep step)
inlinevirtual

◆ getAckTimeout()

simtime_t inet::ieee80211::FrameSequenceContext::getAckTimeout ( Packet packet,
const Ptr< const Ieee80211DataOrMgmtHeader > &  dataOrMgmtframe 
) const
virtual

◆ getCtsTimeout()

simtime_t inet::ieee80211::FrameSequenceContext::getCtsTimeout ( Packet packet,
const Ptr< const Ieee80211RtsFrame > &  rtsFrame 
) const
virtual
37 {
38  return rtsPolicy->getCtsTimeout(packet, rtsFrame);
39 }

Referenced by inet::ieee80211::RtsCtsFs::prepareStep(), and inet::ieee80211::CtsFs::prepareStep().

◆ getDuration()

virtual simtime_t inet::ieee80211::FrameSequenceContext::getDuration ( ) const
inlinevirtual
72 { return simTime() - startTime; }

◆ getIfs()

◆ getInProgressFrames()

◆ getLastStep()

◆ getNonQoSContext()

virtual NonQoSContext* inet::ieee80211::FrameSequenceContext::getNonQoSContext ( ) const
inlinevirtual
84 { return nonQoSContext; }

◆ getNumSteps()

virtual int inet::ieee80211::FrameSequenceContext::getNumSteps ( ) const
inlinevirtual
75 { return steps.size(); }

Referenced by getIfs().

◆ getQoSContext()

virtual QoSContext* inet::ieee80211::FrameSequenceContext::getQoSContext ( ) const
inlinevirtual

◆ getRtsPolicy()

virtual IRtsPolicy* inet::ieee80211::FrameSequenceContext::getRtsPolicy ( ) const
inlinevirtual

◆ getRtsProcedure()

virtual IRtsProcedure* inet::ieee80211::FrameSequenceContext::getRtsProcedure ( ) const
inlinevirtual

◆ getStep()

◆ getStepBeforeLast()

virtual IFrameSequenceStep* inet::ieee80211::FrameSequenceContext::getStepBeforeLast ( ) const
inlinevirtual

◆ isForUs()

bool inet::ieee80211::FrameSequenceContext::isForUs ( const Ptr< const Ieee80211MacHeader > &  header) const
virtual

◆ isSentByUs()

bool inet::ieee80211::FrameSequenceContext::isSentByUs ( const Ptr< const Ieee80211MacHeader > &  header) const
virtual
47 {
48  // FIXME
49  // Check the roles of the Addr3 field when aggregation is applied
50  // Table 8-19—Address field contents
51  if (auto dataOrMgmtHeader = dynamicPtrCast<const Ieee80211DataOrMgmtHeader>(header))
52  return dataOrMgmtHeader->getAddress3() == address;
53  else
54  return false;
55 }

Referenced by isForUs().

Member Data Documentation

◆ address

MacAddress inet::ieee80211::FrameSequenceContext::address = MacAddress::UNSPECIFIED_ADDRESS
protected

Referenced by isForUs(), and isSentByUs().

◆ inProgressFrames

InProgressFrames* inet::ieee80211::FrameSequenceContext::inProgressFrames = nullptr
protected

◆ modeSet

physicallayer::Ieee80211ModeSet* inet::ieee80211::FrameSequenceContext::modeSet = nullptr
protected

Referenced by getIfs().

◆ nonQoSContext

NonQoSContext* inet::ieee80211::FrameSequenceContext::nonQoSContext = nullptr
protected

◆ qosContext

QoSContext* inet::ieee80211::FrameSequenceContext::qosContext = nullptr
protected

◆ rtsPolicy

IRtsPolicy* inet::ieee80211::FrameSequenceContext::rtsPolicy = nullptr
protected

Referenced by getCtsTimeout().

◆ rtsProcedure

IRtsProcedure* inet::ieee80211::FrameSequenceContext::rtsProcedure = nullptr
protected

◆ startTime

simtime_t inet::ieee80211::FrameSequenceContext::startTime = simTime()
protected

◆ steps

std::vector<IFrameSequenceStep *> inet::ieee80211::FrameSequenceContext::steps
protected

Referenced by ~FrameSequenceContext().


The documentation for this class was generated from the following files:
inet::ieee80211::IOriginatorQoSAckPolicy::getAckTimeout
virtual simtime_t getAckTimeout(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &dataOrMgmtHeader) const =0
inet::ieee80211::IOriginatorAckPolicy::getAckTimeout
virtual simtime_t getAckTimeout(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &header) const =0
inet::ieee80211::FrameSequenceContext::getNumSteps
virtual int getNumSteps() const
Definition: FrameSequenceContext.h:75
inet::ieee80211::FrameSequenceContext::nonQoSContext
NonQoSContext * nonQoSContext
Definition: FrameSequenceContext.h:65
inet::ieee80211::FrameSequenceContext::isSentByUs
virtual bool isSentByUs(const Ptr< const Ieee80211MacHeader > &header) const
Definition: FrameSequenceContext.cc:46
inet::ieee80211::FrameSequenceContext::inProgressFrames
InProgressFrames * inProgressFrames
Definition: FrameSequenceContext.h:59
inet::ieee80211::IRtsPolicy::getCtsTimeout
virtual simtime_t getCtsTimeout(Packet *packet, const Ptr< const Ieee80211RtsFrame > &rtsFrame) const =0
inet::ieee80211::FrameSequenceContext::steps
std::vector< IFrameSequenceStep * > steps
Definition: FrameSequenceContext.h:60
inet::ieee80211::FrameSequenceContext::startTime
simtime_t startTime
Definition: FrameSequenceContext.h:56
inet::math::step
double step(double a, double b)
Definition: INETMath.h:131
inet::ieee80211::NonQoSContext::ackPolicy
IOriginatorAckPolicy * ackPolicy
Definition: FrameSequenceContext.h:50
inet::physicallayer::Ieee80211ModeSet::getSifsTime
simtime_t getSifsTime() const
Definition: Ieee80211ModeSet.h:67
inet::ieee80211::FrameSequenceContext::rtsPolicy
IRtsPolicy * rtsPolicy
Definition: FrameSequenceContext.h:63
inet::ieee80211::FrameSequenceContext::rtsProcedure
IRtsProcedure * rtsProcedure
Definition: FrameSequenceContext.h:62
inet::ieee80211::QoSContext::ackPolicy
IOriginatorQoSAckPolicy * ackPolicy
Definition: FrameSequenceContext.h:37
inet::ieee80211::FrameSequenceContext::modeSet
physicallayer::Ieee80211ModeSet * modeSet
Definition: FrameSequenceContext.h:58
inet::ieee80211::FrameSequenceContext::qosContext
QoSContext * qosContext
Definition: FrameSequenceContext.h:66
inet::ieee80211::FrameSequenceContext::address
MacAddress address
Definition: FrameSequenceContext.h:57