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

#include <PrimitiveFrameSequences.h>

Inheritance diagram for inet::ieee80211::CtsFs:
inet::ieee80211::IFrameSequence

Public Member Functions

virtual void startSequence (FrameSequenceContext *context, int firstStep) override
 
virtual IFrameSequenceStepprepareStep (FrameSequenceContext *context) override
 
virtual bool completeStep (FrameSequenceContext *context) override
 
virtual std::string getHistory () const override
 
- Public Member Functions inherited from inet::ieee80211::IFrameSequence
virtual ~IFrameSequence ()
 

Protected Attributes

int firstStep = -1
 
int step = -1
 

Member Function Documentation

◆ completeStep()

bool inet::ieee80211::CtsFs::completeStep ( FrameSequenceContext context)
overridevirtual

Implements inet::ieee80211::IFrameSequence.

90 {
91  switch (step) {
92  case 0: {
93  auto receiveStep = check_and_cast<IReceiveStep *>(context->getStep(firstStep + step));
94  step++;
95  auto receivedPacket = receiveStep->getReceivedFrame();
96  const auto& receivedHeader = receivedPacket->peekAtFront<Ieee80211MacHeader>();
97  return context->isForUs(receivedHeader) && receivedHeader->getType() == ST_CTS;
98  }
99  default:
100  throw cRuntimeError("Unknown step");
101  }
102 }

◆ getHistory()

virtual std::string inet::ieee80211::CtsFs::getHistory ( ) const
inlineoverridevirtual

Implements inet::ieee80211::IFrameSequence.

128 { return "CTS"; } // TODO completeStep = true?

◆ prepareStep()

IFrameSequenceStep * inet::ieee80211::CtsFs::prepareStep ( FrameSequenceContext context)
overridevirtual

Implements inet::ieee80211::IFrameSequence.

75 {
76  switch (step) {
77  case 0: {
78  auto txStep = check_and_cast<RtsTransmitStep *>(context->getLastStep());
79  auto rtsPacket = txStep->getFrameToTransmit();
80  return new ReceiveStep(context->getCtsTimeout(rtsPacket, rtsPacket->peekAtFront<Ieee80211RtsFrame>()));
81  }
82  case 1:
83  return nullptr;
84  default:
85  throw cRuntimeError("Unknown step");
86  }
87 }

◆ startSequence()

void inet::ieee80211::CtsFs::startSequence ( FrameSequenceContext context,
int  firstStep 
)
overridevirtual

Implements inet::ieee80211::IFrameSequence.

69 {
70  this->firstStep = firstStep;
71  step = 0;
72 }

Member Data Documentation

◆ firstStep

int inet::ieee80211::CtsFs::firstStep = -1
protected

Referenced by completeStep(), and startSequence().

◆ step

int inet::ieee80211::CtsFs::step = -1
protected

The documentation for this class was generated from the following files:
inet::ieee80211::CtsFs::firstStep
int firstStep
Definition: PrimitiveFrameSequences.h:120
inet::ieee80211::ST_CTS
@ ST_CTS
Definition: Ieee80211Frame_m.h:164
inet::ieee80211::CtsFs::step
int step
Definition: PrimitiveFrameSequences.h:121