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

#include <OriginatorMacDataService.h>

Inheritance diagram for inet::ieee80211::OriginatorMacDataService:
inet::ieee80211::IOriginatorMacDataService

Public Member Functions

virtual ~OriginatorMacDataService ()
 
virtual std::vector< Packet * > * extractFramesToTransmit (queueing::IPacketQueue *pendingQueue) override
 
- Public Member Functions inherited from inet::ieee80211::IOriginatorMacDataService
virtual ~IOriginatorMacDataService ()
 

Protected Member Functions

virtual void initialize () override
 
virtual void assignSequenceNumber (const Ptr< Ieee80211DataOrMgmtHeader > &header)
 
virtual std::vector< Packet * > * fragmentIfNeeded (Packet *frame)
 

Protected Attributes

ISequenceNumberAssignmentsequenceNumberAssignment = nullptr
 
IFragmentationPolicyfragmentationPolicy = nullptr
 
IFragmentationfragmentation = nullptr
 

Additional Inherited Members

- Static Public Attributes inherited from inet::ieee80211::IOriginatorMacDataService
static simsignal_t packetFragmentedSignal = cComponent::registerSignal("packetFragmented")
 
static simsignal_t packetAggregatedSignal = cComponent::registerSignal("packetAggregated")
 

Constructor & Destructor Documentation

◆ ~OriginatorMacDataService()

inet::ieee80211::OriginatorMacDataService::~OriginatorMacDataService ( )
virtual
72 {
74  delete fragmentation;
75 }

Member Function Documentation

◆ assignSequenceNumber()

void inet::ieee80211::OriginatorMacDataService::assignSequenceNumber ( const Ptr< Ieee80211DataOrMgmtHeader > &  header)
protectedvirtual
26 {
28 }

Referenced by extractFramesToTransmit().

◆ extractFramesToTransmit()

std::vector< Packet * > * inet::ieee80211::OriginatorMacDataService::extractFramesToTransmit ( queueing::IPacketQueue pendingQueue)
overridevirtual

Implements inet::ieee80211::IOriginatorMacDataService.

42 {
43  Enter_Method("extractFramesToTransmit");
44  if (pendingQueue->isEmpty())
45  return nullptr;
46  else {
47 // if (msduRateLimiting)
48 // txRateLimitingIfNeeded();
49  Packet *packet = pendingQueue->dequeuePacket();
50  take(packet);
52  auto frame = packet->removeAtFront<Ieee80211DataOrMgmtHeader>();
53  assignSequenceNumber(frame);
54  packet->insertAtFront(frame);
55  }
56 // if (msduIntegrityAndProtection)
57 // frame = protectMsduIfNeeded(frame);
58  std::vector<Packet *> *fragments = nullptr;
60  fragments = fragmentIfNeeded(packet);
61  if (!fragments)
62  fragments = new std::vector<Packet *>({ packet });
63 // if (mpduEncryptionAndIntegrity)
64 // fragments = encryptMpduIfNeeded(fragments);
65 // if (mpduHeaderPlusCrc)
66 // fragments = mpduCrcFooBarIfNeeded(fragments);
67  return fragments;
68  }
69 }

◆ fragmentIfNeeded()

std::vector< Packet * > * inet::ieee80211::OriginatorMacDataService::fragmentIfNeeded ( Packet frame)
protectedvirtual
31 {
32  auto fragmentSizes = fragmentationPolicy->computeFragmentSizes(frame);
33  if (fragmentSizes.size() != 0) {
34  emit(packetFragmentedSignal, frame);
35  auto fragmentFrames = fragmentation->fragmentFrame(frame, fragmentSizes);
36  return fragmentFrames;
37  }
38  return nullptr;
39 }

Referenced by extractFramesToTransmit().

◆ initialize()

void inet::ieee80211::OriginatorMacDataService::initialize ( )
overrideprotectedvirtual
19 {
20  sequenceNumberAssignment = new NonQoSSequenceNumberAssignment();
21  fragmentationPolicy = check_and_cast<IFragmentationPolicy *>(getSubmodule("fragmentationPolicy"));
22  fragmentation = new Fragmentation();
23 }

Member Data Documentation

◆ fragmentation

IFragmentation* inet::ieee80211::OriginatorMacDataService::fragmentation = nullptr
protected

◆ fragmentationPolicy

IFragmentationPolicy* inet::ieee80211::OriginatorMacDataService::fragmentationPolicy = nullptr
protected

◆ sequenceNumberAssignment

ISequenceNumberAssignment* inet::ieee80211::OriginatorMacDataService::sequenceNumberAssignment = nullptr
protected

The documentation for this class was generated from the following files:
inet::ieee80211::OriginatorMacDataService::fragmentation
IFragmentation * fragmentation
Definition: OriginatorMacDataService.h:31
inet::ieee80211::IFragmentation::fragmentFrame
virtual std::vector< Packet * > * fragmentFrame(Packet *frame, const std::vector< int > &fragmentSizes)=0
inet::ieee80211::OriginatorMacDataService::fragmentationPolicy
IFragmentationPolicy * fragmentationPolicy
Definition: OriginatorMacDataService.h:30
inet::ieee80211::OriginatorMacDataService::assignSequenceNumber
virtual void assignSequenceNumber(const Ptr< Ieee80211DataOrMgmtHeader > &header)
Definition: OriginatorMacDataService.cc:25
inet::ieee80211::IFragmentationPolicy::computeFragmentSizes
virtual std::vector< int > computeFragmentSizes(Packet *frame)=0
inet::ieee80211::OriginatorMacDataService::fragmentIfNeeded
virtual std::vector< Packet * > * fragmentIfNeeded(Packet *frame)
Definition: OriginatorMacDataService.cc:30
inet::ieee80211::OriginatorMacDataService::sequenceNumberAssignment
ISequenceNumberAssignment * sequenceNumberAssignment
Definition: OriginatorMacDataService.h:28
inet::ieee80211::ISequenceNumberAssignment::assignSequenceNumber
virtual void assignSequenceNumber(const Ptr< Ieee80211DataOrMgmtHeader > &header)=0
inet::ieee80211::IOriginatorMacDataService::packetFragmentedSignal
static simsignal_t packetFragmentedSignal
Definition: IOriginatorMacDataService.h:19
Enter_Method
#define Enter_Method(...)
Definition: SelfDoc.h:71