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

#include <PrimitiveFrameSequences.h>

Inheritance diagram for inet::ieee80211::RtsFs:
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::RtsFs::completeStep ( FrameSequenceContext context)
overridevirtual

Implements inet::ieee80211::IFrameSequence.

58 {
59  switch (step) {
60  case 0:
61  step++;
62  return true;
63  default:
64  throw cRuntimeError("Unknown step");
65  }
66 }

◆ getHistory()

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

Implements inet::ieee80211::IFrameSequence.

114 { return "RTS"; } // TODO completeStep = true?

◆ prepareStep()

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

Implements inet::ieee80211::IFrameSequence.

40 {
41  switch (step) {
42  case 0: {
43  auto dataOrMgmtPacket = context->getInProgressFrames()->getFrameToTransmit();
44  auto rtsFrame = context->getRtsProcedure()->buildRtsFrame(dataOrMgmtPacket->peekAtFront<Ieee80211DataOrMgmtHeader>());
45  auto rtsPacket = new Packet("RTS");
46  rtsPacket->insertAtBack(rtsFrame);
47  rtsPacket->insertAtBack(makeShared<Ieee80211MacTrailer>());
48  return new RtsTransmitStep(dataOrMgmtPacket, rtsPacket, context->getIfs());
49  }
50  case 1:
51  return nullptr;
52  default:
53  throw cRuntimeError("Unknown step");
54  }
55 }

◆ startSequence()

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

Implements inet::ieee80211::IFrameSequence.

34 {
35  this->firstStep = firstStep;
36  step = 0;
37 }

Member Data Documentation

◆ firstStep

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

Referenced by startSequence().

◆ step

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

The documentation for this class was generated from the following files:
inet::ieee80211::RtsFs::firstStep
int firstStep
Definition: PrimitiveFrameSequences.h:106
inet::ieee80211::RtsFs::step
int step
Definition: PrimitiveFrameSequences.h:107