INET Framework for OMNeT++/OMNEST
inet::physicallayer::ReferenceCommunicationCache Class Reference

#include <ReferenceCommunicationCache.h>

Inheritance diagram for inet::physicallayer::ReferenceCommunicationCache:
inet::physicallayer::CommunicationCacheBase inet::physicallayer::ICommunicationCache inet::IPrintableObject

Classes

class  ReferenceTransmissionCacheEntry
 

Public Member Functions

Radio cache
virtual void addRadio (const IRadio *radio) override
 
virtual void removeRadio (const IRadio *radio) override
 
virtual const IRadiogetRadio (int id) const override
 
virtual void mapRadios (std::function< void(const IRadio *)> f) const override
 
virtual int getNumRadios () const override
 
Transmission cache
virtual void addTransmission (const ITransmission *transmission) override
 
virtual void removeTransmission (const ITransmission *transmission) override
 
virtual const ITransmissiongetTransmission (int id) const override
 
virtual void mapTransmissions (std::function< void(const ITransmission *)> f) const override
 
virtual int getNumTransmissions () const override
 
Interference cache
virtual void removeNonInterferingTransmissions (std::function< void(const ITransmission *transmission)> f) override
 
virtual std::vector< const ITransmission * > * computeInterferingTransmissions (const IRadio *radio, const simtime_t startTime, const simtime_t endTime) override
 
Reception cache
virtual const IReceptiongetCachedReception (const IRadio *radio, const ITransmission *transmission) override
 
virtual void setCachedReception (const IRadio *receiver, const ITransmission *transmission, const IReception *reception) override
 
virtual const IInterferencegetCachedInterference (const IRadio *receiver, const ITransmission *transmission) override
 
virtual void setCachedInterference (const IRadio *receiver, const ITransmission *transmission, const IInterference *interference) override
 
virtual const INoisegetCachedNoise (const IRadio *receiver, const ITransmission *transmission) override
 
virtual void setCachedNoise (const IRadio *receiver, const ITransmission *transmission, const INoise *noise) override
 
virtual const ISnirgetCachedSNIR (const IRadio *receiver, const ITransmission *transmission) override
 
virtual void setCachedSNIR (const IRadio *receiver, const ITransmission *transmission, const ISnir *snir) override
 
- Public Member Functions inherited from inet::physicallayer::CommunicationCacheBase
virtual const simtime_t getCachedInterferenceEndTime (const ITransmission *transmission) override
 
virtual void setCachedInterferenceEndTime (const ITransmission *transmission, const simtime_t interferenceEndTime) override
 
virtual void removeCachedInterferenceEndTime (const ITransmission *transmission) override
 
virtual const IWirelessSignalgetCachedSignal (const ITransmission *transmission) override
 
virtual void setCachedSignal (const ITransmission *transmission, const IWirelessSignal *signal) override
 
virtual void removeCachedSignal (const ITransmission *transmission) override
 
virtual const IArrivalgetCachedArrival (const IRadio *receiver, const ITransmission *transmission) override
 
virtual void setCachedArrival (const IRadio *receiver, const ITransmission *transmission, const IArrival *arrival) override
 
virtual void removeCachedArrival (const IRadio *receiver, const ITransmission *transmission) override
 
virtual const IntervalTree::IntervalgetCachedInterval (const IRadio *receiver, const ITransmission *transmission) override
 
virtual void setCachedInterval (const IRadio *receiver, const ITransmission *transmission, const IntervalTree::Interval *interval) override
 
virtual void removeCachedInterval (const IRadio *receiver, const ITransmission *transmission) override
 
virtual const IListeninggetCachedListening (const IRadio *receiver, const ITransmission *transmission) override
 
virtual void setCachedListening (const IRadio *receiver, const ITransmission *transmission, const IListening *listening) override
 
virtual void removeCachedListening (const IRadio *receiver, const ITransmission *transmission) override
 
virtual void removeCachedReception (const IRadio *receiver, const ITransmission *transmission) override
 
virtual void removeCachedInterference (const IRadio *receiver, const ITransmission *transmission) override
 
virtual void removeCachedNoise (const IRadio *receiver, const ITransmission *transmission) override
 
virtual void removeCachedSNIR (const IRadio *receiver, const ITransmission *transmission) override
 
virtual const IReceptionDecisiongetCachedReceptionDecision (const IRadio *receiver, const ITransmission *transmission, IRadioSignal::SignalPart part) override
 
virtual void setCachedReceptionDecision (const IRadio *receiver, const ITransmission *transmission, IRadioSignal::SignalPart part, const IReceptionDecision *receptionDecision) override
 
virtual void removeCachedReceptionDecision (const IRadio *receiver, const ITransmission *transmission, IRadioSignal::SignalPart part) override
 
virtual const IReceptionResultgetCachedReceptionResult (const IRadio *receiver, const ITransmission *transmission) override
 
virtual void setCachedReceptionResult (const IRadio *receiver, const ITransmission *transmission, const IReceptionResult *receptionResult) override
 
virtual void removeCachedReceptionResult (const IRadio *receiver, const ITransmission *transmission) override
 
virtual const IWirelessSignalgetCachedSignal (const IRadio *receiver, const ITransmission *transmission) override
 
virtual void setCachedSignal (const IRadio *receiver, const ITransmission *transmission, const IWirelessSignal *signal) override
 
virtual void removeCachedSignal (const IRadio *receiver, const ITransmission *transmission) override
 
- Public Member Functions inherited from inet::physicallayer::ICommunicationCache
virtual ~ICommunicationCache ()
 
- Public Member Functions inherited from inet::IPrintableObject
virtual ~IPrintableObject ()
 
virtual std::string printToString () const
 
virtual std::string printToString (int level, int evFlags=0) const
 
virtual std::string getInfoStringRepresentation (int evFlags=0) const
 
virtual std::string getDetailStringRepresentation (int evFlags=0) const
 
virtual std::string getDebugStringRepresentation (int evFlags=0) const
 
virtual std::string getTraceStringRepresentation (int evFlags=0) const
 
virtual std::string getCompleteStringRepresentation (int evFlags=0) const
 

Protected Attributes

std::vector< RadioCacheEntryradioCache
 
std::vector< ReferenceTransmissionCacheEntrytransmissionCache
 
std::vector< const IReception * > receptions
 
std::vector< const IInterference * > interferences
 
std::vector< const INoise * > noises
 
std::vector< const ISnir * > snirs
 

Cache data structures

virtual RadioCacheEntrygetRadioCacheEntry (const IRadio *radio) override
 
virtual ReferenceTransmissionCacheEntrygetTransmissionCacheEntry (const ITransmission *transmission) override
 
virtual ReceptionCacheEntrygetReceptionCacheEntry (const IRadio *radio, const ITransmission *transmission) override
 
virtual ~ReferenceCommunicationCache ()
 
virtual std::ostream & printToStream (std::ostream &stream, int level, int evFlags=0) const override
 Prints this object to the provided output stream. More...
 

Additional Inherited Members

- Public Types inherited from inet::IPrintableObject
enum  PrintLevel {
  PRINT_LEVEL_TRACE, PRINT_LEVEL_DEBUG, PRINT_LEVEL_DETAIL, PRINT_LEVEL_INFO,
  PRINT_LEVEL_COMPLETE = INT_MIN
}
 
enum  PrintFlag { PRINT_FLAG_FORMATTED = (1 << 0), PRINT_FLAG_MULTILINE = (1 << 1) }
 
Cache data structures

Constructor & Destructor Documentation

◆ ~ReferenceCommunicationCache()

inet::physicallayer::ReferenceCommunicationCache::~ReferenceCommunicationCache ( )
virtual
18 {
19  for (auto& transmissionCacheEntry : transmissionCache)
20  delete transmissionCacheEntry.receptionCacheEntries;
21  for (auto reception : receptions)
22  delete reception;
23  for (auto interference : interferences)
24  delete interference;
25  for (auto noise : noises)
26  delete noise;
27  for (auto snir : snirs)
28  delete snir;
29 }

Member Function Documentation

◆ addRadio()

void inet::physicallayer::ReferenceCommunicationCache::addRadio ( const IRadio radio)
overridevirtual

Implements inet::physicallayer::ICommunicationCache.

54 {
55  int radioId = radio->getId();
56  if ((int)radioCache.size() <= radioId)
57  radioCache.resize(radioId + 1);
58  auto radioCacheEntry = getRadioCacheEntry(radio);
59  radioCacheEntry->radio = radio;
60 }

◆ addTransmission()

void inet::physicallayer::ReferenceCommunicationCache::addTransmission ( const ITransmission transmission)
overridevirtual

Implements inet::physicallayer::ICommunicationCache.

87 {
88  int transmissionId = transmission->getId();
89  if ((int)transmissionCache.size() <= transmissionId)
90  transmissionCache.resize(transmissionId + 1);
91  auto transmissionCacheEntry = getTransmissionCacheEntry(transmission);
92  transmissionCacheEntry->transmission = transmission;
93  transmissionCacheEntry->receptionCacheEntries = new std::vector<ReceptionCacheEntry>(radioCache.size());
94 }

◆ computeInterferingTransmissions()

std::vector< const ITransmission * > * inet::physicallayer::ReferenceCommunicationCache::computeInterferingTransmissions ( const IRadio radio,
const simtime_t  startTime,
const simtime_t  endTime 
)
overridevirtual

Reimplemented from inet::physicallayer::CommunicationCacheBase.

126 {
127  // NOTE: ignore receptionIntervals to test that it doesn't affect simulation results
128  std::vector<const ITransmission *> *interferingTransmissions = new std::vector<const ITransmission *>();
129  for (const auto& transmissionCacheEntry : transmissionCache) {
130  auto receptionCacheEntries = transmissionCacheEntry.receptionCacheEntries;
131  auto& receptionCacheEntry = receptionCacheEntries->at(radio->getId());
132  const IArrival *arrival = receptionCacheEntry.arrival;
133  if (arrival != nullptr && !(arrival->getEndTime() < startTime || endTime < arrival->getStartTime()))
134  interferingTransmissions->push_back(transmissionCacheEntry.transmission);
135  }
136  return interferingTransmissions;
137 }

◆ getCachedInterference()

virtual const IInterference* inet::physicallayer::ReferenceCommunicationCache::getCachedInterference ( const IRadio receiver,
const ITransmission transmission 
)
inlineoverridevirtual

Reimplemented from inet::physicallayer::CommunicationCacheBase.

77 { return nullptr; }

◆ getCachedNoise()

virtual const INoise* inet::physicallayer::ReferenceCommunicationCache::getCachedNoise ( const IRadio receiver,
const ITransmission transmission 
)
inlineoverridevirtual

Reimplemented from inet::physicallayer::CommunicationCacheBase.

80 { return nullptr; }

◆ getCachedReception()

virtual const IReception* inet::physicallayer::ReferenceCommunicationCache::getCachedReception ( const IRadio radio,
const ITransmission transmission 
)
inlineoverridevirtual

Reimplemented from inet::physicallayer::CommunicationCacheBase.

74 { return nullptr; }

◆ getCachedSNIR()

virtual const ISnir* inet::physicallayer::ReferenceCommunicationCache::getCachedSNIR ( const IRadio receiver,
const ITransmission transmission 
)
inlineoverridevirtual

Reimplemented from inet::physicallayer::CommunicationCacheBase.

83 { return nullptr; }

◆ getNumRadios()

int inet::physicallayer::ReferenceCommunicationCache::getNumRadios ( ) const
overridevirtual

Reimplemented from inet::physicallayer::CommunicationCacheBase.

82 {
83  return radioCache.size();
84 }

◆ getNumTransmissions()

int inet::physicallayer::ReferenceCommunicationCache::getNumTransmissions ( ) const
overridevirtual

Reimplemented from inet::physicallayer::CommunicationCacheBase.

116 {
117  return transmissionCache.size();
118 }

◆ getRadio()

const IRadio * inet::physicallayer::ReferenceCommunicationCache::getRadio ( int  id) const
overridevirtual

Implements inet::physicallayer::ICommunicationCache.

68 {
69  for (const auto& radioCacheEntry : radioCache)
70  if (radioCacheEntry.radio->getId() == id)
71  return radioCacheEntry.radio;
72  return nullptr;
73 }

◆ getRadioCacheEntry()

ReferenceCommunicationCache::RadioCacheEntry * inet::physicallayer::ReferenceCommunicationCache::getRadioCacheEntry ( const IRadio radio)
overrideprotectedvirtual

Implements inet::physicallayer::CommunicationCacheBase.

32 {
33  return &radioCache[radio->getId()];
34 }

Referenced by addRadio().

◆ getReceptionCacheEntry()

ReferenceCommunicationCache::ReceptionCacheEntry * inet::physicallayer::ReferenceCommunicationCache::getReceptionCacheEntry ( const IRadio radio,
const ITransmission transmission 
)
overrideprotectedvirtual

Implements inet::physicallayer::CommunicationCacheBase.

44 {
45  ReferenceTransmissionCacheEntry *transmissionCacheEntry = getTransmissionCacheEntry(transmission);
46  auto *receptionCacheEntries = transmissionCacheEntry->receptionCacheEntries;
47  int radioId = radio->getId();
48  if ((int)receptionCacheEntries->size() <= radioId)
49  receptionCacheEntries->resize(radioId + 1);
50  return &(*receptionCacheEntries)[radioId];
51 }

◆ getTransmission()

const ITransmission * inet::physicallayer::ReferenceCommunicationCache::getTransmission ( int  id) const
overridevirtual

Implements inet::physicallayer::ICommunicationCache.

102 {
103  for (const auto& transmissionCacheEntry : transmissionCache)
104  if (transmissionCacheEntry.transmission->getId() == id)
105  return transmissionCacheEntry.transmission;
106  return nullptr;
107 }

◆ getTransmissionCacheEntry()

ReferenceCommunicationCache::ReferenceTransmissionCacheEntry * inet::physicallayer::ReferenceCommunicationCache::getTransmissionCacheEntry ( const ITransmission transmission)
overrideprotectedvirtual

Implements inet::physicallayer::CommunicationCacheBase.

37 {
38  int transmissionIndex = transmission->getId();
39  ASSERT(0 <= transmissionIndex && transmissionIndex < (int)transmissionCache.size());
40  return &transmissionCache[transmissionIndex];
41 }

Referenced by addTransmission(), and getReceptionCacheEntry().

◆ mapRadios()

void inet::physicallayer::ReferenceCommunicationCache::mapRadios ( std::function< void(const IRadio *)>  f) const
overridevirtual

Implements inet::physicallayer::ICommunicationCache.

76 {
77  for (const auto& radioCacheEntry : radioCache)
78  f(radioCacheEntry.radio);
79 }

◆ mapTransmissions()

void inet::physicallayer::ReferenceCommunicationCache::mapTransmissions ( std::function< void(const ITransmission *)>  f) const
overridevirtual

Implements inet::physicallayer::ICommunicationCache.

110 {
111  for (const auto& transmissionCacheEntry : transmissionCache)
112  f(transmissionCacheEntry.transmission);
113 }

◆ printToStream()

virtual std::ostream& inet::physicallayer::ReferenceCommunicationCache::printToStream ( std::ostream &  stream,
int  level,
int  evFlags = 0 
) const
inlineoverridevirtual

Prints this object to the provided output stream.

Reimplemented from inet::IPrintableObject.

46 { return stream << "ReferenceCommunicationCache"; }

◆ removeNonInterferingTransmissions()

void inet::physicallayer::ReferenceCommunicationCache::removeNonInterferingTransmissions ( std::function< void(const ITransmission *transmission)>  f)
overridevirtual

Implements inet::physicallayer::ICommunicationCache.

121 {
122  // NOTE: no erase from the transmission cache to test that it doesn't affect simulation results
123 }

◆ removeRadio()

void inet::physicallayer::ReferenceCommunicationCache::removeRadio ( const IRadio radio)
overridevirtual

Implements inet::physicallayer::ICommunicationCache.

63 {
64  // NOTE: no erase from the radio cache to test that it doesn't affect simulation results
65 }

◆ removeTransmission()

void inet::physicallayer::ReferenceCommunicationCache::removeTransmission ( const ITransmission transmission)
overridevirtual

Implements inet::physicallayer::ICommunicationCache.

97 {
98  // NOTE: no erase from the transmission cache to test that it doesn't affect simulation results
99 }

◆ setCachedInterference()

virtual void inet::physicallayer::ReferenceCommunicationCache::setCachedInterference ( const IRadio receiver,
const ITransmission transmission,
const IInterference interference 
)
inlineoverridevirtual

Reimplemented from inet::physicallayer::CommunicationCacheBase.

78 { interferences.push_back(interference); }

◆ setCachedNoise()

virtual void inet::physicallayer::ReferenceCommunicationCache::setCachedNoise ( const IRadio receiver,
const ITransmission transmission,
const INoise noise 
)
inlineoverridevirtual

Reimplemented from inet::physicallayer::CommunicationCacheBase.

81 { noises.push_back(noise); }

◆ setCachedReception()

virtual void inet::physicallayer::ReferenceCommunicationCache::setCachedReception ( const IRadio receiver,
const ITransmission transmission,
const IReception reception 
)
inlineoverridevirtual

Reimplemented from inet::physicallayer::CommunicationCacheBase.

75 { receptions.push_back(reception); }

◆ setCachedSNIR()

virtual void inet::physicallayer::ReferenceCommunicationCache::setCachedSNIR ( const IRadio receiver,
const ITransmission transmission,
const ISnir snir 
)
inlineoverridevirtual

Reimplemented from inet::physicallayer::CommunicationCacheBase.

84 { snirs.push_back(snir); }

Member Data Documentation

◆ interferences

std::vector<const IInterference *> inet::physicallayer::ReferenceCommunicationCache::interferences
protected

◆ noises

std::vector<const INoise *> inet::physicallayer::ReferenceCommunicationCache::noises
protected

◆ radioCache

std::vector<RadioCacheEntry> inet::physicallayer::ReferenceCommunicationCache::radioCache
protected

◆ receptions

std::vector<const IReception *> inet::physicallayer::ReferenceCommunicationCache::receptions
protected

◆ snirs

std::vector<const ISnir *> inet::physicallayer::ReferenceCommunicationCache::snirs
protected

◆ transmissionCache


The documentation for this class was generated from the following files:
inet::physicallayer::ReferenceCommunicationCache::getRadioCacheEntry
virtual RadioCacheEntry * getRadioCacheEntry(const IRadio *radio) override
Definition: ReferenceCommunicationCache.cc:31
inet::physicallayer::ReferenceCommunicationCache::snirs
std::vector< const ISnir * > snirs
Definition: ReferenceCommunicationCache.h:33
inet::physicallayer::ReferenceCommunicationCache::radioCache
std::vector< RadioCacheEntry > radioCache
Definition: ReferenceCommunicationCache.h:28
inet::physicallayer::ReferenceCommunicationCache::getTransmissionCacheEntry
virtual ReferenceTransmissionCacheEntry * getTransmissionCacheEntry(const ITransmission *transmission) override
Definition: ReferenceCommunicationCache.cc:36
inet::physicallayer::ReferenceCommunicationCache::interferences
std::vector< const IInterference * > interferences
Definition: ReferenceCommunicationCache.h:31
inet::physicallayer::ReferenceCommunicationCache::transmissionCache
std::vector< ReferenceTransmissionCacheEntry > transmissionCache
Definition: ReferenceCommunicationCache.h:29
inet::physicallayer::ReferenceCommunicationCache::receptions
std::vector< const IReception * > receptions
Definition: ReferenceCommunicationCache.h:30
inet::physicallayer::ReferenceCommunicationCache::noises
std::vector< const INoise * > noises
Definition: ReferenceCommunicationCache.h:32